[new feature] @bot event belong to onMessage event

In order to let the bot and his contact chat in the room, maybe we could add a "@" event, when others @bot then the bot knows and do something.

Need to be proposed with more details of the design.
And also should describe the Problem and discuss the Solution in your thought.

Well, I PR a solution, what do you think about it?
I added an event called 'message-at', and the following code works well.
.on('message-at', function(contact, room, content) {
  console.log('message-at event works!')
  console.log(contact)
  console.log(room)
  console.log(content)
  })

Before PR, please discuss about the design here first.
A new event maybe is not needed because that will duplicate the message event, which might not necessary.
should describe the Problem and discuss the Solution in your thought.

It dose duplicate the message event, or it is belong to the message event.
Well, actually, all the event duplicate the message event, but it is convenience to differentiate them.
I found you are going to add a function to mention others in a room, and maybe it is useful to let bot know others mentioned the bot in the room.
Problem
When others mentioned bot in a room, let the bot know.
Solution
when detected the message content contains @botname , it will emit message-at event(maybe message-metion is better)

Great start to discuss this.
I'm thinking about just a mention event with a message parameter.
Please re-consider your design of this new feature, better to make some discussion with other developers to make the idea better.

you mean somethin like this?
.on('mention', function(message) {
   // do something
  })

Yes.
However, after some time, I feel it's not necessary to have a new event, which just for the message has a particular type.
Maybe we should consider adding a new method Message.mention() to identify whether this message is mentioned bot? I'm not sure yet.

I think you are right, actually, if we add a mention event, it looks nothing to do with message, and sounds strange, maybe Message.metion() is a good way.
But I think it shouldn't be a boolean function.
It should return real message(stripped @bot from the message) if the bot is mentioned and return null if not mentioned.
For example:
If the message is @bot hello!, it should return hello.
If the message is hello!, it should return null

I don't agree about the return value in your design.
Because when we design a new method, the params and return values should make sense for the method name, and follow good principles.
First, I don't think a return value of string | null will make sense for who just saw the function name of mention(). So I do not like this design.
Second, the following two laws are part of my favorite, for KISS:

Principle of least knowledge(Law of Demeter) Each unit should have only limited knowledge about other units: only units "closely" related to the current unit.
Principle of Least Power Choosing the least powerful language suitable for a given purpose.

I will like this design:
message.mention(): boolean

How to strip the bot name from the message, is none of the business of this function.


feature: JSONata Expression editor enable testing of $flowContext and $globalContext

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

Proposed changes

Enable JSONata expression editor testing $flowContext and $globalContext with node-red context data.

