[alpaka] Update Alpaka to 0.8.0-rc1

Update Alpaka to 0.8.0-rc1

Tested with Alpaka 0.8.0-rc1 vs 0.7.0, no regressions observed.

master + alpaka 0.7.0
CUDA
$ echo; CUDA_VISIBLE_DEVICES=0 numactl -N 0 ./alpaka --cuda --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do CUDA_VISIBLE_DEVICES=0 numactl -N 0 ./alpaka --cuda --numberOfThreads 16 --numberOfStreams 16 --maxEvents 10000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.000879357 (all within tolerance)
 Average absolute vertex difference 0.002 (all within tolerance)
Processed 1000 events in 4.568209e+00 seconds, throughput 218.904 events/s.

Processing 10000 events, of which 16 concurrently, with 16 threads.
Processed 10000 events in 4.074126e+01 seconds, throughput 245.451 events/s.
Processed 10000 events in 4.035148e+01 seconds, throughput 247.822 events/s.
Processed 10000 events in 4.076714e+01 seconds, throughput 245.296 events/s.
Processed 10000 events in 4.044434e+01 seconds, throughput 247.253 events/s.

serial
$ echo; numactl -N 0 ./alpaka --serial --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do numactl -N 0 ./alpaka --serial --numberOfThreads 16 --numberOfStreams 16 --maxEvents 10000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.00133904 (all within tolerance)
 Average absolute vertex difference 0.005 (all within tolerance)
Processed 1000 events in 1.861603e+00 seconds, throughput 537.171 events/s.

Processing 10000 events, of which 16 concurrently, with 16 threads.
Processed 10000 events in 1.624458e+01 seconds, throughput 615.59 events/s.
Processed 10000 events in 1.604386e+01 seconds, throughput 623.292 events/s.
Processed 10000 events in 1.663056e+01 seconds, throughput 601.303 events/s.
Processed 10000 events in 1.598614e+01 seconds, throughput 625.542 events/s.

TBB
$ echo; numactl -N 0 ./alpaka --tbb --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do numactl -N 0 ./alpaka --tbb --numberOfThreads 16 --numberOfStreams 16 --maxEvents 1000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.00161218 (all within tolerance)
 Average absolute vertex difference 0.005 (all within tolerance)
Processed 1000 events in 3.619283e+01 seconds, throughput 27.6298 events/s.

Processing 1000 events, of which 16 concurrently, with 16 threads.
Processed 1000 events in 3.353647e+01 seconds, throughput 29.8183 events/s.
Processed 1000 events in 3.329768e+01 seconds, throughput 30.0321 events/s.
Processed 1000 events in 3.504014e+01 seconds, throughput 28.5387 events/s.
Processed 1000 events in 3.459455e+01 seconds, throughput 28.9063 events/s.

master _ alpaka 0.8.0-rc1
CUDA
$ echo; CUDA_VISIBLE_DEVICES=0 numactl -N 0 ./alpaka --cuda --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do CUDA_VISIBLE_DEVICES=0 numactl -N 0 ./alpaka --cuda --numberOfThreads 16 --numberOfStreams 16 --maxEvents 10000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.000885848 (all within tolerance)
 Average absolute vertex difference 0.001 (all within tolerance)
Processed 1000 events in 4.561437e+00 seconds, throughput 219.229 events/s.

Processing 10000 events, of which 16 concurrently, with 16 threads.
Processed 10000 events in 4.061069e+01 seconds, throughput 246.241 events/s.
Processed 10000 events in 4.070926e+01 seconds, throughput 245.644 events/s.
Processed 10000 events in 4.019195e+01 seconds, throughput 248.806 events/s.
Processed 10000 events in 4.084715e+01 seconds, throughput 244.815 events/s.

serial
$ echo; numactl -N 0 ./alpaka --serial --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do numactl -N 0 ./alpaka --serial --numberOfThreads 16 --numberOfStreams 16 --maxEvents 10000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.00133904 (all within tolerance)
 Average absolute vertex difference 0.005 (all within tolerance)
Processed 1000 events in 1.870685e+00 seconds, throughput 534.564 events/s.

Processing 10000 events, of which 16 concurrently, with 16 threads.
Processed 10000 events in 1.608401e+01 seconds, throughput 621.736 events/s.
Processed 10000 events in 1.595913e+01 seconds, throughput 626.601 events/s.
Processed 10000 events in 1.580083e+01 seconds, throughput 632.878 events/s.
Processed 10000 events in 1.623475e+01 seconds, throughput 615.963 events/s.

TBB
$ echo; numactl -N 0 ./alpaka --tbb --numberOfThreads 16 --numberOfStreams 16 --validation --maxEvents 1000; echo; for N in {1..4}; do numactl -N 0 ./alpaka --tbb --numberOfThreads 16 --numberOfStreams 16 --maxEvents 1000; done

Processing 1000 events, of which 16 concurrently, with 16 threads.
CountValidator: all 1000 events passed validation
 Average relative track difference 0.00163263 (all within tolerance)
 Average absolute vertex difference 0.004 (all within tolerance)
Processed 1000 events in 3.472829e+01 seconds, throughput 28.795 events/s.

Processing 1000 events, of which 16 concurrently, with 16 threads.
Processed 1000 events in 3.358226e+01 seconds, throughput 29.7776 events/s.
Processed 1000 events in 3.484826e+01 seconds, throughput 28.6958 events/s.
Processed 1000 events in 3.454215e+01 seconds, throughput 28.9501 events/s.
Processed 1000 events in 3.471457e+01 seconds, throughput 28.8064 events/s.


PowerBI Report: .rdl file deployment

Could you please share the documentation on how to deploy .rdl file developed from PowerBI Report Builder tool? I am able to deploy report file in .pbix format developed from PowerBI Desktop, but looking for .rdl file deployment.
Any powershell commands will help.

It should be the same as the pbix upload however the displayDatasetName = filename.rdl and the content-type in the form body should be application/rdl.
However for me this doesn't work, it gives a unknown error.

@ktdixit to upload your RDL file via PowerShell you need to run the following command
New-PowerBIReport -Path [INSERT FULL PATH TO FILE] -Name [INSERT REPORT NAME INCLUDING .rdl] -ConflictAction Abort
Please note the ConflictAction can only be Abort or Overwrite

tried your suggestion @sajansharmanz but I get a
New-PowerBIReport : Operation returned an invalid status code 'BadRequest'
but I believe that to be a bug in the -ConflictAction parameter and not using rdl, since I get same error when using anything but CreateOrOverwrite

@davesbrown I have setup a DevOps pipeline and use it almost daily and seems to be working fine for me. It publishes to multiple different workspaces updating certain params based on what it needs for each one.
I initially delete all reports and datasets from the workspace (automated via PS commands as well) and then re-upload
For RDL I am using
`New-PowerBIReport -Path [FULL PATH TO FILE] -Name [FULL NAME INCLUDING .rdl] -Workspace [WORKSPACE] -ConflictAction Abort
For PBIX I am using
`New-PowerBIReport -Path [FULL PATH TO FILE] -Name [FRIENDLY NAME] -Workspace [WORKSPACE] -ConflictAction CreateOrOverwrite


Add Requirements section to README for GO111MODULE

Hello guys,
I just started out with Golang and one of my books had the example of fetching a module via go get github.com/golang/example/hello.
This failed because I freshly installed Golang 1.16 which added the better support for modules.
You can find my example failed command in the added "REQUIREMENTS" section of the README.
I hope this prevents other fresh-starters like me to already fail hard at the begining of the journey until this behaviour changes somehow.

@googlebot I signed it!


[WIP] Save transcript does not open if bot opened via URL

Fixes for Issue # 1387
The solution chosen was to add a new method to handle the bot’s activation when it’s created via URL.
Changes made

Add Input Field to OpenBot UI for the path where the transcript file is going to be saved when using an URL
Add UI Validations for:
1. The new Input Field for the Path will be enabled only when using an URL
2. The Connect Button will be enabled only when the .bot file is correct or, when using an URL,
both the URL and Path are correct.
Update constant botInfo to always set active the Bot on botCommand.ts file, using both .bot file or an URL

Pull Request Test Coverage Report for Build 165

12 of 16 (75.0%)  changed or added relevant lines in 7 files are covered.
21 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.2%) to 55.17%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/app/main/src/botHelpers.ts
0
1
0.0%

packages/app/client/src/ui/helpers/activeBotHelper.ts
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

packages/app/client/src/data/sagas/botSagas.ts
3
76.92%

packages/app/main/src/commands/emulatorCommands.ts
18
50.98%

Totals

Change from base Build 164:
-0.2%

Covered Lines:
4875

Relevant Lines:
8328

💛  - Coveralls


[Enhancement]: Background Enhancement of Master Typing game

Is your enhancement request related to a problem? Please describe.➕
Game enhancement

Enhancement of  background

Describe the solution you'd like
Solution steps

Background change by changing css

Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @samratghosh291 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hello @samratghosh291, Time's Uppp!⏰
Sorry for closing your issue!
But it's more than a week since we haven't received anything from your side 😢 .
Come up with new ideas, create a new issue and make sure you finish it within a week! 🔥
All the best! 🚀
Happy Hacking! 💗

Hey @samratghosh291 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


[Manage observations] Add ability to remove observations

Fixes #107

The deleted observation is still appearing in the list after it's been deleted. Steps to repro:

Load a feature
Add observation
Tap on observation
Tap "Delete observation"
View changes to observation list

Expected result

Observation is removed from list of observations

Actual result

Observation is still present and tapping on it causes the app to crash with java.util.NoSuchElementException: No value present

@gino-m @dturner PTAL

Failing unit test:
com.google.android.gnd.persistence.local.LocalDataStoreTest > testDeleteObservation FAILED
Step #5 - "Run unit tests":     java.lang.AssertionError at LocalDataStoreTest.java:422

@gino-m Thanks for your comments! I've added some more tests to exercise all moving parts of the diff. PTAL


UIPFAUTH-101: Update actions/upload-artifact.

Purpose
Update actions/upload-artifact.
Issues
https://folio-org.atlassian.net/browse/UIPFAUTH-101

Let's just migrate to new workflows because they don't fail randomly due to some api limit
I've created a PR for this
https://github.com/folio-org/ui-plugin-find-authority/pull/114


ConditionalFormat transformer fixes

A few proposed changes:

ConditionalFormat only contains numeric values (correct?) so do not import as object
header=True is an invalid choice with the current version of pandas. Need to specify row.
specify index_col, otherwise feature IDs are not used as index.

Thanks!


Improvements

High level issue to track improvements:

[ ] #8
[ ] #9
[ ] #10

Closing this in favor of individual issues.


Enderwarehouse?

With 1.1 wube added "Enderchests", or "linked chest" as they named it.
Would it be possible to get an "Enderwarehouse"?
Possibly not reseachable/constructable, but still there so it could be used in editor-mode?
Its defined here: ./data/base/prototypes/entity/entities.lua:15766:linked_chest.name = "linked-chest"

