The lock method conflicts with ActiveRecord::Querying#lock

Class method lock defined in Redis::Objects::Locks::ClassMethods conflicts with lock in ActiveRecord::Querying#lock, which makes it impossible to enable ActiveRecord Pessimistic Locking by Account.lock.find(1).
We can still chain the method like this Account.wherer(id:1).lock.take. but that is dirty and better be avoided.
This issue could be part of #153 .

This is a tough one, because the design philosophy of Redis::Objects is that database locking is a terrible idea.  On the other hand, I can see the argument that there could be edge cases where you would want to use ActiveRecord locking.  I don't have a strong opinion other than I'm worried at this point that it would break backwards compatibility.  I would be ok with changing this to something like rlock or redis_lock if we bumped the version to 2.0

It'll also make with_lock not working if you include Redis::Objects in an ActiveRecord
EX:
class User < ActiveRecord::Base
  include Redis::Objects
  counter :your_counter
end

I solved the problem by moving it to a service object
class CounterService
  include Redis::Objects
  attr_reader :id # for redis

  def initialize(id)
    @id = id
  end

  counter :your_counter
end

class User < ActiveRecord::Base
  def your_counter
    CounterService.new(id).your_counter
  end
end

CC @tmsrjs - another issue related to lock that may be worth looking at in version 2.0.0

@nateware I think this issue needs a fresh look. In particular, the fact that this collision causes Active Record's with_lock to silently fail to acquire a lock is super surprising and very hard to detect.
At a minimum, while this method name collision exists, I recommend updating the README to discourage mixing Redis::Objects into ActiveRecord models. @khiav223577's pattern plus adding method delegators is a fine workaround to recommend instead.

What is the consensus on this issues and the similar #191? I'm ok at this point if we want to rename the method to redis_lock or rlock (or similar) and bump the version to 2.0.0

This has been fixed in 2.0.0.alpha and pushed to rubygems


Multi Cluster pattern?

We have multiple k8s cluster, is it possible to utilize single or way to use coroot across clusters?

@sumeet-zuora, you can create several "projects" (clusters) in a single Coroot instance and easily switch between them

Is it possible to add additional labels like "cluster", and filter by cluster?
For example, I have 3 clusters and service-to-service communication between them. Or I have cluster + some workloads on VM's/hardware servers, and I want to see service communications between them.

We are planning to implement this feature in a slightly different way.
Taking into account possible overlaps in IP addresses and container names across clusters at the metric level, we've decided to implement a multi-cluster view using data gathered from each cluster independently. This approach eliminates the need to add additional labels to the metrics.
However, most likely, this feature will be available only in Coroot Cloud.

usually in multi-cluster approach you have already different label set on metrics - as thanos/cortex are usually used to gather data into single instance for convenience.
I would also like to see i.e. label support in coroot, which can be used to distinguish instance of an applications using different dimensions.
I wonder how coroot can be set up in mult-cluster environment - like cluster agent on each cluster, pointing to central crdb instances + set of node agents pointing to this custer agent - would it be enough to start with ?


add IMGUI support

fix #10
old branch, need long rebase... I'll delete (for testing only)
https://github.com/kassane/sokol-d/tree/imgui-support
inspired by:

https://github.com/floooh/sokol-zig/pull/69
https://github.com/floooh/sokol-zig/pull/70

Need cimgui binding for run example. Old module amalgamation cimgui + sokol_imgui:
https://github.com/kassane/sokol-d/blob/1d1fc586969aba82fc6b854aeb2d16f7ec656976/src/sokol/imgui.d
now, only sokol_imgui:
https://github.com/kassane/sokol-d/blob/1110006dd280fca4be0a16402fc6455f1c82f494/src/examples/imgui.d#L103-L115

Some questions (for zig-dev)
What would you add cimgui to the example?
Unlike zig translate-c, importC doesn't read header, only C source.
However, this still falls short (translate-c also has some issues). The only difference between the two projects is the level of support (zig project wins here).

More info - commands
Zig translate-c has the ability to convert all the code (declaration + implementation), importC just the declaration (equivalent to rust-bindgen or sokol_gen).
# zig
$ zig translate-c <c-flags> <C source> -lc
# D
$ ldmd2/ldc2 <C source> -Hf=<D interface source> (*.di)
# zig have inside clang,
# ldc2 need call cc (system compiler) - like rustc.
# But -gcc is used only C source and -linker= any object (w/o C source)
# and rustc equivalence is -linker= flag.

And not have current D module about cimgui, only old imgui (C++, no extern(C)) version.

Please, @floooh.
Test it!

Preview

Linux (native):

Wasm32/Firefox:

Note:  For wasm32 build change...
https://github.com/kassane/sokol-d/blob/8d589cb82b9a509f561147e3feec853cc1663157/build.zig#L245
Why block? CI error. Why imgui-cpp need assert.h, but rebuild (no-clean global cache) works!
And for old ldc2 versions (1.36...1.38 [latest]) change... .freestanding to .emscripten or try ldc2-master
https://github.com/kassane/sokol-d/blob/8d589cb82b9a509f561147e3feec853cc1663157/build.zig#L512-L515

Note that there was an bug in the translateC step in the cimgui sample which caused this above error about missing assert.h in imgui.h when trying to build for wasm32-emscripten. I fixed this by always running the translateC step with the host target [...]

According to this solution, perhaps it would have been possible to use importC to bypass the error, just like translate-c.
However, the assert.h error occurs during the libsokol build, a step before ldc2.
I know there exists a step wait for emsdk_setup in libsokol and this will run imgui in a direct dependency.
https://github.com/kassane/sokol-d/blob/20fe32c375502d2d4bc709086a0fdd2027e31f0c/build.zig#L79-L82
https://github.com/kassane/sokol-d/blob/20fe32c375502d2d4bc709086a0fdd2027e31f0c/build.zig#L184-L194

Another question that puzzles me. Would it be useful to use the build.zig dependency to make sokol-zig a dependency of sokol-d?
That way we could reduce the complexity redundancy of build.zig.

@floooh , my assert.h fix - if with_imgui enabled, move lib.step.dependOn(&emsdk_setup.step); to libimgui.step.dependOn(&emsdk_setup.step);
https://github.com/kassane/sokol-d/commit/bca71beb160425aeecf7a76f7256f4e2ca356744

Ah btw, I fixed this a bit differently, by letting the cimgui library depend on the sokol C library (up in the top level project):
https://github.com/floooh/sokol-zig-imgui-sample/blob/87d703e2f1f43135a5a5e9bfc2a56910d48b7e7b/build.zig#L69-L73
Since the sokol C library depends on the Emscripten SDK setup this also guarantees that the SDK is setup.

Another question that puzzles me. Would it be useful to use the build.zig dependency to make sokol-zig a dependency of sokol-d?

Not a fan tbh, it would probably make more sense to move the emsdk setup into a separate project (and Zig package) which could then be used both by sokol-zig and sokol-d.

Wrote a ticket for that idea (to handle the C library stuff in sokol-zig build.zig): https://github.com/floooh/sokol-zig/issues/71

it would probably make more sense to move the emsdk stuff into a separate project (and Zig package) which could then be used both by sokol-zig and sokol-d.

Make sense. Like,
https://github.com/kassane/anotherBuildStep (a.k.a abs)
Also, I have not yet completed emsdk support. But in pacman.d, besides sokol-d (passing libsokol + D modules), using abs to set ldc2.
Maybe ldc2/ldmd2 could be ported outside of sokol-d using this idea.


recovery: fix more PRR calculation issues

In addition to #976, fix additional divide by zero case.
Also test cases for all overflow added, including #973.

FTR, I cherry-picked the commit from https://github.com/cloudflare/quiche/pull/976 so that @omarkilani gets properly credited for the fix (thanks!).


"fix the errors" link shouldn't be highlighted once It's clicked quickly.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to web chrome
Go to settings -> workspaces -> select any workspace -> connect bank accounts
Enter wrong info and click "fix the erros" link quickly

Expected Result:
"fix the erros" link shouldn't be highlighted once It's clicked quickly.
Actual Result:
"fix the erros" link is highlighted once It's clicked quickly.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/232656468-a4db1df6-db39-4fbb-b3db-ff064d99a466.mp4
screen-capture (10) (1).webm
Expensify/Expensify Issue URL:
Issue reported by: @mahmudjontoraqulov
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1681732483125749
View all open jobs on GitHub