Test flow:
[{"id":"5567d268351f2b7d","type":"change","z":"f510d69f121b9ae7","name":"","rules":[{"t":"set","p":"flow.string","pt":"msg","to":"$flowContext(\"string\")\t","tot":"jsonata"},{"t":"set","p":"global.string","pt":"msg","to":"$globalContext(\"string\")","tot":"jsonata"},{"t":"set","p":"flow.number","pt":"msg","to":"$flowContext(\"number\")\t","tot":"jsonata"},{"t":"set","p":"global.number","pt":"msg","to":"$globalContext(\"number\")","tot":"jsonata"},{"t":"set","p":"flow.boolean","pt":"msg","to":"$flowContext(\"boolean\")\t","tot":"jsonata"},{"t":"set","p":"global.boolean","pt":"msg","to":"$globalContext(\"boolean\")","tot":"jsonata"},{"t":"set","p":"flow.json","pt":"msg","to":"$flowContext(\"json\")\t","tot":"jsonata"},{"t":"set","p":"global.json","pt":"msg","to":"$globalContext(\"json\")","tot":"jsonata"},{"t":"set","p":"flow.timestemp","pt":"msg","to":"$flowContext(\"timestemp\")\t","tot":"jsonata"},{"t":"set","p":"global.timestemp","pt":"msg","to":"$globalContext(\"timestemp\")","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":260,"wires":[["309683aa2f529758"]]},{"id":"ddf8409581203ca3","type":"inject","z":"f510d69f121b9ae7","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":260,"wires":[["5567d268351f2b7d"]]},{"id":"309683aa2f529758","type":"debug","z":"f510d69f121b9ae7","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":500,"y":260,"wires":[]},{"id":"06ff51c3a7b2c2d7","type":"config","z":"f510d69f121b9ae7","name":"","properties":[{"p":"string","pt":"flow","to":"string","tot":"str"},{"p":"number","pt":"flow","to":"123","tot":"num"},{"p":"boolean","pt":"flow","to":"true","tot":"bool"},{"p":"json","pt":"flow","to":"{\"json\":{\"format\":true}}","tot":"json"},{"p":"timestemp","pt":"flow","to":"","tot":"date"},{"p":"string","pt":"global","to":"string","tot":"str"},{"p":"number","pt":"global","to":"123","tot":"str"},{"p":"boolean","pt":"global","to":"true","tot":"bool"},{"p":"json","pt":"global","to":"{\"json\":{\"format\":true}}","tot":"json"},{"p":"timestemp","pt":"global","to":"","tot":"date"}],"active":true,"x":90,"y":200,"wires":[]}]

Checklist

[x] I have read the contribution guidelines

[x] For non-bugfix PRs, I have discussed this change on the forum/slack team.
forum: https://discourse.nodered.org/t/jsonata-expression-editor-enable-testing-of-context-flowcontext-and-globalcontext/36136

[ ] I have run grunt to verify the unit tests pass

[ ] I have added suitable unit tests to cover the new/changed functionality

I have one failed tests, but I am pretty sure it not casued by my change.
  2422 passing (3m)
  59 pending
  1 failing

  1) file Nodes
       file out Node
         should fail to create a new directory if not asked to do so (overwrite):
     AssertionError: expected Array [] to have property length of 1 (got 0)
      at Assertion.fail (node_modules/should/cjs/should.js:275:17)
      at Assertion.value (node_modules/should/cjs/should.js:356:19)
      at Timeout._onTimeout (test/nodes/core/storage/10-file_spec.js:631:47)
      at listOnTimeout (internal/timers.js:557:17)
      at processTimers (internal/timers.js:500:7)

enviroment:
node: v14.21.2
OS: ubuntu 22.04

Hi @yue-wen
thank you for this PR. You have linked to a two year old thread on the forum, rather than any active discussion on whether this is something we want to enable in the editor. There are reasons we chose not to support the context functions - mostly due to the overhead of loading context data in the editor.
Your approach appears to get all context data just in case it is needed - that is not very ideal if there is a large amount of data stored.
If we wanted to add support for the flow/globalContext functions, the code would need to be much more selective over what it loads and when. For example, only loading context data if those functions are actually being used.
There is also the matter of how it handles multiple context stores, rather than just the default one. We'd need to look at how that would have to modify the logic around what gets loaded.
Finally, to get the current flow id you should use RED.workspaces.active(), not parsing the url.

Hi @knolleary
Thank you for your reply.
sorry about forum link and wrong branch.
I understand your consider about overhead of loading context data.
Unfortunately currently context api only return whole context data.
Because the response schema of context endpoint, I thought context api only return data of default store.
It seems that I misunderstood.
$curl -s 'http://localhost:1880/context/global' | jq

{
  "memory": {
    "string": {
      "msg": "string",
      "format": "string[6]"
    },
    "number": {
      "msg": "123",
      "format": "string[3]"
    },
    "boolean": {
      "msg": "true",
      "format": "boolean"
    },
    "json": {
      "msg": "{\"json\":{\"format\":true}}",
      "format": "Object"
    },
    "timestemp": {
      "msg": "1673608294518",
      "format": "number"
    }
  }
}

I will try refactor my code to loading context data only once when it being used.


JOSS: Add self as author and mention rust interface

I don't mind one way or another.  Since @aseyboldt was asking, let me lay out the standard conventions.  The "first authors" on the list do the lion's share of the research and/or writing.  The "middle authors" make contributions worthy of going on the paper.  The "last authors" are the lab directors/supervisors.  In enormous physics or bio lab projects, there can be a dozen first authors and hundreds of middle authors.  The very first author gets a boost in name recognition because the paper will often be cited as (First Author et al. year) in long citation format.  The most senior author usually gets a boost in name recognition because they're usually the best known author and thus easier for people to remember.
In bio, they often include a description of what each author contributed.  I really liked the way the transformers paper just randomized the author order and then included a short note on what each author contributed.


no function clause matching in Guardian.jose_jwk/1

Hi,
I've tried to get guardian up and running, initially following the tutorial at https://medium.com/peep-stack/building-a-performant-real-time-web-app-with-ember-fastboot-and-phoenix-part-2-5dd2f74c7f34#.xv7exan03
Meanwhile I have tried a lot of different things, read through the readme a couple of times, but no matter what i try, I always get the following error from guardian:
** (exit) an exception was raised:
    ** (FunctionClauseError) no function clause matching in Guardian.jose_jwk/1
        lib/guardian.ex:292: Guardian.jose_jwk('UcaZRz3eJdHfzhMvOVsLnuP5V3zlfs1pvJcdCJWo4+Ay0/TkFkgkQfzottcBOoXj')
        lib/guardian.ex:302: Guardian.encode_claims/1
        lib/guardian.ex:94: Guardian.encode_from_hooked/1
        lib/guardian/plug.ex:179: Guardian.Plug.api_sign_in/4
        (api) web/controllers/session_controller.ex:21: Api.SessionController.login/2

Am I missing something or is this a bug?

@hollow What does your session controller look like? Mind posting it?

@keithalpichi the controller is just a copy of https://gist.github.com/mike-north/efb910d4eca4909fe0dcbc054bc6043e#file-session_controller-ex with Peepchat replaced by Api. the stack trace above does not match 100% since I've played aroun with using api_sign_in and other methods, but the error is always the same in jose_jwk.
FWIW I've switched to auth0 and Joken for verification meanwhile ...

@hollow it seems like you might be missing a secret in your configuration

I had this problem I believe you followed the tutorial like this
config :guardian, Guardian,
  allowed_algos: ["HS512"], # optional
  verify_module: Guardian.JWT,  # optional
  issuer: "Peepchat",
  ttl: { 30, :days },
  verify_issuer: true, # optional
  secret_key: System.get_env("GUARDIAN_SECRET") || "anUG...A4qfP5",
  serializer: Peepchat.GuardianSerializer

I don't know why but this is producing some problems.
You need to separate it. In dev.exs and test.exs, type the dev secret key as following
config :guardian, Guardian,
  allowed_algos: ["HS512"], # optional
  verify_module: Guardian.JWT,  # optional
  issuer: "Peepchat",
  ttl: { 30, :days },
  verify_issuer: true, # optional
  secret_key: "anUG...A4qfP5",
  serializer: Peepchat.GuardianSerializer

in prod.exs, use the system environment
config :guardian, Guardian,
  allowed_algos: ["HS512"], # optional
  verify_module: Guardian.JWT,  # optional
  issuer: "Peepchat",
  ttl: { 30, :days },
  verify_issuer: true, # optional
  secret_key: System.get_env("GUARDIAN_SECRET"),
  serializer: Peepchat.GuardianSerializer


[Feature Request] Can it scan .md in subfolder of /data

could It be able to read/organize content hierarchically based on the folder structure the files in /data folder?

Thanks for the suggestion, however, I'm keen to avoid adding folder support. A lot of the design ethos around flatnotes is the flat structure (hence the name).
For those that need/want a little structure there is the tagging feature.
I appreciate this is very opinionated but I'm a fan of the simplicity.


How to run ?

Based on the README.md file:

Start the app: chat-with-mlx

But chat-with-mlx is a folder. How to run?

(mlx)  $ chat-with-mlx
Starting MLX Chat on port 7860
Sharing: False
Running on local URL:  http://<IP_ADDRESS>:7860
To create a public link, set share=True in launch().

@100ZZ you should be able to run it through localhost:7860 in your browser


Voting buttons stay active

During the voting phase, the "Add Vote" and "Remove Vote" buttons stay active after they were clicked until they lose focus, e.g. until the user clicks somewhere else.

So the reason for this is that the button is focused after it has been clicked and the :active & :focus styling is equal. I guess we have to change the styling for the different pseudo-classes.


⚠ File access has degraded performance

In f97dc7b, File access (https://fyle.uk/file/fish) experienced degraded performance:

HTTP code: 200
Response time: 6462 ms

Resolved: File access performance has improved in 652bdd5 after 8 minutes.


Skip local engine version check

Pull Request Description
A small change requested by @jdunkerley
Important Notes

Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[x] The documentation has been updated, if necessary.
[ ] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[x] All code follows the
Scala,
Java,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
All code has been tested:

[x] Unit tests have been written where possible.
[ ] If GUI codebase was changed, the GUI was tested when built using ./run ide build.

Works perfectly - thank you.


disable delete for readers

Type of change

Bug fix

please use the actionsHelper.js instead of manually looking at the role, this one could use the canRemoveComponent function

Updated the logic with canManageComponent, As canRemoveComponent is not working as expected ( seems to be for import components)


Remove erroneous link to non-public setting

... since there's no there there.
Fixes #7796.

This change is

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/b42551b5ba485f209601b44b1e091838dcb1502f/
Edited pages:

v20.1/transaction-retry-error-reference.md
v20.2/transaction-retry-error-reference.md

Eric, I think this is a pretty trivial PR (removing links from text) but Murphy says if I don't ask for a review something will go wrong


Grow update check is failing

$ gulp & grow run
[1] 5507
Pod:
Address: http://localhost:8080/
Server ready. Press ctrl-c to quit.
Cannot check for updates to the SDK while offline.
[14:31:09] Using gulpfile ~//gulpfile.js
[14:31:09] Starting 'build_js'...
I'm online but the check for whether or not I'm online is failing.

I can't repro this. :\ Any other debugging information you can provide?

It happens intermittently. I thought it was you, now I think it's me!


Suggestions to improve interface

I suggest create a customization option or set the main interface so that the message from ChatGPT does not stretch across the entire screen if the line is long, but is only displayed in a limited part of the screen (for example, in the middle of the screen) like on the official website
Also, make the text input field expand if there is a long prompt so that it is more convenient to work with, like on the official website. I also suggest moving the model selection somewhere else, perhaps below the input context line, and placing this selection in a different location, for example, before starting the dialogue or in a corner, because at the bottom it takes up a lot of screen space, which sometimes requires scrolling the page longer.
Additionally, you could make the context window shorter and center it slightly like on the official ChatGPT website. This will make it look much better.
These are just my suggestions on what could be done, you can decide for yourself. My job is to suggest :)

Thanks for the suggestion!
With long text, the text box doesn't take up the whole screen:

The model selection box does take up a lot of space, so I'm thinking of writing an option in the settings : "Whether to hide the model selection box below"
The default is not hidden, after hiding the subsequent selection can also be selected in the action box above the input box:


Rewrite of sd3latentselectres.py to overcome issue#1

Complete rewrite for several issues. Adds a multiply factor, which may not be needed but need to see SD3 capabilities.

I've mostly used the code fixes in here, however I didn't see the point of multiply factor (which is what I wanted to remove) as SD3 can only work at it's native resolution (1 megapixel), upscaling has to be done with tiles.


#1101: Docs - Implement inline-help component

#1101
the changes can be seen here - http://localhost:4000/form.html#inputs-inline-help-elements

@joseegm pls check again. sorry the helper class for alignment was missing.


Mobile - Show Validator details pop up when navigating from the Staking Rewards page

Describe the task
Show Validator details pop up when navigating from the Staking Rewards page
Actual: Show Instruction popup
Expect:

When click on Stake with SubWallet on Staking rewards page then navigate user to the Earning-preview screen and show popup Validator details
https://www.figma.com/file/2nYhrm0rlJtfJoMwrT51Ep/SubWallet-Apps?type=design&node-id=20068-164447&mode=design&t=3PCZeZWi3ZbIHM2x-4
User click "Stake to earn" on Validator detail popup then navigate to the Start to earn screen and show Instruction

Version test :

IOS : https://www.diawi.com/qrcode/link/aG41Dz
Android : https://www.diawi.com/qrcode/link/M1VAwx

Validation passsed in case :

Account has nominated poool

https://github.com/Koniverse/SubWallet-Mobile/assets/155931563/b1cdb988-791d-416a-9c3f-766a3b1336b4

Account has direct nomination

https://github.com/Koniverse/SubWallet-Mobile/assets/155931563/2121e12c-0b19-4dcc-a602-8fd9b128b680

Account has unstake all

https://github.com/Koniverse/SubWallet-Mobile/assets/155931563/3ba4405a-4d8e-4faf-8b4a-2cb232e2469c

Choose invalid validator from deeplink

https://github.com/Koniverse/SubWallet-Mobile/assets/155931563/523238aa-1bbe-46a0-9c64-6bb50322f844

When close popup Validator details, perform from Earning preview screen

Version test: https://www.diawi.com/qrcode/link/aG41Dz
Device test: IP 11

[ ] Show popup Invalid account type in case click Earning positions
https://github.com/Koniverse/SubWallet-Mobile/assets/117999489/70322422-2638-4f18-909d-42a13bad93a7

[ ] Add content empty list of Earning preview


Missing Meeting Rooms

Hi All,
What makes a Teams Room appear in the admin panel?  We've got 9 or so Crestron and Logitech Tap devices and only 2 appear in the panel.  Does each unit have to ben on a certain version of Teams?

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

ID: 5ad37b23-8b85-a502-f176-d90586c0a1c1
Version Independent ID: dcc4aba8-e341-4f19-cd0a-4c99cd5ef3bf
Content: Manage Microsoft Teams Rooms - Microsoft Teams
Content Source: Teams/rooms/rooms-manage.md
Service: msteams
GitHub Login: @dstrome
Microsoft Alias: dstrome

@sgrmart Thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.


Move AccountsDb replication arguments to deprecated list

Problem
These arguments are not read by anything, and they appear to correspond to a proposed feature that is no longer in the codebase.
Summary of Changes
Move deprecated args to deprecated list to get them "out of the way"

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 81.9%. Comparing base (d88050c) to head (fb4c274).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #157   +/-   ##
=======================================
  Coverage    81.8%    81.9%
=======================================
  Files         838      838
  Lines      226564   226550   -14
=======================================
+ Hits       185522   185547   +25
+ Misses      41042    41003   -39


WIP: Remove pylint whitelist from ci_sanity.sh

@tensorflow-jenkins test this please.

Do you want to extend this more?

There are wrinkles to be ironed out internally before this can be merged. Let me close this for now.


Configure push on demand

Describe the feature request
Currently we use Sidecar Scope to achieve configuration isolation. However, the use of SidecarScope requires users to sort out the dependencies of the service in advance and cannot push on-demand. I think that automatically generating SidecarScope based on service calls is an effective way to achieve configuration push on demand.
Describe alternatives you've considered
I am doing a project called slime to achieve the above purpose. The idea is as follows:

Automatically generate an empty SidecarScope for the service (which load on demand is turned on).

In order to make the service call successful, I created a sidecar shared by namespace, called the global-sidecar. And replace the bottom route with a route pointing to the global-sidecar.

The service can access services outside the scope through global-sidecar. Then global-sidecar will report service invocation
information to slime, and slime automatically generates SidecarScope based on it.

I have completed a working version. You can try it out as follows：

install istio ( > 1.8 )
install slime

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ydh926/slime/master/install/install.sh)"

Make sure all components are running

