feat(aggregators/metric): Implement a top_hits aggregator

Summary
Implements the top_hits aggregator. The aggregator is backed by a BinaryHeap based on prior discussions
on Discord#tantivy-dev.

[!NOTE]
This PR is a WIP and not yet tested, but it's open for a first look and feedback.

The aggregator is backed by a BinaryHeap based on prior discussions

Did those discussions already consider the recently introduced TopNComputer which might be a better choice?

Hello @ditsuke, is this something you actually have a need for? Can you describe the use case?

The aggregator is backed by a BinaryHeap based on prior discussions

Did those discussions already consider the recently introduced TopNComputer which might be a better choice?

Yes, the idea behind the new algorithm came up in that discussion thanks to @fulmicoton. I didn't use that here since it wasn't found suitable for pagination, but I'm happy to reconsider if that's wrong

Hello @ditsuke, is this something you actually have a need for? Can you describe the use case?

Hi @fulmicoton, we discussed the use-case on #tantivy-help some weeks back. Our use-case is querying for the top docs in each bucket (really the most recent post by some source).
For reference

I didn't use that here since it wasn't found suitable for pagination, but I'm happy to reconsider if that's wrong

I might be misunderstanding things since I wasn't part of that discussion, but my understanding was that the stable sort order needed for pagination is not so much a question of BinaryHeap versus TopNComputer, but rather whether ties are resolved in a stable manner by comparing document addresses when sorting the final result set?

I didn't use that here since it wasn't found suitable for pagination, but I'm happy to reconsider if that's wrong

I might be misunderstanding things since I wasn't part of that discussion, but my understanding was that the stable sort order needed for pagination is not so much a question of BinaryHeap versus TopNComputer, but rather whether ties are resolved in a stable manner by comparing document addresses when sorting the final result set?

 My initial impression was that the elimination step would be unstable for distributions with > n/2 elements ≤ median (so when you can potentially eliminate more than n/2 elements and have to make a choice to retain some of the conflicting values, given that we need to cap the elimination to n/2 elements). But in fact this isn't a problem anymore with our comparator falling back to the doc address on conflicts, so we should be able to use TopNComputer here safely.

This PR is starting to look pretty good! Thank you @ditsuke.
Can you add unit tests?
@PSeitz can you take care with the rest of review?

One tricky part that is missing is fetching the actual content of the document. So far aggregations are limited to fast fields due to the way they operate.
Question is when to fetch documents and from which data source.
Document's data source
Generally they are two data-sources for a documents data in top hits: The doc store and fast fields.
Doc store access is relatively expensive, fast fields (doc values) access are cheap.
Fast field terms may be limited to a certain length, so some long texts may be missing there.
When to Fetch
Aggregation works roughly like that
Segment Collection => Intermediate Result
Segment Collection => Intermediate Result
Segment Collection => Intermediate Result
... Could be 100 of Intermediate Result
Intermediate results can be de/serialized, merged and converted to a final result.
Fetching a documents data could happen when converting to a intermediate result or final result.
When the data-source is a fast field, fetching at the intermediate result step will be fine.
Fetch at Intermediate Result
This will cause some overhead as, we will fetch e.g. Top 10 for each Intermediate Result, but after merging 100 Intermediate Result only keep the Top 10. So we would fetch 10_000 documents. From the doc store that would be expensive. From the fast field this should be fine (except maybe very long texts).
Fetch at Final Result
This would require passing additionally metadata like the segment id. In distributed scenarios like quickwit this may require more additional metadata to be able to resolve at the end, as final result conversion may happen at a different node.
Conclusion
These approaches are quite different and require a different approach. Managing both would be possible but definitely adds some complexity.
The main problem I see with fetching the final result is that is requires to have access to all the Index at the node that assembles the final result, but I think in that kind of aggregation most users are interested in only one, two few fields anyways not the whole doc.
We could limit the aggregation to only handle them with the docvalue fields parameter.
I'm not sure which variant is the best approach, it very much depends on user queries. Supporting only docvalue fields is the simplest variant, so we could just start with that and change it to fetch at the final result if we run into issues.

Supporting only docvalue fields is the simplest variant, so we could just start with that and change it to fetch at the final result if we run into issues.

I think this sounds like the most reasonable approach from a risk management and incremental feature development perspective.

This PR is starting to look pretty good! Thank you @ditsuke. Can you add unit tests?

Thank you! I'm working on the tests

Supporting only docvalue fields is the simplest variant, so we could just start with that and change it to fetch at the final result if we run into issues.

I think this sounds like the most reasonable approach from a risk management and incremental feature development perspective.

Agreed, that sounds reasonable. @PSeitz do we handle the docvalue fields support in this PR or with a follow-up?

Agreed, that sounds reasonable. @PSeitz do we handle the docvalue fields support in this PR or with a follow-up?

It should be in this PR, or we can't add tests for the aggregation.

@PSeitz rough dig at docvalue_fields in a26a353. Could you have a look and validate if its heading in the right direction?

Rebased to main

This PR is ready for overall review. Expecting CI to pass this time

The failing test stems from flake as discussed here. I can use help in identifying why the segments aren't committed in order.

Failing test is a rust nightly bug

@PSeitz thanks for the latest round of review, I'll get back to the PR early next week!

@PSeitz I believe all review points have been resolved.

Hi @PSeitz, I don't want to rush the review but I'm just tagging you in case this slipped through your notifications earlier. Please let me know if there are issues with any of the new updates here.

@PSeitz can you resume review?

Looks good so far, except the segment ordinal part

Looks good so far, except the segment ordinal part

Thank you, I dropped a comment about the SegmentOrdinal in the review thread.

Thanks for the PR!
(and sorry for the slow Review)

Thanks for the PR!
(and sorry for the slow Review)

Thanks for merging and the thorough review, very educational!


Initial support for STM32 FMC

This PR adds a new driver category for memory controller peripherals. There is no API involved as it has not been found
necessary for first implementation.
STM32 Flexible Memory Controller (FMC) is the only controller supported for now. This peripheral allows accessing multiple types of external memories, e.g. SDRAM, NAND, NOR Flash...
The initial implementation adds support for the SDRAM controller only. HAL API is used, so the implementation should be portable to other STM32 series. It has only been tested on H7 series, so it can only be enabled when working on H7.
Linker facilities have also been added in order to allow applications to easily define a variable in SDRAM, e.g.
__stm32_sdram2_section uint32_t my_big_array[800 * 600];

Tested with STM32H747I-DISCO board (SDRAM parameters have been taken from HAL examples).
To be discussed:

Implementation location
DeviceTree representation
Check if linker script changes are sufficient

Closes #15944

cc: @matthew-koch @k0d

For reference, other implementation and DT representation:
https://github.com/u-boot/u-boot/blob/master/drivers/ram/stm32_sdram.c
https://github.com/u-boot/u-boot/blob/master/doc/device-tree-bindings/memory-controllers/st,stm32-fmc.txt
https://github.com/u-boot/u-boot/blob/master/arch/arm/dts/stm32h7-u-boot.dtsi

dev-review (Nov 5 2020): @MaureenHelm to look at this from a NXP point of view.  @galak to look at this from a devicetree and common linker script view point.

One observation though: FMC_SDRAM_foo functions are supposed to be internal LL API (with HAL API as the unique client). I'm not opposed to using it directly, but this raises some concerns as these internal APIs do not propose the same guarantees the public APIs (portability, stability).
Can you elaborate on the arguments that made you chose this API over HAL ?

Fair point. I used the LL API as I tend to prefer LL over HAL. As HAL API is really a thin layer on top of the LL API I can switch.

Second point is that it would be nice to add some quick test if doable (could be added under tests/boards) so this driver could be compiled in CI (and potential users can have a simple usage example)

I'll add some tests
Another point: this device may eventually need PM, so we should probably treat it as a device (using DEVICE_INIT). Is it ok to add devices in code located at soc/? Should we move the code to drivers/ instead?

@erwango After looking at HAL SDRAM API, I think it's better to stay with LL option.  The HAL API adds no value here in my opinion, as it's just a thin layer on top of LL API plus some internal state tracking.

@erwango After looking at HAL SDRAM API, I think it's better to stay with LL option. The HAL API adds no value here in my opinion, as it's just a thin layer on top of LL API plus some internal state tracking.

As said earlier the added value lies in stability and portability. If it's confirmed to be a thin layer, I'd advise to switch to it. Reason is not only this single driver, but I'm thinking that this is not the only driver that could face this situation. And for later maintenance it could be come complex i,f besides HAL and LL, we need to maintain non official APIs with the related additional issues it could raise.

@MaureenHelm @galak ping

@gmarull Approved but you need to change the DEVICE_INIT macro :-)

@erwango should be ready now

Looks ok to me.
@jhqian @mmahadevan108 Do you see any issues with this for SEMC on RT1xxx?

@galak pleae revisit
@gmarull please rebase


Implement "attributes" argument

Hello.
As I finally got this bundle to work... is there any chance to implement 'attr' argument, like in typical form fields?  It can be worked around of course, but having control over attributes would be great.

It already supports attr just like any other form field. Set that to an associative array of attribute names and values. If you set a key named class it will be appended to the existing "class" attribute.

I'm sorry, I didn't know there are typical atributes available also for custom form field types. Thanks for the information.


Rename core module

The core module is currently named spring-cloud-core, but should be spring-cloud-connectors-core.