Even if only usable in editor mode, it would need graphics (entity, icon). Presumably if a "linked warehouse" existed, somebody would want a "linked storehouse" too later.
If you really want it, sooner than $WHEN_NEW_GRAPHICS_ARE_DONE, I'd ask that you create the necessary sprites & icons for how you'd want it to look in-game.

Even if only usable in editor mode, it would need graphics (entity, icon). Presumably if a "linked warehouse" existed, somebody would want a "linked storehouse" too later.
If you really want it, sooner than $WHEN_NEW_GRAPHICS_ARE_DONE, I'd ask that you create the necessary sprites & icons for how you'd want it to look in-game.

I am really bad at graphics ... The vanilla linked chest is a white logistic chest...
Behold my epic GIMP skills!

I am really bad at graphics ... The vanilla linked chest is a white logistic chest...
Behold my epic GIMP skills!

See #87.


Enable strict typing

Problem
Having types and type checks helps to:

Check that all functions exist and called with correct arguments.
Make the code more robust.
Allow to refactor code simpler and safer.

The plan
I'll enable mypy checks soon and will gradually enable stricter checks as more parts are covered with types.
Let me know what do you think!

I think that would be a great additive! I have already set up my vim to support mypy, though haven't really adapted to using it just yet! 😄  But i think it would be great adding it

First step: #88

Opened a PR in homeassistant core: https://github.com/home-assistant/core/pull/47796

Did they close home-assistant/core#47796 because they don't support typing across the entire core repo? 🤔  😞

Yeah, basically they have many untyped components (the actual core is strictly typed) and they fear enabling this can break typing of custom components (only those which import untyped standard components, popular ones like sensor or light are typed) therefore it's better to not mark their package as typed.
I don't agree with this but I actually have a workaround. I can generate typing stubs and publish them as a separate package which developer or custom components can install have type check their code against homeassistant package.

uuu, that would be interesting to see :)
So why is all that hassle? To be able to use typing hints, right? :D

Well, I think this should be useful. Not just for this project but other custom components as well.

ou no no, i totally think it would be useful what you are proposing with making a stub as a separate package.
I just mean the entire mypy is used for typing help, right? (as u probs already understood, that's quite a new concept for me at this point)

Yes, mypy is used for type checking. Without it (or another type checker like pyre) type hints are useless 🙂

As I mentioned in the description, having type hints helps to make sure you're passing arguments with the correct types and this helps to avoid mistakes.

@KapJI, is there anything left from typing to implement?

Yes, few things.

Add homeassistant-stubs. I already created the package. Waiting for the release of homeassistant 2021.4.0 next Wednesday. I can probably start using beta version in the meantime.
Annotate config_flow. This depends on 1.

Oh that's a really nice job! You went far with it 💥


Added support for Laravel 6

Hmmm, this will require a Major version bump. WIll look into it. :)

@nicekiwi Thanks, that would be very handy!

Hey, any news on this?

Support will be included in the 2.1.0 release.


Change elevator speed

Whenever I'm going up an elevator shaft, it always glitches and makes me go through the elevator. Whenever I'm going down and elevator shaft, the elevator is too fast and I end up taking fall damage. So my suggestion for a fix for this problem, is the ability to change the elevator speed.
I want a feature that lets the player change the elevator speed, whether to be faster or slower. It can be possible by using the same menu as the call elevator toggle and the display toggle.
An example I could think of is the default speed can be 1, the slowest can be 0.1, and the fastest can be 2.
I hope I get a word about my suggestion soon.

you can currently configure the speed for all elevators via the config options, I can consider trying to do a per-elevator speed as well though


Reading multipart response part by part

Here's what I'm trying to achieve:

Read the response header using http::async_read_header
Then repeatedly do the following

Asynchronously wait for the the multipart boundary
Read the header of the part using http::async_read_header (which includes a Content-Length header for the part)
Asynchronously read the binary content of the part into a pre-allocated buffer based on the Content-Length from the step above.

I'm completely new to boost::beast, so I'm struggling a bit. Here are my questions:

What's the best way to asynchronously wait for and read the next multipart boundary?
Is it possible to use http::async_read_header for the part headers? Or does it work only for the main response header?
How to I read a fixed amount of binary data into a pre-allocated buffer?

Any help would be greatly appreciated!!

Hi @rhegner ,
I'm happy to write a little demo of how to do this for you.
Would you kindly:

Provide me with a sample message to use as a test input.
let me know your preferred completion strategy (callbacks & shared pointer, coroutines, etc).

R

You can't use Beast's parser to read the boundary in a multi-part message, because those boundaries don't have a request or response line.

How to I read a fixed amount of binary data into a pre-allocated buffer?
async_read_some()?  Which is what I'd try for this. async_read_some() with a buffer_body parser.  This way you can detect the boundaries yourself if you really liked.

Hi all, thanks for your responses so far. Here is a sample response. As you can see this is a MJPEG stream and the goal is to handle the live stream image by image with a callback per image. Obviously the content of the parts is not really jpeg binary but just dummy characters.
HTTP/1.1 200 OK
Date: Thu, 22 Oct 2020 20:26:01 GMT
Content-Type: multipart/x-mixed-replace;boundary="FrameSeparator"

--FrameSeparator
Content-Type: image/jpeg
Content-Length: 3

abc
--FrameSeparator
Content-Type: image/jpeg
Content-Length: 3

def
--FrameSeparator--

@madmongo1 I'm a little bit familiar with boost::asio and there I'm usually callbacks with either raw or shared pointers. I'd really appreciate some example code!