$ kubectl get po -n mesh-operator
NAME                                    READY     STATUS    RESTARTS   AGE
global-sidecar-pilot-796fb554d7-blbml   1/1       Running   0          27s
lazyload-fbcd5dbd9-jvp2s                1/1       Running   0          27s
report-server-855c8cf558-wdqjs          2/2       Running   0          27s
slime-boot-68b6f88b7b-wwqnd             1/1       Running   0          39s

$ kubectl get po
NAME                              READY     STATUS    RESTARTS   AGE
global-sidecar-785b58d4b4-fl8j4   1/1       Running   0          68s

install bookinfo in default namespace
enable push on demand

kubectl label ns default istio-dependency-servicefence=true

kubectl annotate svc productpage istio.dependency.servicefence/status=true
kubectl annotate svc reviews istio.dependency.servicefence/status=true
kubectl annotate svc details istio.dependency.servicefence/status=true
kubectl annotate svc ratings istio.dependency.servicefence/status=true

make sure SidecarScope is generated

$ kubectl get sidecar
NAME          AGE
details       12s
kubernetes    11s
productpage   11s
ratings       11s
reviews       11s

$ kubectl get sidecar productpage -oyaml
apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: productpage
  namespace: default
  ownerReferences:
  - apiVersion: microservice.netease.com/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: ServiceFence
    name: productpage
spec:
  egress:
  - hosts:
    - istio-system/*
    - mesh-operator/*
    - '*/global-sidecar.default.svc.cluster.local'
  workloadSelector:
    labels:
      app: productpage

visit productpage & view accesslog

[2021-01-04T07:12:24.101Z] "GET /details/0 HTTP/1.1" 200 - "-" 0 178 36 35 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" "83793ccf-545c-4cc2-9a48-82bb70d81a2a" "details:9080" "<IP_ADDRESS>:9080" outbound|9080||global-sidecar.default.svc.cluster.local <IP_ADDRESS>:42786 <IP_ADDRESS>:9080 <IP_ADDRESS>:40108 - -
[2021-01-04T07:12:24.171Z] "GET /reviews/0 HTTP/1.1" 200 - "-" 0 295 33 33 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" "010bb2bc-54ab-4809-b3a0-288d60670ded" "reviews:9080" "<IP_ADDRESS>:9080" outbound|9080||global-sidecar.default.svc.cluster.local <IP_ADDRESS>:42786 <IP_ADDRESS>:9080 <IP_ADDRESS>:51512 - -

Successful access, the accesslog shows that the backend service is global-sidecar.

view productpage's SidecarScope again

$ kubectl get sidecar productpage -oyaml
apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: productpage
  namespace: default
  ownerReferences:
  - apiVersion: microservice.netease.com/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: ServiceFence
    name: productpage
spec:
  egress:
  - hosts:
    - '*/details.default.svc.cluster.local'
    - '*/reviews.default.svc.cluster.local'
    - istio-system/*
    - mesh-operator/*
    - '*/global-sidecar.default.svc.cluster.local'
  workloadSelector:
    labels:
      app: productpage

reviews and details are automatically added！

visit productpage & view accesslog again

[2021-01-04T07:35:57.622Z] "GET /details/0 HTTP/1.1" 200 - "-" 0 178 2 2 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" "73a6de0b-aac9-422b-af7b-2094bd37094c" "details:9080" "<IP_ADDRESS>:9080" outbound|9080||details.default.svc.cluster.local <IP_ADDRESS>:52626 <IP_ADDRESS>:9080 <IP_ADDRESS>:47396 - default
[2021-01-04T07:35:57.628Z] "GET /reviews/0 HTTP/1.1" 200 - "-" 0 379 134 134 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" "edf8c7eb-9558-4d1e-834c-4f238b387fc5" "reviews:9080" "<IP_ADDRESS>:9080" outbound|9080||reviews.default.svc.cluster.local <IP_ADDRESS>:42204 <IP_ADDRESS>:9080 <IP_ADDRESS>:58798 - default

Successful access, the backend services are reviews and details.
[ ] Docs
[ ] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Additional context

Please note that it does not appear that the Slime code base is currently public. I would advise against installing it until its made public.

Please note that it does not appear that the Slime code base is currently public. I would advise against installing it until its made public.

why is the "global sidecar" needed? couldnt slime just pull metrics from prometheus to determine a service graph? Also the global sidecar resembles an egress gateway. Also is the global-sidecar-pilot different from the default install? One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated. based on that issue its probably still recommended for the application developers to declare their dependencies a head of time. There is also some security problems, applications can reach out to unintended areas and will be granted access from slime.

why is the "global sidecar" needed? couldnt slime just pull metrics from prometheus to determine a service graph? Also the global sidecar resembles an egress gateway. Also is the global-sidecar-pilot different from the default install? One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated. based on that issue its probably still recommended for the application developers to declare their dependencies a head of time. There is also some security problems, applications can reach out to unintended areas and will be granted access from slime.

First, I will say this project is pretty cool. I agree looking at metrics may also be a way to achieve this; for example, Kiali has an option to automatically generation AuthorizationPolicy which is essentially the same logic to generate Sidecar.Egress (they have an open issue to add sidecar support).
For first class istio support, I think we are more likely to use on-demand XDS https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#incremental-xds

First, I will say this project is pretty cool. I agree looking at metrics may also be a way to achieve this; for example, Kiali has an option to automatically generation AuthorizationPolicy which is essentially the same logic to generate Sidecar.Egress (they have an open issue to add sidecar support).
For first class istio support, I think we are more likely to use on-demand XDS https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#incremental-xds

why is the "global sidecar" needed? couldnt slime just pull metrics from prometheus to determine a service graph? Also the global sidecar resembles an egress gateway. Also is the global-sidecar-pilot different from the default install? One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated. based on that issue its probably still recommended for the application developers to declare their dependencies a head of time. There is also some security problems, applications can reach out to unintended areas and will be granted access from slime.

why is the "global sidecar" needed?
global-sidecar needs to do two things.

When upstreaming is outside of SidecarScope, traffic forwarding needs to be done through global-sidecar. From this point of view, global-sidecar is indeed like egress. The difference is that the routing and service discovery information obtained by global-sidecar is similar to that of sidecar. It can be understood as having the identity of a sidecar, but deployed as egress.
Timely report calling information. For a newly released service, there will be a certain delay in obtaining call information from metric.

Also is the global-sidecar-pilot different from the default install
yes，there is some customization on global-sidecar-pilot. But maybe it can be unified, if istio can accept the new type of proxy of global-sidecar.

This version still uses the mixer adapter to report data ( I am now trying to replace it with other methods )，so global-sidecar-pilot is based on the old version (1.3.7).
global-sidecar needs to ignore the bottom route to itself. This route is implemented by envoyfilter, so a special judgment is made on the envoyfilter in global-sidecar-pilot.

One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated.
With global-sidecar as the bottom line, there will be no access failures.

why is the "global sidecar" needed? couldnt slime just pull metrics from prometheus to determine a service graph? Also the global sidecar resembles an egress gateway. Also is the global-sidecar-pilot different from the default install? One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated. based on that issue its probably still recommended for the application developers to declare their dependencies a head of time. There is also some security problems, applications can reach out to unintended areas and will be granted access from slime.

why is the "global sidecar" needed?
global-sidecar needs to do two things.

When upstreaming is outside of SidecarScope, traffic forwarding needs to be done through global-sidecar. From this point of view, global-sidecar is indeed like egress. The difference is that the routing and service discovery information obtained by global-sidecar is similar to that of sidecar. It can be understood as having the identity of a sidecar, but deployed as egress.
Timely report calling information. For a newly released service, there will be a certain delay in obtaining call information from metric.

Also is the global-sidecar-pilot different from the default install
yes，there is some customization on global-sidecar-pilot. But maybe it can be unified, if istio can accept the new type of proxy of global-sidecar.

This version still uses the mixer adapter to report data ( I am now trying to replace it with other methods )，so global-sidecar-pilot is based on the old version (1.3.7).
global-sidecar needs to ignore the bottom route to itself. This route is implemented by envoyfilter, so a special judgment is made on the envoyfilter in global-sidecar-pilot.

One issue with this approach is that it requires applications to reach out to their dependencies which would fail the first few times until reporting is completed and the sidecar resource is updated.
With global-sidecar as the bottom line, there will be no access failures.

First, I will say this project is pretty cool. I agree looking at metrics may also be a way to achieve this; for example, Kiali has an option to automatically generation AuthorizationPolicy which is essentially the same logic to generate Sidecar.Egress (they have an open issue to add sidecar support).
For first class istio support, I think we are more likely to use on-demand XDS https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#incremental-xds

I agree with you, but this seems to be a long time-consuming project. Maybe slime can help us through this time，
BTW, Slime is positioned as the manager of istio crd. In addition to Configure Push on demand, there are some other valuable modules. If you are interested, I will inform you when it is open source. Looking forward to cooperating with the istio community.

First, I will say this project is pretty cool. I agree looking at metrics may also be a way to achieve this; for example, Kiali has an option to automatically generation AuthorizationPolicy which is essentially the same logic to generate Sidecar.Egress (they have an open issue to add sidecar support).
For first class istio support, I think we are more likely to use on-demand XDS https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#incremental-xds

I agree with you, but this seems to be a long time-consuming project. Maybe slime can help us through this time，
BTW, Slime is positioned as the manager of istio crd. In addition to Configure Push on demand, there are some other valuable modules. If you are interested, I will inform you when it is open source. Looking forward to cooperating with the istio community.

Please note that it does not appear that the Slime code base is currently public. I would advise against installing it until its made public.

I am doing some open source preparations. it will comming soon.

Please note that it does not appear that the Slime code base is currently public. I would advise against installing it until its made public.

I am doing some open source preparations. it will comming soon.

hi，guys，slime’s code is open now. You can get it here . The project is at an early stage, so looking forward to your suggestions. @howardjohn @nmnellis

hi，guys，slime’s code is open now. You can get it here . The project is at an early stage, so looking forward to your suggestions. @howardjohn @nmnellis