Wonder if for 2.0 we change the group id as well (if it's not already)

@spencergibb Are you suggesting something like org.springframework.cloud.connectors as a group ID?

@scottfrederick yes. Should I open a new issue?

@spencergibb We can keep the discussion in this issue.
I don't see other projects that qualify the org.springframework.cloud group ID with another segment in the name. Is there precedent for this, or has there been discussion about segmenting the namespace?

True. Now that I think of it, I think I was thinking of the actual java package.

Fixed via 55701034d0af05e97442833727909ea65526fbdf


(React) samples out of date and are not working unless you update Photino.NET to v1.1.5

Hello there, I am really interested in this project and tried out the samples. However, I wasn't able to run the samples unless I updated Photino.NET to v1.1.5 and even then it automatically started installing "Microsoft Edge WebView2" on its own (without even asking first) when I am on Windows 10 (Home) and do have Microsoft edge on it
Another issue I found is that the window freezes when I try to exit it

Hi @Zaid-Ajaj!
Thank you for taking the time to write this up and point it out to us.
We have released updated samples today. The closing issue was addressed in the v1.1.6 update of Photino.NET.
You can find them in the now public Photino.Samples repository.
The VS and .NET CLI templates will follow soon.
Thank you for the input on the WebView installation process. We have to determine a way to streamline the process. If it turns out to rely on an installed application we'll consider it.
Best, P


New local storage changes result in error

From<EMAIL_ADDRESS>on September 19, 2014 12:03:01
The latest commits result in errors, making the app unusable:
Uncaught TypeError: Cannot set property 'value' of null wwwsqldesigner.js:1264
On Chromium Version 37.0.2062.94 Ubuntu 14.04 (290621) (64-bit)
Original issue: http://code.google.com/p/wwwsqldesigner/issues/detail?id=184

From ondrej.zara on September 21, 2014 13:04:58
Does this happen at your local installation, or at a public location? Would you care to share a link?
The demo installation at http://ondras.zarovi.cz/sql/demo/?keyword=default seems to work okay (there was a minor issue on Friday, but we solved that soon...). Can you confirm?

From<EMAIL_ADDRESS>on September 21, 2014 13:06:36
Confirmed! Works again

From ondrej.zara on September 22, 2014 01:26:10
Status: Done


Update deprecation-notices.mdx

deprecated async version core apis in java server

🚀 Deployed on https://65c5585666b7512522e5b405--cozy-fox-0defec.netlify.app


clustermesh enable: add enable-kvstoremesh flag

This PR extends the cilium clustermesh enable command with a new flag which can be used to enable kvstoremesh (cilium/cilium#26083). The new flag is supported only when using the new Helm mode, and requires cilium >= 1.14 (it has no effect on earlier versions). Related: https://github.com/cilium/cilium/pull/26348

1. Maybe we should reconsider allowing `--helm-set` for subcommands like `clustermesh enable`, because we would get features like this for free.

I personally agree. While for certain features it might still better to have a dedicated flag, we also need --helm-set to be able to configure image versions or other parameters.

2. The chained type-assertion on the Helm values instead of using types is starting to look a bit messy, we should revisit that.

That's true. Maybe we could add an helper to set a given value at a certain "path" in the values map.


V4: routes can no longer return null?

I had this route:
        $app->get('/', function () {
            // nothing
        });

It doesn't seem to work anymore with v4.0.0:

TypeError : Return value of Slim\Handlers\Strategies\RequestResponse::__invoke() must implement interface Psr\Http\Message\ResponseInterface, null returned

Is this something that changed in v4?
I read both the documentation and the upgrade guide and couldn't find any mention of this.

The Response docs are the only mention I could find:

Your Slim app’s routes and middleware are given a PSR-7 response object that represents the current HTTP response to be returned to the client.

Yes, every route handler has to return a response.

This should probably documented as a side effect of adopting PSR-15, in which all request handlers must return a PSR-7 ResponseInterface.

OK thanks. This should indeed be mentioned in the upgrade guide as this is a major BC break.

That is because we type hinted the return value of the strategy. I think in Slim 3 it was not.
Either way, why is this necessary? Just return a blank response object if you really need to.

Or yes maybe we could re-instate the previous behavior that allowed this? That would be one less BC break for users, which is good.

Was the fact that handler could return nothing documented in v3? Unless that was documented behavior, I feel like that was probably not meant to be a feature.

I guess the handling of echo implicitly allows for returning nothing, per the v3 callable docs:

There are two ways you can write content to the HTTP response. First, you can simply echo() content from the route callback. This content will be appended to the current HTTP response object.

The solution for RequestResponse and RequestResponseArgs is pretty simple, just add:
return /* ... */ ?? $response;

I do not think that should be added to RequestHandler because RequestHandlerInterface requires a ResponseInterface return value.

@shadowhand we’d need to check and see if the return from $callable($request, ...) is a ResponseInterface also I’m not sure if we may need to modify the ResponseEmitter in order to accommodate users who want to use “echo”.

@l0gicgate the /* ... */ in my example is the existing $callable invocation. If it returns null or void, then the existing $response is returned. Simplest solution to deal with BC for people not using RequestHandlerInterface.

@shadowhand how do we deal with the logic in ResponseEmitter? Imagine we return an empty $response but the user used echo within the route callable, then ResponseEmitter will assume that the $response object is empty when it theoretically isn't. This is one reason why we type hinted the strategy.

I don't see why that would matter. The difference between a callable handler that returns nothing and one that returns an empty response is:
 function ($request, $response) {
-    return $response;
 }

The empty response detection is exactly the same in either situation.

That's exactly my point, if someone uses echo "content outside response object"; then the isResponseEmpty() only checks the Response object and not the actual output buffer which is where the content from the echo statement would appear.
There's logic associated with a response actually being empty (which it wouldn't be if someone used echo from within a route callable):
https://github.com/slimphp/Slim/blob/84c96a3d1dcddd84633b89720fdde827a058a761/Slim/ResponseEmitter.php#L39-L43

@l0gicgate

how do we deal with the logic in ResponseEmitter?

I would say the same way it was dealt with in Slim 3?
To me the question boils down to: should this BC break be kept or reverted?

@l0gicgate isn't echo'd content handled by the output buffer middleware?
https://github.com/slimphp/Slim/blob/2b0ed80b2ab4acfb5e7648797b8202e4d9aea06d/Slim/Middleware/OutputBufferingMiddleware.php#L58-L61
In which case, the response will already have been filled with echo'd content by the time it reaches the ResponseEmitter ?

@shadowhand OutputBufferMiddleware is an optional middleware it’s not used internally.
@mnapoli I don’t personally like enabling a null return without justification. If it’s just for convenience, I don’t see the purpose.

@mnapoli I don’t personally like enabling a null return without justification. If it’s just for convenience, I don’t see the purpose.

This isn't for convenience, this is a major BC break. At the moment this BC break isn't documented or acknowledged.
Limiting the amount of additional BC breaks to this release (that is already quite huge) could be a good thing.

@mnapoli I'm fine with acknowledging it. I'm also fine with reverting it if you can provide a solid argument as to why we should enable users to return a null response.

Understood.

if you can provide a solid argument as to why we should enable users to return a null response.

It is a BC break. V4 is a big BC break. Being able to remove one BC break from V4 is a good thing. That's all I've got :)
To be clear I don't like returning null as well :)

@l0gicgate I realize it is optional, but what difference does that make? Using echo and not using the output buffer middleware is supposed to do... what exactly? How does that impact this issue?

To be clear I don't like returning null as well :)

I guess we're agreeing then. I'm closing this as won't fix, I will address the BC break in the 4.1 Release so it's on record.

I don't think it's documented anywhere. The fact it worked in v2 and v3 is reason enough to fix it and/or document it.

An argument for allowing not returning a response from the route might be all the examples out there (from official docs), and the developer's need to quickly brush up a test route.
Consider these examples from official Slim docs. They do not return a response:
From Slim-Flash:
$app->get('/bar', function ($req, $res, $args) {
    // Get flash messages from previous request
    $messages = $this->flash->getMessages();
    print_r($messages);

    // Get the first message from a specific key
    $test = $this->flash->getFirstMessage('Test');
    print_r($test);
});

From Slim 4 itself:
$app->get('/hello/{name}', function (Request $request, Response $response, $args) {
    $name = $args['name'];
    echo "Hello, $name";
});

Ultimately, the main argument I see is make the developer's life easier, which is the whole point behind a framework (at least it was for me when I chose Slim 2.)
Can let the framework fall back to a default value when no response is provided. Ensures backward compatibility with Slim 2 and 3.

@fabswt in Slim 4 you can always register a custom Slim\Interfaces\RequestHandlerInvocationStrategyInterface in which you can handle the return value from your routes, such as what is done in juliangut/slim-routing
I've just added the null return control thanks to this issue (https://github.com/juliangut/slim-routing/blob/master/src/Strategy/ResponseTypeStrategyTrait.php#L76)

Still says you can just echo, but in fact I get:

Return value must be of type Psr\Http\Message\ResponseInterface, null returned


Modifications to callable_from_qua

This is a PR attempting to implement the changes required for callable_from_qua.
@TheoLaudatQM I'm not able to run this locally, so there are likely to be several bugs. can you try this out nonetheless?
Following our earlier conversation with @TheoLaudatQM @yonatanrqm @yomach I'll try to implement the changes related to inheriting from Program and QuantumMachine.
The goal is that we no longer need to run the following:
with prog.local_run(qm):
    job = qm.execute(prog)

but can instead directly run
job = qm.execute(prog)

Usage:
from qualang_tools.callable_from_qua import *
patch_callable_from_qua()  # Patch qua classes
enable_callable_from_qua()  # Attach callable_from_qua addon

@callable_from_qua
def execute_function():
    print("I'm being run locally")

with program() as prog:
   execute_function()

qmm = QuantumMachinesManager(...)
config = ...
qm = qmm.open_qm(config)
qm.execute(program).

I think the following items should be done