Hi @rhegner
I've added a fully functioning demo to a repo I use for writing tutorial and demonstration code.
project is here: https://github.com/test-scenarios/boost_beast_websocket_echo/tree/master/pre-cxx20/mime_reader
You will notice that I have implemented a composed operation for iterating through the mime parts. You pass it a callback function, which will be executed within the context of the composed operation (i.e. on your handler's executor).
You should not touch the stream object during the execution of this function. Note also that it does not need to claim a shared_ptr because when this function is executed, the asynchronous completion handler supplied to mime_reader::async_read_mime has not yet been invoked.
Demo output given your test data:
[2020-10-23 08:35:24.531] [info] received part length: 3, type: image/jpeg, contents:
abc

[2020-10-23 08:35:24.531] [info] received part length: 3, type: image/jpeg, contents:
def

(Process finished with exit code 0)

dependencies: spdlog, fmtlib - you can remove all references to these if you don't want to use them.
note that this function should really be called read_all_parts. I made a design decision change halfway through and forgot to modify this.
    void
    read_next_part()
    {
        auto self = shared_from_this();

        mime_reader::async_read_mime(
            stream_,
            boundary_,
            [](mime_reader::mime_part part) {
                spdlog::info(
                    "received part length: {}, type: {}, contents:\n{}\n",
                    part.headers[http::field::content_length],
                    part.headers[http::field::content_type],
                    part.body);
            },
            net::dynamic_buffer(rx_storage_),
            net::bind_executor(
                get_executor(), [self](error_code ec) {
                    if (ec)
                        spdlog::error("mime error: {}", ec.message());
                    else
                        spdlog::debug("parts finished");
                }));
    }

May I close this issue?

@madmongo1 thanks a lot for your sample code! This is very helpful!
I haven't provided any feedback yet because I have not yet been able to fully integrate the code with my application.
I'll close it for now.
Thanks again!

Ok I closed the issue too early. What I didn't realize initially is that the stream is sent using Transfer-Encoding: chunked, which makes sense, but my browser abstracted that away when I copied the example response above.
On the line, the stream actually looks like this, where 43 and 3 are the chunk headers:
HTTP/1.1 200 OK
Date: Mon, 26 Oct 2020 18:29:07 GMT
Content-Type: multipart/x-mixed-replace;boundary="FrameSeparator"
Server: Kestrel
Cache-Control: no-store
Transfer-Encoding: chunked

43

--FrameSeparator
Content-Type: image/jpeg
Content-Length: 3

3
abc

The beast documentation says that the http parser automatically removes the chunked transfer coding. But in your solution it looks like after reading the initial header you're switching from using beast to using asio, which presumably does not hide the chunking.
In the example above the multipart header and body come in their separate chunk, but I guess in real life these boundaries do not always align, so I think we need to do a layered approach where one layer (the parser) does the de-chunking and then the next layer does the multipart handling.
So... is there a way to use the beast parser (instead of falling back to the asio stream) to parse the multipart response?

Yes, beast will automatically decode a chunked message. However, in order to take advantage of this you would need to implement the composed operation above in terms of beast::http::async_read_some rather than asio::async_read_until. Because you want beast to do the work of decoding the chunks, but you still want access to the dynamic buffer in order to parse it for multipart boundaries.
https://www.boost.org/doc/libs/1_74_0/libs/beast/doc/html/beast/ref/boost__beast__http__async_read_some.html

I'm still struggling with this. I had a close look at the echo example which reads the input line-by-line (which would be a good building block for reading the multipart boundary and the part headers), but it does so using stream_.async_read_some which does not use a parser, and therefore does not handle the chunked transfer - or at least that's my understanding.
I could not figure out how to write a similar method for reading a line until CRLF on top of beast::http::async_read_some which takes a buffer and a parser. I guess I'd have to use two dynamic buffers? The one I'm passing to beast::http::async_read_some, and one for managing any content past the CRLF marker? Is using a response_parser<dynamic_body> the way to go?
I need to get this MJPEG streaming stuff working by friday, and I'm pretty lost here. So any further help would be greatly appreciated!
Even just a small building block like a composed async_read_line (which reads a string up to the next CRLF) on top of beast::http::async_read_some using a parser would be really helpful

In the response above I linked the docs of the version of async_read_some which does use the parser.
It’s late for me now but I can revisit the example in the morning.
Can you provide another sample of input please?

That would be great! I spent the entire evening trying, but didn't make much progress.
This is an example of the raw TCP stream (where you can see the chunking):
HTTP/1.1 200 OK
Date: Tue, 27 Oct 2020 22:01:59 GMT
Content-Type: multipart/x-mixed-replace; boundary=jpgboundary
Server: Kestrel
Cache-Control: no-store
Transfer-Encoding: chunked

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

3
abc
2

40

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

3
def
2

13

--jpgboundary--

0

After de-chunking the body would look like this:
HTTP/1.1 200 OK
Date: Tue, 27 Oct 2020 22:01:59 GMT
Content-Type: multipart/x-mixed-replace; boundary=jpgboundary
Server: Kestrel
Cache-Control: no-store
Transfer-Encoding: chunked

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

abc

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

def

--jpgboundary--

Is that test data correct? I don't see a chunk size for the first chunk. I'm testing an update to my solution.

Hmm you're right, that's strange.... - I guess I was too tired last night. I ran my response dump tool again and now it looks ok:
HTTP/1.1 200 OK
Date: Wed, 28 Oct 2020 06:28:14 GMT
Content-Type: multipart/x-mixed-replace; boundary=jpgboundary
Server: Kestrel
Cache-Control: no-store
Transfer-Encoding: chunked

40

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

3
abc
2

40

--jpgboundary
Content-Type: image/jpeg
Content-Length: 3

3
def
2

thanks. In writing the solution I think I've uncovered a bug in beast. I'm going to write a test for that and solve it than then come back to this.

ok, solved. wasn't a bug. Just an errpr in my test driver. fixing and will publish today.

@rhegner
Please find the solution linked. I have flattened the logic into a test. Obviously in production code you would yeild the current async operation at each point where I have used spin().
This solution handles both chunked and non-chunked scenarios.
https://github.com/test-scenarios/boost_beast_websocket_echo/tree/master/pre-cxx20/mime_reader
@vinniefalco would you mind taking a look at the convoluted logic I have used when collecting data from chunks? I had to do this because async_read_some sets bytes_transferred to 0 when reading body data and when reading a chunk body, does not update the parser's body's size. That feels wrong to me, but happy to be corrected.
e.g.:
        auto on_chunk_body =
            [&](std::uint64_t remain, beast::string_view body, error_code &ec) {
                auto pos = outbuf.size();
                auto len = body.size();
                outbuf.grow(len);
                net::buffer_copy(outbuf.data(pos, len),
                                 net::buffer(body.data(), len));
                expect_chunk_header = (remain == 0);
                return len;
            };
        parser.on_chunk_body(on_chunk_body);

later used thus:
            if (parser.chunked())
            {
                while (expect_chunk_header)
                {
                    http::async_read_some(local, rxbuf, parser, handler);
                    spin("skipping chunk header");
                }
                http::async_read_some(local, rxbuf, parser, handler);
                spin("seeking boundary");
            }
            else
            {
                outbuf.grow(512);
                auto dat = outbuf.data(outbuf.size() - 512, outbuf.size());
                parser.get().body().data = dat.data();
                parser.get().body().size = dat.size();
                parser.get().body().more = false;
                http::async_read_some(local, rxbuf, parser, handler);
                spin("seeking boundary");
                outbuf.shrink(512 - parser.get().body().size);
            }


Remove version: GeoGebra.Geometry version 6.0.861

All InstallerUrls returned 404 Not Found

https://download.geogebra.org/installers/6.0/geometry/GeoGebraGeometry-Windows-Installer-6-0-861-0.exe

Microsoft Reviewers: Open in CodeFlow

URL: https://download.geogebra.org/installers/6.0/geometry/GeoGebraGeometry-Windows-Installer-6-0-861-0.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 924)


[bug] [storage] [datamovement] [tests] Renable GetChildStorageResourceAsync for Blob Directory tests

Library name and version
Azure.Storage.DataMovement; Azure.Storage.DataMovement.Blobs
Query/Question
The JSON file doesn't seem to be taking to the CI pipeline in Mac OS and Linux.
Let's disable the test for now, until we can understand why the recording isn't being read correctly for this specific test. This test runs live fine.
Environment
No response

We don't have to reenable this because it's now mocked


Search-in-page doesn't work.

Expected Behavior
I expected that I could find a word in a page. According to the updates made in the latest release, this action should be possible.
Actual Behavior
I tried to use the feature by using the key command ctrl + F and the search in page box doesn't come up. Sometimes, it did, other times it didn't.
It's like a hit and miss thing.
How to Reproduce

Open a post either on the feed or anywhere
Press the key combination to toggle on in-page search which is;  ctrl + F
See error

Test Enviroment
Device; HP Pavilion DV7
OS; Windows 7 Professional

Thanks for reporting @HarryHeights Will be fixed next ver. we release soon.


Add title tag

I think this might be out of scope for the package. The title tag is often different to the title used for sharing which is what the meta-tags are used for.

@seb-b The title tag is used for SEO purposes as well. Do you think this could be opt-in? By default the title tag would not be rendered, but setting an option would enable it.

Yeah on reflection it would be handy to have this, I'll reopen the pr.
We don't need a setting but we do need a way to change the title tag independent of the meta_title property.
So a new getter, like get_object_title will need to be added to the MetadataMixin. It can just return the meta_title as default and that should serve 90% of cases:
class MetadataMixin(object):
    """
    An object that can be shared on social media.
    """
   ...
   get_object_title(self):
       return self.get_meta_title()
   ...


feat: Add a nickname to the route

The active route path can be seen at a glance, but at this time when I want to switch to ‘’tabledetail' (the Chinese name is 列表详情), my mind is "列表详情" not tabledetail, but this time I may not be able to locate the tabledetail route at once.

By the way, my implementation here is through the meta of route in the vue file，like this
<route lang="yaml">
meta:
  layout: default
  breadcrumb: [基础详情页]
</route>

I see a lot of gaps in the routing section of this tool and I was wondering if I could add some content to it. Certainly in the form of configurable items.
I can design and contribute if you think it's okay,

That makes sense. Maybe we can show the meta data in the table. Feel free to open a PR if you want to try it.


Update Nuclei classification bundle to support deterministic eval

Description
This PR is used to update the pathology_nuclei_classification bundle to support deterministic evaluation and inference.
Status
Ready/Work in progress/Hold
Please ensure all the checkboxes:

[x] Codeformat tests passed locally by running ./runtests.sh --codeformat.
[ ] In-line docstrings updated.
[ ] Update version and changelog in metadata.json if changing an existing bundle.
[ ] Please ensure the naming rules in config files meet our requirements (please refer to: CONTRIBUTING.md).
[ ] Ensure versions of packages such as monai, pytorch and numpy are correct in metadata.json.
[ ] Descriptions should be consistent with the content, such as eval_metrics of the provided weights and TorchScript modules.
[ ] Files larger than 25MB are excluded and replaced by providing download links in large_file.yml.
[ ] Avoid using path that contains personal information within config files (such as use /home/your_name/ for "bundle_root").

/blossom

/build


How to override urlRules in the Module

I want to override the urlRules in the modules could not find anything in the documentation, why i want to override them is because the client wants the profile page to be displayed like
www.example.com/user/username rather than www.example.com/user/user_id , so i guess i have to override the ProfileController and the first urlRule in the Module.php file  which is this line
public $urlRules = [
       '<id:\d+>'                               => 'profile/show',

to something like this
public $urlRules = [
       '<username:\w+>'                               => 'profile/show',

is there any way to do it, because i could not find it in the documentation. Or i should override the rule in the frontend/main and from there it will be overridden.

sorry found the previous post about the same thing
https://github.com/dektrium/yii2-user/issues/732


rpi: Add USB boot support

Tested/verified on RPI3 B1.2 with Lexar USB drive.

Hmm, I'm don't like this.
The way to go is a script (can be also dbus driven) they allow moving the data partition to an external device. That will also work for all other boards.
Anyway, the uboot script will be not mess up with this and so I'm fine to merge this. Do that not work for 64bit?

It should work on the 64bit arch, I'd need to test to verify.
You are correct in that it should not affect SD/eMMC boot.
USB boot is similar to eMMC boot functionality. eMMC is not on all boards, but we still support it as a boot option for Odroid/tinkerboard.

@rbray89 nice. Please update the 64bit uboot script to and we can merge it 👍

It works well with element14 Pi desktop included sata usb converter and Integral 120GB mSATA SSD.
Thank you!

Tested/verified on RPI3 B1.2 with Lexar USB drive.

Where do I find a rpi3 image that includes this feature?

@truglodite do you have the list of devices somewhere?

In forum is a list


Fix TypeScript compilation performance (closes #1591)

\cc @AlexanderMoskovkin
Tested on https://github.com/caseyWebb/testcafe-slow-typescript-example. I'm going to run it on Travis CI for demonstration, and will post a link after it will be done.

FPR
/cc @churkin @helen-dikareva
It's also checked on tests of our ASP team.
They have tests with a lot of helpers. Without the fix it was about 35s from run tests command  to browser opening if one test is chosen. Now it's about 5s,
The next stage of improving will be finding a way to compile faster a pack of tests (now we compile each test separately so it takes much time).

FPR


Bump Sailfish to V1: Another large refactor with Breaking Changes

Description
Major overhaul to split classes up, clean up registrations, add outlier detection, improve IDE output window, improve the test adapter Saildiff test result UX, and much more
NOTE:
THIS VERSION is prelimenary to the impending V1 bump! THIS PR has many BREAKING CHANGE 🙏
I believe I can get away with this right now since I don't there are too many people I'm not aware of using this 📦

Exciting stuff - after nearly a year of development, and lots and lots of iterations and learnings, I'm ready to bump to V1.
This will contain a bunch of breaking changes and all kinds of cleanups/advancements. All will be documented in time :D


UsePerVhostStatistics memory footprint

It looks like this option can increase memory footprint dramatically when number of hosts is relatively large.
pagespeed UsePerVhostStatistics off (right after nginx restart, idle instance):
$ ps -C nginx -o rss,cmd
  RSS CMD
506312 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
663140 nginx: worker process
664364 nginx: worker process
657080 nginx: worker process
657080 nginx: worker process
657080 nginx: worker process

pagespeed UsePerVhostStatistics off (right after nginx restart, idle instance):
$ ps -C nginx -o rss,cmd
  RSS CMD
154272 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
156372 nginx: worker process
156364 nginx: worker process
156364 nginx: worker process
156364 nginx: worker process
156364 nginx: worker process

So the questions I have:

Is there any way to [systematically] estimate memory allocation (over time as well).
Is there any way to tune memory usage?
Is it possible to enable stats only for selected hosts?

You wrote "pagespeed UsePerVhostStatistics off" twice; which one is off and which one is actually on?  I'd guess the first one is on, since that has higher memory usage, but I wanted to confirm.

Is there any way to [systematically] estimate memory allocation (over time as well).

Can you script a test workload?

Is there any way to tune memory usage?

For the statistics that's not something we have.  You can adjust MessageBufferSize, but that defaults to 0.  On the other hand, our statistics usage shouldn't rise over time.  It's basically a large number of counters that all get initialized at 0.

Is it possible to enable stats only for selected hosts?

Sorry, there's not.  Adding this would be practical, changing the code from asking "are there per-vhost statistics" to "are there per-vhost statistics for this vhost" but it's not something we've looked into.

It seems to be ~240KiB per VHost for statistic object itself.

Most of that isn't actually the counters (~12KiB), but the histograms.

Maybe we should add a way to turn off the histograms, and maybe also the counters.  Turning off statistics entirely disables things like cache flushing, but that needs much less memory than full stats.

Sorry, there was a typo in the first statement.
240KiB is absolutely reasonable usage. I don't think that the majority of people maintains thousands of hosts on the same server, so it should be OK.
However, per-host switch is indeed very practical. I would recommend to close this ticket and file a separate enhancement request for per-host stats.

Renamed the ticket; now this is an enhancement request for functionality like:
pagespeed UsePerVhostStatistics off
server {
    # won't have its own stats
}
server {
    pagespeed UsePerVhostStatistics on;
    # will have its own stats
}


Hello, I want to reproduce your code. Can you provide more details in the data preparation section？

Hi! For data preparation, you need to download the RAVDESS dataset and follow the steps described in readme: organize the data in the folder; install facenet; and run preprocessing scripts in ravdess_preprocessing. Overall, this extracts faces from video, and aligns audio and video to 3.6 seconds, as well as samples 15 frames from video. If you have any specific question/issue at any step, feel free to ask

I'm closing this for now, feel free to reopen if you face any issues


setData prohibits changing attrs

I have a composable utility whose responsibility is to intercept the incoming class property from the context object and then parse and distribute it into various "regions". In any event, the goal is to reactively respond to changes when they occur and while this would be a relatively simple matter on props which are in fact reactive, the context object is just a POJO so to achieve this I've tapped into the onUpdated() event hook and I'm fairly certain my implementation will be reactive but of course I need a test for this. Sadly, it would appear, that the setData() call is either not working or at least not working as I'd expect it to having read the docs.
So to set the scene, I have a utlity function which gives me a pointer to a TestComponent and let's me set the initial state of the class to whatever I like. The TestComponent then uses my class parser functionality and this has been tested pretty thoroughly without any need for using the test library:
function testComponent(klass = "", options: Parameters<typeof shallowMount>[1] = {}) {
  klass = options.attrs?.class ? [(options.attrs as { class: string }).class, klass].join(" ") : klass;
  options = { ...options, attrs: { ...options.attrs, class: klass } };
  return shallowMount(TestComponent, options).findComponent(TestComponent);
}

As a "for instance", this test passes without issue:
it("tokenization regions are all populated correctly", () => {
  const c = testComponent(DEFAULT_CLASS);
  const tokens = c.vm.tokens;

  expect(tokens.root).toBe("my-component bg-blue-100");
  expect(tokens.content).toBe("text-gray-300");
  expect(tokens.title).toBe("opacity-0.9");
});

DEFAULT_CLASS is "my-component text-gray-300 title:opacity-0.9 bg-blue-100"

However, when I try to test for my parsers ability to detect change and provide reactive parsing it fails at any call to setData(). Here's the test where this happens:
it("reactivity of 'class' observed on mounted test component", async () => {
  const c = testComponent(DEFAULT_CLASS);
  const initial = c.vm.tokens;
  // initial state
  expect(initial.title).toBe("opacity-0.9");

  // mutate the "class" property
  await c.setData({ attrs: { class: DEFAULT_CLASS.replace("opacity-0.9", "opacity-1") } });

  // validate that tokens have been updated
  const changed = c.vm.tokens;
  expect(changed.title).toBe("opacity-1");
});

the error returned is "TypeError: Cannot add property attrs, object is not extensible"

Now I accept that there is a possibility that I've misinterpreted the use of this API call but with the info I have it would appear this should work and this type of test is very important. Especially now that Tailwind CSS and class-based styling has become so popular. I have always been a bit surprised by even the core VueJS docs are a bit light on addressing this important edge case so people don't make the assumption that ctx is reactive but surely there must be a good way of testing this?

Sorry, this issue completely flew under my radar. setData is mainly for things in the data() function; it sounds like you would like a setAttrs method, but my understanding these are read only and can only change when the data passed.
Is there any way to make a more minimal, concise version of what you'd like to do? There's quite a lot of info in your post, I'm having trouble making a minimal reproduction I can add to our test suite to TDD the problem.

This issue is pretty old and I don't see any actionable info right now, so I'll close it. If we can have a more concise feature request around attrs, that'd be great - a new issue might be best.


Example in eks-cluster-with-new-vpc doesn't work

It looks like the example in the deploy/eks-cluster-with-new-vpc doesn't work:
git clone https://github.com/aws-samples/aws-eks-accelerator-for-terraform
cd aws-eks-accelerator-for-terraform/deploy/eks-cluster-with-new-vpc
terraform init
terraform apply
...
╷
│ Error: Invalid function argument
│
│   on ../../kubernetes-addons/keda/locals.tf line 75, in locals:
│   75:   default_keda_helm_values = [templatefile("${path.module}/keda-values.yaml", {
│   76:     keda-sa-name = local.keda_service_account_name
│   77:   })]
│     ├────────────────
│     │ path.module is "../../kubernetes-addons/keda"
│
│ Invalid value for "path" parameter: no file exists at ../../kubernetes-addons/keda/keda-values.yaml; this function works only with files that are distributed as part of the
│ configuration source code, so if this file will be created by a resource in this configuration you must instead obtain this result from an attribute of that resource.
╵
╷
│ Error: Reference to undeclared local value
│
│   on ../../kubernetes-addons/prometheus/locals.tf line 71, in locals:
│   71:     ampWorkspaceUrl    = local.amp_workspace_url
│
│ A local value with the name "amp_workspace_url" has not been declared.

Thanks for looking at it...

Thanks @ruzickap for raising this issue. Recent merge broke some functionality which i fixed now. I will merge bug fix PR soon

Fixed in #80. Closing this issue.


apps: Switch to X509_REQ_verify_ex

I believe that X509_REQ_verify_ex should be used instead of X509_REQ_verify.

This pull request is ready to merge

Merged to master. Thank you for your contribution.


Fixed social links in schedule page and fixes

[x] Social links added with description in page.
[x]  Fixed colors visibility.
[x] Add speakers bio with session information.

[Current coverage][cc-pull] is 30.39%

Merging [#482][cc-pull] into [development][cc-base-branch] will not change coverage

@@           development       #482   diff @@
=============================================
  Files                3          3
  Lines              352        352
  Methods             34         34
  Messages             0          0
  Branches            42         42
=============================================
  Hits               107        107
  Misses             245        245
  Partials             0          0

Powered by Codecov. Last updated by [b5641b5...9b6f486][cc-compare]
[cc-base-branch]: https://codecov.io/gh/fossasia/open-event-webapp/branch/development?src=pr
[cc-compare]: https://codecov.io/gh/fossasia/open-event-webapp/compare/b5641b5956778cfba43a6e3e6b65434df9bcbef7...9b6f48671036011e6acddc5b7466cd28feab7f87?src=pr
[cc-pull]: https://codecov.io/gh/fossasia/open-event-webapp/pull/482?src=pr


[SDK] Consolidate Naming for CRUD APIs

Fixes: https://github.com/kubeflow/training-operator/issues/1877
Related: https://github.com/kubeflow/training-operator/issues/1878
I unified CRUD APIs in our Training Operator SDK, so users can submit different Job much easier with job_kind parameter.
Users can configure namespace and job_kind in TrainingClient() once, so they can re-use it during API execution.
Here are the list of public APIs that we expose to the user:
create_job()
get_job()
get_job_conditions()
get_job_logs()
get_job_pod_names()
is_job_created()
is_job_failed()
is_job_restarting()
is_job_running()
is_job_succeeded()
wait_for_job_conditions()
list_jobs()
update_job()
delete_job()

Create Job API now supports:

Create Job from object - job
Create Job from Docker image - base_image (Currently, only for TFJob and PyTorchJob).
Create Job from function - train_func (Currently, only for TFJob and PyTorchJob).

I removed yapf and pylint configs, since we can use black + flake8 combination (KFP also uses flake8 for lint checks)
It would be nice to add more unit test/lint checks for our SDK.
~TODO: I still need to update examples with the new APIs in this PR.~
/hold
It would be nice if you could start review the SDK changes.
/assign @kubeflow/wg-training-leads @tenzen-y @kuizhiqing @yaobaiwei @zw0610

I updated SDK examples and I moved them to /examples/sdk, so users can find them easily.
Please take a look at the changes once you have time.

/hold for review

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
12 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.1%) to 42.777%

Files with Coverage Reduction
New Missed Lines
%

pkg/controller.v1/tensorflow/tfjob_controller.go
4
75.27%

pkg/controller.v1/mpi/mpijob_controller.go
8
80.5%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
3737

Relevant Lines:
8736

💛  - Coveralls

@tenzen-y I removed for now test for Create PyTorchJob from func from our E2E.
I am not sure why tests failed, since locally everything is working fine. So we can unblock this PR.
We can work on adding tests for such use-cases later.
For tests, I print job info when verify_e2e failed, so we can see some details on failed tests.

@tenzen-y Alright, test passed. I think, it was temporarily issue with MXnet dataset downloading.

@tenzen-y Please let me know if there are any other comments that you want me to address.
/hold cancel

@tenzen-y Please let me know if there are any other comments that you want me to address. /hold cancel

It will take a bit of time to review this PR again since I'm backlogged on PRs in multiple repositories.
Thanks for your patience.

@tenzen-y Please let me know if there are any other comments that you want me to address. /hold cancel

It will take a bit of time to review this PR again since I'm backlogged on PRs in multiple repositories. Thanks for your patience.

Sure, no problem. Thank you for your time!

/lgtm

/assign @tenzen-y

@tenzen-y if you had a few minutes to check final changes that would be great!

@tenzen-y if you had a few minutes to check final changes that would be great!

@andreyvelich Sorry for the late. Implementation looks good to me. However, I’m confirming by using SDK on my local why the following e2e fail. Since I faced the similar error on my local.

@tenzen-y I removed test for Create PyTorchJob from func from our E2E for now.
I am not sure why tests failed, since locally everything is working fine. So we can unblock this PR.
We can work on adding tests for such use-cases later.

However, I’m confirming by using SDK on my local why the following e2e fail. Since I faced the similar error on my local.

@tenzen-y Please can you show what error did you get ?

Once re-created my local cluster, the error went away. Sorry for the confusion.

@tenzen-y During our E2Es testing I saw that sometime kind just can't pulled image. Maybe we should consider to use minikube, similar to Katib E2Es.

Or, we maybe want to load images to kind cluster with kind load docker-image XXX  before starting test.


Long local in parsing APIs may be expensive on some architectures

Investigate and find out. Parsing to long/ulong by creating a local long variable and doing casts may be expensive in some architectures, specifically 32-bit. If it is, we should change this so our APIs are optimized on these architectures. See https://github.com/dotnet/corefxlab/pull/700#discussion_r67569264 for more info.

Merged into #766.


Thread expanding animation shutters sometimes

For unknow reason animation can be very odd in some posts e.g. b/3349284 dt/176783 cr/49764 etc.

Confirmed since first complete animations implementation at a8e364967a64593471c3ee5b45402845280d9b09


Startup issues

https://twitter.com/catominor3/status/1522663554972897280?s=21&t=1Dpsd9r_1gS7RCCN7nRJEg

My Setup: Windows 10
What I did:

installed BRAT

installed ExcaliBrain (and enabled it)

forgot to install Dataview (and enabled it)

tried to start ExcaliBrain from the command palette -> Nothing happened.

What I tried afterwards:

I tried to deactivate different plugins.
I removed ExcaliBrain and added it again

The JavaScript console does not show more than what I posted on Twitter.

How large is your vault. ExcaliBrain will not start until Obsidian completes indexing, and then DataView completes indexing.
Have you tried restarting Excalibrain?
Please try manually deleting excalibrain.md from your Vault’s root folder (I am assuming you did not change the default file name). Else try to change the excalibrain file path to something else.

Issue solved. I created before Excalibrain.md file with info about Excalibrain and that caused the issue.
Deleting the file solved it.

Thanks. I will add better error handling. e.g. prompting the user to overwrite the file or to set another name or abort the startup.

resolved in 0.0.5


Add per-project hashing salt

Fixes #343

Use core.project_config.secrets.AzureKeyVault in hasher to set up Azure Key Vault connection
Hashing salts are now retrieved from the key vault, using the project-name as key

If no salt exists, a new one is created and stored in the key vault

Removed the old hasher key vault functionality
Salt generation is moved into the hashing functionality, so only hasher knows about it

To do

[ ] Check if system test still runs and fix anything broken
[x] Update docs

pixl_dcmd tests failing but will wait until #366 gets merged in before resolving.

Docs could definitely still use some further improvement.

Had to create a new secret in our dev Azure Keyvault under hasher--key to get system test passing. The Hasher API reads the secret configured with HASHER_API_AZ_KEY_VAULT_SECRET_NAME from the vault as key for the hashing. Added this to test/.env as well.


Fix for iOS

In addition to  #4434 I found a possible solution not only for Kodi. Could you try such idea jsergio123/script.module.resolveurl@2e3f773 to solve the iOS issue 'No child processes' ?

@mucke5 did you mean to open a pull request here?


pass through user-defined style and classname props

Right now these get discarded

@mmw Thanks! I see this is out under 1.1.0 - appreciate the speedy response.

@contra And thank you for the feedback 👍


Declare PHP 8 compatibility

Here's a WIP on compatibility with PHP 8.0

removal of fixer because of https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/4702
added json to requirements because \Elendev\NexusComposerPush\PushCommand::getComposerJsonArchiveExcludeIgnores() using json_decode
phpunit 9.4.2 passed test on PHP 8.0 rc2

Hi @andypost, can you update the github workflow to test on PHP 8 too ?
https://github.com/Elendev/nexus-composer-push/blob/master/.github/workflows/testing-and-cs.yaml#L26
Thanks!

@Elendev added with php:8.0-rc-cli docker image

Main question is  FriendsOfPHP/PHP-CS-Fixer dependency - that's why "Code Sniffing" job fails

Maybe it could use to stick on PHP 7.x for codesniffer as it dev-dependency and will not fire on install

Now it's passed!

@Elendev does it make sense to squash commits to keep history clean?

@andypost I've squashed your commits and released the version 0.4.0 with PHP 8.0 support.
:+1:

@Elendev thank you


IntelliSense completions don't account for character symbols (e.g. @)

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.78.2 Commit: b3e4e68a0bc097f0ae7907b217c1119af9e03435
OS Version: MacOS 12.6.5

I am developing an LSP plugin for typescript and one of the functions is to be able to suggest snippets for Microsoft Fast Event template bindings. This requires sending back insertText with a @ symbol, but this appears not to be accounted for when typing in VSCode. Notice the difference in functionlity between NeoVim where I can type @cl and it will filter on the events and let me complete it. In VSCode I have to open the intellisense with no characters to match to get it to work, and then scroll with my mouse and seleect it
https://github.com/microsoft/vscode/assets/43502076/299fdbfd-2acb-4a9c-9ece-e33cfc38bcf7
https://github.com/microsoft/vscode/assets/43502076/fed58558-d5cc-4c79-a794-5d7f740265cc

A completion item provider is invoked, returns completions but they don't show up! 😕  What's the issue? Filtering! Filtering compares completions with a prefix and hides those that don't match.
Example

trigger completions here: say.he| (| is the cursor)
provider returns abc, help, hood
the editor takes the he-prefix and scores it against abc, help, and hood.
scoring yields these result:

abc - no match, don't show
help - good match, show
hood  - no match, only h occurs, don't show

editor shows help suggestion, does not show abc and hood suggestion

Extensions Rule!
The above sample was using "defaults" to determine the prefix and the filter criteria.

prefix:  each completion can define its very own prefix via vscode.CompletionItem#range. Taking the example above, valid prefixes can be say.he or .he or   (the empty string). Any range is valid as long as it includes the cursor position and is single line only.
filter: each completion can define what string to use when filtering. The default is the label but via vscode.CompletionItem#filterText any string can be defined

When to use what? It depends on the language, its word definition, and if you control/understand the word definition or not. The defaults usually work well enough but some languages might use a non-intuitive word definition, or completions span multiple words, or completions include non-word character etc. In all those cases the range-property should be used.

So for my use case do I need to provide a range {} object which ensures that I am capturing the @ at the start of the text that includes the completion too?

@jrieken is what you have suggested specically for a vscode plugin rather than a generic LSP reponse? Apologies if I have misunderstood but when I look at the interface I am working with here I don't see the range item you're talking about

LSP is same, same but slighty different. I believe in there it' not range but embedded in the text edit

So if we strip the problem back to a high level, I need to find in the API a setting where I can specify a range that includes the @ symbol so VSCode will use that in the filter text, and will not filter the @click @mousedown events?

yes


Add type to Collection when annotations support them

This is currently in the language funnel and should be out soon
This'll let me write
@Collection<FireCollectionReference<BadgeBase, BadgeDoc>>(name: 'badges')

This seems optional to me now


Update images of chart specs

Potential updates:

Merge print and digital styles
Add legend to template
Reflect any changes to title/subtitle specs, dimensions, etc

Also see #3 in regards to the first bullet point


Windows Terminal Azure cloud shell error: IXMLHttpRequest2Callback::OnError: -2146697205: The operation was timed out.  [process exited with code 1]

I have suddenly started receiving this error:
"IXMLHttpRequest2Callback::OnError: -2146697205: The operation was timed out.
[process exited with code 1]"
When signing into the Azure Cloud Shell in Windows Terminal. Eventually it can be possible to get in but I am informed my session is ephemeral.
I am using: Windows Terminal
Version: 1.11.2921.0
Please advise! Thanks.

@PankajBhojwani Do we have a contact on the Azure Cloud Shell team we can ask about this sort of stuff?

Any status on this? It has been a constant issue for a month now.... TIA

I'm told that @edwardskrod might have an idea

@zadjii-msft  Hi there!  I actually work on the Visual Studio Setup Core team.  I really have no context into this error.  I'm sorry!

Well, I was lied to then. Sorry about that! @DHowett will have to link the actual person he was thinking of then ☺


Restrict navigation to map bounds

Difficulty: Hard
Currently, there are no bounds when navigating (pan, zoom) the map. The goal of this task is to restrict the navigation such that users can not escape and see empty space.
🤔 Expected Behavior
In Y direction the navigation should be restricted such that one can not pan out from the map.
In X direction it should be possible to infinitely pan. When panning beyond the bounds then the world should should be wrapped. This is done in #74.
😯 Current Behavior
There are no bounds.
💁 Possible Solution
??

I'd love to take a stab at this and contribute, but I'm not really confident in my ability. Would it be possible to get a little mentorship if needed?

Sure thats my job :) feel free to join the matrix

As this seems a good and simple start, I had a look into it.
In coords.rs for Zoom I added
    pub fn limit(&mut self, min: f64, max: f64) {
        if        self.0 < min { self.0 = min }
        else { if self.0 > max { self.0 = max } }
    }

and in zoom_handler.rs in UpdateState for ZoomHandler I added
next_zoom.limit(0.0, 20.0);
The test runs well. Next I will look for panning / wrapping the world
What formal steps are needed, If I am done?

Hey @DerKarlos I think this is a good first task! Thanks for taking a look at it!

and in zoom_handler.rs in UpdateState for ZoomHandler I added next_zoom.limit(0.0, 20.0);

That would temporarily allow to let the Zoom go above 20 or below 0. This might cause unexpected problems in the future. An implementation which does not use an additional &mut self function would be preferable I think.
Implementing this in the ZoomHandler is probably not what we want. The bounds will be a property of the style or map configuration in the maplibre crate. ZoomHandler is implemented in maplibre-winit. So the bounds/min/max values should be enforced in the maplibre core crate. Maybe a good place to implement this is the ViewState which holds the current zoom value.

I need time and help to get used to such complex projects like maplibre-rs.
My 2nd atempt:
I added min/maxzoom:f64 in Style&Default 0/20 (Mapstyle-Error if min>zoom or max<zoom)
and addet both into InteractiveMapSchedule/ViewState.
I impemented Zoom.clamp (no mod) and called it in ViewState::update_zoom.
If clamped, oddly the map up-right corner shifts to the cursor or jumps to other coordinates!
How to avoid or fix this? (No shift happens, if I clamp in zoom_handler)
Without clamping, shifting the old position to the mouse works fine.

I need time and help to get used to such complex projects like maplibre-rs.
My 2nd atempt: I added min/maxzoom:f64 in Style&Default 0/20 (Mapstyle-Error if min>zoom or max<zoom) and addet both into InteractiveMapSchedule/ViewState. I impemented Zoom.clamp (no mod) and called it in ViewState::update_zoom. If clamped, oddly the map up-right corner shifts to the cursor or jumps to other coordinates! How to avoid or fix this? (No shift happens, if I clamp in zoom_handler) Without clamping, shifting the old position to the mouse works fine.

Can you open a PR with your changes? Then I can check them out :) Feel free to put it into "draft" mode

While my comments above should have been in #161,
lets start with: Restrict navigation to map bounds - Nord/South
Should thee map always fill the window or half of it or would 10 % do it?
We could have an u8 as % parameter in the map style.
I prefer 100% as default; but let's test it to feel it.
The West/East would be the same, until #74 is done/used.
What if the window is extrem small or flat? Take the longest side as relevant?

The map should probably fill the screen. It should never be possible to see the world "outside" of the map.


Executing Image.save_jpg_to_buffer crashes Godot

Godot version
4.0.beta.custom_build. 39534a7ae
System information
Ubuntu 22.04 - Nvidia GTX 970, Gnome shell 42 X11
Issue description
When executing
	var temp_variable9 = Image.new()
	temp_variable9.crop(81, 47)
	temp_variable9.save_jpg_to_buffer(-55.1558017730713)

Godot crashes with this backtrace
=================================================================
==263411==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62100052e110 at pc 0x0000074a3a9a bp 0x7ffd092fa850 sp 0x7ffd092fa840
READ of size 1 at 0x62100052e110 thread T0
    #0 0x74a3a99 in RGB_to_YCC thirdparty/jpeg-compressor/jpge.cpp:96
    #1 0x74bbc92 in jpge::jpeg_encoder::load_mcu(void const*) thirdparty/jpeg-compressor/jpge.cpp:861
    #2 0x74bd4fc in jpge::jpeg_encoder::process_scanline(void const*) thirdparty/jpeg-compressor/jpge.cpp:929
    #3 0x74a2669 in _jpgd_buffer_save_func modules/jpg/image_loader_jpegd.cpp:178
    #4 0x1c630e45 in Image::save_jpg_to_buffer(float) const core/io/image.cpp:2449
    #5 0x1c722516 in void call_with_variant_args_retc_helper<__UnexistingClass, Vector<unsigned char>, float, 0ul>(__UnexistingClass*, Vector<unsigned char> (__UnexistingClass::*)(float) const, Variant const**, Variant&, Callable::CallError&, IndexSequence<0ul>) core/variant/binder_common.h:731
    #6 0x1c70cff1 in void call_with_variant_args_retc_dv<__UnexistingClass, Vector<unsigned char>, float>(__UnexistingClass*, Vector<unsigned char> (__UnexistingClass::*)(float) const, Variant const**, int, Variant&, Callable::CallError&, Vector<Variant> const&) core/variant/binder_common.h:526
    #7 0x1c6fb044 in MethodBindTRC<Vector<unsigned char>, float>::call(Object*, Variant const**, int, Callable::CallError&) core/object/method_bind.h:544
    #8 0x1d7d9334 in Object::callp(StringName const&, Variant const**, int, Callable::CallError&) core/object/object.cpp:733
    #9 0x1cd93cdd in Variant::callp(StringName const&, Variant const**, int, Variant&, Callable::CallError&) core/variant/variant_call.cpp:1048
    #10 0x5d846b2 in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_vm.cpp:1555
    #11 0x57bd7c5 in GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) modules/gdscript/gdscript.cpp:1629
    #12 0x12b53839 in bool Node::_gdvirtual__process_call<false>(double) scene/main/node.h:238
    #13 0x12abe920 in Node::_notification(int) scene/main/node.cpp:56
    #14 0x4568455 in Node::_notificationv(int, bool) scene/main/node.h:45
    #15 0x1d7da811 in Object::notification(int, bool) core/object/object.cpp:790
    #16 0x12c13e76 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:868
    #17 0x12c06b5d in SceneTree::process(double) scene/main/scene_tree.cpp:466
    #18 0x283ff52 in Main::iteration() main/main.cpp:3137
    #19 0x266707b in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:772
    #20 0x26453f3 in main platform/linuxbsd/godot_linuxbsd.cpp:72
    #21 0x7f6bf60dad8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
    #22 0x7f6bf60dae3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f)
    #23 0x2644e9d in _start (/usr/bin/godot4s+0x2644e9d)

0x62100052e110 is located 0 bytes to the right of 4112-byte region [0x62100052d100,0x62100052e110)
allocated by thread T0 here:
    #0 0x7f6bf6d2b868 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144
    #1 0x1c123199 in Memory::alloc_static(unsigned long, bool) core/os/memory.cpp:75
    #2 0x3cc90d3 in Error CowData<unsigned char>::resize<false>(int) core/templates/cowdata.h:288
    #3 0x3bcfc82 in Vector<unsigned char>::resize(int) core/templates/vector.h:91
    #4 0x1c6282c0 in Image::initialize_data(int, int, bool, Image::Format) core/io/image.cpp:2083
    #5 0x1c6354b6 in Image::Image(int, int, bool, Image::Format) core/io/image.cpp:2587
    #6 0x1c60f70b in Image::crop_from_point(int, int, int, int) core/io/image.cpp:1309
    #7 0x1c610787 in Image::crop(int, int) core/io/image.cpp:1339
    #8 0x5654d37 in void call_with_variant_args_helper<__UnexistingClass, int, int, 0ul, 1ul>(__UnexistingClass*, void (__UnexistingClass::*)(int, int), Variant const**, Callable::CallError&, IndexSequence<0ul, 1ul>) core/variant/binder_common.h:262
    #9 0x564ac76 in void call_with_variant_args_dv<__UnexistingClass, int, int>(__UnexistingClass*, void (__UnexistingClass::*)(int, int), Variant const**, int, Callable::CallError&, Vector<Variant> const&) core/variant/binder_common.h:409
    #10 0x5642a20 in MethodBindT<int, int>::call(Object*, Variant const**, int, Callable::CallError&) core/object/method_bind.h:320
    #11 0x1d7d9334 in Object::callp(StringName const&, Variant const**, int, Callable::CallError&) core/object/object.cpp:733
    #12 0x1cd93cdd in Variant::callp(StringName const&, Variant const**, int, Variant&, Callable::CallError&) core/variant/variant_call.cpp:1048
    #13 0x5d846b2 in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_vm.cpp:1555
    #14 0x57bd7c5 in GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) modules/gdscript/gdscript.cpp:1629
    #15 0x12b53839 in bool Node::_gdvirtual__process_call<false>(double) scene/main/node.h:238
    #16 0x12abe920 in Node::_notification(int) scene/main/node.cpp:56
    #17 0x4568455 in Node::_notificationv(int, bool) scene/main/node.h:45
    #18 0x1d7da811 in Object::notification(int, bool) core/object/object.cpp:790
    #19 0x12c13e76 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:868
    #20 0x12c06b5d in SceneTree::process(double) scene/main/scene_tree.cpp:466
    #21 0x283ff52 in Main::iteration() main/main.cpp:3137
    #22 0x266707b in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:772
    #23 0x26453f3 in main platform/linuxbsd/godot_linuxbsd.cpp:72
    #24 0x7f6bf60dad8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)

SUMMARY: AddressSanitizer: heap-buffer-overflow thirdparty/jpeg-compressor/jpge.cpp:96 in RGB_to_YCC

This example was found by Godot fuzzer - Qarminer, so it is quite unlikelly that this code could be used in real project, but still this should be handled gracefully.
Steps to reproduce
Above
Minimal reproduction project
No response

This should be visible with Godot compiled with Address Sanitizer(LLVM for windows or MSVC should have option to do this)

No longer crashes


Rename provider context to provider data.

Because it's really an opaque data pointer than the provider gives to the core and the core gives back to the provider.  There is no requirement that it contains a context.
There are also a lot of uses of the word context throughout the code base, an extra one will add confusion.
Refer to #8848

[x] documentation is added or updated
[x] tests are added or updated

Explanation. It's one thing to rename the provider wide structure that initialized by OSSL_provider_init, and another to rename the algorithm context. Please undo the latter.

I was too aggressive, sorry.
Fixed now.

Ping?

I've been thinking about this...  and I'm ambivalent.  The aim for this particular data is to be provider-wide context for all of the operations to run with.
Does @mattcaswell have some thoughts on this?  Does the rest of @openssl?

I guess it depends what you think "context" means. For me it means "give contextual information for a given call". Which is what this parameter is there for - so for me the name context makes sense. If others want to rename it though then I have no strong objections.

If every provider needs a context reference, then it's fine to leave the name as is.
If some don't, this field will be used for general data...

Does @mattcaswell have some thoughts on this? Does the rest of @openssl?

I'm slightly in favor of 'provider context'. The concept of a 'context' has a long tradition in OpenSSL and everybody knows right away what such a context might be good for.
But as a side note, also in view of openssl/web#128: it is also a tradition to use the _ctx prefix for context variables, so I would use provider_ctx  throughout, instead of either provider_context (sometimes) or provctx (most of the times).

And wherever provider is abbreviated (as in cipher->prov), the context could be abbreviated accordingly (cipher->prov_ctx).

If every provider needs a context reference, then it's fine to leave the name as is.
If some don't, this field will be used for general data...

The whole point of this field is to give a provider the possibility to store data that is unique for each invocation of OSSL_init_provider. That sounds like a context to me. Whether all providers actually use it for that purpose isn't really relevant IMO. It is intended to be used as a context.

If it is intended to be a context, perhaps void * isn't the right type for it.

Unrequited closing.

Not sure I understand why void * isn't an appropriate type.  In my experience, that's among the most common pointer types for contexts...  You'd right, though, that it's not quite OpenSSL tradition, but that's mostly due to the very open structures that OpenSSL had up until 1.0.2.
We could certainly create an opaque type for it.  What name should it have?

Wouldn't it be an OSSL_PROVIDER *?

OSSL_PROVIDER is the libcrypto side object holding information about a provider. It would be very confusing to re-use it for the provider side context.

Okay, that makes sense.  Leave it as void *.


Django CRUD Application

I want to create a simple CRUD Application in Django.
Please assign me this issue as part of Hacktoberfest. Thanks!

Hey @TheInspiredConjurer, feel free to add your project as a submodule. You can follow the Contributing.md to contribute 🚀
🔗 https://github.com/Design-and-Code/Quick-projects/blob/main/CONTRIBUTING.md

Thanks!


Why does the -run option not apply to benchmark tests?

Please answer these questions before submitting your issue. Thanks!  No, thank you!

I have a project that has a suite of tests and a suite of benchmarks.  I want to profile one particular benchmark for any potential hotspots.  I have to two following commands:
go test -bench=. -run=Benchmark_Hashmap_Get_LargeBlock -cpuprofile=./cpu.out
go tool pprof -pdf ./immutable.test ./cpu.out > ./cpu.pdf

The resulting file shows the graph of all my benchmark tests, instead of just the test named by the -run command.
What did you expect to see?
Not so much expect, per se, because I see that the docs explicitly say that the -run option only applies to Test and Example functions with the matching regex... but I think that it would be very helpful to use this with a benchmark.
What did you see instead?
The -run option is ignored, and my entire suite of benchmarks is executed.  When used in conjunction with the -cpuprofile, the output becomes very cluttered and noisy.  With many common sub-functions down (up?) the call stack, it's difficult to know what impression the changes between different benchmarks makes.  It would be most useful to see the individual benchmarks separately.
I recognize that I can take my benchmarks, and replicate them as tests or examples, but that seems overly redundant and unnecessary.  It's performance that I am looking to dive into, and that isn't what test or example is there for, it seems?
I also recognize that the running the benchmark means executing the same code repeatedly, however I don't think that this is detrimental for a profile, as long as the performance is consistent.
Maybe I'm just Doing It Wrong, and this is already available?

The -bench flag is like -run, but for benchmarks. So instead of -bench=. -run=Benchmark_Hashmap_Get_LargeBlock, try -bench=Benchmark_Hashmap_Get_LargeBlock -run=NONE. (NONE is selected as a mnemonic regexp that is unlikely to match any of your tests.)

In the future please use a forum for questions about Go, see https://golang.org/wiki/Questions.


Font rendering on arxiv.org TeX pdfs

The rendering of the fonts in arxiv.org TeX pdf files using the standard LaTex fonts is much worse than the font rendering in the pdf-js demo pdf.
e.g. https://imgur.com/uTZTE
(pdf file http://arxiv.org/pdf/1112.0542v1)
Thanks for all the fantastic work!

@aleth, can you please provide a PDF that shows this broken font stuff?

@jviereck I amended the link I provided so it goes straight to the PDF corresponding to the image. The "look" of the font is typical of the LaTeX-generated PDFs on arxiv.org.

@aleth, sorry, didn't worked for me the first time.
I can't see any issues with the fonts. Can you please be more precise what you mean by "worse then font rendering in the pdf-js demo pdf."? Is there some particular paragraph, that doesn't render well?

It's quite subtle - there is no error I can see in the PDF rendering itself. But the font is not rendered as well as in e.g. Acrobat Reader or okular, which makes it a little harder to read. The font looks a little too "sharp" and sometimes the kerning between adjacent letters doesn't look good as a consequence. For example, the "str" in "Abstract" (page 1 or image above) or "Symposium" a little lower. Or just look at the letter 'e' in the text in the image above.
Maybe subpixel hinting is missing or incorrect?

Here for comparison is the same snapshot in Adobe Reader 8: http://i.imgur.com/10ZH1.png
From zooming in, it appears Adobe 8 does not even use subpixel hinting, hence the anti-aliasing is less sharp. Nevertheless the font looks better and is more legible.

I think Adobe has it's own font renderer, whereas we use the one build in the browser :/
Asking @notmasteryet, as he knows more about font stuff: Do you think we can do anything about this or is this just a limitation given by the browser?

Just noting for completeness that okular (which afaik uses libpoppler) looks almost exactly like the Adobe 8 output. And that pdf-js has the potential to look better than either as it already seems to support subpixel hinting...?

Hey, just wanted to add that it seems that pdf.js uses a wrong font for many math articles on arXiv, which completely breaks the formulas:
http://arxiv.org/pdf/1112.3148v1
http://arxiv.org/pdf/1112.3152v1
I'm using the firefox extension.

@rekka, looks like you have different issue. Could you open separate issue, provide screenshot and more information about your environment?

Sure, I'll try

Interestingly, some LaTeX pdfs from the same site render much better, for example http://arxiv.org/pdf/1201.3664v1 . Maybe this is of use to someone who knows about font handling to narrow down the source of the problem?

@aleth: actually, the file you linked (http://arxiv.org/pdf/1201.3664v1) does not render properly for me (some minus signs are missing in the formulas):
http://db.tt/52TnGMKJ
Correct rendering in Acrobat Reader:
http://db.tt/i2P8nbka
I'm using the latest Firefox extension.
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a2) Gecko/20120118 Firefox/11.0a2

@rekka: That's intriguing - it renders correctly for me (http://i.imgur.com/LdBod.png) and in particular the font rendering is much better than in the pdf linked in the original issue report. (Latest FF Aurora on Linux/KDE)

@aleth: Indeed. It looks like a difference between Linux and Windows. And your font rendering is of my higher quality than on my computer. In fact, it seems that the hardware acceleration is part of the problem. I disabled Direct2D and the font now looks much better, even though the kerning seems a little off. I can see the minus signs now, but other characters are missing:
http://db.tt/OuvCHmi5

@aleth: can you provide extension version number (or commit) you are using?

@notmasteryet: pdfjs 0.2.103 Mozilla/5.0 (X11; Linux i686; rv:11.0a2) Gecko/20120119 Firefox/11.0a2

For PDFs where the font rendering is bad, I do (rarely) also see effects similar to those reported by @rekka (missing horizontal line segments), for example http://i.imgur.com/rAcTP.png in http://arxiv.org/pdf/1201.1877v1.


Server model design using instances rather than static

@maluoi StereoKit is a singleton static environment, and it makes complete sense as it is expected to execute on exactly ONE device on which it is deployed. Holographic remoting breaks this single device paradigm. I have devoted many hours to tracing code and cleaning up resources in the C++ library in an attempt to return the code to its original state at launch on a disconnect event in the remoting service.
I am miles deep in the C++ trying to find every instance where variables are already initialized and therefore can't be reinitialized. This causes runtime errors as would be expected when C++ tries to allocate memory.
My question, given this deep instance problem, is it possible to create a version of StereoKit that is NOT static? If it were not static then the normal C# GC could handle the destruction of the all the objects.
Would you consider such a branch?

Is it possible? I don't know, I suspect some of SK's dependencies might need to be re-thought as well. There would be big caveats related to threading. And it would likely wreak havoc on SK's API ergonomics. I'm not keen on making SK completely non-static.
I do want to make SK more resilient to restarts though. For this, my thought has been that each module should move their state into a struct, which can then be wiped at shutdown and set to default upon initialization. Easier to ensure everything gets proper attention when it's all in one place!


Moderation Commands

Create adequate moderation commands with proper checks.

Since Member timeouts are finally in Hikari, we can use that for our moderation commands.

Starting work on this now!


[Service Bus] Deploy test resources failing in nightly runs

Service Bus nightly test runs are failing with:

Error message:
A hash conflict was encountered for the role Assignment ID. Please use a new Guid.
Stack trace:
Retry : Exception calling "Invoke" with "0" argument(s): "The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: 11:44:15 AM - The deployment 't628080832c0448aa' failed with error(s). Showing 1 out of 1 error(s).
Status Message: A hash conflict was encountered for the role Assignment ID. Please use a new Guid. (Code:HashConflictOnDifferentRoleAssignmentIds)
CorrelationId: ea1e4378-b518-4a91-9f6c-d6f0db15262a"
At D:\a_work\1\s\eng\common\TestResources\New-TestResources.ps1:721 char:23
$deployment = Retry {
~~~~~~~
CategoryInfo          : NotSpecified: (:) [Write-Error], MethodInvocationException
FullyQualifiedErrorId : ActionPreferenceStopException,Retry
##[error]PowerShell exited with code '1'.

For more details check here:

https://dev.azure.com/azure-sdk/internal/_build/results?buildId=1637631&view=results

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'Service Bus:0.553301,Authorization:0.19028893,EngSys:0.07116151'


Switch Database in Multi-tenant

How to switch database ? and is it support sub query?

Hi, You can add multiple database connections through addConnection, and you can specify a connection to use in the model:
// Query builder
sutando.addConnection({
  client: 'mysql2',
  connection: {
    ...
  },
});
const mysqlConnection = sutando.connection();

sutando.addConnection({
  client: 'pg',
  connection: {
    ...
  },
}, 'another_connection');
const postgresConnection = sutando.connection('another_connection');

// Model
// default connection
class User extends Model {
}

// another_connection connection
class PgUser extends Model {
  connection = 'another_connection';
}

The query builder supports sub-query:
const users = await db.table('users')
  .where('name', '=', 'John')
  .where((query) => {
    query.where('votes', '>', 100).orWhere('title', '=', 'Admin');
  })
  .get();

Thank you so much !!!.
how about this in laravel, can sutando do?
DB::table('users')
      ->joinSub(
          DB::table('books')->select(DB::raw("COUNT(*) as total"), 'user_id')->groupBy('user_id'),
          'a',
          function($query){
              $query->on('users.id','a.user_id');
          }
      )
      ->select('users.name as user','a.total as total_book')
      ->get();

it seems that you don't need to use a subquery, you can achieve the same result with:
db.table('users').select('users.name as user', db.raw('COUNT(books.id) as total_book'))
      .join('posts', 'users.id', '=', 'books.user_id')
      .groupBy('users.id')
      .get();

// or you can use model relationship:
User.query().select('name').withCount('books').get()

as for converting this Laravel query into sutando, you'll need to use raw to write the native SQL statement, as sutando has not yet implemented the joinSub method.
and sutando can run on Bun. if you encounter any issues with Bun, feel free to post them.

Thank you for your response!
Would you consider adding joinSub, leftJoinSub, and similar methods? I know I can write my query without sub-joins, but this is just an example. Could you explain how to handle scenarios where sub-joins are necessary? I feel that this is a common requirement when developing any application, and I’m concerned that Sutando may not handle it well.
A few more questions: I see Sutando is based on Knex.js, which now supports TypeScript. Would you consider adding TypeScript support to Sutando as well?
Are you using Sutando in a real production application, and do you know if anyone else is using it in production? Also, is Sutando stable enough for production, or is it more of a personal project for now? I’m curious if you plan to continue developing it actively.
I just wanted to say how much I love the syntax of Sutando for querying the database! Even though my friends and team have recommended other libraries like Prisma, Drizzle, and Lucid, I keep coming back to Sutando because of its clean documentation and Laravel-like syntax – it’s a pleasure to work with.
I really appreciate that it includes features like transactions, soft deletes, and migrations. I haven’t seen seeding yet – maybe that’s coming? 😊 Thank you for your work on this; it’s really made a positive impact on my development experience!

@kiddyuchina - I apologize for overloading this topic with an unrelated ask, but I had exactly the same query as above:

Are you using Sutando in a real production application, and do you know if anyone else is using it in production? Also, is Sutando stable enough for production, or is it more of a personal project for now? I’m curious if you plan to continue developing it actively.

Would you please comment. The world is just littered with OSS projects that are abandonware.

Let me answer these questions directly:

will Sutando be actively maintained?
I'm using it in real-world applications, and so far, so good. and I know of others who are using it in production too. I'm committed to actively developing and maintaining it to ensure its stability and reliability. I plan to keep improving it. Community contributions are also welcome if you’re interested!

sub-joins
Your example can only be implemented with native statements now. I will add support for joinSub and leftJoinSub as soon as possible.

Typescript
I've updated the documentation with related content. You can check it out here: https://sutando.org/guide/typescript.html.

N+1
Sutando handles N+1 queries the same way Laravel does.

Finally, I would like to reiterate that I will continue to actively develop and maintain Sutando to meet your needs, it’s only going to get better.


⚠ Bofrost.es has degraded performance

In 0023093, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1999 ms

Resolved: Bofrost.es performance has improved in 4e8aab4 after 6 minutes.


Kmesh L4 Authorization sometimes doesn't work

What happened:
I just follow the doc: https://kmesh.net/en/docs/userguide/tcp_authorization/ to test Kmesh L4 Authorization.
It may work fine at first, but it may not work properly after restarting some pods. After that no matter how you modify the AuthorizationPolicy configuration and restart the corresponding pods, all connections will be passed.
What is even more strange is that for those connections should be denied, there indeed relevant logs in the Kmesh daemon, but the connection is actually allowed.
time="2024-07-30T03:12:32Z" level=info msg="Auth denied for connection: {srcIdentity:{trustDomain: namespace:default serviceAccount:sleep} dstNetwork: srcIp:[10 244 1 33] dstIp:[10 244 1 32] dstPort:80}" subsys=pkg/auth

What you expected to happen:
The connection should be allowed or denied based on the configuration.
How to reproduce it (as minimally and precisely as possible):
Restart some pods and change the AuthorizationPolicy to match. Once it fails, it will never work again.
Anything else we need to know?:
Environment:

Kmesh version:
Others:

Please contact to me and show how to reproduce it

Known issue


Can i get list of viewers pressed button on story?

Hi, can i do it, any ideas?

What button, like a poll?
I believe you'd have to parse out the json for that info.

What button, like a poll?
I believe you'd have to parse out the json for that info.

yes poll, like 'yes, no' and get it list of users and results how many yes or no


Please provide the full list of user data

In Data and Privacy section I noticed that the phrase "User data, such as bookmarks" confuses people. When they see the wording "such as" they assume that the list is non-exhaustive and want to have more clarity on what is the full list of user data that is collected.
I recommend changing the wording and provide the full list of user data collected.

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

ID: 1a43718f-7587-8b98-10fe-07dbbfda8ffe
Version Independent ID: 1a43718f-7587-8b98-10fe-07dbbfda8ffe
Content: Overview of Microsoft Viva Learning
Content Source: Viva/learning/overview-viva-learning.md
Service: viva
Sub-service: viva-learning
GitHub Login: @daisyfell
Microsoft Alias: daisyfeller

Hi @OlgKis, thank you for your feedback.
@daisyfell, could you help to confirm if the list is exhaustive?

Hi @OlgKis, thank you for your feedback.
@daisyfell, could you help to confirm if the list is exhaustive?

The new writer for Viva Learning (Bhaswati Chattopadhyay) is currently working with CELA and the product team to come up with a more exhaustive list. She's out this week, but it's in the works

@daisyfell, any update? Thanks!

As I said above, @bhaswatic has taken over Viva Learning content from me and is working on this with the PMs. I'm no longer involved in this project.

Thank you @daisyfell! Appreciate your help here.
@bhaswatic Could you kindly helps us on this issue? Thanks

Thank you @bhaswatic! Appreciate all your help.

Hi @bhaswatic hope all is well. Wanted to check if there is an update for this issue? Thanks!


[Bug]: casPermissions display boolean values instead of granted permissions

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
In Server section, the application tab in the system informations show values like "True, True, True" instead of the granted permissions name like "ReflectionPermission, WebPermission, AspNetHostingPermission"
Steps to reproduce?

Go to the Server section in the Personna Bar
Look at the casPermissions in the bottom

Current Behavior
No response
Expected Behavior
No response
Relevant log output
No response
Anything else?
No response
Affected Versions
9.13.2 (latest release), 9.13.3 (alpha)
What browsers are you seeing the problem on?
Firefox, Microsoft Edge
Code of Conduct

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

I'm working on the fix.
It's caused by a mistake during some variables renaming.


Docs: Mutation examples incorrect/misleading

I played with some examples of the tranlation guide. The ones under Mutation seem incorrect.
Here the code in question:
# OhMyThreads
using OhMyThreads: @tasks
data = rand(10)

@tasks for i in 1:10
    data[i] = calc(i)
end

# or
using OhMyThreads: tforeach

tforeach(data) do i
    data[i] = calc(i)
end

# or
using OhMyThreads: tmap!

tmap!(data, data) do i # this kind of aliasing is fine
    calc(i)
end

tforeach does not work. It errors as i (comming from data) cannot be used to index data. The only working case would be to have data = collect(1:10). I guess it would be best to change the example to be more similar to the @tasks case:

using OhMyThreads: tforeach

tforeach(1:10) do i
    data[i] = calc(i)
end

the example with tmap works but is misleading as a novice use (like I) would assume i to be identical between the examples. But here it is the data and not the index. Also, the output would in general be different (depending on calc).
I propose to change it to

using OhMyThreads: tmap!

tmap!(data, 1:10) do i # this kind of aliasing is fine
    calc(i)
end

It might be wiser to replace 1:10 with eachindex(data) but this applies to @tasks and @threads as well.

@judober Hey, thanks for opening an issue. You're absolutely right and I agree with your proposed changes. Mind making a PR?


backup works a treat.  not so restore

Backing up seems to work, but when I restore I get errors
MountVolume.SetUp failed for volume "pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2" : mount command failed, status: Failure, reason: Rook: Mount volume failed: failed to attach volume replicapool/pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2: failed to map image replicapool/pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2 cluster rook. failed to map image replicapool/pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2: Failed to complete 'rbd': exit status 2. . output: rbd: sysfs write failed In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (2) No such file or directory

The pod is stuck at Waiting: ContainerCreation
The PVC is classified as bound and can't be deleted.  Deleting the pod doesn't work either as it comes back with:
MountVolume.SetUp failed for volume "pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2" : mount command failed, status: Failure, reason: Rook: Mount volume failed: failed to attach volume pvc-5377f68a-4fb0-11e8-aa2e-0690e07debf2 for pod default/mongo-mongodb-68bfb98d5c-r6cdk. Volume is already attached by pod default/mongo-mongodb-68bfb98d5c-7qrxv. Status Pending

Any helpful ideas?

the logs from the rook-api
2018/06/13 12:31:10 rook-rest-api is up and running! 2018-06-13 12:31:10.650612063 +0000 UTC m=+0.001835545
2018/06/13 13:03:48 Called initRook()
There was an error creating the volume:  exit status 2
<IP_ADDRESS> - - [13/Jun/2018:13:03:48 +0000] "POST /block/replicapool/replicapool%7C%7Cpvc-0e02e8cd-4f85-11e8-aa2e-0690e07debf2%7C%7C935d41c7-b2b
7-4047-a357-6caa1a211c03/pvc-0e02e8cd-4f85-11e8-aa2e-0690e07debf2 HTTP/1.1" 500 0

the initRook() and error continue to repeat

Actually, there is nothing that is big enough in the backup that looks like it could be the pv's.  Assuming something wrong with the backup now.

OK, Discussion on the kubernetes/ark-dr slack channel has enlightned me enough to understand that cross cluster backup/restore is not possible with this plugin.  WIll investitgate the restic integration.

Hey @pms1969 sorry for the delay in getting back to you! Yes, this repo may not have all the bits for a proper backup of rook. Last time I talked with that team, we chatted about adding better snapshot support into rook, but there were some underlying issues with how ceph could support snapshots.
I'm interested in the new Resic stuff, I may put together an update to this repo to play with those new bits.

@stevesloka Thanks for getting back to me.
I gave Restic a go, and it's a good solution as long as the PV's are actively attached to a pod.  However that's not my situation. :(
I've raised an issue on the Ark project at the request of one of the team after our discussion on slack.
The upshot is that I may have to have a fiddle with this plugin and try adding S3 persistence to it in some way.  Currently plan to look at backy2 as a means of achieving this.  I have no experience with it (or ceph for that matter), so it may not be suitable.  Will let you know, and provide a PR if it works out.

@stevesloka I've managed to get an off cluster backup an restore working.  The code is heavily modified from master, but after I've cleaned it up, I'd like to provide a PR if you're willing?
The basis for the backup/restore was to do an rbd export/import and then copy the file to/from s3.  I'm not really sure how you'd go about generalising this for other cloud providers, and it's only worked for me once so far, so I'm going to spend a bit of time testing and retesting.  Are you aware of any problems with that approach?

Yes, please! Would love a PR to make this a better implementation. Also, happy to collaborate on it to further enhance. =)

Excellent.  Will provide PR soon'ish.


[zh] localize blog: free-katacoda-kubernetes-tutorials-are-shutting-down.md

Plan to localize /blog/_posts/free-katacoda-kubernetes-tutorials-are-shutting-down.md recently.
This issue is opened to avoid any probable conflicts.
/assign
/language zh

/close


Run build-logic Kotlin compilation out of process on CI

Kotlin uses a compilation daemon by default. This is the fastest execution mode and usually preferred, because the Kotlin compilation environment can be setup once and reused.
However, it leaves the compilation daemon running for the lifetime of the Gradle daemon. Again, usually what we want, but in the case of the build-logic project which depends on kotlin-dsl, it will launch a Kotlin 1.6.21 daemon (matching Gradle's embedded Kotlin version) if the build-logic:compileKotlin task has to run, which cannot be reused by other compilation tasks (which use Kotlin 1.7.10). The 1.6.21 compilation daemon then remains in memory, unused.
This PR changes the compilation strategy to be out of process when running on CI. This means the 1.6.21 compilation environment is terminated as soon as the build-logic:compileKotlin task completes, which will free that memory for the remainder of the build.
I actually think this is a good trade off for all builds, not just on CI, but happy to hear thoughts on this.

Also note that this is an @Internal property so changes in its value are not considered for up to date checks or build caching - having a different setting for CI will not affect remote cache hits.


Adaway support

Hi buddy tnx for your nice work
Can u support a link for adaway as well?

AdAway is an open source ad blocker. It's not related to this repository and bypassing Iran domains!
Please pay attention that this repository is not responsible for blocking Iran ads

AdAway is an open source ad blocker. It's not related to this repository and bypassing Iran domains!
Please pay attention that this repository is not responsible for blocking Iran ads

AdAway is an open source ad blocker. It's not related to this repository and bypassing Iran domains!
Please pay attention that this repository is not responsible for blocking Iran ads


Incorrect referral to DNS record type (A instead of TXT)

In this article the following is listed:
The CNAME records in your DNS will point to already created A records that exist in DNS on the Microsoft DNS servers for Office 365.
However the DNS records which are created on the Microsoft DNS servers are actually TXT records.

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

ID: 249c059f-c3ce-a382-b99e-795a0c1f646a
Version Independent ID: 5656c114-ae16-6194-cd9f-353b33f4a1e1
Content: Use DKIM for email in your custom domain in Office 365, 2048-bit, 1024-bit, steps, How it works, SPF, DMARC
Content Source: microsoft-365/security/office-365-security/use-dkim-to-validate-outbound-email.md
Service: o365-seccomp
GitHub Login: @MSFTTracyP
Microsoft Alias: tracyp

@MichelvanVliet  - Thank you for submitting feedback.
I will get this issue over to the Microsoft 365 writing team for investigation.
Thank you for reporting and making the docs better. Much appreciated.
I made a note to request the team to update this when the work is complete.

Hi - this isn't my article, but I thought I would comment.
Although DKIM are TXT records, the sentence you are referring to isn't talking about DKIM records. It is talking about A records that are used to create CNAMEs as a prerequisite to creating DKIM records.

Dear @greg-lindsay,
I've never seen the A record that was created in onmicrosoft.com DNS zone for DKIM, are you sure about this prerequisite A record?
Could you please have a look at the following article - https://www.altitude365.com/2018/11/09/enable-dkim-for-a-custom-domain-in-office-365-in-five-simple-steps/
The good thing about this article is that the records described there are actually exist.
The author created the CNAME record, and a TXT record selector2-altitude365-se._domainkey.altitude365.onmicrosoft.com was created in onmicrosoft.com DNS zone.
There is no any A record there for this name.
For example, please check there - https://network-tools.com/dns-records/#search=dns&search=selector2-altitude365-se._domainkey.altitude365.onmicrosoft.com&target=dns_20&form=ntscform&base10toip=false
Thank you

@MichelvanVliet - From our understanding, the issue has been resolved based on this merged commit https://github.com/MicrosoftDocs/microsoft-365-docs/commit/a0fb4f28c694be68fc0692f7079925cc54bbbb1a. If you feel it hasn't been resolved, please re-open this issue.
Thank you for your contribution to make the docs better! Much appreciated!