Really awesome, i am also wondering if global sidecar can be removed. We can get the dependencies from metrics.

Really awesome, i am also wondering if global sidecar can be removed. We can get the dependencies from metrics.

Really awesome, i am also wondering if global sidecar can be removed. We can get the dependencies from metrics.

We need to access services outside of SidecarScope through global-sidecar. From this point of view, global-sidecar is necessary. But the process of global-sidecar reporting call information may be replaced by metric.

Really awesome, i am also wondering if global sidecar can be removed. We can get the dependencies from metrics.

We need to access services outside of SidecarScope through global-sidecar. From this point of view, global-sidecar is necessary. But the process of global-sidecar reporting call information may be replaced by metric.

I dont know if you are familiar with knative but it solves the request buffering really well and can be highly available and has an istio implementation. The other part you are trying to solve (service scope) could ultimately be used to define trust relationships between applications using AuthorizationPolicies which i think would be really cool.

I dont know if you are familiar with knative but it solves the request buffering really well and can be highly available and has an istio implementation. The other part you are trying to solve (service scope) could ultimately be used to define trust relationships between applications using AuthorizationPolicies which i think would be really cool.

I dont know if you are familiar with knative but it solves the request buffering really well and can be highly available and has an istio implementation. The other part you are trying to solve (service scope) could ultimately be used to define trust relationships between applications using AuthorizationPolicies which i think would be really cool.

Sorry to reply you so late, I am not familiar with knative, if you can provide some information, I will be happy to read it. In addition, I hope to build slime as the AutoPilot for istio, which can be combined with monitoring information to control istio crd more intelligently. AuthorizationPolicies is also considering among them, if you have any good ideas, welcome to communicate with me.

Really awesome, i am also wondering if global sidecar can be removed. We can get the dependencies from metrics.

In the new version, slime already supports obtaining service call information from prometheus. https://github.com/slime-io/slime/releases/tag/v0.1.0-alpha.

Considering that the community already has a mature solution for on-demand loading https://docs.google.com/document/d/1AqhQnrX_7SS6PAkNwoaA2peCtk9htgwSBTRg1gzFPNw/edit#heading=h.ni5t9ogyxz7j, and the basic functions of the slime-lazyload module have been implemented, we will not focus on the improvement of this module. We hope to build slime into an intelligent mesh manager, which can monitor and perceive service status through service monitoring and automatically adjust istio CR. We will put more effort into framework construction and other functional modules.

nice work！


Domain activation is Failed on re-try after fixing cloudfront DNS  records

App Id: d13i6q9t6hsp92
Region: eu-west-1
Step: Domain activation
Status: Failed

Note: Do not include information that is sensitive in nature such as your domain name, company etc.

Issue/question
due to SSL validation timeout we have had to recreate custom domains records in AWS amplify. The CNAME records for previous domains already existed in the domain records. We have fixed the cloudfron dns name in the domain but the re-try for Domain Activation keeps failing.
In both case of both branches the nslookup resolves to correct cloudfront distribution DNS.
Error message
"com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException: One or more aliases specified for the distribution includes an incorrectly configured DNS record that points to another CloudFront distribution. You must update the DNS record to correct the problem. For more information, see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-restrictions (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: d9bab2ca-1bbb-492d-a641-3d2b51925a86; Proxy: null)"
Note: Be sure to check the message for sensitive information.
Additional information
Please add any other relevant information. Please feel free to include screenshots.

Thanks for reporting this.  We will investigate.

Refer to our documentation to troubleshoot domain setup.
https://docs.aws.amazon.com/amplify/latest/userguide/custom-domain-troubleshoot-guide.html
https://docs.aws.amazon.com/amplify/latest/userguide/custom-domain-troubleshoot-guide.html#i-get-a-cnamealreadyexistsexception-error
Let us know if you're still facing issues.


Tutorial would be nice

Hi! Great work. Unfortunately I do not understand all details. A tutorial would be nice, where you (graphically) describe, what are the parameters to set up a robot and work with your functions.
E.g. you wrote 'q+pi/2' and so on: What is q?

@cdsousa I used the PUMA560 model in the test file, and I found that the result is not same with the Matlab robotics toolbox.


accuracy results

Hello, may I ask where the final accuracy results will be viewed? No results found after running train

The log file is empty？That's why？


Fix #44 - register pointer targets for pointer return types

Codecov Report

Merging #49 into master will not change coverage.
The diff coverage is n/a.

@@         Coverage Diff          @@
##           master   #49   +/-   ##
====================================
  Coverage      20%   20%
====================================
  Files           6     6
  Lines          25    25
====================================
  Hits            5     5
  Misses         20    20

Impacted Files
Coverage Δ

reflection/source/autowrap/reflection.d
0% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d897b2a...b019cd5. Read the comment docs.


Swagger @Schema tag doesn't allow more than one example per type

In the code below, Swagger uses the second example for the first field as well. It would be nice if the example for startTime could be different than the example for endTime. -- Jon
    @JsonProperty
    @Schema(description = "The local start time and date to query",
            example = "2021.01.01-12.00am")
    @KivaKitIncludeProperty
    private LocalTime startTime;

    @JsonProperty
    @Schema(description = "The local end time and date to query",
            example = "2021.09.01-12.00am")
    @KivaKitIncludeProperty
    private LocalTime endTime;

It's not just the examples that are used for all fields. Also the descriptions are used for all fields.
This is the case, because the generated OpenAPI file contains a $ref to the one description for this type. So there is only one definition for this type in the generate OpenAPI file and as such it can only have one description/examples/...
Instead in addition the the $ref other attributes should be written to the location, were the $ref is used, I think.

After some more research I found, that OpenAPI actually defines:

Any sibling elements of a $ref are ignored. This is because $ref works by replacing itself and everything on its level with the definition it is pointing at.

So this could only be resolved by not referencing the one definition for the type, but by creating a new entry every time.

Hi @finsterwalder, I eventually came to the same conclusion. It seems like a flaw in the spec to be constantly repeating object definitions like that, but it does work.

Excuse me if this goes too far off-topic, but how would you go about creating separate object definitions in this case? I am facing a similiar issue and would like to give different descriptions to fields of the same (custom) type.

@vanDarg I created my own Annotation @NoRefSchema, and my own processing, that creates an inline type description in the OpenAPI yaml file.

Thanks for the reply!
Not sure I can replicate that, especially since we are using springdoc-openapi to generate our documentation.

That's exactly what we do. It's a little tricky, but we implemented an org.springdoc.core.customizers.PropertyCustomizer

Oh, that sounds great! I don't suppose you have an example lying around, do you? :-D