[x] Inherit from QuantumMachine, add QuantumMachine.callables which get executed when calling qm.execute()
[x] Patch Program, add program.addons
[x] Rename @local_run back to @callable_from_qua
[x] Rename LocalRunManager to QuaCallableEventManager
[x] Move callable_from_qua away from qualang_tools/addons to qualang_tools/callable_from_qua. @yomach do you agree

Open questions

Should the CallableEventManager be opened in the main thread or in a separate thread while the program is executing on the machine?
I think the best is if it by default opens in a separate thread, but the user can specify to run it in the main thread, in which case it's blocking.
How to pass additional callables?
E.g. we can currently run with prog.local_run(qm, funcs=[live_plot]): to also add live plotting

I agree with what you wrote (haven't looked at the code yet).
@TheoLaudatQM - Note that this is a PR to merge to your branch, not to main.
So we please test it locally and if it's good, we'll merge it there and continue development from there.


seed data for preview

Hi, it could be very nice to have some products and Product Categories in the seeds examples

Hi,
now we have
npm run setup <email> <domain>

Script will add seed data, default settings, token and Indexes.

is there doc's to reflect this feature??? @sonufrienko


Please remove the (Riot) from the name in the Home Screen

The Element(Riot) label of the icon in the Home Screen is way too long and iPhone does not allow the user to change it.
So please fix it.
And, btw, thank you very, very much for developing Element and making it available to all.

Thanks for using Element. This was intentional in order not to confuse users. It'll be removed in a future release, hopefully not too far.

Much appreciated.


Semantic annotation tool support in the future?

Thanks for providing such an amazing tools for easy 3d data annotation tool. Just out of curiosity, would u guys develop similar tools for semantic annotation task in the near future?

Thanks for providing such an amazing tools for easy 3d data annotation tool. Just out of curiosity, would u guys develop similar tools for semantic annotation task in the near future?

Thanks for the message @Bitfultea! Yes, that is definitely something that we have thought about.
Would you mind sharing some details of the requirements for your particular project? :)

Hi @hietalajulius,
are you still working on it? I wonder whether one could easily add a free-form category annotation feature.

Hi @hietalajulius,
are you still working on it? I wonder whether one could easily add a free-form category annotation feature.

Thanks for the message @martinbchnr!
Unfortunately the tool isn't actively being worked on but feel free to take a stab at adding it!


feat(pdk) add kong.node module with '.get_id()' util

This new module provides node-level utilities, such as
kong.node.get_id(), which is a replacement to the old
kong.tools.public module's get_node_id() utility.
Reminder: the kong.tools.public module is to be stripped away for the
1.0 stable release.
This new implementation throws errors instead of returning them, for
two reasons:

Simplicity of usage: now that this function is exposed for public
consumption (and already used by plugins such as Zipkin), avoiding for
the need to check for errors simplifies its usage.
If such an error occurs, it will be during the initialization of the
master process, and will then properly prevent Kong from starting. At
runtime, no such error should occur since the id is cached, but if they
do, they should be very obvious and provide their stacktraces.

The kong.node module could also contain the following utilities in the
future:

get_hostname()
get_system_infos()
...

oh I was writing the review when this was merged

Oops, my bad!


recursive search for migrations within specific folders

closes #3
Do a recursive search for migrations within specific folders.
Instead of db/migrate/* prefer to use db/migrate/**/* pattern

@rwojsznis Hello, can you see my suggestion, please? I suggest recursively searching for migrations.

Thanks again for your contribution @Ivanov-Anton! Before we proceed with code review can you please:

rebase with main (so we don't test on Ruby 3.1 just yet)
ensure introduced change doesn't break existing functionality
add tests for newly introduced change

Thanks!

Thank you for the follow-up! I'm pretty occupied atm, but I will try to review this within next ~7 days!
(worse case scenario will merge it and potentially slightly rework it according to some of my suggestions if you won't mind - I'm aware some of open source maintainers do that and I think it shortens the waiting time for the new release, a reasonable bargain I suppose when both parties have other things going on 👀 )

Thank you for the follow-up! I'm pretty occupied atm, but I will try to review this within next ~7 days!
(worse case scenario will merge it and potentially slightly rework it according to some of my suggestions if you won't mind - I'm aware some of open source maintainers do that and I think it shortens the waiting time for the new release, a reasonable bargain I suppose when both parties have other things going on 👀 )

OK


Missing PowerShell Modules in PowerShell Module Browser

Please add the following PowerShell modules to the PowerShell Module browser:
https://docs.microsoft.com/en-us/powershell/module/
Exchange Server PowerShell
Exchange Online PowerShell
Office 365 Security & Compliance Center PowerShell
Exchange Online Protection PowerShell

@EdisonDa Can you follow up this suggestion?

@a-War Thank you for your reporting. We are still working on the monikers, it will not be working until we fix that. Will track the issue in Office PowerShell Repo. CC: @Powerhelmsman @dstrome


Update document with debugging on Windows information

What does this PR do?
Update document to add Windows debugging info.
Motivation
Additional Notes
n/a
Describe your test plan
Read the document. Not a code change.

Some checks failed, but they are not related to this change (this change is doc change only). Will merge now.


added gaussian elimination

julia> A = @MMatrix[4..6 -1..1 -1..1 -1..1;-1..1 -6.. -4 -1..1 -1..1;-1..1 -1..1 9..11 -1..1;-1..1 -1..1 -1..1 -11.. -9]
4×4 MMatrix{4, 4, Interval{Float64}, 16} with indices SOneTo(4)×SOneTo(4):
  [4, 6]   [-1, 1]  [-1, 1]    [-1, 1]
 [-1, 1]  [-6, -4]  [-1, 1]    [-1, 1]
 [-1, 1]   [-1, 1]  [9, 11]    [-1, 1]
 [-1, 1]   [-1, 1]  [-1, 1]  [-11, -9]

julia> b = @MVector [-2..4, 1..8, -4..10, 2..12]
4-element MVector{4, Interval{Float64}} with indices SOneTo(4):
  [-2, 4]
   [1, 8]
 [-4, 10]
  [2, 12]

julia> ge = GaussElimination()
GaussElimination linear solver

julia> @btime solve($A, $b, $ge)
  4.543 μs (167 allocations: 7.08 KiB)
4-element MVector{4, Interval{Float64}} with indices SOneTo(4):
 [-2.60001, 3.10001]
 [-3.90001, 1.50001]
 [-1.43001, 2.15001]
 [-2.35001, 0.600001]

the results are in accordance with the experiments in the thesis, but I think from efficiency perspective there's much room for improvement.

Codecov Report

Merging #28 (0914800) into main (77d098c) will increase coverage by 1.80%.
The diff coverage is 89.47%.

@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
+ Coverage   91.87%   93.67%   +1.80%
==========================================
  Files           5        5
  Lines         160      174      +14
==========================================
+ Hits          147      163      +16
+ Misses         13       11       -2

Impacted Files
Coverage Δ

src/solvers/solvers.jl
86.74% <89.47%> (+5.58%)
:arrow_up:

Continue to review full report at Codecov.

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

@mforets I cannot add you as reviewer apparently, so here's an old fashioned manual ping :)

Update based on the meeting of 29th june:
function rref(A)
    A1 = copy(A)
    return rref!(A1)
end

@inline function _findmax_mig(v::AbstractVector{N}) where N
    migmax = N(-Inf)
    local kmax
    @inbounds for k in eachindex(v)
        migi = mig(v[k])
        if migi > migmax
            migmax = migi
            kmax = k
        end
    end
    return kmax
end

@inline function _swap!(A, k, kp)
    @inbounds for i = 1:size(A, 2)
        tmp = A[k, i]
        A[k, i] = A[kp, i]
        A[kp, i] = tmp
    end
end

@inline function _scale!(A, k)
    @inbounds begin
        Akkinv = inv(A[k, k])
        for i = k+1:size(A, 1)
            A[i, k] *= Akkinv
        end
    end
end

@inline function _elimination!(A, k)
    m, n = size(A)
    @inbounds begin
        for j = k+1:n
            for i = k+1:m
                A[i, j] -= A[i, k] * A[k, j]
            end
        end

        for i = k+1:m
            A[i, k] = zero(eltype(A))
        end
    end
end

function rref!(A)
    m, n = size(A)
    minmn = min(m,n)

    @inbounds begin
        for k = 1:minmn

            # find row with maximum mignitude
            kp = k
            if k < m
                kp = _findmax_mig(view(A, k:m, k))
                kp += k-1
            end

            iszero(A[kp, k]) && throw(ArgumentError("Could not find a pivot with non-zero mignitude in column $k, matrix is possibly non regular."))

            # Interchange
            if k != kp
                _swap!(A, k, kp)
            end

            # Scale first column
            _scale!(A, k)

            # Update the rest
            _elimination!(A, k)
        end
    end
    return A
end

@mforets I have refactored the rref function, now is waay more readable.
Current commit
julia> @benchmark rref($A)
BenchmarkTools.Trial:
  memory estimate:  42.27 KiB
  allocs estimate:  202
  --------------
  minimum time:     1.556 ms (0.00% GC)
  median time:      1.791 ms (0.00% GC)
  mean time:        2.379 ms (0.09% GC)
  maximum time:     6.340 ms (73.85% GC)
  --------------
  samples:          2106
  evals/sample:     1

Previous commit
julia> @benchmark rref($A)
BenchmarkTools.Trial:
  memory estimate:  42.27 KiB
  allocs estimate:  202
  --------------
  minimum time:     1.578 ms (0.00% GC)
  median time:      1.815 ms (0.00% GC)
  mean time:        2.213 ms (0.19% GC)
  maximum time:     6.590 ms (73.99% GC)
  --------------
  samples:          2262
  evals/sample:     1

so I'd say the two approaches are equivalent, let's go with the more readable one!


Added a new site: tactile.co.za

Curious to see how my new 11ty homepage ranks with the best :P
Very much an 11ty newbie, but keen to learn more.

Thanks!!

Thanks @zachleat


Add link to PHIL

Consider where this fits in / whether it should have its own bullet without being on a page phil.cdc.gov

Will add to writing


Possible truncation problem for (real) continuous layers?

We found a problem during the calculation of the acidity layer, but it might be a more common issue (?)
We noticed that the output for acidity differs from the output we get with the old VBA version of NICHE (see attachment old version = pH grid, new version = Full_dep1tif_acidity.tif). Here are the values we observe for a few problematic pixels:

MLW
soil
soil_group
acidity_old
acidity

80.9
14
1
2
3

110.2
11
1
1
2

110.9
14
1
1
2

All the problematic pixels have MLW values on the boundary between two classes from soil_mlw_class:

soil_group
mlw_min
mlw_max
soil_mlw_class

1
-999
80
1

1
80
110
2

1
110
9000
3

It is not (or not only) a problem of inclusion / exclusion of the boundary: the MLW have been truncated while they should have been rounded off (110.9 should be 111 and thus anyway higher than 110).
(note that the old version of NICHE required integers als input layers for the groundwater levels, but since real layers did not produce errors, this requirement has sometimes been ignored - as in this example in Grobbendonk)
In addition to this truncation problem, we should check again whether the boundaries should be included or excluded from each class and adapt the current behaviour according to the old VBA version. (my first impression is: the new version excludes the lower boundary and includes the upper boundary in a class while the old VBA version excludes the upper boundary (update 7/2: the conclusion in italic is probably wrong))
acidity_check.zip

Before looking at the supplied case: The logic around borders that I implemented is described here:
https://inbo.github.io/niche_vlaanderen/codetables.html
I indeed include the upper boundary.
I used this logic as this was a way to reproduce the data from the testcases I had (the handling of boundaries was not described as far as I know).
See also: https://github.com/inbo/niche_vlaanderen/issues/25

Sorry, I was getting confused about these boundaries yesterday :-)
I am not aware of any documentation about the handling of boundaries in the old VBA niche version, but the old version uses the reclassify function in ArcGIS, en that is what ArcGIS says about it:

If a range of values is to be reclassed, the ranges should not overlap except at the boundary of two input ranges. Where overlapping occurs, the higher end of the lower input range is inclusive, and the lower end of the higher input range is exclusive.

My conclusion is that my first impression in my first post was wrong, that is, the VBA version probably also includes the upper boundary (same implementation as in the new version). So if you correct the truncation problem, we should get the same results in the old VBA and in the new version.

The rounding vs truncating has been solved, this was indeed truncating.
I now still see some differences between both layers (though less). This is because we round before comparing to the table, it seems this did not happen before.
so at position 169993.5 - 210519.35
For soiltype LV (group 2)
MLW: 50.18335723876953  --> 50 --> soil mlw class 4 in the new model
--> 5 in the old model (as it did not round apparently)
If I don't round, I get exactly the same output.
Note we were rounding because I had one example (in Dijle) where pixels with value 15.00000000000001 were considered to be > 15.
I suggest we round up to 0.01. In that case I think we will get a consistent behavior. That is already 1/10th of a mm so any precision below that is definitely rubbish.

Rounding up to 0.01 sounds ok for me!

Disadvantage: if someone rounds to 1cm before using Niche they will get a different response than when they don't round.

Fixed as of fbc58a9e1333463e6ee3f2ecd87c557279d8f398
@cecileherr : you should be able to test this after upgrading to the next alpha version: run
pip install niche_vlaanderen==1.0a9
from an anaconda prompt and redo the analysis (if you have a jupyter notebook open, restart the kernel to be sure you have the latest version).


Problem with event handeling