Triggered auto assignment to @joekaufmanexpensify (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

This doesn't really feel like a bug to me. The rest of the call to action where the fix the errors button is embedded is just regular text. If you fast click 3 times on any text in the application that's not a button, we highlight the text. Given this button is embedded alongside regular text (the entire sentence is not a button), it makes sense to me that this works the way it does not.
Going to close this for now, but LMK if you disagree, and happy to discuss further!


use the advisory speed limit for a curve instead of calculating

Whenever a curve has a marked advisory speed limit ignore the calculated speed for the curve and use the advisory speed. The advisory speed limit should be set on the way between the two curve hazard/speed advisory signs. The advisory speed limit should be set based off of the posted advisory speed for the curve. Using the advisory speed limit should be more accurate than our own speed calculations since osm doesn't have the ability to store true curves resulting in the calculations being inexact. The advisory speed limit should have been posted based off of an engineering study of the curve to provide a suggested speed.

@pfeiferj Just got around to testing this out. Seems to be working well in my limited testing. Are any changes still needed to this?

@pfeiferj Just got around to testing this out. Seems to be working well in my limited testing. Are any changes still needed to this?

I believe it's good to go

Thanks for the PR! 🎉


Can't mock a virtual module from __mocks__

Describe the bug
While you can mock virtual modules when you define the mock value in the test, e.g.:
import { expect, test, vitest } from 'vitest'
// @ts-expect-error not typed module
import { value as virtualValue } from 'virtual-module'
vitest.mock('virtual-module', () => {
  return { value: 'mock' }
})

test('mocked exports should override original exports', () => {
  expect(virtualValue).toBe('mock')
})

It is not possible if you have a <root>/__mocks__/virtual-module.ts file defined and only do:
import { expect, test, vitest } from 'vitest'
// @ts-expect-error not typed module
import { value as virtualValue } from 'virtual-module'

test('mocked exports should override original exports', () => {
  expect(virtualValue).toBe('mock')
})

This is supported in Jest.
Reproduction
See https://stackblitz.com/edit/vitest-dev-vitest-tx14cb?file=mocks%2Fidontexist.ts,test%2Fautomocking.spec.ts,src%2Futils.ts&initialPath=__vitest and the test in automocking.spec.ts:
test('can mock non existant packages', () => {
  expect(idontexist).toBe('barfoo');
});

even though there is a <root>/idontexist.ts it is not being picked up and the test fails with Failed to load idontexist.
System Info
n/a

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Thanks for the quick turnaround 👍


fix(DIST-1988): Pass query param indicating there is embed callback for ending button click

:tada: This PR is included in version @typeform/embed-v2.3.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


get multiple values in one request

added to wrong repo, moved here: https://github.com/samthomson/get-crypto-fiat-values/issues/1


[feat] UX/UI Design

Create high fidelity mockups similar to based64.xyz using Figma.
Responsive layout based on Tailwind recommandations (5 breakpoints).

@drspacemn could you assign it to me please ?
Thanks !

Mockups are ready !
Design has been declined on 3 breakpoints : mobile, tablet and desktop.
On mobile and tablet, I used is a fluid grid : 12 col with 16px gutter and 16px (=1rem) margin on left and right.
On desktop, I used a 1440px grid : 12 col (100px each) with 16px gutter and 32px (=2rem) margin on left and right.
All the design is based on multiples of 4 : margin/padding can be 4, 8, 12, 16, 20, 24, etc.
Link :

Mobile : https://www.figma.com/file/ERLVGfpJ0dRzxyZ89tfhOF/Blobstream-Starknet?type=design&node-id=2118%3A59&mode=design&t=MNDMTxxg8w4zZSe4-1
Tablet : https://www.figma.com/file/ERLVGfpJ0dRzxyZ89tfhOF/Blobstream-Starknet?type=design&node-id=2118%3A60&mode=design&t=MNDMTxxg8w4zZSe4-1
Desktop : https://www.figma.com/file/ERLVGfpJ0dRzxyZ89tfhOF/Blobstream-Starknet?type=design&node-id=2118%3A62&mode=design&t=MNDMTxxg8w4zZSe4-1

Let me know if you need anything else !

great work!


When rolling any die x a 1 and an x should be displayed in bold or italics or underscore. Perhaps it should even be customizable!

This would be awesome for lots of pen and papers, so you can define positive and negative crit values.
I would also vote for a comment to add if 1 or max are reached. Of course customizable.
example:
roll 1d20, if ==1 bold and print defined comment, if ==20 bold and print defined commen


temp

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#30
#29  👈
#28
#26
#25
#23
#22
#21
#20
#19
#18
#17
master

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

Join @ermattt and the rest of your teammates on  Graphite


Connect With Jabbim

Hi @Norgul I'm back,
I use the last version .
I can't connect with jabbim.com

`

<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" id="16631993638058903553" version="1.0" xml:lang="en" from="jabbim.com">
stream:features

</stream:features>

stream:error

not well-formed (invalid token)
</stream:error>
</stream:stream>
`
can you help me ?

Sure, I will take a look and get back at you

It looks like Jabbim uses TLS which I didn't yet implement in the library. I will do that and inform you once done

Hello @jrpikong,
can you try out the new version 2.1.0?
Along with your options just add ->setTls(true);

@jrpikong I am closing the issue as the feature is implemented. Let me know if there is anything else needed. Thanks

Hi @Norgul I have new error if I try to use TLS
namespace Norgul\Xmpp; class Example {     protected static $host     = 'jabbim.com';     protected static $port     = 5222;     protected static $username =<EMAIL_ADDRESS>    protected static $password = 'password213';     public static function go()     {         $options = new Options();         $options             ->setHost(self::$host)             ->setPort(self::$port)             ->setUsername(self::$username)             ->setPassword(self::$password)             ->setUseTls(true);         $client = new XmppClient($options);         $client->connect();         $client->iq->getRoster();         $client->message->send('Hello world', 'smtel_001@jabbim.com');         // Uncomment if you want to manually enter raw XML (or call a function) and see a server response //        (new self)->sendRawXML($client);         do {             $response = $client->getResponse();             $client->prettyPrint($response);         } while (true);         $client->disconnect();     } }
and This the response :
sniper@sniper:~/Projects/smtel/jabber$ php Example.php  PHP Warning:  Module 'curl' already loaded in Unknown on line 0 PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /home/sniper/Projects/smtel/jabber/vendor/norgul/xmpp-php/src/Socket.php on line 53

Hello @jrpikong, which version are you using?

Response from server I'm getting is the following:
<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
    <not-authorized/>
    <text xml:lang='en'>Invalid username or password</text>
</failure>

Are you sure credentials are okay?
Btw, if you download the new version (v2.1.5) you can get rid of setUseTls(true) argument. TLS if supported is now enabled by default


Feature/play pause redux

Summary
PR for storing play/pause state in redux. Work in progress PR, so will definitely need to change some things before merging to develop.

Why is this change needed?
Play/pause state of the video should be in redux. Also users should be able to pause the video by pressing space.

What did you change?
Added play/pause state to redux. Also added a isSpacePressed state to redux to change play/pause state when space bar is pressed, but I'm not sure if this is the best way to do things.

Does it depend on any other changes/PRs?
No

Screenshots of UI changes, if any
None

Explain things which the reviewers are likely to need explaining. Remember that they didn’t write the code.
Right now how I am getting the video to pause when pressing spacebar is a useEffect in VideoController.tsx that calls the
onClickPlayPause() function whenever the state of spacePressed in redux store is changed. This state is changed when spacebar is pressed (see keyboardShortcutsRegistration.ts). This causes a bug of the video to play when a project is accessed, and its also generally not great code so I was hoping for some suggestions to improve this.

Testing details if applicable
None

Any sections in particular you want reviewed/discussed
Using spacebar to pause/play the video

Links to any design documents which you made/used in order to make the decisions that you made.

OS

[ ] Linux
[ ] MacOS
[x] Windows

Hey Chloe, deleted the spacePressed state from redux and did the menu/IPC stuff. Just wanna get everything double checked before I implement seek and forward/backwards.

Just checking in here - looks great from my end - HUGE improvement for the user! I noticed that when the plauback runs to the end of the clip, I have to click space twice to get it to start playing again from the beginning - ideally if the video playback ended and I pressed play again, it should start back from the beginning. But very minor point. Also love that the hot key works regardless of where I click in the transcription page.
Let me know when this PR is in the final state and I will re-review

Thanks for the feedback Irmy. I should be able to add a fix for replaying the video.

Made some changes fixing up the interfaces/bugs and added a separate playback menu to the toolbar. Let me know what you think.

Merged from develop and everything seems to be working okay.

Okay, I have removed casting.


How to use flex width on charts?

In order to let my app work on both phone and tablet, I need to apply flex to everything.
Is there any way to set chart width/height to flex?

No support for that in this library itself and I would imagine that would be quite a bit of work to support. I'm open to any proposals on approach or pull request contributions that would provide support for this. Feel free to provide feedback and reopen as necessary.

Not a solution, but can halp you. use Dimensions to calculate width and height and pass it to your graph. for example
var {width, height} = Dimensions.get('window');
.......
var options = {
width: width / 2
height: height / 5
color: c.BLUSHBLUE,
......
If you are to use gifferent orientation, handle it to calculate correctly


[Bug]: $after querystring parameter gets added multiple times

What happened?
Ran the initial request with ?$first=5.
http://localhost:5000/api/StaffType?$first=5
Then ran the next link, it only contained one $first and one $after.
http://localhost:5000/api/StaffType?$first=5&$after=W3siRW50aXR5TmFtZSI6IlN0YWZmVHlwZSIsIkZpZWxkTmFtZSI6IklkIiwiRmllbGRWYWx1ZSI6OSwiRGlyZWN0aW9uIjowfV0=
The following nextLink contained two $after parameters.
http://localhost:5000/api/StaffType?$first=5&$after=W3siRW50aXR5TmFtZSI6IlN0YWZmVHlwZSIsIkZpZWxkTmFtZSI6IklkIiwiRmllbGRWYWx1ZSI6OSwiRGlyZWN0aW9uIjowfV0%3D&$after=W3siRW50aXR5TmFtZSI6IlN0YWZmVHlwZSIsIkZpZWxkTmFtZSI6IklkIiwiRmllbGRWYWx1ZSI6MTcsIkRpcmVjdGlvbiI6MH1d
When you follow that link it results in the following error.
{
"error": {
"code": "BadRequest",
"message": "The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.\n   at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)\n   at System.Convert.FromBase64String(String s)\n   at Azure.DataApiBuilder.Core.Resolvers.SqlPaginationUtil.Base64Decode(String base64EncodedData) in /src/src/Core/Resolvers/SqlPaginationUtil.cs:line 516\n   at Azure.DataApiBuilder.Core.Resolvers.SqlPaginationUtil.ParseAfterFromJsonString(String afterJsonString, PaginationMetadata paginationMetadata, ISqlMetadataProvider sqlMetadataProvider, String entityName, RuntimeConfigProvider runtimeConfigProvider) in /src/src/Core/Resolvers/SqlPaginationUtil.cs:line 285",
"status": 400
}
}
I expected the endpoint to return the nextLink only containing one $after parameter, which points to the next set of records based upon the request that generated the response.
Version
0.8.52
What database are you using?
Azure SQL
What hosting model are you using?
Local (including CLI)
Which API approach are you accessing DAB through?
REST
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

I evaluated the contents of the two $after parameters.  This makes a slight bit of sense to contain info for the current set of data and the next. However, it is still up to the calling application to store previous $after values so that it can page the data in both directions.  If we are taking the assumption that the calling app will be doing this, I feel that only the $after data parameter for the next set of records needs to be returned.

Hey @cdgipson, I'm unable to repro this. In my setup, the nextLink always contains only one $after field (Using the nextLink twice does not lead to the addition of 2 $after fields in the URL.). Also, using the nextLink, I'm able to successfully query until the end of records contained in the entity without hitting any errors. I tried this against table, view and stored procedure;  everything seems to work correctly.
Ex:
GET  /api/Book?$first=2

First nextLink ---> https://localhost:5001/api/Book?$first=2&$after=W3siVmFsdWUiOjQsIkRpcmVjdGlvbiI6MCwiVGFibGVTY2hlbWEiOiJkYm8iLCJUYWJsZU5hbWUiOiJib29rcyIsIkNvbHVtbk5hbWUiOiJpZCJ9XQ%3D%3D
Second nextLink ---> https://localhost:5001/api/Book?$first=2&$after=W3siVmFsdWUiOjYsIkRpcmVjdGlvbiI6MCwiVGFibGVTY2hlbWEiOiJkYm8iLCJUYWJsZU5hbWUiOiJib29rcyIsIkNvbHVtbk5hbWUiOiJpZCJ9XQ%3D%3D
One thing to note is that the nextLink generated is a complete URL against which the subsequent GET request can be executed directly (No modifications are needed).
Could you please share more info regarding your setup that leads to this error - your config file, the type of entity, the way you are executing the GET requests, etc.

Fixed with #2006 in latest stable release. 0.10.23 https://github.com/Azure/data-api-builder/releases/tag/v0.10.23


RabbitMQTrigger not working with on-premises RabbitMQ and Azure Function Hybrid Connection

Environment:
.net 6
RabbitMQ installed in my laptop.
Azure Function hosted in Basic App Service Plan.
Hybrid Connection set up in my laptop and connected.
Cases:
When [RabbitMQTrigger] is used nothing happen. Message stays in queue.
When [TimeTrigger] is used with RabbitMQ.Client.ConnectionFactory and consumer.Received even - it works. Messages pick up by Function.
But nice to have [RabbitMQTrigger] working.

This issue could be due to using a Basic app service plan.
Official documentation mentions that "The RabbitMQ bindings are only fully supported on [Premium] and [Dedicated App Service] plans.".
We are currently using [RabbitMQTrigger] with an on-premise RabbitMQ service with a premium app service plan, and it's working as expected.


Left-over temp() files (previously #1732)

This is the same as https://github.com/snakemake/snakemake/issues/1732 which is marked as draft. Since my colleague who wrote the original issue is on vacation and I have no permissions to update the issue I created this one to replace the original issue. We will delete https://github.com/snakemake/snakemake/issues/1732 as soon as he is back.
Snakemake version
Bug appeared in the 7.x series.
The bugfix for temp files introduced in version 7.3 (and further fixed in 7.3.5) hasn't fixed all our issues.
Bug still present as of 7.8.2
Describe the bug
Not all files tagged as temp() are cleaned-up. What we have observed while rummaging through logs and scratch directories.
Logs
This is the log from the minimal example below:
Building DAG of jobs...
Using shell: /usr/bin/bash
Provided cluster nodes: 1
Job stats:
job             count    min threads    max threads
------------  -------  -------------  -------------
all                 1              1              1
consume_data        1              1              1
create_data         1              1              1
total               3              1              1

Select jobs to execute...
[Thu Jun 30 17:00:26 2022]

group job a (jobs in lexicogr. order):

    [Thu Jun 30 17:00:26 2022]
    rule consume_data:
        input: files/used_output
        output: files/done.txt
        jobid: 1
        reason: Missing output files: files/done.txt; Input files updated by another job: files/used_output
        resources: mem_mb=<TBD>, disk_mb=<TBD>, tmpdir=/tmp

    [Thu Jun 30 17:00:26 2022]
    rule create_data:
        output: files/used_output, files/unused_output
        jobid: 2
        reason: Missing output files: files/used_output
        resources: mem_mb=1000, disk_mb=1000, tmpdir=/tmp

Submitted group job 14f0bb70-acb7-57cb-9029-97367090779e with external jobid 'Job <223861310> is submitted to queue <normal.4h>.'.
[Thu Jun 30 17:00:56 2022]
Finished job 2.
[Thu Jun 30 17:00:56 2022]
Finished job 1.
2 of 3 steps (67%) done
Removing temporary output files/used_output.
Select jobs to execute...

[Thu Jun 30 17:00:56 2022]
localrule all:
    input: files/done.txt
    jobid: 0
    reason: Input files updated by another job: files/done.txt
    resources: mem_mb=1000, disk_mb=1000, tmpdir=/tmp

[Thu Jun 30 17:00:56 2022]
Finished job 0.
3 of 3 steps (100%) done
Complete log: .snakemake/log/2022-06-30T170026.229927.snakemake.log

Minimal example
The following example creates an  temporary output file files/unused_output which is not used anywhere else in the workflow.
Running the workflow locally removes this file after completion.
Running it using snakemake --cluster "bsub" -j 1 does not cleanup this file.
Note:
Setting group and having at least 2 jobs in this group are required to trigger this error.
rule all:
    input:
        "files/done.txt",

rule create_data:
    output:
        used_output = temporary("files/used_output"),
        unused_output = temporary("files/unused_output"),
    group: "a"
    shell:
        """
        echo rule a > {output.used_output}
        echo rule a > {output.unused_output}
        """

rule consume_data:
    input:
        froma = "files/used_output"
    group: "a"
    output:
        done=("files/done.txt")
    shell:
        """
        touch {output.done}
        """

@uweschmitt, just found this thread and realized it's related to a PR I just drafted involving group jobs and temp files #1765. I'm not sure what causes the bug here, but I'm wondering if you think they intersect at all. Another related issue is #1474, which seems to report a similar problem.

Cool, I'm actually surprised, because my PR doesn't actually adjust the deleting of temp files, it just tells Snakemake to (sometimes) not worry about temp files already deleted. But if it works, it works

@uweschmitt :This also enables us to move some of the files that we currently store to the cluster-wide scratch and that Snakemake accidentally leaves behind, back to the node-local temp.

@uweschmitt I could not reproduce your finding that #1765 (unintentionally) fixes the issue here. It also did not remove files/unused_outputwhen running the minimal example on the cluster.
But I think I found the reason...
The finish method of the dag.DAG class receives a job argument that could either be a single job or a job group:
https://github.com/snakemake/snakemake/blob/c07732e2c7d6e95fabb3f2570bf0a1b0af2ac2cb/snakemake/dag.py#L1550-L1561
It's only a job group when run on the cluster, otherwise the individual jobs are passed to this method separately.
A few lines further down in finish, it defines a local variable named jobs that is either just the job group (if the job is a group) or a list containing but the single job:
https://github.com/snakemake/snakemake/blob/c07732e2c7d6e95fabb3f2570bf0a1b0af2ac2cb/snakemake/dag.py#L1568-L1571
It then iterates over that list/iterable and uses job as the loop variable:
https://github.com/snakemake/snakemake/blob/c07732e2c7d6e95fabb3f2570bf0a1b0af2ac2cb/snakemake/dag.py#L1595-L1599
So now the local job variable is always a single job. If the original job that was passed in was a group, the local variable now points to the last job from that group. And it only handles temporary files for that one job, forgetting about the others:
https://github.com/snakemake/snakemake/blob/c07732e2c7d6e95fabb3f2570bf0a1b0af2ac2cb/snakemake/dag.py#L1619
I think it should simply call handle_temp for all jobs from the original group, like so:
for job in jobs:
    self.handle_temp(job)

(Would also not hurt to avoid reusing job. In other places the code usually calls the loop variable j.)
That certainly fixes the minimal example, but it also seems like the right thing to do in general. (I'm very new to this code base, so maybe take that with a grain of salt.)
CC @DrYak

@john-hen nice find, that makes much more sense. Note that self.handle_temp is able to properly handle group jobs, so if job was never reused, the original job variable could be passed in cleanly. But there's at least two loops where job is overwritten, and one of them also uses j (see the dependencies comprehension, so your solution would be the easiest.

@pvandyken You're right, I forgot about that, thanks for pointing that out. I'll create a PR on Monday (still have to familiarize myself with the contribution guidelines), but will go with whatever makes more sense. Maybe passing the original job to handle_temp is cleaner, I'll decide then.


perf: Add special case to Table.add_rows to increase performance

See #606
Summary of Changes
perf: Add special case to Table.add_rows to increase performance

:tada: This PR is included in version 0.21.0 :tada:
The release is available on:

v0.21.0
GitHub release

Your semantic-release bot :package::rocket:


CoreDNS configmap is not updated when Submariner is reinstalled.

Steps to reproduce the issue:

In Submariner repo, run "make clusters" - this will setup the necessary KIND clusters.
Lets deploy Submariner.
subctl deploy-broker --kubeconfig output/kubeconfigs/kind-config-cluster1 --service-discovery
subctl join --kubeconfig output/kubeconfigs/kind-config-cluster2 --clusterid cluster2 --disable-nat ./broker-info.subm
Verify that in ConfigMap of CoreDNS the ServiceIP for supercluster.local:53 is properly set to submariner-lighthouse-coredns.

Now lets uninstall Submariner:
kubectl --context cluster2 delete namespace submariner-operator
kubectl --context cluster1 delete namespace submariner-k8s-broker

Reinstall Submariner in the clusters once again.
subctl deploy-broker --kubeconfig output/kubeconfigs/kind-config-cluster1 --service-discovery
subctl join --kubeconfig output/kubeconfigs/kind-config-cluster2 --clusterid cluster2 --disable-nat ./broker-info.subm

The ConfigMap of CoreDNS should ideally be updated with the new ServiceIP of submariner-lighthouse-coredns, but it still points to the old one.

@aswinsuryan @vthapar @nyechiel : Do we want to target this for 0.6?

@manosnoam JFYI, you might be hitting this issue in your testing.

@aswinsuryan @vthapar @nyechiel : Do we want to target this for 0.6?

Yes, I think we should target this to v0.6. Thanks for reporting the issue @sridhargaddam

I think it is related to https://github.com/submariner-io/submariner/issues/641
On my env I run this cleanup in order to reinstall:
oc apply -f - <<EOF

  apiVersion: operator.openshift.io/v1
  kind: DNS
  metadata:
    finalizers:
    - dns.operator.openshift.io/dns-controller
    name: default
  spec:
    servers: []
EOF

I think it is related to submariner-io/submariner#641
On my env I run this cleanup in order to reinstall:
oc apply -f - <<EOF

  apiVersion: operator.openshift.io/v1
  kind: DNS
  metadata:
    finalizers:
    - dns.operator.openshift.io/dns-controller
    name: default
  spec:
    servers: []
EOF

AFAIU, it may not be the same issue. @aswinsuryan mentioned that this issue will not be seen with OCP.

I think it is related to submariner-io/submariner#641
On my env I run this cleanup in order to reinstall:
oc apply -f - <<EOF

  apiVersion: operator.openshift.io/v1
  kind: DNS
  metadata:
    finalizers:
    - dns.operator.openshift.io/dns-controller
    name: default
  spec:
    servers: []
EOF

AFAIU, it may not be the same issue. @aswinsuryan mentioned that this issue will not be seen with OCP.

This issue was fixed with https://github.com/submariner-io/submariner-operator/pull/449, you could remove the script and try it should work.


Teckin SP22: could not establish sslpsk socket

Hi,
I am trying to flash 4 Teckin SP22 that I got today from amazon.de.
I updated my local git repo and rerun install_prereq.sh.
I then started start_flash.sh, connected to the AP, made sure that the LED on the SP22 was blinking blue and then hit Enter.
The screen output:
Starting smart config pairing procedure
Waiting for the device to install the intermediate firmware
Put device in EZ config mode (blinking fast)
Sending SSID                  vtrust-flash
Sending wifiPassword
Sending token                 00000000
Sending secret                0101
................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
................
SmartConfig complete.
Resending SmartConfig Packets
..................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
..................
SmartConfig complete.
Resending SmartConfig Packets
...........
Device did not appear with the intermediate firmware
Check the *.log files in the scripts folder
Stopping smart config
Do you want to try flashing another device? [y/N] N
Exiting...

I found this error in smarthack-psk.log
PSK: 03fa10a357626f2bdbc2a1db48fcfd3902deac10a1cf6645fba3b1c2bec85540
('could not establish sslpsk socket:', SSLError(1, u'[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:727)'))
^CTraceback (most recent call last):
  File "./psk-frontend.py", line 111, in <module>
    main()
  File "./psk-frontend.py", line 104, in main
    r,_,_ =  select.select(readables, [], [])
KeyboardInterrupt

I don't know what firmware the sockets are on because I haven't connected them to the app yet.
Any ideas what I am doing wrong?
smarthack-mqtt.log
smarthack-psk.log
smarthack-udp.log
smarthack-web.log
smarthack-wifi.log

From your web log:
WARNING: it appears this device does not use an ESP82xx and therefore cannot install ESP based firmware

Teckin has switched to new hardware. Unfortunately neither tuya-convert nor ESP based firmwares like Tasmota/Espurna will work here.
Duplicate of #269 #310 #321 #327 #341 #364 #370 #380 #391 #425 #438


Make the Energy Star utility data authoritative

Description
Use the Energy Star dataset to generate authorities.json, rather than
having authorities.json hold a hand-curated set of utilities. We can
still manually add logos to utilities in authorities.json, but their
names will come from Energy Star.
The zip-to-utilities table in SQLite is unchanged, but the utilities
table is now gone. This changes the initial curation workflow a little
bit -- slightly for the worse in my opinion -- but overall I think
it's still fine. We'll only have to do it once per state.
This will result in us showing a bunch of utilities for which we
haven't done data collection at all, or which we've confirmed do not
offer any incentives. The justification for doing this is that we'll
be much more likely to let users choose their actual utility, rather
than having to pick the wrong answer, or an uninformative "Other"
option. If we decide that we want to be able to distinguish between
these kinds of utilities (still an open product question), we can
easily add a field to the struct in authorities.json to capture those
distinctions.
Test Plan
yarn lint and yarn test.
Look at the diff to authorities.json. (There's some churn because I'm
sorting the utilities by ID now, but there shouldn't be such churn in
future.)
Query /api/v1/utilities for a sample zip code that was previously
not returning any utility results (89040) and make sure there's a
result now, and that querying /calculator with that utility ID
doesn't error. (There won't be any incentives for that utility, but
the point is the API accepts it as a valid utility ID.)

generate-misc-state-data.ts should no longer update the authorities file

It still needs to write cities and counties, so I think it should just filter out utilities and otherwise stay the same, right? I'll update with that.

I do think that generate-misc-state-data.ts should error out if it finds utilities that aren't in the database. Maybe this piece is separate enough to be a follow-up.

There'd be a bit of a circular dependency problem with this. generate-misc-state-data expects authorities.json to have nothing for the state you're updating, so it should be run before generate-utility-data. However, generate-utility-data is the thing that generates the database. There is a unit test (in this PR) that makes sure the set of utilities in authorities.json is the same as the set in the DB, which I think is good enough? I know the unit test is a little downstream of where the problem is, but fixing that would take more work (making generate-misc-state-data non-destructive, basically).

It still needs to write cities and counties, so I think it should just filter out utilities and otherwise stay the same, right? I'll update with that, but let me know if I misunderstood.

You're right, I was only thinking about utility authorities.

I do think that generate-misc-state-data.ts should error out if it finds utilities that aren't in the database. Maybe this piece is separate enough to be a follow-up.

There'd be a bit of a circular dependency problem with this. generate-misc-state-data expects authorities.json to have nothing for the state you're updating, so it should be run before generate-utility-data. However, generate-utility-data is the thing that generates the database. There is a unit test (in this PR) that makes sure the set of utilities in authorities.json is the same as the set in the DB, which I think is good enough? I know the unit test is a little downstream of where the problem is, but fixing that would take more work (making generate-misc-state-data non-destructive, basically).

generate-misc-state-data overwrites the target state's authorities.json entry because that was fine historically, but I think with this change, that's no longer appropriate. But making it non-destructive doesn't seem too bad – could we take the existing value of the utility key for the state being edited and copy it into the new object before processing the rest of the spreadsheet rows?
Then I think the process would be:

generate the new state's authorities with generate-utility-data
run generate-misc-state-data. I do think it would be nice to have a check here that an authority in the spreadsheet is found in authorities.json (which implicitly means it's in the csv), but that could be a follow up.

What do you think?

OK, I think this reflects that workflow. It goes:

Add state key to authorities.json manually (because step 2 only populates states that are already there, to let us choose when to populate utilities)
Run generate-utility-data.ts to populate utilities for the state
Run generate-misc-state-data.ts to populate the other auth types, and check that all the utilities in the spreadsheet are in authorities.json already

OK, I think this reflects that workflow. It goes:

Add state key to authorities.json manually (because step 2 only populates states that are already there, to let us choose when to populate utilities)
Run generate-utility-data.ts to populate utilities for the state
Run generate-misc-state-data.ts to populate the other auth types, and check that all the utilities in the spreadsheet are in authorities.json already

Looks great, thanks. As a follow-up, you could add a command-line arg to generate-utility-data.ts that specifies the state you want to add, but it's not like step #1 is particularly onerous as is.


Github star indicator for Deno third party modules

It would be nice if we had some kind of indicator to identify how many Github stars every module have. This will help lot of users to pick popular modules and encourages module developers to do better products. Otherwise module list is getting messy and it's not clear what is worth to look into.
Everybody just trying out Deno and every "hello world" module is in there.
Maybe later we could add filters too?
Something like this:

Ref #464. This was implemented a few days ago, but it had to be reverted because of API rate limit issues.
Anyway I am in favor once we figure out the rate limit issues, and having a Sort by star # option would be awesome.

Numbers can be cached, so each module will get updated each 1 day or so and displayed afterwards. With little logic, if star number > 300 gets more frequent cache update. Just saying
If there is not concret solution, than I'll close this issue


docs(misc): updating component statuses in SB

Overview

PR Checklist

[ ] Related to JIRA ticket: GM-754
[ ] I have run this code to verify it works
[ ] This PR includes unit tests for the code change
[ ] This PR includes testing instructions tests for the code change
[ ] The alpha package of this PR is passing end-to-end tests in all relevant Codecademy repositories

Testing Instructions

Look over the JIRA ticket
Go to the respective pages
Check that the statuses match
...
Profit!

📬Published Alpha Packages<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://667f1d40c6a6497c2b57cbb9--gamut-preview.netlify.appDeploy Logs

Personally checked over twice as noted in JIRA ticket -- feel free to double check work :) thanks!

LGTM! Only thing is I see Anchor ⇒ updating on the list but that's not updated here

Thanks Amy, I updated Anchor recently (adding in icons) and that seemed to be the only ticket associated with Anchor -- but I'll double check with Cass before merging :)

Checked with Cass and it's good to go!


change repo watchers and its icon to stars fixes #295

The color of the star icon is just a guess... I'm not a designer.

@santagada really sorry about not seeing this sooner, it just slipped through the cracks. I remember when we talked about this. We're temporarily overwhelmed but will review asap.

I want to help more if there is anything I can do to make the process faster/easier for you just say it.

Hi @santagada,
Right now were trying to get the site to pass all tests for the Django 1.8 upgrade.  There are a number of issues, and I've decided to halt the migration up until Django 1.8.1 comes out. Tomorrow morning I'll revert some code and make master run of Django 1.7.7. Then I'll update the docs to match and we'll take a look at your pull request.

Actually, if you have experience migrating from Django 1.7 to 1.8 I'm would love your help.

Apologies for the terribly slow response.


No exported member SafeMultisigTransactionResponse in safe-core-sdk-types

Description
When trying to import Safe from @safe-global/safe-core-sdk and compiling a resulting TypeScript file that uses it the following error shows up:
error TS2305: Module '"@safe-global/safe-core-sdk-types"' has no exported member 'SafeMultisigTransactionResponse'.

import { EthAdapter, MetaTransactionData, SafeMultisigTransactionResponse, SafeTransaction, SafeTransactionDataPartial, SafeVersion, TransactionOptions, TransactionResult } from '@safe-global/safe-core-sdk-types';

Found 1 error in node_modules/@safe-global/safe-core-sdk/dist/src/Safe.d.ts:2

Environment

Safe Core SDK version: 3.2.1
Safe Core SDK Types version: 1.7.0
Environment:

non-browser

Steps to reproduce

Import Safe from @safe-global/safe-core-sdk in a TypeScript file
Attempt compiling the file using the tsc command in a terminal instance

Current result:

Expected result
Expect SafeMultisigTransactionResponse to be imported when using Safe from @safe-global/safe-core-sdk

facing the same issue.

Having the same issue, since yesterday.

Thanks @0xnexusflip for raising this issue, can any one from the safe team @germartinez @rmeissner please help 🙏. Our dApp is built on top of Safe and now it has stopped working because of this issue.

Thanks for reporting it, I'll check it and fix it as soon as possible. Meanwhile please use the previous version.

Using the<EMAIL_ADDRESS>library seems to fix the issue but then when actually running the script I encounter issue #287

@0xnexusflip @sourav-bz @richikchanda1999 @swetshaw
New versions of all the Safe Core SDK packages have been published. Please check again
Specifically:

safe-core-sdk v3.2.2
safe-core-sdk-types v1.6.0
safe-core-sdk-utils: v1.8.0
safe-web3-lib: v1.8.0
safe-ethers-lib: v1.8.0
safe-service-client: v1.5.0


How to limit rate for dynamic dimensions such as each ip address

Describe the bug
A clear and concise description of what the bug is.
Quota seems can only support the enum matches, but how to support the rate limit, such as rate limit of each IP address, or according to the parameters in the request, these parameters are to much , can not listed in dimensions.
Expected behavior
A clear and concise description of what you expected to happen.
dynamic rate limit
Steps to reproduce the bug
Steps to reproduce the behavior.
Version
What version of istio and Kubernetes are you using? Use istioctl version and kubectl version
0.8.0
Is Istio Auth enabled or not?
Did you install the stable istio.yaml, istio-auth.yaml.... or if using the Helm chart please provide full command line input.
Environment
Which environment, cloud vendor, OS, etc are you using?
kubernetes

@douglas-reid: Is this possible? This would be quite useful and has a very broad use-case. Say you don't know the set of source IPs sending requests towards your server but want to limit the rate to  100 per unique IP.

@skydoctor it is certainly possible and is part of the intended behavior.
Example configuration:
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:
  name: memquota
  namespace: istio-system
spec:
  compiledAdapter: memquota
  params:
    quotas:
    - name: requestcount.quota.istio-system
      maxAmount: 1
      validDuration: 1m
---
apiVersion: "config.istio.io/v1alpha2"
kind: quota
metadata:
  name: requestcount
  namespace: istio-system
spec:
  dimensions:
    source: source.ip | ip("<IP_ADDRESS>")

---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  actions:
  - handler: memquota
    instances:
    - requestcount.quota

Send two requests for the same source IP, followed immediately by a different IP:
$ mixc check -a source.ip=a:96:5:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  1               1m0s

$ mixc check -a source.ip=a:96:5:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  0               1m0s

$ mixc check -a source.ip=a:96:0:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  1               1m0s

Thanks @douglas-reid! This is great info. So if we specify say 2 dimensions, then the maxAmount specified is per each unique value in those 2 dimensions?
Also, what's the best way to apply quota for specific URL paths?

@skydoctor please see the request.url_path attribute (https://preliminary.istio.io/docs/reference/config/policy-and-telemetry/attribute-vocabulary/).

@skydoctor it is certainly possible and is part of the intended behavior.
Example configuration:
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:
  name: memquota
  namespace: istio-system
spec:
  compiledAdapter: memquota
  params:
    quotas:
    - name: requestcount.quota.istio-system
      maxAmount: 1
      validDuration: 1m
---
apiVersion: "config.istio.io/v1alpha2"
kind: quota
metadata:
  name: requestcount
  namespace: istio-system
spec:
  dimensions:
    source: source.ip | ip("<IP_ADDRESS>")

---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  actions:
  - handler: memquota
    instances:
    - requestcount.quota

Send two requests for the same source IP, followed immediately by a different IP:
$ mixc check -a source.ip=a:96:5:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  1               1m0s

$ mixc check -a source.ip=a:96:5:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  0               1m0s

$ mixc check -a source.ip=a:96:0:6 ... -q RequestCount=1
...
Check RPC completed successfully. Check status was OK
...
  Quota         Granted Amount  Duration
  RequestCount  1               1m0s

@douglas-reid Douglas~, how to set rate limit for per ip in istio 1.10?
in this doc, for  all IP address, not per ip.
https://istio.io/v1.10/docs/tasks/policy-enforcement/rate-limit/

for Local Ratelimit, you can just block single IP, for Global Ratelimit, you can implement a custom RLS.

@kyessenov fyi.

Envoy doesn't support dynamic buckets in the local rate limiter. So if you want per-X then global is the only option right now.


How to build?

How to build a resultant website that can be hosted locally? I tried using the frontend contents, but it will not work.

Is added to the readme. Thanks for reporting!


Data Compression Support for ManagedResources

How to categorize this PR?

/area control-plane
/area cost
/area storage
/kind enhancement
What this PR does / why we need it:
This PR adds support for compressed data in ManagedResource secrets, and enables the compression via the well known library functions in pkg/utils/managedresources/registry.go.
As a consequence, the data in ManagedResource secrets is now compressed with the Brotli algorithm which saves storage and bandwidth 💰. The same is true for various Gardener extensions, as soon as they have updated their github.com/gardener/gardener dependency.
Please see this section for more information.
Which issue(s) this PR fixes:
See https://github.com/gardener-community/hackathon/tree/main/2024-05_Schelklingen#-compression-for-managedresource-secrets
Special notes for your reviewer
Among other tested compression algorithms, Brotli has proved to be the best candidate for our scenario. Please see the table below, that compares the compression rates for ManagedResource secrets of a shoot control-plane in a local Gardener environment.

Managed Resource Secret
Uncompressed
brotli
brotli (%)
gzip
gzip (%)
lz4
lz4 (%)
xz
xz (%)

All
848444
186506
21.98
225793
26.61
340193
40.10
191452
22.57

Shoot-Core-System
26047
2324
8.92
2619
10.05
4112
15.79
2755
10.58

Shoot-Gardener-Node-Agent
68756
31404
45.67
31867
46.35
46364
67.43
30495
44.35

/cc @rfranzke
Release note:

The data in `ManagedResource` secrets is now compressed and stored under a single data key `data.yaml.br`.

The `Registry` in `pkg/utils/managedresources/registry.go` was changed to return all objects as a compressed data chunk.
As soon as you update the `github.com/gardener/gardener` dependency to this version, `ManagedResource` secrets will change from uncompressed to compressed data (combined under data key `data.yaml.br`).

@ScheererJ, @oliver-goetz could one of you kindly take over? 🙂

/assign

Still looks good to me :-) .
/lgtm

/approve


Review db connections in API and background tasks

Ref https://github.com/fractal-analytics-platform/fractal-server/issues/647

Why is the apply-workflow endpoint using both sync/async session? Can we simplify it? Do we need an additional close after refresh? If we keep two sessions, both must be closed (and the sync one is currently not closed!).
In submit_workflow (which takes place in background), the db_sync.commit statement before the long workflow execution is not fully closing the session. This is visible via the presence of a non-trivial identity map. Adding an explicit db_sync.close seems to work, and then the session is re-opened upon merge. Shall we move towards context-managers? Probably that's the best way to go.

Point 1 is a bug. Point 2 is a bit unclear, but for sure it requires some update.

For the record: the following test passes, which (unexpectedly) shows that the new_db_sync.commit() is not enough  to fully clear a DB connection.
async def test_sync_db_close(db_sync, db):
    """
    This test is used as an example to show that the commit() method is not
    enough to fully close a db_sync connection.
    """

    from fractal_server.app.models.task import Task
    from fractal_server.app.db import DB

    db.add(
        Task(
            name="mytask",
            input_type="image",
            output_type="zarr",
            command="cmd",
            source="/source",
        )
    )
    await db.commit()
    await db.close()

    new_db_sync = next(DB.get_sync_db())
    task = new_db_sync.get(Task, 1)
    debug(task)
    task.name = "new_name"
    new_db_sync.merge(task)
    new_db_sync.commit()
    debug(new_db_sync.identity_map)
    assert new_db_sync.identity_map
    new_db_sync.close()
    debug(new_db_sync.identity_map)
    assert not new_db_sync.identity_map

Also, for the record:

Context manager use is optional; otherwise, the returned Session object may be closed explicitly via the Session.close() method. Using a try:/finally: block is optional, however will ensure that the close takes place even if there are database errors:
(https://docs.sqlalchemy.org/en/14/orm/session_api.html#sqlalchemy.orm.sessionmaker)

Ref (related to "ghost" connections that seems to always be present):

https://docs.sqlalchemy.org/en/20/core/pooling.html

Recap of current status:

With #651, we (me and @mfranzon) identified and solved a few issues/bugs in handling db sessions, that were the most likely cause of #647. Some of these updates can be re-written as in #655. This is all independent on the sqlite/postgres choice.
As of version 1.2.3, the results of the stress test discussed in #647 changed:

With sqlite, we can still hit a database locked (either with uvicorn or gunicorn), even though it requires a more rare situation (as defined in terms of how many simultaneous calls are made to the apply-workflow endpoint). Likely related to #656.
With postgres, we are unable to break the running fractal-server instance (either with uvicorn or gunicorn). The test we ran includes up to 6 or 7 "users" (the same one, but from different terminals), each one making tens of calls to the apply-workflow endpoint.

We reviewed the option of using sqlalchemy scoped_sessions, and discarded it based on how fastapi works - see discussion in https://github.com/tiangolo/fastapi/issues/726.
It remains to be explored whether we can solve the sqlite/threading issue (as in #656).

Nothing left to do in this issue, closing.

Thanks for the great overview & the deep dive into this @tcompa ! Very good to hear and additional motivation for me to try & get the postgres setup running at FMI :)


add a new feature of floating split-on-hover ball

Describe the bug/feature
This would include a floating ball which on hover would split into 3 different segments showing 3 social profiles with hover effect.
Have a look at the animation shown below to describe the working of the feature.

OS:
Browser:

Additional context
Add any other context about the problem here.
https://user-images.githubusercontent.com/71227590/127776809-9292a455-2487-491d-be3a-b69ba5a6ae97.mp4

Please assign this issue to me under LGM SOC 2021
as the left time is less for the Program


An element could not be located on the page using the given search parameters.

Here is my code
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "C:\Program Files (x86)\Notepad++\notepad++.exe");
capabilities.setCapability("platformName", "Windows");
capabilities.setCapability("deviceName", "WindowsPC");
notePadPlusSession = new WindowsDriver(new URL("http://<IP_ADDRESS>:4723/wd/hub"), capabilities);
notePadPlusSession.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
String notePadTitle="new  0 - Notepad++";
String actualNotePadTitle = notePadPlusSession.getTitle();
System.out.println(actualNotePadTitle);
Assert.assertEquals(actualNotePadTitle, notePadTitle);
Thread.sleep(10000);
RemoteWebElement new_btn = notePadPlusSession.findElementByName("Find...");
new_btn.click();
Issue: Error shows
"An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)" even Name attribute is correct as inspect.exe tool
But it did work when using

using findElementByXPath as below
RemoteWebElement new_btn = notePadPlusSession.findElementByXPath("//Button[13]");
=> it is not timeout problem as I thought
And findelementByName also worked fine when automating Calculator app
=> it is not a problem with findelementByName  as well

My setup
Appium v1.14.0
WinAppDriver version 1.1
selenium-java-3.141.59
Attached appium log and image
Appium_log.txt

I am not sure what was wrong here so I am really appreciate if anybody can have a look on this.
Thanks,
Anh Pham

The recording tool grabs the absolute xpath, maybe try that?
Below is an example of how it was able to find mine.
string xpath_LeftClickButtonFind_7_16 = "/Pane[@ClassName="#32769"][@Name="Desktop"]/Window[@ClassName="Notepad++"][@Name="new 1 - Notepad++"]/Pane[@ClassName="ReBarWindow32"]/ToolBar[<EMAIL_ADDRESS>var winElem_LeftClickButtonFind_7_16 = desktopSession.FindElementByAbsoluteXPath(xpath_LeftClickButtonFind_7_16);

Hi @KitoCoding
Thanks for your response. I updated my code with absolute path as your suggestion but the problem still occurs
	Thread.sleep(5000);
	String xpath_LeftClickButtonFind_7_16 = "/Pane[@ClassName=\"#32769\"][@name=\"Desktop 1\"]/Window[@ClassName=\"Notepad++\"][@name=\"new 0 - Notepad++\"]/Pane[@ClassName=\"ReBarWindow32\"]/ToolBar[<EMAIL_ADDRESS>	RemoteWebElement winElem_LeftClickButtonFind_7_16 = notePadPlusSession.findElementByXPath(xpath_LeftClickButtonFind_7_16);
	winElem_LeftClickButtonFind_7_16.click();

It would be great if you can have a look at the code, logs and images in attachment.
NotePadIssue.zip
Thanks,
Anh Pham

Hi @AnhPhamIT  Did you figure out why this issue was occuring? I'm facing a similar issue and can't figure out the cause.


Add old project contributors

@all-contributors please add @antoineneff for translation

@all-contributors please add @kecsou for translation

@all-contributors please add @AlexandreMalaj for translation


[Timer clock / timerclk] countdown setup only increments in seconds after v0.06

Affected hardware version
Bangle 2
Your firmware version
2v21
The bug
Describe the bug
After updating to v0.06 of Timer Clock, when using the watch faces countdown (swiping left on the watch face), it now only increments in the countdown in seconds, rather than based on where you swiped on the interface.
Expected behaviour
Swiping in the appropriate place on the interface should increment the appropriate column, i.e. leftmost for hour, middle for minute, rightmost for seconds.
Steps to reproduce

Update to v0.06 of Timer clock
Attempt to setup a countdown using minute or hour column.
Only seconds column changes regardless of swipe point.

Installed apps
wid_a_battery_widget (0.04), cprassist (0.02), files (0.08), fileman (0.03), loadingscreen (0.01), chargeanim (0.02), dclock (0.10), widmessages (0.05), ptlaunch (0.15), score (0.01), widbt (0.09), qmsched (0.10), clock_info (0.07), wid_edit (0.05), messages (0.62), rebbleagenda (0.01), oxofocus (0.02), notifyfs (0.12), weather (0.26), alarm (0.46), widdst (0.05), spotrem (0.11), dragboard (0.10), drained (0.04), android (0.33), autoreset (0.01), setting (0.70), messagegui (0.76), widadjust (0.03), about (0.15), sched (0.24), widalarm (0.02), messageicons (0.07), themesetter (0.05), 2047pp (0.04), acmaze (0.04), diceroll (0.02), dtlaunch (0.25), timerclk (0.06), boot (0.60), poweroff (0.04), a_dndtoggle (0.02), lightswitch (0.10), icons (0.02), popconlaunch (0.05)

I think I see it:
https://github.com/espruino/BangleApps/commit/2e4cb8eb11cfae70c02974c9d7395b25993a1a71#diff-402de28673085438ca8417f9c365b1ac70766e8a6689f297c67c1027ca833bda
dragBorderHrsMins and dragBorderMinsSecs has been commented because they are unused in the current javascript file.
But they seem to be used in the lib:
https://github.com/espruino/BangleApps/blob/master/apps/timerclk/lib.js#L101
Ping @atjn

Sorry about that! I have a temporary fix ready in #3274 @Aracnoss if possible, can you test that everything works in that version?

Apologies, I can't test it atm, as I'm away for the weekend, updated via phone. @atjn if you're able to load the GitHub page for your fork then I could give it a quick test, but otherwise I'll have to check in the late evening.

Fair enough, I will test it sometimes today :)


[GSK-965] Task: Add turtles and change default green colour

Description
This PR aims to improve some components, making them more graphically similar.
For example, we're introducing a new primary colour and therefore updated all primary buttons (colour and text colour).
Also, an illustration was added to the Test Suite tab to be displayed when there were no suites created before.
Some components may seem awkward now because of the light green colour, but they will be updated in the following PRs.
Related Issue
GSK-965 (available on Linear)
Type of Change

[ ] 📚 Examples / docs / tutorials / dependencies update
[ ] 🔧 Bug fix (non-breaking change which fixes an issue)
[x] 🥂 Improvement (non-breaking change which improves an existing feature)
[ ] 🚀 New feature (non-breaking change which adds functionality)
[ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🔐 Security fix

For me there is a contrast issue here:
It's rated as 'very poor': https://coolors.co/contrast-checker/91f7c0-ffffff

On small screen the left menu disappear but the content does not adjust:

Previously it was adjusting:

For me there is a contrast issue here, @jmsquare we should adjust text color or background color to make it more readable, do you have some suggestion?
It's rated as 'very poor': https://coolors.co/contrast-checker/91f7c0-ffffff
This is the automatically suggested fix, however we should adapt to fit into Giskard branding: https://coolors.co/contrast-checker/064c26-ffffff

I talked to JM about this. We can use a darker colour (green or grey) for these elements that don't have a dark background. I liked this option #064C26. I'm going to add this as a dark-primary colour, ok?


Create a small CLI to automatically generate circuits from a .dae file

Is your feature request related to a problem? Please describe.
The simplest way of interacting with our tool is a CLI interface.
Describe the solution you'd like
In the best case we would have something like: tqec generate-circuits -i cx.dae -o cx.stim
Describe alternatives you've considered
As alternatives, we can still use the jupyter notebooks, but I find that could be more convenient.
We could also eventually add this to the front end.
Additional context
With #298 and #300, we will have parts of this already; we have to piece it together.
We can use this to discuss the potential interface; implementation should be rather easy.

Two notes on that:

we can have only one entry-point script named tqec with subcommands or multiple scripts that would preferably share a common prefix (likely tqec_) for discoverability purpose.
Once #298 is merged, we will be able to generate stim files without detectors and observables. More work needs to be done to include detectors (I am still thinking about the best way of doing that) and observables.


Question

How do you verify if other people can access my server in "http://stats.ogarul.tk/" ?

all game server ports must be port forwarded
server name is not default
stats port also needs to be forwarded

@Andrews54757 http://stats.ogarul.tk/ server name "skrubs" look for me

If you see your server on the client fetch list then you are good. You can also use a open port checker tool just to make sure. If you don't see your server you can recreate it with ease by using this command

stats delete

You can restart to take immediate effect, or wait a minute until it refreshes your info which will recreate your server on the list.
You will also see a message saying your server has been added to the list with a rules link you must follow


Addcleanup

This PR will add additional steps to cleanup CF and Helm deployments 10 minutes after the app deploys, or last Tekton task.
CF Pipeline:

skit-sleep
skit-cleanup-cf

Helm Pipeline:

skit-sleep
skit-cleanup-helm

PR Pipeline:

skit-sleep
skit-cleanup-cf
skit-cleanup-helm

Signed-off-by: Chuck Cox<EMAIL_ADDRESS>

I performed my tests with the python-flask-app-code-monitor toolchain.


Feature request: Split and Join for ruby class with modules definition.

As in title, I would like to be able to perform following transformations:
From:
module Foo
  module Bar
    class Test
      # (...)
    end
  end
end

To:
class Foo::Bar::Test
  # (...)
end

And reverse.
Would it be possible?

That's actually a brilliant idea! I can't believe I haven't thought of it myself over the years. And I've definitely had to do the transformation.
I've implemented it in master. It seem to work in my simple tests, but I would bet there are edge cases I've missed. Could you try it out, maybe for some time, and let me know if you run into any issues?

I will start testing it today. Thanks for the fastest response ever!

Just discovered this great feature today. Thanks for adding this!
One report from me: In addition to flattening the indentation, it also fills blank lines with spaces up to the indentation level. Vim's standard indentation keeps these lines empty (no trailing whitespace). Maybe you can use vim's standard methods to increase/decrease the block's indentation level.

 I restructured things so indentation is adjusted in a smarter way. Thanks to both of you for the report :).
Try it out again?
As a side note, @dominikduda, it would be better if you could create a new comment for every issue you find instead of editing, so I get notified via email.

@AndrewRadev
I found it working for all the cases I need except one. It's arguable if it should work that way, I think if it is not too much effort, it would be cool.
Starting state:

After :SplitjoinJoin execution:

Now, moving one line up:

And now :SplitjoinJoin execution does nothing.
Would be nice if it worked for this case (but it's not working if it'll take too much time).

I agree that it makes sense to work that way, I hadn't thought of that case. I think I've fixed it in the latest master, but do check if I haven't broken anything in the process.

@AndrewRadev Works perfectly for me now, thanks!

I think the feature should be working reliably at this time, so I'll close the issue.


Reveal any data supplied, even if not JSON

This returns the data from Mixpanel with the error message, to give some chance of debugging rare errors from Mixpanel.

Any chance to have this PR reviewed?


updated early stopping docs

Before submitting

[x ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[x ] Did you read the contributor guideline, Pull Request section?
[ x] Did you make sure to update the docs?
[x ] Did you write any new necessary tests?
[x ] If you made a notable change (that affects users), did you update the CHANGELOG?

What does this PR do?
Documentation for https://github.com/PyTorchLightning/pytorch-lightning/issues/1406
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hello @david-alexander-white! Thanks for opening this PR.

In the file pytorch_lightning/core/hooks.py:

Line 53:1: W293 blank line contains whitespace

Do see the Hitchhiker's guide to code style


CLI Tool: Remove lib/ from package

Fixes dotnet/cli#12963
cc @aspnet/build

Wait.
Now I get:

error NU1202: Package dotnet-ef 3.1.0-dev is not compatible with netcoreapp3.0 (.NETCoreApp,Version=v3.0) / any. Package dotnet-ef 3.1.0-dev supports: netcoreapp3.1 (.NETCoreApp,Version=v3.1) / any

Works after updating to SDK 3.1.100-preview2-014531


LGTM

looks good to me
LGTM
lgtm


fix issues with editing index.

fix wrong direction of comparison
fix setting up new index when replacing the tags. Fixes out of
bounds accesses and erasures when the new tags are fewer than the
previous ones and reduces superfluous operations by setting the
index directly

Thank you for spotting the bug! This fix breaks the no-empty-tags-apart-from-editing-tag invariant. I pushed a fix into the branch, please check.

Hi, nick. This didn't solve the problem for me. Let's see if I can can find time to find a reproducer.

Hi. I'll take look into this soon. I'm in the middle of some code re-organizing to reuse routines across the two widgets.


Sudoku command

Description

I would like to make a Sudoku game command for Lancebot. Here are the rules for playing Sudoku, in case you don't know: https://sudoku.com/how-to-play/sudoku-rules-for-complete-beginners/
Reasoning

Sudoku is one of the most popular puzzle games in the world currently and it provides a good challenge for your brain.
Proposed Implementation

The bot will print an embed with a 6x6 Sudoku board, like so:

The grid will have the columns numbered and rows alphabetized, like so:

User will simply enter their input for the game by typing the coordinates of the square that they want to enter a number in (ex. A3), then the number they want to input (ex. 8). So in this case, what the user would type is: A3 8. If the user guesses correctly, then the bot will automatically update the original embed with the correct guess added. If the user wishes to edit their guess, they may do so by simply editing the message. If the user wants to remove a number from a square, they can type something like this: A3 X.
Make 2 buttons, one called "Hint" and the other "Give Up". I think it's obvious what I want those buttons to do :)
To avoid spam of the "Hint" button, I'm going to record the last time the button is pressed using the built-in time module in Python and count 3 minutes from that time and after that time elapses, allow the user to click that button again. Then the process repeats.
I am also considering the possibility of the bot generating puzzles with multiple or no solutions. The way I'm going to prevent this from happening is by using the backtracking method. I did some research online and I will be using this website as a guide.

Would you like to implement this yourself?

[ ] I'd like to implement this feature myself
[x] Anyone can implement this feature

Sudoku is fun, but I'm not sure it's well suited to be played in discord. An average Sudoku game takes about 20 minutes to play which seems quite a long time for a discord mini game. What about a mini Sudoku in a 4x4 grid?

Sudoku is fun, but I'm not sure it's well suited to be played in discord. An average Sudoku game takes about 20 minutes to play which seems quite a long time for a discord mini game. What about a mini Sudoku in a 4x4 grid?

Ok, maybe you're right about the game being too long, but how would a 4x4 grid work?

The rules are the same, just with less numbers

The rules are the same, just with less numbers

Ok, if that's the case, then I can do that.

As we were talking about on discord, by reducing the size to a 4x4, we could use buttons for the user interface instead
Although, a 4x4 seems kind of small for a sudoku game, it should be fun enough.
However, if using buttons, it would not be possible to expand it any larger, so it would be a tradeoff that we would need to make.

As we were talking about on discord, by reducing the size to a 4x4, we could use buttons for the user interface instead Although, a 4x4 seems kind of small for a sudoku game, it should be fun enough.
However, if using buttons, it would not be possible to expand it any larger, so it would be a tradeoff that we would need to make.

I think 4x4 should be fine with buttons. Not sure what you mean by "tradeoff" @onerandomusername

Given we can only have 5x5 buttons in total, if we use buttons we cannot ever grow beyond that size.

Given we can only have 5x5 buttons in total as discord limitation, if we use buttons we cannot ever grow beyond that size.

Ah, I see. To be honest, now that I think about this, I feel like 4x4 would a bit too easy. Another thought I had was to make this game thread based so it's not taking up the entire channel but they haven't been enabled on PyDis yet, so I'm not sure if that's possible, at least without making this issue stalled.

Its not possible right now to use threads, no. I do know that you would be able to get some nice colours out of the codeblock by setting the codeblock language.
The main reason I was on buttons is because the suggested input does not seem the most user-friendly--but only if there's a better option.

r[insert row #]c[insert column #]v[insert # (value)]

This looks complicated to me, although its probably the best way to input a number. We maybe could try something with selects and buttons... but this works so...

What about an image of the board that we edit every time the player makes a move? Could be done with PIL

What about an image of the board that we edit every time the player makes a move? Could be done with PIL

See https://github.com/python-discord/sir-lancebot/pull/956#issuecomment-997322591

Its not possible right now to use threads, no. I do know that you would be able to get some nice colours out of the codeblock by setting the codeblock language.
The main reason I was on buttons is because the suggested input does not seem the most user-friendly--but only if there's a better option.

r[insert row #]c[insert column #]v[insert # (value)]

This looks complicated to me, although its probably the best way to input a number. We maybe could try something with selects and buttons... but this works so...

Yeah, I think that is the best option for the input because the bot needs to know exactly what row and column the user is inputting a number so I think I'm going to stick with that.
About the button implementation, I'm honestly at odds as to what the best way to implement this is. I did have the idea of using modified images with PIL, but I'm not really that good at it (i.e. I don't really understand how it works, just like I said in the comment that arl linked). I'm going to think about this more and write up my thoughts here. If anyone else has any ideas as to how best to implement this, please let me know. Thanks!

@onerandomusername Actually, I did end up thinking of another way to implement the user input. We could have the user enter their input like so:
row #, col #, #
Or:
row #
col #
#

What do you think?

it's possible, yeah.
I think it's safe to implement it now as it is,  but write a separate method to get the input so we can continue to bikeshed it and make it easier to change in the future.

it's possible, yeah.
I think it's safe to implement it now as it is,  but write a separate method to get the input so we can continue to bikeshed it and make it easier to change in the future.

So are you saying it's fine to implement the user input the way I originally proposed? @onerandomusername

I'm thinking that's the input style we should use for now unless someone has a really really really great fantastic user input idea

I'm thinking that's the input style we should use for now unless someone has a really really really great fantastic user input idea

Alright, sounds good. I mean, the only other thing I can think of (and you mentioned this yourself I believe) is that I could use dropdowns. Do you think I should do that or just stick with the original proposal? @onerandomusername

Its not possible right now to use threads, no. I do know that you would be able to get some nice colours out of the codeblock by setting the codeblock language.
The main reason I was on buttons is because the suggested input does not seem the most user-friendly--but only if there's a better option.

r[insert row #]c[insert column #]v[insert # (value)]

This looks complicated to me, although its probably the best way to input a number. We maybe could try something with selects and buttons... but this works so...

Yeah, I think that is the best option for the input because the bot needs to know exactly what row and column the user is inputting a number so I think I'm going to stick with that.
About the button implementation, I'm honestly at odds as to what the best way to implement this is. I did have the idea of using modified images with PIL, but I'm not really that good at it (i.e. I don't really understand how it works, just like I said in the comment that arl linked). I'm going to think about this more and write up my thoughts here. If anyone else has any ideas as to how best to implement this, please let me know. Thanks!

Ok, so I think I have made my final thoughts about this.
Here's my opinion: I think I should 1) not use 4x4 because as I said earlier, it's a bit too easy and may make the game not as interesting to play and 2) wait until PyDis supports threads (if it's not too far from now), that way the game doesn't block the entire sir-lancebot-playground channel and also allow me to make the game the original 9x9 game.
If none of you like that idea, then I think it's safe to say this won't be possible, unless you guys have other ideas. (cc @Sn4u @onerandomusername )

Ok, so based off this discussion (starts there), I have made my final (hopefully) decisions as to how I (and others) want this implemented.

Instead of a 4x4 (or 9x9 for that matter), I will be making a 6x6 grid generator instead
I will not be adding the embed that says whether a user's input is right or wrong
I will also be alphabetizing each column and numbering each row as shown in the attached screenshot.

That way, I can make it so that user can guess by entering something like B6 8. If the user wishes to edit their guess, they will simply edit the message with their guess. If they wish to remove a number from the board, the user would type something like B6 X.

I believe those are the main takeaways from that conversation I linked. @onerandomusername @Sn4u Let me know if I missed anything.
Lastly, just to make sure: @jb3, do you still approve of this happening with those changes I mentioned above (in this comment)?

Quick update on this: I am still working on this, just haven't opened a PR yet - I don't think I'm ready to do that yet. I'm planning on getting it to a state where I will feel comfortable opening a PR sometime between now and the end of August. (Yes I know that's a large timeframe, but this turned out to be a lot harder than I initially thought but I like the challenge so I'm going to keep working on this for now.)

I do not wish to continue working on this (please ask me for access to my fork repo so you can see the code I wrote so far), feel free to ask to be assigned to this issue if you would like to work on it. Thanks!!

@DMFriends I would like to have a go at this.

Go ahead! Good luck!

@n0Oo0Oo0b I've assigned you.
Given there have been a few different proposals for how this could be done here, could you clarify what you are working on? (e.g. what size, how it will be displayed to the user, how the user will enter guesses)

For grid size, I will start with a 4x4 but I might also add a 6x6 option later
The grid will be displayed as an image
.sudoku start to start, .sudoku [location] [number] to enter guesses. If the guess is correct, the board will be updated (most likely edit the original message). If the guess is incorrect, the bot will indicate it (perhaps a :x: reaction) and leave the board unchanged.

Sounds good 👍

@n0Oo0Oo0b Hello. Just wondering if there has been any progress on this feature. I'd like to see it get implemented. Thanks!

@n0Oo0Oo0b Hello. Just wondering if there has been any progress on this feature. I'd like to see it get implemented. Thanks!

I did have some progreess on the board generation but this has been on my backburner for a while. I'll be able to work on it soon once my exams are over and I'll open a draft PR once the board generation is done.


[bugfix] Fix the bug of repeatedly setting weekYear (number)

fixes #3944
Changes

Fix the bug of repeatedly setting weekYear (number), Keep the purity of this._d when repeating settings.
Fix for issue #3944 .

Test plan
 src/test/moment/week_year.js

Coverage increased (+0.03%) to 88.525% when pulling e24a899f9514336b2ce12b8552927be52892d561 on Alanscut:issue_3944 into 82d6c1ac43125ec6cf5640a440d72c8b83e09f6b on moment:develop.

Fixed in #6193. I didn't understand this fix, and it's a bit scary...


Make a home page link

There is no link to home page when scrolling through other pages

I'm adding the homepage link for the venues.html page since I'm already working on issue #59 to add a submit button to new venue form.

Just added to about.html page.  Still need to add to index.html and addshows.html.


Change Node architecture

Currently the representation of nodes inside the sheet is fixed. However, a node-baseclass could be provided instead, allowing both derivative nodes and code running in the sheet editor.

Additionally, let the nodes themselves handle synchronizing between worker and controller. It's one fewer abstraction layer and thus less PITA.


Lables for groups are shown in page

If I create a group on the page, by default it shows the label. But for standard objects, it doesn't show it.
Example:
Page 1816

result

But if I copy the same code in extension layer

result is

I had the same issue. if you define CaptionML=ENU='', it will solve the issue  Shouldn't have to do this, but it's a workaround

That's correct. The workaround for now is to add an empty CaptionML. Eventually we will add a property ShowCaption = false to control this behavior for groups.


Allow running the code examples in browser

Feature Request
Allow the code in the aaa to run in browser
Description
Investigate using tools such as
https://tio.run/
to facilitate running code in browser.

For Algorithm Archive Developers

[ ] This feature can be added to the Master Overview (if it cannot be, explain why in a comment below -- lack of technical expertise, not relevant to the scope of this project, too ambitious)
[ ] There is a timeline for when this feature can be implemented
[ ] The feature has been added to the Master Overview
[ ] The feature has been implemented (Please link the PR)

There was a previous discussion in #167 without a conclusive result, but it may contain relevant information.


docs: create a few code snippets as examples for using Spanner Graph using cpp

Add a few code snippets to illustrate how to use Spanner Graph functionality in Java. These examples resemble other snippets for how various other Spanner features can be used.
Fixes #14659

This change is

/gcbrun

Gentle reminder: @scotthart

/gcbrun

/gcbrun


Fix Memory Leak in ExampleSideMenuViewController

Issue Number
https://github.com/noppefoxwolf/DrawerPresentation/issues/1
Implementation Summary
This PR fixes the memory leak issue that occurred in the ExampleSideMenuViewController. The issue was caused by a strong reference by the animator.onTapDimmingView.
To resolve this, the code introduces weak references to the presented view controller inside the closures assigned to animator.onTapDimmingView. This ensures that the presented view controller can be properly deallocated when dismissed.
Reference
https://github.com/user-attachments/assets/1b50d713-6ff9-4907-93ea-566007e392c3

LGTM!

https://github.com/noppefoxwolf/DrawerPresentation/releases/tag/0.0.14


support path separators in cassette names

This change makes it possible to group fixtures by folder names.
To work correctly on windows systems, you need to use PATH_SEPARATOR rather than hardcode /.

Yeah looks good. Are the tests working on your system?
On travis they seem to fail https://travis-ci.org/php-vcr/php-vcr/jobs/51829624.

okay, i am green locally.

Its just the Assertion, otherwise I think its good. Thank you for this, cool feature.

okay, updated to use the assertion.
i had a look around and tried to see where i would document this but i can't find the right place to add this. it seems the whole cassette concept is never explained, only used in the examples. i suggest adding a section called "Usage" between "Installation" and "Configuration", and move the phpunit annotation that is in "Installation" to usage as well. then the usage can explain the main factory calls some more. shall i create an issue asking for that in the doc-repository? not sure if i find time to do that soon

Documentation is always nice :-) An issue would be good, but to be honest I don't know if I can get to it either. Thank you for this nice little feature!

Released https://github.com/php-vcr/php-vcr/releases/tag/1.2.3

created https://github.com/php-vcr/php-vcr.github.io/issues/6 about the doc


WIP Stop enabling O.p.constructor

DO NOT MERGE. Blocked by https://github.com/Agoric/agoric-sdk/issues/2324
SES by default currently enables Object.prototype.constructor to be overridden. This PR would like to retire that as it causes the Node console to display objects in a confusing manner, like
[Function (anonymous)] Function <Function <[Object: null prototype] {}>>

However, agoric-sdk is currently not compatible with this improvement for two reasons.

It depends on an old version of acorn with a bug. https://github.com/Agoric/agoric-sdk/pull/2303 upgrades agoric-sdk to an acorn without that bug.
Something having to do with the xsnap integration, which is not yet diagnosed.

Until that later problem is diagnosed and fixed, this PR remains a WIP Draft.

Closing in favor of #587


My cutscenes didn't work!

Describe your problem here.
I did it with the latest version 0.7.3 When I first tested the opening animation, the first song was OK, but the second song wasn't. It doesn't have an arrow above, but there's a HUD below, and he's stuck for a while (a few seconds) and then turns it off, but whenever I use the official BopeeboCutscene, it plays just fine. I want to know about my Cutscene problem
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
No response

this is animation
https://github.com/ShadowMario/FNF-PsychEngine/assets/111039850/130638e2-70f3-4d8e-82fb-74c099e1da2a

and this is lua file
playVideo = true;
playDialogue = true;
function onStartCountdown()
if isStoryMode and not seenCutscene then
if playVideo then --Video cutscene plays first
startVideo('what'); --Play video file from "videos/" folder
playVideo = false;
return Function_Stop; --Prevents the song from starting naturall
	end
end
return Function_Continue; --Played video and dialogue, now the song can start normally

end
You might ask, "What's missing," but in fact, the missing thing is dialogue, and I don't want to play the animation when it's done.


Fix bug in EVP_CIPHER_CTX_get_iv_length() [3.0]

Second version: just the relevant parts of e0e338c8c50c226efc92fe79c788c9cdc03fc01f
Out of range values could possibly be returned due to a lack of range checking.
Very unlikely to be exploitable for our provider because sensible values are
returned for all ciphers.
Also fixed the defaulting code so that the cipher's IV length is returned if
the cipher ctx doesn't support getting.
Fixes #18947

Ping for review please.

Closing in favour of #18995


import  github.com/kitex-contrib/obs-opentelemetry/provider error

question：
github.com/kitex-contrib/obs-opentelemetry/provider imports
go.opentelemetry.io/otel/metric/global: module go.opentelemetry.io/otel/metric@latest found (v1.16.0), but does not contain package go.opentelemetry.io/otel/metric/global
Why does this problem occur, please?

The new version needs to be released, please wait a moment.

question： github.com/kitex-contrib/obs-opentelemetry/provider imports go.opentelemetry.io/otel/metric/global: module go.opentelemetry.io/otel/metric@latest found (v1.16.0), but does not contain package go.opentelemetry.io/otel/metric/global
Why does this problem occur, please?

The new version has been released, please try again: https://github.com/kitex-contrib/obs-opentelemetry/releases/tag/v0.2.3


do not cache 404 about /images/*

When creating a pages and medias, the admin panel may requests images derivatives before these are actually created.
I don't know exactly why and where this behavior happens but would like the subsequent issue resolved:
These /images/ 404 are given the default header from src/Grav/Common/Page/Page.php::httpHeaders() which usually contains something like Cache-Control: max-age=1080.
The problem is that these 404 on /images/ are transitory by nature and should neither be cached by the browser nor by intermediary caches. It's even more likely since intermediary cache base their heuristic on the file extension rather than mime-type, and as such, URL matching /images/ declaring a max-age are likely to be cached (confirmed on Cloudflare and mod-cache)
The immediate consequence is visitors getting this cached 404 (created during admin's edition) instead of the regular derivative image.
Sample patch (although may not sound pretty):
diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php
index 176a2788..ce923a01 100644
--- a/system/src/Grav/Common/Page/Page.php
+++ b/system/src/Grav/Common/Page/Page.php
@@ -509,6 +509,13 @@ public function httpHeaders()
         // Set Content-Type header
         $headers['Content-Type'] = Utils::getMimeByExtension($format, 'text/html');

+        // If these headers are for an error-page and the initial request was for a generated image
+        //  don't allow caching
+        if ($this->template() === 'error' && $grav['uri']->paths()[0] ?? '' === 'images') {
+            $headers['Cache-Control'] = 'no-cache';
+            return $headers;
+        }
+
         // Calculate Expires Headers if set to > 0
         if ($expires > 0) {
             $expires_date = gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT';

I'm not sure "..the admin panel may requests images derivatives before these are actually created..." is actually possible.

Image derivatives and any 'processed' Grav images are generated and stored in the /images/** folder.  These images are direct links to the images in the filesystem and are served by the web server itself, not Grav. Any 404's for missing images are coming from the webserver, and as such Grav will have no control over their cache settings, those would have to be controlled via webserver config.
Grav's PHP process does not create these images in the background. or asynchronously, it only finishes processing (and sends a response) after the images have been created in the filesystem.

So I'm not quite sure how you are having this happen, but even if it is, I don't see how your fix will help as that will only address the headers of the document, not the images.

About 1. I'll try to get a confirm and pinpoint. Could be the admin plugin or something similar doing some ajax on the file before they are actually created.

These images are direct links to the images in the filesystem and are served by the web server itself [...]

if they exist, otherwise, request pointing to non-existing files (including those under /images/) are directed to the index.php entrypoint (Grav's catch-all) and trigger a 404 (and the corresponding error template markup and corresponding headers)
So I would not call these 404 coming from the webserver, but thank you for clarifying that there is no such thing like lazy-generation.
Example:
$ HEAD https://learn.getgrav.org/images/a/b/c/d.jpg`
# This one comes from 404 Grav generator
> Cache-Control: max-age=604800
# This one probably comes from your Nginx (like the duplicated `Vary`), but seems inadequate here anyway
> Pragma: no-cache

Now, let's omit that particular Pragma for a minute and imagine Grav instance at learn.getgrav.org just created images/a/b/c/d.jpg: clients won't obtain it because intermediary caches are still serving the 404 obtained in the initial request (and may do it for the next 7 days)
In the end, the dirty patch I suggested above is about avoiding Grav-generated 404 from being cached in the specific case of /images/* because that's were caching a 404 can be harmful.

Above commit will not alone fix the issue. This issue is the same new FF caching issue as always, now with 404 pages.

What do you mean by FF caching issue as always? (The issue is not firefox-specific but related to the use of HTTP headers).
Out of curiosity:

Why headers must be changed both in PHP and notfound.md template?
Do you think there a way to only avoid cache for images/*  URL?

Latest FF (81.0+?) versions changed the behaviour on how the browser caches the pages. Every other browser and older FF as well are less strict on the headers and will query the server anyway.
The changes in Grav are only a small part of the fix.

Both need to be changed as they have different purpose. Some plugins do not use the default template for 404.
Yes, if the request goes to Grav itself.

Every other browser and older FF as well are less strict on the headers and will query the server anyway.

Not sure about this, but older browsers are still affected if Grav is behind a caching reverse-proxy (Squid, Apache2 mod-cache, Cloudflare, ...) because, other than private cache, these directives apply to them too.

I know. We just first saw these issues starting to pop in with FF a few weeks ago.

Error plugin needs to be updated, too (will be released soon).


Select documentation shows duplicated API entries

https://material.angular.io/components/component/select
Most @Input variables are duplicated in the API. Suspect that it is capturing both the getter and setters

Dupe of #4923.


Support PNG outputs.

In the terrarium output, in addition to supporting GeoTIFFs, we should also output 16-bit greyscale PNGs. These aren't widely supported, but should be readable with pngtoy. Note that PNGs only support unsigned channels, so we'll need to add an offset (32,768?) to handle the bathymetry depths.

We now have 16-bit PNGs (#10) and 8-bit PNGs (#14).


Use globstar to run notebooks in subdirs

Previously workflow doesn't run notebooks in sub directories, like
root/notebooks/foo/bar.ipynb
Using the ** notation fixes this.  EXCLUSION_FILE should still work, but I haven't checked.

I've switched over to find, instead of weird shell extension I happen to know.  As expected there's no interaction with the exclusion file if it is given in relative paths and I've updated the docs accordingly.


[1.20.1-Forge]Crash on launch

latest.log

Fricken forge 1.20.1 builds have been giving me nothing but issues.

It got fixed. Thanks for your effort