Unfortunately I don't have anything that I can give you and your solution is working for us, but it's not really universal.
It basically starts with:
@Configuration
public class MyPropertyCustomizer implements PropertyCustomizer {
private final OpenAPI openAPI; // can be autowired from Spring

@Override
public Schema customize(Schema property, AnnotatedType type) {
    if (property != null && type != null && type.getCtxAnnotations() != null) {
        for (Annotation annotation : type.getCtxAnnotations()) {
            final Class<? extends Annotation> annotationType = annotation.annotationType();

When the annotationType is your own Annotation: @NoRefSchema for example, you can create a new schema with:
       final Type annotatedType = type.getType();
        if (annotatedType instanceof JavaType) {
            JavaType javaType = (JavaType) annotatedType;
            final Class<?> rawClass = javaType.getRawClass();
            final String $ref = rawClass.getSimpleName() + "_" + REF_ID.incrementAndGet();
            final Schema newSchema = getSchema(rawClass);
            openAPI.schema($ref, newSchema);
            schema.$ref($ref);

where:
private Schema getSchema(Class aClass) {
    return ModelConverters.getInstance()
            .resolveAsResolvedSchema(new AnnotatedType(aClass).resolveAsRef(false))
            .schema;
}

That might get you started...

Thanks alot! I will definitely have a look at that.


refactor: Update get-func-name dependency to address CVE

Description
Updates the get-func-name transitive dependency to address CVE-2023-43646. It came through<EMAIL_ADDRESS>updating to<EMAIL_ADDRESS>was enough to get a fixed version of get-func-name. Also did a few updates of transitive dependency loupe from 2.3.6 to 2.3.7 (even though chai doesn't strictly needed it), where they guarantee that their dependency ranges now point to fixed versions of their dependencies.
Reviewer Guidance
The review process is outlined on this wiki page.
AB#5696

Thanks for the update 😄.
One small question, chai: ^4.2.0 is free from by the vulnerability, right?

One small question, chai: ^4.2.0 is free from by the vulnerability, right?

It's 4.5.0 but the answer is still "kind of". The vulnerability is not in chai directly, but in get-func-name which is a transitive (not even direct) dependency for chai. chai 4.5.0 still declares a dependency on loupe: ^2.3.6, and that doesn't guarantee the fix is in through loupe's dependency ranges for get-func-name. Someone installing<EMAIL_ADDRESS>from scratch today would be fine, because the range in loupe's dependency is broad enough that<EMAIL_ADDRESS>would be installed. But in our case, the lockfile had already locked in to a version of get-func-name that did not have the fix, so I had to force it to a new one.


Added iOS courses in hindi

What does this PR do?
Added resources for iOS development for beginners, and people with some CS background
For resources
Description
Complete course + crash course on iOS development
Why is this valuable (or not)?
Gives you a nice overview of how to work with iOS devices, and develop apps for various use cases.
How do we know it's really free?
It's available on youtube for free!
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

Alphabetical order is correct, its just is iOS instead of being IOS

Thanks, and welcome to free-programming-books!


Adding Cluster Service Version processing

@smunilla @tbielawa PTAL
Haven't had a lot of testing time on this but it does work with config changes I added -> https://github.com/openshift/ocp-build-data/commit/629dff37a050fd0f769fdd9171823b825d508bcb
And wanted to get it in a PR before the break.
This will probably change as we add more operators but it works with the info we have now and I've confirmed it updates the csv file as desired.

FYI, this would be the only test that will do much with this -> doozer --data-path ~/src/ocp-build-data/ --group openshift-4.1 -i openshift-enterprise-ansible-operator,openshift-enterprise-ansible-service-broker-operator,openshift-enterprise-asb images:rebase --version v4.1.0 --release<PHONE_NUMBER>16 --repo-type unsigned -m "Test" --no-push
Remove openshift-enterprise-asb to see it late-load that image data and find it's most recent build to inject into the csv yaml file.

Seems legit to me

It did a thing! I mean, I think it did. I'm not sure how to tell what it did. I did with and without -asb.
What should I be expecting to see here?
$ ./doozer --group openshift-4.1 -i openshift-enterprise-ansible-operator,openshift-enterprise-ansible-service-broker-operator images:rebase --version v4.1.0 --release<PHONE_NUMBER>16 --repo-typ
e unsigned -m "Test" --no-push
2019-04-18 15:14:01,192 INFO Data clone directory already exists, checking commit sha
2019-04-18 15:14:03,429 INFO git@github.com:openshift/ocp-build-data.git is already cloned and latest
/home/tbielawa/.local/lib/python2.7/site-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly ad
vised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
2019-04-18 15:14:04,411 INFO Using branch from group.yml: rhaos-4.1-rhel-7
2019-04-18 15:14:04,788 INFO [containers/openshift-enterprise-ansible-operator] Distgit directory already exists; skipping clone: /home/tbielawa/doozer/distgits/containers/openshift-enterpris
e-ansible-operator
2019-04-18 15:14:04,788 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Distgit directory already exists; skipping clone: /home/tbielawa/doozer/distgits/containers/open
shift-enterprise-ansible-service-broker-operator
2019-04-18 15:14:05,008 INFO Source 'openshift-enterprise-ansible-operator_ocp-release-operator-sdk' already exists in (skipping clone): /home/tbielawa/doozer/sources/openshift-enterprise-ans
ible-operator_ocp-release-operator-sdk
2019-04-18 15:14:05,429 INFO [containers/openshift-enterprise-ansible-operator] Adding commit to local repo: Test
2019-04-18 15:14:05,654 INFO [containers/openshift-enterprise-ansible-operator] Adding tag to local repo: v4.1.0-201904181516
2019-04-18 15:14:05,661 INFO Source 'openshift-enterprise-ansible-service-broker-operator_ansible-service-broker' already exists in (skipping clone): /home/tbielawa/doozer/sources/openshift-e
nterprise-ansible-service-broker-operator_ansible-service-broker
2019-04-18 15:14:06,502 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Adding commit to local repo: Test
2019-04-18 15:14:06,564 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Adding tag to local repo: v4.1.0-201904181516

This file should get updated:
${WORKSPACE}/distgits/containers/openshift-enterprise-ansible-service-broker-operator/deploy/olm-catalog/openshift-ansible-service-broker-manifests/4.1/openshiftansibleservicebroker.v4.1.0.clusterserviceversion.yaml
On Thu, Apr 18, 2019 at 4:16 PM Tim Bielawa<EMAIL_ADDRESS>wrote:

It did a thing! I mean, I think it did. I'm not sure how to tell what it
did. I did with and without -asb.
What should I be expecting to see here?
$ ./doozer --group openshift-4.1 -i openshift-enterprise-ansible-operator,openshift-enterprise-ansible-service-broker-operator images:rebase --version v4.1.0 --release<PHONE_NUMBER>16 --repo-typ
e unsigned -m "Test" --no-push
2019-04-18 15:14:01,192 INFO Data clone directory already exists, checking commit sha
2019-04-18 15:14:03,429 INFO git@github.com:openshift/ocp-build-data.git is already cloned and latest
/home/tbielawa/.local/lib/python2.7/site-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly ad
vised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
2019-04-18 15:14:04,411 INFO Using branch from group.yml: rhaos-4.1-rhel-7
2019-04-18 15:14:04,788 INFO [containers/openshift-enterprise-ansible-operator] Distgit directory already exists; skipping clone: /home/tbielawa/doozer/distgits/containers/openshift-enterpris
e-ansible-operator
2019-04-18 15:14:04,788 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Distgit directory already exists; skipping clone: /home/tbielawa/doozer/distgits/containers/open
shift-enterprise-ansible-service-broker-operator
2019-04-18 15:14:05,008 INFO Source 'openshift-enterprise-ansible-operator_ocp-release-operator-sdk' already exists in (skipping clone): /home/tbielawa/doozer/sources/openshift-enterprise-ans
ible-operator_ocp-release-operator-sdk
2019-04-18 15:14:05,429 INFO [containers/openshift-enterprise-ansible-operator] Adding commit to local repo: Test
2019-04-18 15:14:05,654 INFO [containers/openshift-enterprise-ansible-operator] Adding tag to local repo: v4.1.0-201904181516
2019-04-18 15:14:05,661 INFO Source 'openshift-enterprise-ansible-service-broker-operator_ansible-service-broker' already exists in (skipping clone): /home/tbielawa/doozer/sources/openshift-e
nterprise-ansible-service-broker-operator_ansible-service-broker
2019-04-18 15:14:06,502 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Adding commit to local repo: Test
2019-04-18 15:14:06,564 INFO [containers/openshift-enterprise-ansible-service-broker-operator] Adding tag to local repo: v4.1.0-201904181516
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/openshift/doozer/pull/81#issuecomment-484673611, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAHJV2TYJUQBSGCAOEETRKDPRDJIHANCNFSM4HG7Y22A
.

/lgtm
I see it!
$ diff -Naur openshiftansibleservicebroker.v4.1.0.clusterserviceversion.yaml openshiftansibleservicebroker.v4.1.0.clusterserviceversion.yaml.second
--- openshiftansibleservicebroker.v4.1.0.clusterserviceversion.yaml     2019-04-18 15:29:01.680162473 -0500
+++ openshiftansibleservicebroker.v4.1.0.clusterserviceversion.yaml.second      2019-04-18 15:29:39.956935530 -0500
@@ -211,7 +211,7 @@
                 imagePullPolicy: IfNotPresent
                 env:
                 - name: IMAGE
-                  value: quay.io/openshift/ose-ansible-service-broker:v4.1.0-201904181516
+                  value: quay.io/openshift/ose-ansible-service-broker:v4.1.0-201904171555
                 - name: OPERATOR_NAME
                   value: openshift-ansible-service-broker-operator
                 - name: POD_NAME

/lgtm

Thanks @tbielawa and @shiywang
Since everyone's off and there's no rush on this till next week, I'm going to leave this unmerged for now.
Will be out on Monday, so feel free to merge it if it's deemed immediately necessary.


installer issue

\033[0;32m╭────────────────────────────────────────────────────────────────────────────────╮\033[0m
\033[0;32m│                                                                                │\033[0m
\033[0;32m│                             Pterodactyl VPS EGG                                │\033[0m
\033[0;32m│                                                                                │\033[0m
\033[0;32m│                           \033[0;31m© 2021 - 2024 \033[0;35mysdragon\033[0;32m                               │\033[0m
\033[0;32m│                                                                                │\033[0m
\033[0;32m╰────────────────────────────────────────────────────────────────────────────────╯\033[0m
\033[0;33mPlease choose your favorite distro                                               \033[0m

[1] Debian
[2] Ubuntu
[3] Void Linux
[4] Alpine Linux  (Edge)
[5] CentOS
[6] Rocky Linux
[7] Fedora
[8] AlmaLinux
[9] Slackware Linux
[10] Kali Linux
[11] openSUSE
[12] Gentoo Linux
[13] Arch Linux
[14] Devuan Linux

\033[0;33mEnter OS (1-14):                                                                 \033[0m
2

[1] Ubuntu 24.04 LTS (noble)
[2] Ubuntu 22.04 LTS (jammy)
[3] Ubuntu 20.04 LTS (focal)
[4] Ubuntu 18.04 LTS (bionic)
[5] Ubuntu 16.04 LTS (xenial)
\033[0;33mEnter the desired version (1-5):
1
\033[0;32mInstalling Ubuntu 24.04 LTS (noble)...\033[0m
PteroVM.sh: line 146: curl: not found
grep: unrecognized option: P
BusyBox v1.36.1 (2023-11-07 18:53:09 UTC) multi-call binary.
Usage: grep [-HhnlLoqvsrRiwFE] [-m N] [-A|B|C N] { PATTERN | -e PATTERN... | -f FILE... } [FILE]...
Search for PATTERN in FILEs (or stdin)
-H      Add 'filename:' prefix
-h      Do not add 'filename:' prefix
-n      Add 'line_no:' prefix
-l      Show only names of files that match
-L      Show only names of files that don't match
-c      Show only count of matching lines
-o      Show only the matching part of line
-q      Quiet. Return 0 if PATTERN is found, 1 otherwise
-v      Select non-matching lines
-s      Suppress open and read errors
-r      Recurse
-R      Recurse and dereference symlinks
-i      Ignore case
-w      Match whole words only
-x      Match whole lines only
-F      PATTERN is a literal (not regexp)
-E      PATTERN is an extended regexp
-m N    Match up to N times per file
-A N    Print N lines of trailing context
-B N    Print N lines of leading context
-C N    Same as '-A N -B N'
-e PTRN Pattern to match
-f FILE Read pattern from file
PteroVM.sh: line 148: curl: not found
tar: can't open '//rootfs.tar.xz': No such file or directory
PteroVM.sh: line 370: curl: not found
PteroVM.sh: line 378: curl: not found
chmod: //usr/local/bin/proot: No such file or directory
PteroVM.sh: line 386: can't create //etc/resolv.conf: Read-only file system
touch: //.installed: Read-only file system
PteroVM.sh: line 399: can't open //vps.config: no such file
PteroVM.sh: line 409: //usr/local/bin/proot: not found
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 127
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.

Installer is not supported in alpine/busybox docker image, you can modify it to fit busybox grep.


Keeps checking removed files?

It looks like this package keeps checking files that are deleted?
Steps to reproduce:

Start a new project
Create a new .ts file
Add some invalid Typescript
Delete this file
Create another .ts file
Open this file.

The bottom panel shows the following error:
at line 1, file /www/jspm/typescript/test/app.ts
Please save file for it be processed by TypeScript

From the FAQ:

Atom Typescript is complaining about not finding files or other weird errors
You probably deleted them or added them or moved them around. We don't watch the file system as it is memory intensive and unreliable across operating systems. You can ask atom-typescript to do a rescan of your file system using the sync command (https://github.com/TypeStrong/atom-typescript#sync)

The behavior you are describing is intended. Please use the sync command to 'fix' this.


Change octree::NodeId to be a u128.

This PR replaces #204, see its description.

@SirVer Can you please approve this replacement PR for #204?
I reviewed your PR #204 which LGTM, and just replaced clap by structopt.

As discussed offline, I will address the structopt replacement in another PR.


ARROW-4641: [C++] Compile Flight client.cc/server.cc with -fno-strict-aliasing

The type-casting trick we are using to sneak a different kind of object into SerializationTraits<pb::FlightData> looks like a -Wstrict-aliasing violation (which it would be, if any code tried to use the reference as the protobuf type)

I can instead add pragmas to disable the warning at the call sites

According to the C++ docs, another possibility is to use memcpy to do the bitcast, instead of reinterpret_cast.

+1. will merge once build passes


Prevent onSync infinite loops

R: @jeffposnick
Fixes #1937
This PR updates the background sync replay logic in the following ways to help prevent infinite loops when adding new requests to the queue during a sync event replay:

Adding a request to the queue only registers a sync tag if a sync event is not currently in progress.
At the end of a successful sync event replay (i.e. the waitUntil promise did not reject) a sync tag is registered if new requests have been added to the queue.
At the end of a failed sync event replay (i.e. the waitUntil promise rejected) no sync event is registered because the browser will automatically retry later (unless the event.lastChance property is true, in which case a new sync tag is registered

The PR also updates some of the workbox-google-analytics behavior to handle these new changes.

Coverage increased (+0.07%) to 82.736% when pulling 73f8006297eb9bc0fca0c43331f546dc97014e4c on bg-sync-loop into 5e2c4a192c8b7d07a63b45696710b83d97fb6c95 on master.


[driver] [test] PRNG: allow custom\fixed seed

https://github.com/ROCmSoftwarePlatform/MIOpen/labels/urgency_blocker because we've already got randomly failed cases.

For example (GFX1100 required)
MIOPEN_DEBUG_DRIVER_PRNG_SEED=1372743782 ./bin/MIOpenDriver convfp16 -W 1195 -H 16 -c 1 -n 16 -k 1 -x 1 -y 1 --pad_w 12 --pad_h 5 -F 1 -t 1 -i 1 -V 1 -S 139

Significant PRNG re-design.
Highlights:

switch std::linear_congruential_engine parameters to glibc version (speedup)
simplify canonical number generation (speedup)
simplify uniform distribution generation (speedup)
provide new primitives to generate random numbers (code quality, speedup)
remove lots of copy-pasted generators and replaced them with new primitives (code quality)
"hide" direct access to PRNG (code quality)
fix verification cache, at least partially
drop legacy generator support (code quality)
unify test and driver generators (code quality) - I see no reasons to split them:
initially they were dependent through global rand() state and through including files from test to driver
most probably they will suffer from the same problems, so will be updated simultaneously and I can hardly imagine separated updates. But I'm not quite sure about this unification, probably I've missed something.

I did some simple performance measurements for AllocateBuffersAndCopy for convolution and got following results (compare to the current develop):
AllocateBuffersAndCopy:

case
old (ms)
new (ms)
gain

-N 128
1253.08
936.23
1.34

-N 1
43.57
47.39
1.09

Depending on the case allocation may take from 60% to 10% of total execution time and thus total improvement may not be so significant.
Total time:

case
old (ms)
new (ms)
gain

-N 128 -V 1
3056
3328
1.09

-N 1 -V 1
1709
1726
1.01

-N 128 -V 0
1423
1756
1.23

-N 1 -V 0
464
476
1.03

The other driver parameters
./bin/MIOpenDriver conv --spatial_dim 2 --pad_h 0 --pad_w 0 --pad_d 0 --conv_stride_h 1 --conv_stride_w 1 --conv_stride_d 0 --dilation_h 1 --dilation_w 1 --dilation_d 0 --group_count 1 --mode conv --pad_mode default --trans_output_pad_h 0 --trans_output_pad_w 0 --trans_output_pad_d 0 --out_layout NCHW --in_d 1 --in_h 210 --in_w 210 --fil_d 1 --fil_h 3 --fil_w 3 --in_channels 16 --out_channels 16 --forw 1 -i 10 -t 1 -w 1 -s 84

I haven't tried it on the other cases or algorithms, but the overall trend seems to be: bigger tensors and no verification (perf runs) - more speedup.
@atamazov please join.
Closes #2313

@CAHEK7  Test test_rnn_vanilla_dropout  fails FP16 on MI100.

@JehandadKhan should be fixed now.
May I ask you to restart the tests if they failed due to infrastructure reasons?

Recently for some reasons the tests often failed on a git-checkout stage.

@CAHEK7 I restarted full test :) Let's see if it can run through, I will ping if I see some persistent issues.

This list of tests is becoming unstable with this update on major platforms:
test_conv_igemm_dynamic_xdlops_nhwc_wrw_nchw
test_conv2d
test_conv_for_implicit_gemm
test_immed_conv2d


MainLoop.Invoke causes 1 CPU core consumption on Linux and macOS

Describe the bug
After the first call of MainLoop.Invoke, the application starts consuming 1 CPU core (100%) on Linux and macOS.
To Reproduce
Steps to reproduce the behavior:

Install .NET SDK 8.0.100 on Linux or macOS
Create a new .NET 8 Console Application: dotnet new console -f net8.0
Install Terminal.Gui 1.14.1: dotnet add package Terminal.Gui --version 1.14.1
Put the following code in Program.cs:

using Terminal.Gui;

Application.Run<MyWindow>();
Application.Shutdown();

public class MyWindow : Window
{
    public MyWindow()
    {
        Application.MainLoop.Invoke(() => { });
    }
}

Run the program: dotnet run
Check out the processes with the highest CPU usage: ps -eo pid,%cpu,command -r | head
You should see your freshly running application with CPU usage of ~100%

Expected behavior
MainLoop.Invoke should not cause stable CPU usage. Before the first call of MainLoop.Invoke, the application CPU usage is quite low, which is also the expected behavior for the application after this call.
Environment
OS: Linux, macOS
Checked Terminal.Gui versions: 1.13.5, 1.14.1
Checked .NET versions: 7.0.14, 8.0.0
Screenshots
I have used Rider to get a dotTrace performance snapshot. Here are the corresponding screenshots:
Timeline:

Tracing:

Can you please try to repo this using v2? https://www.nuget.org/packages/Terminal.Gui/2.0.0-pre.210

@tig I have checked v2.0.0-pre.210 on macOS, everything works nice with no CPU noise.
A note: I have used Application.Invoke(() => { }); instead of Application.MainLoop.Invoke(() => { }); since MainLoop is internal in v2.

@tig just to clarify the issue state: do we have a fix for this problem in 1.x or is there no plan to fix it in 1.x?

@tig just to clarify the issue state: do we have a fix for this problem in 1.x or is there no plan to fix it in 1.x?

Sorry, I misunderstood. I thought you were ok on v1. Reopening.


cleaning up application startup information

On starting up the server:

Remove the 'application started' suffix to the application title
Align the database name tab length
Remove the initial 'Application loaded using  environment' as it is anyway reported in the startup info.

Startup information after the fix:

Is mean-test now the DB for the dev environment? I noticed that changed during the merge. It used to be mean-dev.

you're right, I submitted another PR for that: https://github.com/meanjs/mean/pull/641

I guess we can merge that?

Yep, looks good.


still getting error

Hi again
I still get this error

I followed the instruction step-by-step

your service also has this problem

its more complicated now

Sorry if this is not the correct way to communicate this, but I have this exact issue still using the newest version that I forked of your repo.
When creating a new link I get "Error creating link..." however it appears on the Mange Links section, but I cant visit the link instead I get "Page not found."
I tried with my cloudflare pages domain and my own custom domain that I set in the supaflare cloudflare pages project.
I also looked at the logs on supabase, but haven't really found anything that could tell me what went wrong exactly.

@rtb1337 I have updated node (check the pull request), check if its work for you 😉

@alerezaaa I have tried this yesterday and I also had to update checkout from v2 to v3 (https://github.com/supaflare/supaflare/commit/30364fbf0479e1e394c735a1dd3806d0664c8aa8) in order to get rid of the error message I got before.
However while that error is gone now I get this error shown in Wrangler CLI:

✘ [ERROR] A request to the Cloudflare API (/accounts/***/workers/scripts/supaflare-worker) failed.
workers.api.error.unauthorized [code: 10023]
If you think this is a bug, please open an issue at: https://github.com/cloudflare/workers-sdk/issues/new/choose

Im certain I have provided the correct data since I followed the steps, but I will check my files and report back if im able to fix it.

Okay, thanks for your report
I think I have to leave it to original author, AFA i remember, I redeployed my service about a month ago without error, If I can find anything which can help you, I inform you but hope you figure it out before me 🙂
good luck

@alerezaaa I have tried this yesterday and I also had to update checkout from v2 to v3 (30364fb) in order to get rid of the error message I got before. However while that error is gone now I get this error shown in Wrangler CLI:

✘ [ERROR] A request to the Cloudflare API (/accounts/***/workers/scripts/supaflare-worker) failed.
workers.api.error.unauthorized [code: 10023]
If you think this is a bug, please open an issue at: https://github.com/cloudflare/workers-sdk/issues/new/choose

Im certain I have provided the correct data since I followed the steps, but I will check my files and report back if im able to fix it.
Edit: I found this: cloudflare/workers-sdk#2991 it shows that using the CLOUDFLARE_API_TOKEN in that case didnt work, while using OAuth did. However I have no clue how to use Oauth for Cloudflare inside Github actions and searching the internet didn't help me either. If anyone has a idea how to make this project work again, feel free to tell me.

I also get 10023 error code when running github workflow. I managed to solve this problem by recreating a new API token, but instead of creating custom token, I used "API token templates" -> "Edit Cloudflare Workers".

Thank you. I managed to run Github Workflow properly without errors after using the API token template you mentioned instead, however the shortened URLs wont work at all sadly. It states that they are created successfully however when visiting the slug it still shows only the error page of Supaflare.


Not able to generate unique operation id based on routes

I am trying to support old routes and url segment routes as well.
But swagger fails because of duplicaton operation id while depoying swagger to APIM.
I have following Controller
[Route("api/[controller]")]
[Route("api/v{version:apiVersion}/[controller]")]
[Produces("application/json")]
[ExcludeFromCodeCoverage]
[ApiController]
public class SampleController : ControllerBase
{
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
[SwaggerOperation(OperationId = "GetId")]
public async Task Get(int id)
{
//
}
Swagger file generated for this API with routes is as shown below:

Old API route

/api/Mortgage/{id}: {
get: {
tags: [
"Mortgage"
],
summary: "Retrieve the mortgage by Id",
description: "This endpoint is responsible for retrieving Mortgage by Id",
operationId: "GetId",
consumes: [ ],
produces: [
"application/json"
],

New Url Segment
/api/v{version}/Mortgage/{id}: {
get: {
tags: [
"Get"
],
summary: "Retrieve the mortgage by Id",
description: "This endpoint is responsible for retrieving Mortgage by Id",
operationId: "GetId",
consumes: [ ],
produces: [
"application/json"
],

The swagger file fails in azure devlops build pipeline because of duplicate operation id. Is there any way to generate unique operation id.

There are several options, but it all depends on your configuration. From what I can tell you are versioning by URL segment and using Swashbuckle to generate the documents. I'm going to assume that you have included the API Explorer extensions package for API Versioning. If all of my previous assumptions are correct, then you should be able to achieve the result you want by updating your configuration as follows to generate unique URLs in the document:
services.AddVersionedApiExplorer(
    options =>
    {
        options.GroupNameFormat = "'v'VVV";
        options.SubstituteApiVersionInUrl = true;
    } );

This will have the following effects:

API version 1.0 will be formatted as v1, 2.1 will be v2.1, and so on
The API version route parameter will be removed from the descriptor and the route template will have the corresponding token replaced by the formatted value

This means that based on your first example, the routes api/sample ,  api/v1/sample, and so on will be produced.
The other option is to create a document per API version. This is typically the approach used by the self-host Swagger/OpenAPI endpoints. I suspect for APIM you have to create a document which collates all versions in a single document.
I hope that helps.

Thanks Chris for replying you are correct  this approach is fine for self-host swagger.
But for APIM swagger step is failed due to duplicate operation id being generated for old and version route.
Is there any way to create a document which collates all versions in a single document.
I tried searching the for the solution but there is no straight forward way to that in azure devops.
I found below blog which tries to solve the problem with powershell script.
https://www.hakantuncer.com/2018/09/16/api-versioning-with-swagger-azure-api-management-services-and-asp-net-core-a-frictionless-devops-experience/

I'm not sure if Swashbuckle or any other OpenAPI document generator has out-of-the-box support for this behavior. They might, but I'm just not familiar with it. Ultimately, this will be a consequence of this particular style and configuration of versioning. You have essentially have two routes that refer to the same thing.
There are several possible solutions:

Generate the OpenAPI/Swagger document yourself (programatically) where you generate distinct operationId members or filter them out
Create a custom IOperationFilter and filter out unnecessary duplicates (you only really need one of the two routes)
Create a custom IOperationFilter that updates/regenerates a distinct operationId (I believe this is possible)
Create a custom IApiDescriptionProvider which filters out the descriptors which would produce duplicates (I can't remember what operationId is mapped to, so you may not be able to fix name generation with this approach; you want this to run after API Versioning's provider)

I don't have any examples of these approaches, but any one of them should work. Swashbuckle specific questions might be better answered on that repo or Stackoverflow.
I hope that helps you get started.


Validator not working

I'm using the Blog demo repository to check out Adonis. Somehow the validations are not working and validator.fails() always returns true even tho every field has values and is unique. It's not even returning a validator.message() when some fields are not filled, but required.
Spec:
OS: Windows 10
NPM: 5.7.1
Node: 8.10.0
Just in case it's needed: https://github.com/adonisjs/adonis-blog-demo/blob/master/app/Controllers/Http/UserController.js#L24+L45

Opened ticket in https://github.com/adonisjs/adonis-blog-demo


embedded_io_async::ReadReady returns incorrect value for a TcpSocket

Note - I originally ran into this on embassy-net 0.4.0 where the problem is read_ready() returning "true" when a connection is open but has no data. In main the code has changed and I think there is a different issue, that read_ready() returns false for a closed connection with no data - I've updated the issue to reflect this.
To replicate

Create a socket: TcpSocket and connect it to a server
Server doesn't send any data
Close the socket from the server end
Call socket.read_ready()
If socket.read_ready() returned true, call socket.read() with a 1-byte buffer, otherwise repeat from 4.

Observed result
socket.read_ready() returns false, and we don't try to read data, code loops forever with a closed socket.
Expected result
socket.read_ready() returns true, we call socket.read(), and get an EOF which allows us to see the closed connection and terminate the loop.
Version
embassy-net, main branch
Running on an esp32c3 using esp-wifi for the TcpSocket.
Details
The docs for read_ready() say:
    /// Get whether the reader is ready for immediately reading.
    ///
    /// This usually means that there is either some bytes have been received and are buffered and ready to be read,
    /// or that the reader is at EOF.
    ///
    /// If this returns `true`, it's guaranteed that the next call to [`Read::read`] or [`BufRead::fill_buf`] will not block.

However the code in tcp.rs is:
    impl<'d> embedded_io_async::ReadReady for TcpSocket<'d> {
        fn read_ready(&mut self) -> Result<bool, Self::Error> {
            Ok(self.io.with(|s, _| s.can_recv()))
        }
    }

This will return false when the connection is closed and the buffer is empty. However this should be true, since the docs say "or that the reader is at EOF" - and in this case we could call read() and it would give an EOF and not block.
Fix
I think what would be required would be to return true from read_ready() if either:

We have data in the receive buffer so read() will return this immediately, or
The connection is closed and so we read() will will return EOF immediately.

I had a look through the logic for can_recv and may_recv in smoltcp and I think read_ready() could be implemented as s.can_recv() || !s.may_recv().
While looking at this I drew up a table of the possibilities - if I'm correct, all the functions only depend on whether the receive half of the connection is open, and whether the buffer contains data:

Receive open
Buffer non-empty
may_recv
can_recv
read_ready

0
0
0
0
1 (EOF)

0
1
1
1
1 (Buffer)

1
0
1
0
0 (Block)

1
1
1
1
1 (Buffer)

I think this shows s.can_recv() || !s.may_recv() should work.
I also noticed that it looks like can_recv() in smoltcp could be shortened to !self.rx_buffer.is_empty() - I don't think the !self.may_recv() part is needed, but I think it should work fine anyway.

Ah just noticed this has been partially fixed in main, it now uses can_recv(), but I think s.can_recv() || !s.may_recv() would be better since it will return true when the connection is closed and empty, matching the or that the reader is at EOF part of the read_ready() docs. Otherwise non-blocking code that only checks for data when read_ready() is true will get stuck on a closed, empty connection rather than attempting to read and getting an EOF.

I've updated the description to cover the issue as seen in main, I think the fix is still the same.


Replace individual textures with texture arrays for LODs

What problem does this change solve?
Draw calls can have a fairly large overhead, and Crest makes a seperate one for each LOD that is calculated. Changing the LOD textures from individual textures to texture arrays will allow us to use geometry shaders to render to the LODs in a single draw call, reducing this overhead. This is demonstrated in the OceanDepthCache in this pull request.
This change also has the benefit of making the code in shaders a bit clearer as LODs are explicitly indexed.
What other changes does this PR include?

An example of a geometry shader being used to target different slices of a texture array is demonstrated in the OceanDepthCache.

The persistent LODs (foam and dynamic waves) are now made in single compute shader dispatches.

Shadowing is now done using compute shaders, but not a single dispatch.

What are potential downsides to this change?
(Older mobile) devices without compute shader support will not longer be able to run Crest
We couldn't avoid using compute shaders, because the ShapeCombine shader now writes and reads from the same texture array in order to combine the LODs together, something that can only be done in compute shaders.
However because of this, we have been able to bite the bullet and port some of the LodDataMgrs to compute shaders as well.
Shaders are fairly heavily modified
Whilst we have done our best to ensure the change is as non-intrusive as possible, it is a fairly big change, which is why we want to merge it into master before taking advantage of all the benefits it could bring.
What are the next steps once this is merged?

Ensure as many LODs as possible use a single draw call/dispatch.
Move compute shaders to async command buffers.

As this is such a big change, testing from anyone would be really appreciated! I've been able to test in-editor in Unity 2018.4 and 2019.1, and will also be able to test on Android.

I'm also happy to try and help anyone who is having difficulty integrating this change into their projects.

Geometry shaders aren't supported on metal, so I've made a PR which should allow this change to work on Apple devices (#273).
So please test that branch if you are testing on an Apple device. I cannot do so as I do not have an iOS device or Mac.

I believe this change is now ready to be merged. 😸

BOOM


Scatter plot: default marker size is not changed on moving slider

Steps to reproduce:

Open a table
Add scatter plot
Use context menu or properties panel to change default marker size on the plot

Expected results: markers size should be changed.
Actual results: nothing happens on moving the slider.

Implement handling marker size analogously to a box plot:

Auto Layout sets the marker size, whet it is set to -1
In case of other values, user can adjust the marker size

DG 1.16.4


Added create-pika-app node cli tool

So I finished up a first release of the aforementioned create-pika-app cli tool I had mentioned previously.
Its still a bit rough around the edges, but works well!
You can run it via npx directly, cd into the new directory, and immediately run npm run dev, for example, to see a live dev server of the included example project (a slimmed down version of the terminal-homepage example)
I'm not positive if 'Examples' is the correct spot for a cli not directly based on @pika/web, so please correct if wrong!
This project itself uses @pika/pack and some builders to package up, but it generates a starter @pika/web based preact/typescript/babel project, so maybe it makes more sense as an example under @pika/pkg. Up to you guys!
Thanks for all the great work, I hope this can be of use to others!

This is amazing, thank you! I'll merge and maybe move it into its own section of Starter Apps.
We've talked forever about having a pika init command, that walks you through creating either a Web App (@pika/web) or Package (@pika/pack). Any interest on working on that with me? This package would you've created would be a great start for that, and then we would just add support for more questions and more templates based on those answers.
Regardless, this is great, thanks again!

This is amazing, thank you! I'll merge and maybe move it into its own section of Starter Apps.
We've talked forever about having a pika init command, that walks you through creating either a Web App (@pika/web) or Package (@pika/pack). Any interest on working on that with me? This package would you've created would be a great start for that, and then we would just add support for more questions and more templates based on those answers.
Regardless, this is great, thanks again!

Yeah that sounds like a lot of fun! Let me know how I can help!


MC 1.18.2 Advancement bug (minor)

MC version : 1.18.2
Forge version: 40.1.20
culturaldelights-1.18.2-0.11.jar
Joining a world for the first time rewards you the advancement:
"Funniest thing I've ever seen!"

its a syntax error on the advancement causing it to skip the needed requirement. Have attached a fixed pickle advancement for either use in the mod, or as a datapack (just change the extension to .json)
pickle.txt
.

I've PR'd a fix with #9


Add GPT-4o FastHTML finetunes to Cosette .

I might be missing something, but I don't see the benefit of this, and it seems like a pretty ephemeral requirement. Shouldn't we just use the model string directly? I'll close this, but feel free to reopen it if I am missing something.


TLS bootstrapping is broken after snap updates

Hello,
Summary of issue:
TLS bootstrapping is broken after snap updates.
This is because TLS bootstrapping uses symbolic links to the actual certificates that are rotated and thus renamed when necessary.
Certificates and the symbolic links are preserved in the certs folder, but the symbolic link now points to the old microk8s folder under /var/snap/microk8s/xxxx/certs/ which is only retained a configurable number of updates.
Detailed explanation:
We have successfully activated TLS bootstrapping as described in: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/
After configuring and activating the boostrap we had the following new files in /var/snap/microk8s/2407/certs/:
$ pwd
/var/snap/microk8s/2407/certs
$ ls -l
total 156
drwxrwx---  2 root microk8s 4096 Oct  1 12:18 ./
drwxr-xr-x 11 root root     4096 Oct  1 11:34 ../
-rw-rw----  1 root microk8s 1025 Sep  7 16:18 admin.crt
-rw-rw----  1 root microk8s  920 Sep  7 16:17 admin.csr
-rw-rw----  1 root microk8s 1679 Sep  7 16:17 admin.key
-rw-rw----  1 root microk8s 1123 Sep  7 14:29 ca.crt
-rw-rw----  1 root microk8s 1679 Sep  7 14:29 ca.key
-rw-rw----  1 root microk8s   41 Sep 16 10:59 ca.srl
-rw-rw----  1 root microk8s  675 Sep  7 14:29 csr.conf
-rw-rw----  1 root microk8s  675 Oct  1 12:18 csr.conf.rendered
-rw-rw----  1 root microk8s  665 Sep  7 14:29 csr.conf.template
-rw-rw----  1 root microk8s 1127 Sep  7 14:29 front-proxy-ca.crt
-rw-rw----  1 root microk8s 1679 Sep  7 14:29 front-proxy-ca.key
-rw-rw----  1 root microk8s   41 Sep  7 14:29 front-proxy-ca.srl
-rw-rw----  1 root microk8s 1432 Sep  7 14:29 front-proxy-client.crt
-rw-rw----  1 root microk8s 1147 Sep  7 14:29 front-proxy-client.csr
-rw-rw----  1 root microk8s 1679 Sep  7 14:29 front-proxy-client.key
-rw-rw----  1 root microk8s 1058 Sep 16 10:59 kube-apiserver-kubelet-client.crt
-rw-rw----  1 root microk8s  952 Sep 16 10:59 kube-apiserver-kubelet-client.csr
-rw-rw----  1 root microk8s 1679 Sep 16 10:59 kube-apiserver-kubelet-client.key
-rw-rw----  1 root microk8s 1025 Sep  7 16:17 kube-controller-manager.crt
-rw-rw----  1 root microk8s  920 Sep  7 16:17 kube-controller-manager.csr
-rw-rw----  1 root microk8s 1679 Sep  7 16:17 kube-controller-manager.key
-rw-rw----  1 root microk8s 1126 Sep  7 18:51 kubelet-client-2021-09-07-18-51-46.pem
lrwxrwxrwx  1 root microk8s   68 Sep  7 18:51 kubelet-client-current.pem -> /var/snap/microk8s/2407/certs/kubelet-client-2021-09-07-18-51-46.pem
-rw-rw----  1 root microk8s 2319 Sep  7 14:30 kubelet.crt
-rw-rw----  1 root microk8s 1679 Sep  7 14:30 kubelet.key
-rw-rw----  1 root microk8s 1179 Sep  7 18:54 kubelet-server-2021-09-07-18-54-21.pem
lrwxrwxrwx  1 root microk8s   68 Sep  7 18:54 kubelet-server-current.pem -> /var/snap/microk8s/2407/certs/kubelet-server-2021-09-07-18-54-21.pem
-rw-rw----  1 root microk8s 1005 Sep  7 16:17 kube-proxy.crt
-rw-rw----  1 root microk8s  903 Sep  7 16:16 kube-proxy.csr
-rw-rw----  1 root microk8s 1679 Sep  7 16:16 kube-proxy.key
-rw-rw----  1 root microk8s 1013 Sep  7 16:16 kube-scheduler.crt
-rw-rw----  1 root microk8s  907 Sep  7 16:16 kube-scheduler.csr
-rw-rw----  1 root microk8s 1679 Sep  7 16:15 kube-scheduler.key
-rw-rw----  1 root microk8s 1541 Sep  7 14:29 server.crt
-rw-rw----  1 root microk8s 1261 Sep  7 14:29 server.csr
-rw-rw----  1 root microk8s 1675 Sep  7 14:29 server.key
-rw-rw----  1 root microk8s 1679 Sep  7 14:29 serviceaccount.key

Notice kubelet-client-current.pem and kubelet-server-current.pem
They both point to /var/snap/microk8s/2407/certs/...
This has worked until the last update (2546) where the folder /var/snap/microk8s/2407/ has been automatically deleted by snapd.
Throughout the updates after 2407 the symbolic links has not been updated, which was ok'ish because the old revision folder still existed and had the certificates, BUT after the last update the symbolic links points to certificates in a folder that no longer exists. This of cource breaks the link and thus communication between kube-apiserver and kubelet.
What was expected:
The certs folder is copied to the new snap revision folder but that is not sufficient.
Symbolic links that resides in the certs folder and that points to files in a specific revision folder should be updated to match the new revision folder. Otherwise snap updates will eventually break the cluster if using TLS bootstrapping.
Version details:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-16T02:43:21Z", GoVersion:"go1.16.7", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21+", GitVersion:"v1.21.5-3+83e2bb7ee39726", GitCommit:"83e2bb7ee3972654beca02a12a94777da22d6669", GitTreeState:"clean", BuildDate:"2021-09-28T15:36:44Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}

Best regards
Jesper Berggren

Hi @JesperBerggren
When a new snap revision is released the  /var/snap/microk8s/<new_revision_number> directory is created and the link /var/snap/microk8s/current is updated to point to it. Would it be possible to use the /var/snap/microk8s/current to point to the certs directory?

Hi @ktsakalozos
Thanks for your answer. Yes, I generally get update functionality with the new directory and a symbolic link called current that just points to the folder with the current revision number.
To be honest I'm not really sure how exactly the TLS bootstrapping and certificate rotation works behind the scenes.
Is there an argument to provide a base-folder for issued certificates. Does it use --cert-dir in kube-apiserver? If so, it's per default set to: --cert-dir=${SNAP_DATA}/certs
Actually I thought it was kube-controller-manager that issued the certificates and if so, I would think it only uses its own arguments. In that case it could be that it uses the base-folder for either --root-ca-file or --cluster-signing-cert-file
In any case, all arguments related to certificates in the files under /var/snap/microk8s/current/args/ are given with the {SNAP_DATA} environment variable. And that resolves to the specific revision number - e.g. SNAP_DATA=/var/snap/microk8s/2546
If I knew the specific variable(s) that needs to be updated from:
{SNAP_DATA}/certs
to:
/var/snap/microk8s/current/certs
then I could just update that or those arguments. Alternatively I could just replace all instances of {SNAP_DATA} with /var/snap/microk8s/current/args/ !?
The issue is for both:

TLS bootstrapping of the kubelet-client-current.pem
Certificate Rotation of the kubelet-server-current.pem

Any insight would be greatly appriciated.
Thanks in advance!
Best regards
Jesper Berggren