I have used the previous version of nvd3 charts and I used Angularjs-nvd3-directives (http://cmaurer.github.io/angularjs-nvd3-directives/events.html) to take care of event handeling. It is not working in this version. I am currently going as per your documentation and using the below code to access the click event of the pie chart :
html :
nvd3 id="pieChart1" options="options" data="data" events="events"> \nvd3>
javascript :
$scope. events = {
"elementClick. directive" : function (angularEvent, event) {
alert ("Event triggered.");
},
};
$scope. $broadcast ('elementClick. directive');
Can you help me out if I am doing something wrong. Or what's the correct way to do this.

I have a related problem. I need to override the legendClick event so that it no longer toggles the line's visibility and instead does something else.
I can respond for the legendClick event just fine, but I can't remove the toggling functionality. Handling the legendClick event doesn't override the default behaviour. How can I get rid of the default behaviour?

@krispo Can you include this information in the readme or an example? I got it working for my prototype, but I'm considering passing this tool along to our other developers. The event handling will be critical to our projects, and it took me a while to hunt this down.
Thanks for all your work on this, it's a great tool!
Jake

Hello I am having an issue adding events to the sunburst. I followed the code example you gave above, but they all of the events inside of the dispatch do not seem to get fired.

Hi, I have the same problem with the sunburst chart. I want to load statistics based on the selected element in the sunburst chart. Therefore I need an event. But the only event that is fired ist the chartClick event and that is not helpful.
@tjacks3
Have you found a solution?

@tjacks3 @Gerinjo Did you guys find a solution yet for event handling in Sunburst?

I stumbled onto the same problem as @tjacks3 and @Gerinjo, i.e. using the code @krispo supplied but for sunburst charts. I managed to fix this by changing the name "pie" to "sunburst" in the chart's options:
$scope.options =  {
chart: {
    //chart events
    sunburst: {
    dispatch: {
     chartClick: function(e) {...},
    elementClick: function(e) {...},
      elementDblClick: function(e) {...},
      elementMouseover: function(e) {...},
    elementMouseout: function(e) {...}
 }
  }


Passing IfModifiedSince to amybry server

Passing IfModifiedSince http header to ambry-server so when the content hasn't been updated, server doesn't have to return the content back, rather just return a blob_not_modified server code.
This is the implementation on the server side. After all servers are upgraded, we need to change the implementation on the client side to utilize this new logic.

Codecov Report

Merging #1222 into master will decrease coverage by 0.1%.
The diff coverage is 21.27%.

@@             Coverage Diff              @@
##             master    #1222      +/-   ##
============================================
- Coverage     69.49%   69.39%   -0.11%
+ Complexity     5509     5507       -2
============================================
  Files           432      432
  Lines         33790    33832      +42
  Branches       4298     4312      +14
============================================
- Hits          23484    23478       -6
- Misses         9126     9166      +40
- Partials       1180     1188       +8

Impacted Files
Coverage Δ
Complexity Δ

...java/com.github.ambry.router/GetBlobOperation.java
91.34% <ø> (ø)
39 <0> (ø)
:arrow_down:

...java/com.github.ambry.commons/ServerErrorCode.java
100% <100%> (ø)
1 <0> (ø)
:arrow_down:

...ain/java/com.github.ambry.protocol/GetRequest.java
65.16% <17.14%> (-29.48%)
18 <3> (+2)

...in/java/com.github.ambry.server/AmbryRequests.java
75.49% <20%> (-0.86%)
89 <0> (ø)

...java/com.github.ambry.store/CompactionManager.java
87.33% <0%> (-2.67%)
19% <0%> (ø)

.../main/java/com.github.ambry.store/ScanResults.java
81.25% <0%> (-1.57%)
16% <0%> (-1%)

...rc/main/java/com.github.ambry.store/BlobStore.java
86.84% <0%> (-1.44%)
88% <0%> (-2%)

...in/java/com.github.ambry.store/BlobStoreStats.java
71.75% <0%> (-0.83%)
103% <0%> (-2%)

...ain/java/com.github.ambry.router/PutOperation.java
90.61% <0%> (-0.54%)
111% <0%> (ø)

...va/com.github.ambry.replication/ReplicaThread.java
74.62% <0%> (-0.19%)
66% <0%> (-1%)

... and 4 more

Continue to review full report at Codecov.

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

amybry?

Offline discussion with Casey, the benefits of this PR is debatable at best. Will close this one for now.


Catch Unresolved Promises

Our current implementation of the timeout is based on a race conditions. Here is a minimal example illsutrating the issue:
const timeoutSuccss = 1000
const timeoutFailure = 3000

async function promiseTest(){
    const success = new Promise((resolve, reject) =>
    setTimeout(
      () => resolve('Success!'),
      timeoutSuccss
    ));

    const failure = new Promise((resolve, reject) =>
    setTimeout(
      () => reject('Failure!'),
      timeoutFailure
    )
  );

  const result = await Promise.race([success,failure])
  console.log(result)
}

promiseTest()

The issue is that the faulure promise is kept open even if the race is lost and at a certain later time in Visual studio code your debugger stops at the uncaught exception if you enable the options:

One way to solve this would be to add a
failure.catch(()=>'catch it if success won the race.')

after the promise.race resolved successfully.
TODO

[ ] Investigate if there is a lib to wrap a promise in a timeout.
[ ] Implement a solution to catch to running timeout promise (search for the timeoutPromise which should be used or the Promise.race usage)

Acceptance Criteria

[ ] There are no uncaught exceptions if the timeout promise is irrelavant.

Include this here: https://github.com/SAP/cloud-sdk-backlog/issues/667

We will not work on this, due to the current priority.


Cluster Performance

        Task.Run(async () =>
        {
            var t = DateTime.Now;

            List<Task<HelloGrainTestResponse>> l = new List<Task<HelloGrainTestResponse>>();
            for (int i = 0; i < 10000; i++)
            {
                l.Add(client.SayHelloTest(new HelloGrainTestRequest()));
            }

            await Task.WhenAll(l);

            Console.WriteLine("time: {0}", (DateTime.Now - t).TotalMilliseconds);
        });

I run this and performance is 1k message per second. maybe a cache can solve the problem?

call a router to get pid for each RPC is too expensive. a cache for pid location can saved locally and updated when a pid can not found during a RPC.

What are your numbers if you remove the router in-front of the pid cache?

Related #304

after remove router, performance up to 25 times faster than before, 25k messages per seconds.

Wonderful :-)
Yet again, it shows the importance of measuring everything.

Can you make a PR for this?

I have write a async rpc implementation using c# based on dotnetty and protobuf, 800k rpc calls per second, as you mentioned in #304 , the rpc method name is replaced by a index, and type is not passed.
code can be generated and type code can also be generated. some thing like this(it is used in our production):
        public static void Init(this IActivity9xServiceInterface agent)
        {
            agent.AddPublishDataFunc(ServiceType.Activity, (p, list) =>
            {
                switch (p)
                {
                    case 4045:
                        using (var ms = new MemoryStream(list, false))
                        {
                            return Serializer.Deserialize<__RPC_Activity_NotifyActivityState_ARG_int32_activityId_int32_state__>(ms);
                        }
                        break;
                    case 4047:
                        using (var ms = new MemoryStream(list, false))
                        {
                            return Serializer.Deserialize<__RPC_Activity_NotifyTableChange_ARG_int32_flag__>(ms);
                        }
                        break;
                    case 4107:
                        using (var ms = new MemoryStream(list, false))
                        {
                            return Serializer.Deserialize<__RPC_Activity_NotifyBatteryData_ARG_int32_activityId_ActivityBatteryOne_battery__>(ms);
                        }
                        break;
                    case 4108:
                        using (var ms = new MemoryStream(list, false))
                        {
                            return Serializer.Deserialize<__RPC_Activity_NotifyMieShiActivityState_ARG_int32_activityId_int32_state__>(ms);
                        }
                        break;
                    case 4109:
                        using (var ms = new MemoryStream(list, false))
                        {
                            return Serializer.Deserialize<__RPC_Activity_NotifyPlayerCanIn_ARG_int32_fubenId_int64_canInEndTime__>(ms);
                        }
                        break;
                    default:
                        break;
                }

                return null;
            });

        agent.AddPublishMessageFunc(ServiceType.Activity, (evt) =>
            {
                switch (evt.Message.FuncId)
                {
                    case 4045:
                        {
                            var data = evt.Data as __RPC_Activity_NotifyActivityState_ARG_int32_activityId_int32_state__;
                            agent.NotifyActivityState(data.ActivityId, data.State);
                        }
                        break;
                    case 4047:
                        {
                            var data = evt.Data as __RPC_Activity_NotifyTableChange_ARG_int32_flag__;
                            agent.NotifyTableChange(data.Flag);
                        }
                        break;
                    case 4107:
                        {
                            var data = evt.Data as __RPC_Activity_NotifyBatteryData_ARG_int32_activityId_ActivityBatteryOne_battery__;
                            agent.NotifyBatteryData(data.ActivityId, data.Battery);
                        }
                        break;
                    case 4108:
                        {
                            var data = evt.Data as __RPC_Activity_NotifyMieShiActivityState_ARG_int32_activityId_int32_state__;
                            agent.NotifyMieShiActivityState(data.ActivityId, data.State);
                        }
                        break;
                    case 4109:
                        {
                            var data = evt.Data as __RPC_Activity_NotifyPlayerCanIn_ARG_int32_fubenId_int64_canInEndTime__;
                            agent.NotifyPlayerCanIn(data.FubenId, data.CanInEndTime);
                        }
                        break;
                    default:
                        break;
                }
            });
        }

👍 Ah true, ofc we don't need to pass the type as the client already knows what is expected. perfect! thanks

I have a PR here #310 which pass the method index, could you give it a spin and compare the numbers with previous runs?

My own measurement shows 112 000 msg/sec which is pretty good IMO considering routing etc.

my result is almost same with yours. about 150 000 msg/sec.

I'm closing this for now, Performance could be better, but we beat the other frameworks out there now so that is good enough IMO.
Feel free to re-open


Crashes when applying emip file

.NET Runtime Error in Windows Logs:
Application: UABEAvalonia.exe CoreCLR Version: 5.0.721.25508 .NET Version: 5.0.7 Description: The process was terminated due to an unhandled exception. Exception Info: System.ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.    at System.IO.FileStream.ValidateReadWriteArgs(Byte[] array, Int32 offset, Int32 count)    at System.IO.FileStream.Read(Byte[] array, Int32 offset, Int32 count)    at AssetsTools.NET.AssetsReplacerFromStream.Write(AssetsFileWriter writer) in C:\Users\nesquack\Documents\GitReposLocal\AssetsTools.NET\AssetTools.NET\Standard\AssetsReplacer\AssetsReplacerFromStream.cs:line 111    at UABEAvalonia.AssetWorkspace.AddReplacer(AssetsFileInstance forFile, AssetsReplacer replacer, Stream previewStream) in C:\Users\nesquack\Documents\GitRepos\uabequickfixes\UABEA\UABEAvalonia\AssetWorkspace.cs:line 65    at UABEAvalonia.LoadModPackageDialog.BtnOk_Click(Object sender, RoutedEventArgs e) in C:\Users\nesquack\Documents\GitRepos\uabequickfixes\UABEA\UABEAvalonia\LoadModPackageDialog.axaml.cs:line 112    at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__140_0(Object state)    at Avalonia.Threading.AvaloniaSynchronizationContext.<>c__DisplayClass5_0.<Post>b__0() in /_/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33    at Avalonia.Threading.JobRunner.RunJobs(Nullable1 priority) in //src/Avalonia.Base/Threading/JobRunner.cs:line 37
at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in //src/Windows/Avalonia.Win32/Win32Platform.cs:line 210
at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken) in //src/Windows/Avalonia.Win32/Win32Platform.cs:line 157
at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in //src/Avalonia.Base/Threading/Dispatcher.cs:line 61
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 107
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 134
at UABEAvalonia.Program.Main(String[] args) in C:\Users\nesquack\Documents\GitRepos\uabequickfixes\UABEA\UABEAvalonia\Program.cs:line 47`

Was this ever fixed? Don't close the issue if it hasn't been.

Was this ever fixed? Don't close the issue if it hasn't been.

Ho sorry, it's just that it's stated to not work, so I thought that it was useless to leave it open since it's a known issue

This emip was made from UABEA, correct? If you can, can you send the emip (I don't need the original file). Would make debugging quicker.

it's just that it's stated to not work

Yeah that's fine, just leave it open anyway so I can track when this is fixed.

Armand Pog.zip Newer
Armand_Pog Old.zip Older
Here is the emip file made with UABEA, the crash has chaged also, before it crashed when applied, now it's when I load the file, no other window appears

Bug was already fixed in AssetsTools but I've updated it here in UABEA. Let me know if it's working now.

No response but apparently I fixed this roughly a year and a half ago, so it's probably fine to close.


From Dev to master

Added FullOptic propagation as a parser option. The code now can handle both fast signal computation (optic off) and slow signal computation (optic true).

Accepting full optic version of the code in master branch.


net/ieee802154: Validate length on received frames

Frame format was validated, but its length should be also validated
relevantly against the format.
Fixes #24970
Signed-off-by: Tomasz Bursztyka<EMAIL_ADDRESS>

thanks @rlubos


chore: Add make test for running tests

I've noticed that I haven't been running tests as often as I should have -
hopefully this will make it a bit easier.

bors r+


Add Animated Bubbles using CSS

Describe the project you want to add with tech stack
I would like to add a CSS project on Animated Bubbles which would float from the bottom to the top
Expected behavior

Screenshots (optional)

Additional context (optional )

@MohitGupta121 kindly assign this issue


[SPARK-9560][MLlib] add lda data generator

jira: https://issues.apache.org/jira/browse/SPARK-9560
Add data generator for LDA.
Hope it can help with performance improvement.

Merged build triggered.

Merged build started.

Test build #39558 has started for   PR 7898 at commit 7cc6a95.

Test build #39558 has finished for   PR 7898 at commit 7cc6a95.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Merged build triggered.

Merged build started.

Test build #40135 has started for   PR 7898 at commit aff4d7f.

Test build #40135 has finished for   PR 7898 at commit aff4d7f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Thanks! Have you tried running LDA on the generated data? What were the results?
I think @jkbradley meant for this to be contributed to spark-perf and used for perf testing, but I think it might also be useful for validating LDA correctness...

@feynmanliang I only tried with small data set and result seems to be reasonable.
@jkbradley I can move this to spark-perf if it's not suitable for Spark.

Test build #60012 has started for PR 7898 at commit aff4d7f.

Test build #60012 has finished for PR 7898 at commit aff4d7f.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/60012/
Test FAILed.

Merged build finished. Test FAILed.

Test build #65382 has started for PR 7898 at commit aff4d7f.

Test build #65382 has finished for PR 7898 at commit aff4d7f.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/65382/
Test FAILed.

Merged build finished. Test FAILed.

Close this as we've stopped development for MLlib.


Add file/directory size command in build steps

You are going to want to du one directory up, since we create compiled files there.

Closing as it was a transient issue and this PR only makes it worse.


AllParquets.TryDeserializeFromString

Ensure that this method is working as intended.   There are notes in the code.

Duplicate of #78 .


The UI's upload button doesn't work

Since version 0.25, after creating a new davros grain, the UI's upload button stopped working. It does absolutely nothing when I press it. I was only able to upload a file by deleting all files from the default grain and then pressing on the upload link that appears in the content section.

@nniro Does drag/drop to upload work?
Also, do you get anything in the browser's JavaScript console that might explain why the upload button isn't working?

@ocdtrekkie I'm using sway (it's a wayland tiling window manager) which doesn't have icons I could drag and drop so I can't test dragging and dropping (and I don't have a GUI file manager).
I actually forgot about the javascript console, it does raise errors, here they are :
Error: Nothing handled the action 'chooseUpload'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble. 5 vendor-d571fd5b61a42ea922797f303bb4edb7.js:1837:22
Content Security Policy: Ignoring ‘x-frame-options’ because of ‘frame-ancestors’ directive. 3
Error: Nothing handled the action 'chooseUpload'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble. 99 vendor-d571fd5b61a42ea922797f303bb4edb7.js:1837:22

I can definitely confirm this bug. (And your dev console error.) Hopefully @mnutt has some time to look at it soon.

Indeed, doesn't allow uploading - tested on Safari and Firefox on MacOS and Firefox on Windows 10

@polymersgreen Drag and drop to upload should still work though, if that's an option for your use case.

Just realized this is possible : )
But..
Tried couple of use cases and I really doubt I cen rely on this Sandstorm app or propose its use in my organisation.
Apart from this non-working button, there is no method of deleting files, apart from "delete EVERYTHING".
Previewing files as a mounted share on MacOS wrecked the repository, and Win 10 can't mount WebDAV natively (due to lack of acceptance of authentication protocol version, I think - of course this is not Davros fault)

You should be able to select a file, and then select the trash button, to delete a single file.
Unfortunately the "DAV" part of Davros isn't super reliable, mostly due to the various and disagreeing implementations of WebDAV. It works pretty well as a file container used via the browser, IMHO.

I get this error in both cases select/drag-n-drop:
6709c7435b4ce50482dd394a334c3700b8d953b5.js?meteor_js_resource=true:202 App authors: To understand the grain-frame in Sandstorm and how to find logs and perform troubleshooting, see: - https://docs.sandstorm.io/en/latest/developing/path/ - https://docs.sandstorm.io/en/latest/using/top-bar/ - https://docs.sandstorm.io/en/latest/developing/troubleshooting/ When debugging, make sure you execute Javascript in the context of the 'grain-frame' IFRAME. References: - https://stackoverflow.com/questions/3275816/debugging-iframes-with-chrome-developer-tools - https://developer.mozilla.org/en-US/docs/Tools/Working_with_iframes We can also provide personal assistance!  I swear it did when 0.25.0 when live...

I get this error on the JS console when I click the upload button, which appears to be the same error @rmueck was seeing:
Error: Nothing handled the action 'chooseUpload'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble. vendor-d571fd5b61a42ea922797f303bb4edb7.js:1837:22
    P https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:1837
    P self-hosted:844
    triggerEvent https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:1767
    trigger https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:4149
    send https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:1790
    send https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:1945
    triggerAction https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2046
    sendAction https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2222
    t https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:6595
    click https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:7014
    trigger https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2305
    n https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2167
    _run https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3778
    _join https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3777
    join https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3743
    p https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2615
    handleEvent https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2319
    a https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2532
    handleEvent https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2319
    handleEvent https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2244
    r https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2256
    t https://ui-98b3e715452fc9df113e67f6b09a635e.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2265

I've gotten drag-and-drop to work inconsistently. Sometimes when it fails I see this on the console:
TypeError: e is undefined vendor-d571fd5b61a42ea922797f303bb4edb7.js:1376:47
    Se https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:1376
    didDrop https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:6417
    _join https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3777
    join https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3743
    p https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2615
    bind https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2618
    value https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:6539
    _run https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3778
    _join https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3777
    join https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:3743
    p https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2615
    bind https://ui-e180377cd90e9aedcc3ba2ed346905db.thelibrary.sandcats.io/assets/vendor-d571fd5b61a42ea922797f303bb4edb7.js:2618

(grumble gumble javascript grumble grumble type system grumble grumble)
I was going to try to debug this but I haven't been able to get it to build; when I do ember serve I get:
Cannot read property 'prototype' of undefined

...which in my experience usually means a node version mismatch, but I've gotten this with several versions of node.

Has anyone else had luck  getting this to build from source?
Do we know what the last known-good version was?


Trigger Prod Bundle Release

Issue #, if available:
Description of changes:
Trigger prod bundle release for v0.15.0
Testing (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/hold

/lgtm
/approve

/lgtm cancel

/unhold

/override eks-anywhere-cli-attribution-presubmit eks-anywhere-mocks-presubmits eks-anywhere-presubmit

/override eks-anywhere-cli-attribution-presubmit eks-anywhere-presubmit eks-anywhere-release-tooling-presubmit


Code Embed Iteration

redo props interface for CodeFrame to support new use cases (supporting css and html code too)
converts CodeFrame to a TypeScript file to catch errors of usage earlier
rename CodeEmbed to remove Code Mirror prefix
adds reset button to CodeEmbed
converts SketchEmbed into an Astro component
adds tests for CodeEmbed and CodeFrame

notably, this required adding network mocking to our test suite and a cached version of p5.min.js to the repo

@davepagurek just wanted to clue you in on this update since you've been working with code frames already. I ran through the tutorials and didn't see any issues but wanted to be sure you noticed that these changes are inbound


introduce optional keycloak subchart for oauth / SMART support

Signed-off-by: Lee Surprenant<EMAIL_ADDRESS>

I agree that we should have some test in the ci for it. One challenge is that data access becomes harder once SMART App Launch is enabled...you need to do this interactive OAuth dance to get an access token before you can hit the API.

You're right. I also don't think helm test is the best tool for complex integration tests. The biggest helm issues one might catch are usually related to weird combination of values that cause the chart to fail to render or install, so maybe just hitting the readiness-probes of the server is a good enough test.

If I do it as a new file, will that be like a separate test case from the expose-http-endpoint-values one? That is probably best because then we could continue to hit the Patient endpoint for that test and go with something simpler (like a simple call to the .well-known/smart-configuration endpoint) for this SMART-enabled one.

It's a new installation (in a new namespace) but it uses the same pod to run tests. So if we want to test different scenarios we'd have to (conditionally) add new pods to https://github.com/Alvearie/alvearie-helm/blob/main/charts/ibm-fhir-server/templates/tests/test-api.yaml.
Note that the value file name has to end in -values.yaml for it to work:

Charts may have multiple custom values files matching the glob pattern '*-values.yaml' in a directory named 'ci' in the root of the chart's directory. (https://github.com/helm/chart-testing/blob/main/doc/ct_install.md)

should install the most recent version - which hopefully chart testing will use.

that worked, thanks @chgl !
It also helped uncover a bad hard-coded configMap name, so the exercise was definitely worthwhile.
Have another look if you'd like...will plan to merge in a bit.


Clarifying the quantization algorithm

Where in the codebase might I find the basic arithmetic / steps for quantizing with NF4?
I’ve had trouble finding a clear definition of the math in existing tutorials, but based on what I see in the paper (which only includes the equation for Int8) I’d imagine that it’s:

Find the absolute maximum value in a 64-value block
Divide all of the values in the block by the block’s abs_max
Map each value to the closest NF4 value

That seems pretty straightforward / likely correct, but I’m wondering if there’s somewhere in the code which clearly confirms this?
Thanks for the help!

For anyone curious, I was able to sort this out--I traced the calls starting from _quantize in Python down to the CUDA kernels. I broke it all down in a Colab Notebook here.
My understanding of the algorithm from my question is correct, and here were some of the more interesting highlights I learned from the code.
Mapping to NF4
(This is step 3) -- The scaled values are mapped to the NF4 data type values using a decision tree (here)! This must be more efficient than calculating the absolute differences and looping over them to find the smallest delta?
FP4 Values
I had a hard time finding any definition of the Float4 datatype used, and had ChatGPT kinda reverse engineer it for me from the CUDA kernel.
Here are the 15 (not 16 because there are two representations of 0) values that the FP4 datatype can take on:
$$
\begin{align*}
-1, -\frac{2}{3}, -\frac{1}{2}, -\frac{1}{4}, -\frac{1}{3}, -\frac{1}{6}, -\frac{1}{192}, 0, \frac{1}{192}, \frac{1}{6}, \frac{1}{4}, \frac{1}{3}, \frac{1}{2}, \frac{2}{3}, 1
\end{align*}
$$


fix(preload): Avoid mysterious binding.unlink error message.

If the state file cannot be written, the error causes the process to exit
and the exit event processor reports eg
fs.js:1061
return binding.unlink(pathModule._makeLong(path));
^
Error: ENOENT: no such file or directory, unlink 'undefined/258755'
followed by a stacktrace.
To avoid this, don't add the handler until we succeed at saving the state file.
Also print the error from saving so the user can know something went wrong.

Mysterious unlink error message should not happen as long as all clients of ndd_service are passing NDD_STORE as environment variable. I checked current clients and all of them look fine.
Feel free to comment this PR if this issue is still reproducible.


telegraf: 1.24.2 -> 1.24.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/influxdata/telegraf/releases.
meta.description for telegraf is: "The plugin-driven server agent for collecting & reporting metrics"
meta.homepage for telegraf is: "https://www.influxdata.com/time-series-platform/telegraf/"
meta.changelog for telegraf is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.24.3 with grep in /nix/store/882gcaqnj8d971bfscb561xwcxibllkx-telegraf-1.24.3
found 1.24.3 in filename of file in /nix/store/882gcaqnj8d971bfscb561xwcxibllkx-telegraf-1.24.3

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
telegraf

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/882gcaqnj8d971bfscb561xwcxibllkx-telegraf-1.24.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A telegraf https://github.com/r-ryantm/nixpkgs/archive/7d029e4ba511ac034284f5a623eac51141c452b6.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/882gcaqnj8d971bfscb561xwcxibllkx-telegraf-1.24.3
ls -la /nix/store/882gcaqnj8d971bfscb561xwcxibllkx-telegraf-1.24.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

telegraf

Maintainer pings
cc @Mic92 @roblabla @timstott for testing.

@ofborg eval


Feature/fontlinter

By running make CHECK_COVERAGE="True" the build process is preceeded by a coverage check. The source directory is compared against the Unicode standard used in Nototools. The check flags any unexpected and missing filenames.

Is this just cleaning up the current checker or making it match the android linter?

@anthrotype emoji_fontchain_lint.py was our own implementation of the linting check, but at this point we found the existing check_emoji_sequences.py.
@rsheeter This PR is only cleaning up the check_emoji_sequences.py. Does the Android script check additional content?

Does the Android script check additional content?

Please read it to see. I'm not sure off-hand.

Does the Android script check additional content?

Please read it to see. I'm not sure off-hand.

Looked into it, and it looks like we miss some of functions. Don't know if these are important though. In the Android script there are also: check_compact_only_fallback, check_vertical_metrics and check_cjk_punctuation. Do we need to implement these here as well?

LGTM, please resolve conflicts and merge

@rsheeter I fixed the conflicts ✅


[mesheryctl] crash in experimental model command

See mesheryctl Command Tracker for current status of commands.
Current Behavior
➜  mesheryctl git:(master) ./mesheryctl exp model
View list of models and detailed information of a specific model

Usage:
  mesheryctl exp model [flags]
  mesheryctl exp model [command]

Examples:

// To view list of components
mesheryctl exp model list

// To view a specific model
mesheryctl exp model view [model-name]

Available Commands:
  list        list models
  search      search models
  view        view model

Flags:
  -h, --help   help for model

Global Flags:
      --config string   path to config file (default "/Users/lee/.meshery/config.yaml")
  -v, --verbose         verbose output

Use "mesheryctl exp model [command] --help" for more information about a command.
panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
github.com/layer5io/meshery/mesheryctl/internal/cli/root/system.glob..func40(0xc00037ae00?, {0x104f04060?, 0x0, 0x0})
	/Users/lee/code/meshery/mesheryctl/internal/cli/root/system/model.go:360 +0x2fd
github.com/spf13/cobra.(*Command).execute(0x104d13500, {0x104f04060, 0x0, 0x0})
	/Users/lee/code/go/bin/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:940 +0x87c
github.com/spf13/cobra.(*Command).ExecuteC(0x104d0a540)
	/Users/lee/code/go/bin/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:1068 +0x3a5
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/lee/code/go/bin/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:992
github.com/layer5io/meshery/mesheryctl/internal/cli/root.Execute()
	/Users/lee/code/meshery/mesheryctl/internal/cli/root/root.go:82 +0x45
main.main()
	/Users/lee/code/meshery/mesheryctl/cmd/mesheryctl/main.go:26 +0x13

Desired Behavior

Screenshots/Logs

Environment

Host OS: Mac Linux Windows
Meshery Server Version: stable-v
Meshery Client Version: stable-v
Platform: Docker Kubernetes

Contributor Guides and Handbook

📚 mesheryctl Contributing Guide
📺 Beginner's guide to contributing to Meshery and mesheryctl
⌨ mesheryctl Command Tracker
⌨ Meshery CLI Commands and Documentation
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

I would like to work on this. Can this be assigned  to me?


Copying objects URL and URI

Users might want to copy the object's URL and/URI so adding those options to the context menu would be beneficial.

Adding myself to this thread


[release-1.6] Avoid accidental dynamic concurrency (#23472)

manual cherry-pick on behalf of howardjohn@ to resolve conflict

@richardwxn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

gencheck_istio_release-1.6
b8d5ccf065eea62884b341f53d7bc70005d3567e
link
/test gencheck_istio_release-1.6

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@jacob-delgado @brian-avery fixes a release blocker.

@richardwxn: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

gencheck_istio_release-1.6
b8d5ccf065eea62884b341f53d7bc70005d3567e
link
/test gencheck_istio_release-1.6

unit-tests_istio_release-1.6
b8d5ccf065eea62884b341f53d7bc70005d3567e
link
/test unit-tests_istio_release-1.6

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


feat: add test cases for all objects and all operations

Use go test, start a Casdoor server (only backend is enough) via Docker image or natively for testing purpose inside CI
For each type of object (like user, application), do:

Add two objects
List two objects
(optional) List two global objects
Get one object
Update one object
Delete one object

@leoil


关于skywalking 聚合metrics疑问

read codes!

English is only acceptable. If you want to know how metrics aggregated, read the codes.

English is only acceptable. If you want to know how metrics aggregated, read the codes.

I have readed the codes,this question is produced by the code! but i thing there is a problem as descriped at last comment.

My guessing, you didn't set up the cluster mode and coordinator. The documents indicate that already.

that's the key,thx!


As an RDS broker user, I want to access stats around my database

We determined in https://github.com/18F/cg-migration/issues/23 that it's not possible to sufficiently scope the user in the AWS console. Instead, we want to try giving them the appropriate permissions for retrieving stats about their database(s) from the AWS API/CLI. This can happen one of a few ways:

Narrowly-scoped

Access credentials specific to that service instance

Widely-scoped, giving access to all RDS instances (or AWS services) that they have access to

Single sign-on
Access credentials

The good news is that we aren't locked into one or the other, so we can do whichever is easiest to start. Another consideration is if we want to build this into the service broker, or make it more of a meta thing that pulls information from one or more service brokers.
Acceptance criteria

[ ] As a user, I am able to view stats around my (non-shared) RDS database

/cc https://github.com/18F/cg-agent-q/issues/10

This is the current direction /cc @jmcarp

Not doing this any time soon.


Replacing duplicated rules by a class in compile time

Do you want to request a feature or report a bug?
Feature
What is the current behavior?
Imagine you apply some styles in your application:

The generated CSS would be made using a hash generated from those 3 classes.
What is the expected behavior?
What if styled-jsx could recognize all common used CSS properties and try to write classes for them?

.box-a { color: 'red' }
.box-b { color: 'blue' }
.box-c { color: 'purple' }
.generated-a-b-c { margin: 10x; padding: 10px }

Considering we repeat some styles multiple times in our apps, this approach would reduce the CSS final size by grouping duplicated CSS into multiple classes.
What do you guys think?

it is not possible to automate this atm


General issue "SCX_T100KEY not found" when running tests for ABAP exercises?

Regardless of which test I execute for a not yet tackled and therefore not changed ABAP exercise, I currently get the following error:

This looks rather generic in nature.
Cheers
Bärbel

broken by https://github.com/exercism/abap-test-runner/pull/93#event-6476889905
to be fixed by https://github.com/exercism/abap-test-runner/pull/94

@BaerbelW try again

@larshp
Thanks, Lars for the quick fix! It's working again.


Request Failed. Unauthorized error message at Sign In screen when user is not logged in

Sorry, we're going to need more info to try and help out. I'm guessing you made a request that require authorization but didn't provide any?  https://github.com/google/google-api-objectivec-client/wiki#authentication-and-authorization has some basic info, and some of the examples (like the Drive one), show setting up an authorizer on the Service.


Add tests for new functionality

As discussed with @dalonsoa, there are currently no tests for the two fixes I just implemented.

Ok, so it seems like this might be harder than I anticipated :laughing:
Using the current mocking setup, it seems like run_thread() won't actually start a new thread, so I'm guessing I maybe need to mock up a dummy wx.Window to pass to ThreadPool...? Not sure what the best approach is here, because ideally I'd like to start a ThreadPool at the start of a test and terminate it properly at the end of it.

Could you share in a draft PR what you have so far? We are writing - at least for now - unit tests, not functional tests, meaning that there's likely a lot of mocking needed.

What I have currently is a non-working mess, but I'll try to bash it into some kind of reviewable shape. It's probably easier to talk about actual code!


[Feature]: new public api documentation

Package Scope

[ ] Add to an existing package
[ ] New package

Package name:
Overview

Describe the solution you'd like

Additional context

I'd like to know more about this problem!

I want to make documents about new features(Delay, SuspensiveProvider, suspenseCache, useSuspenseCache, etc.) of @suspensive/react

@manudeli
Could you briefly explain what API suspenseCache is? Or could you leave some reference?
Just asking because I'm curious!

@manudeli Could you briefly explain what API suspenseCache is? Or could you leave some reference? Just asking because I'm curious!

@ojj1123
Could you send me email? I want to meet you to explain suspenseCache plan in Discord
<EMAIL_ADDRESS>


Add DINGHY_CERT_PATH environment variable

I've add an environment variable to change certs path.
closes #284

Thanks!


net: sockets: Check for errors from dns_get_addr_info

When dns_get_addr_info() returns an error it does not call the
resolve callback, and thus the semaphore will not be given.
This fix will avoid a deadlock situation for various errors.
Added some small tests for getaddrinfo().
Signed-off-by: Stig Bjørlykke<EMAIL_ADDRESS>

Codecov Report

Merging #6870 into master will increase coverage by 0.08%.
The diff coverage is 96.55%.

@@            Coverage Diff             @@
##           master    #6870      +/-   ##
==========================================
+ Coverage   54.89%   54.98%   +0.08%
==========================================
  Files         449      450       +1
  Lines       43378    43401      +23
  Branches     8154     8156       +2
==========================================
+ Hits        23812    23862      +50
+ Misses      16263    16229      -34
- Partials     3303     3310       +7

Impacted Files
Coverage Δ

subsys/net/lib/sockets/getaddrinfo.c
47.05% <100%> (+47.05%)
:arrow_up:

tests/net/socket/getaddrinfo/src/main.c
93.33% <93.33%> (ø)

include/net/socket.h
100% <0%> (ø)
:arrow_up:

subsys/net/lib/dns/resolve.c
35.65% <0%> (+0.55%)
:arrow_up:

Continue to review full report at Codecov.

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


Add build / config / setup to README

Cmake + Spack:

what it is
links to relevant tutorials
how we use it here

This looks to me like it was covered by PR #93; can we close?


Multi cluster

Wrote the tfvars generator to handle for multi cluster deploys.

Configured to my own project. Ran gkekitctl create using the sample multicluster config. CLI ran successfully.
module.gke["gke-east"].module.gke.module.gcloud_delete_default_kube_dns_configmap.module.gcloud_kubectl.null_resource.module_depends_on[0]: Creation complete after 0s [id=4925510714053709484]
module.service_account-iam-bindings.google_service_account_iam_member.service_account_iam_additive["default--roles/iam.workloadIdentityUser--serviceAccount:megan-2021.svc.id.goog[cnrm-system/cnrm-controller-manager]"]: Creating...
module.service_account-iam-bindings.google_service_account_iam_member.service_account_iam_additive["default--roles/iam.workloadIdentityUser--serviceAccount:megan-2021.svc.id.goog[cnrm-system/cnrm-controller-manager]"]: Creation complete after 5s [id=projects/megan-2021/serviceAccounts/gke-toolkit-kcc@megan-2021.iam.gserviceaccount.com/roles/iam.workloadIdentityUser/serviceaccount:megan-2021.svc.id.goog[cnrm-system/cnrm-controller-manager]]

Warning: Value for undeclared variable

The root module does not declare a variable named "config_sync" but a value
was found in file "../../cli/terraform.tfvars". If you meant to use this
value, add a "variable" block to the configuration.

To silence these warnings, use TF_VAR_... environment variables to provide
certain "global" settings to all configurations in your organization. To
reduce the verbosity of these warnings, use the -compact-warnings option.

Warning: Value for undeclared variable

The root module does not declare a variable named "prefix" but a value was
found in file "../../cli/terraform.tfvars". If you meant to use this value,
add a "variable" block to the configuration.

To silence these warnings, use TF_VAR_... environment variables to provide
certain "global" settings to all configurations in your organization. To
reduce the verbosity of these warnings, use the -compact-warnings option.

Apply complete! Resources: 62 added, 0 changed, 0 destroyed.

and clusters running in my p

roject.


Add option to filter files from folders installed using install_subdir

Being able to use install_subdir is a nice feature to avoid having to list individual files with install_sources in the meson build file.
However, sometimes there are files(e.g. test data), .DS_Store folder on macOS, that you don't want to include, and there's no good way to exclude them currently, without resorting to install_sources.
An easy way to fix this is to have a config file(similar in syntax to maybe .gitignore or MANIFEST.in), where you can exclude files.
It's also probably best for this logic to live in meson-python, since the only time you'd really care is when your building a wheel.

I think this is something that may make more sense to implement in Meson directly.
@eli-schwartz, thoughts?

Most definitely something that would need to be implemented in Meson. The last time I discussed this with @eli-schwartz there wasn't much excitement about adding this feature, but it was not rejected either.

MANIFEST.in has always been a footgun, so I'm also not too enthusiastic about this.
However, I believe this can already be done, using .gitattributes. At least, that excludes them from an sdist, so if you build a wheel via an sdist they will also be excluded. See for example https://github.com/scipy/scipy/blob/main/.gitattributes

The idea I had was to add an install_package() method to the python_installation object. This method would mirror install_sources() but take a folder as an argument and would recursively install all *.py files in the folder as long as the folder contains a __init__.py file. This is somehow similar to the setuptools packages configuration option. All files that are not python source files would need to be still installed via other mechanisms. The only constraint is that, to follow Meson's philosophy, the list of files to install should be computed at configure time, like install_subdir() does. I could look into implementing this, but improving other aspects of Meson and meson-python has higher priority.

The idea I had was to add an install_package() method to the python_installation object. This method would mirror install_sources() but take a folder as an argument and would recursively install all *.py files in the folder as long as the folder contains a __init__.py file. This is somehow similar to the setuptools packages configuration option. All files that are not python source files would need to be still installed via other mechanisms. The only constraint is that, to follow Meson's philosophy, the list of files to install should be computed at configure time, like install_subdir() does. I could look into implementing this, but improving other aspects of Meson and meson-python has higher priority. After all, keeping a list of the files to be installed is not such a daunting task and, in the worst case, it can be easily automated.

I am not too big a fan of adding another install_* method, especially to the python_installation object. I don't think this problem is Python-specific, and for the most part install_subdir does its job well enough.
The problematic files tend to either live together in one folder(e.g. pycache, .DS_STORE, data files for tests), or are mostly single, so install_subdir() could just take in a list of files/folders to exclude.

install_subdir() already has the capability to exclude files, see the exclude_files argument. It however does not accept a pattern to match file names and it never will, globbing is against the principles on which Meson is built. Also, Meson is designed to build artifacts without polluting the sources folder, thus it does not make sense for it to have a mechanism to exclude temporary files and other "garbage" from the install.

install_subdir() already has the capability to exclude files, see the exclude_files argument. It however does not accept a pattern to match file names and it never will, globbing is against the principles on which Meson is built.

Thanks for the pointer. I'll go check it out.

I don't think there is anything actionable on the meson-python side here. Meson already has the exclude_files and exclude_directories arguments to install_files thus the functionality is there, just there isn't the possibility to use patterns to match the files to exclude. This functionality however needs to be implemented in Meson. Closing for now.


datastore: protobuf backend

Add support for the highly-performant Protobuf protocol.

This is in master and delivered.


Copy Edits for "Welcome" Screen

IMO you need to remember that users don't have .00001% of your familiarity with the app. When you say "settings", for example, they are lost...especially now that there are three places to configure Aerial (menubar, pref panel, and welcome screen). Until you can unify all into one single location (which I know is difficult and unlikely), you need to explain how to find a setting/parameter/feature whenever you mention it.

A few tips, just in case...

Explaining Some Options  (in the sidebar of Aerial's "Screen Saver Options" within the Desktop & Screen Saver preference panel)

You can quickly change which videos are playing using the new "On Rotation" feature.

Change video sequencing via the new "On Rotation" feature.

Enjoying a video? Favorite it so it keeps playing.

Enjoying a video? "Favorite" it to make it play more frequently.
[I don't know if that's how it works; explain to me and I'll improve this]

Not liking one? "Hide" it to keep Aerial from playing it (you can change your mind later).

Dislike a video? Tell Aerial not to play it (you can always change your mind).

There's a whole new user interface by the way. You can even resize it!

Version 2 introduces a completely new user interface, by the way. You can even resize it!

And yes, there are new videos! You can now enjoy some free videos provided by third party artists on top of the classical Aerials, check the Custom Sources in Settings for more details, and how to support them for their work.

And there are new videos! These are provided by third party artists, some free and some for a small payment which supports their work! You'll find them in "Custom Sources" in settings (go to "Desktop & Screen Saver" in System Preferences,  choose "Screen Saver Options", then hit the gear icon at upper left).

I've never ever had someone being confused about where the screen saver settings were.

Only a tiny fraction of users talk to you. And those are highly-filtered. Confused people often don't become users at all. And the users who find you are the  more competent ones. And users who find you and sign up for a GitHub account and make navigate its geeky UI to give feedback are filtered more still.
Also, v2 increases complexity by an order of magnitude  by adding both a menubar config and the welcome screen config. There are now three different places to search around for any given portion of this app. I'm not attacking that choice, but your framing of user experience is very very very very off IMO.

I've improved a lot of copy in 2.0.3, including renaming "On rotation", which seemed obscure, to "Currently playing" which should be more clear.


Statements are not aligned for ASI style

Bug Report

TSLint version: 3.14.0
TypeScript version: 2.0.0
Running TSLint via: (please choose one) CLI

TypeScript code being linted
https://github.com/unional/jspm-config/blob/master/src/readJspmConfig.ts#L15-L20
https://travis-ci.org/unional/jspm-config/builds/152584793
Simplified example:
function foo() {
  callSomething()

  ;(process as any).doSomething()
}

Expect this would pass lint. 🌷

Likely from TS?
https://github.com/Microsoft/TypeScript/issues/10392

So the real issue here, perhaps, is that the semicolon rule, when using option never, doesn't allow this?
function foo() {
  callSomething();
  (process as any).doSomething()
}

That would be nice, if it cannot be solve on the TS side, this is the least intrusive solution. 👍

Sounds like the semicolon rule should have an option to allow semicolons when it would interact with automatic semicolon insertion (ASI).

☠ TSLint's time has come! ☠
TSLint is no longer accepting most feature requests per #4534. See typescript-eslint.io for the new, shiny way to lint your TypeScript code with ESLint. ✨
It was a pleasure open sourcing with you all!

🤖 Beep boop! 👉  TSLint is deprecated 👈 (#4534)  and you should switch to typescript-eslint! 🤖
🔒 This issue is being locked to prevent further unnecessary discussions. Thank you! 👋


Finish V2 flavor of the in-memory implementation

With the new implementation of the LedgerDB API done in #521, we are implementing the V2 in-memory variant in #815 and #858.

Done!


Change license to one that doesn't force the derivate work to be public domain

The current license says

(...) a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law

Right now I'm working on a commercial project that requires the source to be private. I believe a lot of projects have this requirement and the CC0 1.0 license ties ours hands.
I suggest changing to the MIT License: https://opensource.org/licenses/MIT

It's applied only to the gulp-ng-annotate code itself, you can use with any project, including commercial. In fact, CC0 is even more permessive than MIT, you may consider it as public domain.