Removed Trusted Publishers as it is not a valid store

The docs reference that you can trusted under Trusted Publishers, but only Trusted People and Trusted Root Certification Authority are supported for MSIX.

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

ID: fd3a8483-a56e-7f3d-8c25-1d8b18943342
Version Independent ID: 3b8e451b-95b5-3d26-c7ec-160fef01d85e
Content: Troubleshoot installation issues with the App Installer file - MSIX
Content Source: msix-src/app-installer/troubleshoot-appinstaller-issues.md
Product: msix
GitHub Login: @dianmsft
Microsoft Alias: diahar

Thanks for filing John. Have submitted PR #164 for your review.


[Bug Report]: CRITICAL - IDistributionStrategy use message key instead of partition key resulting in the order of messages not being preserved

Prerequisites

[X] I have searched issues to ensure it has not already been reported

Description
IDistributionStrategy use message key instead of partition key resulting in the order of messages not being preserved as stated in BytesSumDistributionStrategy. It was expecte to use partition ID not message key which in the summary is described incorrectly as partition key.
    /// <summary>
    /// This strategy sums all bytes in the partition key and apply a mod operator with the total number of workers, the resulting number is the worker ID to be chosen
    /// This algorithm is fast and creates a good work balance. Messages with the same partition key are always delivered in the same worker, so, message order is guaranteed
    /// Set an optimal message buffer value to avoid idle workers (it will depends how many messages with the same partition key are consumed)
    /// </summary>

Steps to reproduce
When message is produced with partition key there is no options to use its value in the IDistributionStrategy.
https://github.com/Farfetch/kafkaflow/blob/d662b9dde9d627a7ef6db795368eec5b58f96ba1/src/KafkaFlow/Consumers/ConsumerWorkerPool.cs#L101
Expected behavior
Message partition should passed to the GetWorkerAsync method.
int? partition = message.Message.Partition.Value < 0 ? null : message.Message.Partition.Value;

var worker = (IConsumerWorker)await this.distributionStrategy
                .GetWorkerAsync(message.Message.Key, partition , stopCancellationToken)
                .ConfigureAwait(false);

/// <inheritdoc />
        public Task<IWorker> GetWorkerAsync(byte[] partitionKey, int? partition, CancellationToken cancellationToken)
        {
            if (partition.HasValue)
            {
                int workerId = partition.Value % this.workers.Count;

                return Task.FromResult(this.workers[workerId])
            }

            if (workers is null || workers.Count <= 0)
            {
                return Task.FromResult<IWorker>(null);
            }

            if (partitionKey is null)
            {
                return Task.FromResult(this.workers[0]);
            }

            return Task.FromResult(
                cancellationToken.IsCancellationRequested
                    ? null
                    : this.workers[partitionKey.Sum(x => x) % this.workers.Count]);
        }

Actual behavior
Message key is always used to select worker.
KafkaFlow version
All

Hi @adambajguz.
Thank you for your feedback.
The default behavior of our IDistributionStrategy, including the BytesSumDistributionStrategy, is to use the message key for worker assignment.
In light of your feedback and concerns, we recommend the following:

Use a Custom Distribution Strategy (documentation): If your use case demands a different partition assignment strategy, you have the flexibility to implement a custom one tailored to your specific requirements.

Additionally to that, you can provide additional details about your particular use case within the issue. This additional context will enable us to better understand your needs.

Hi @ruiqbarbosa,
I understand that it is possible to create a custom IDistributionStrategy but the problem is that when you publish some message to a specific partition e.g. 0 with messages order in mind, there is no guarantee that all messages from partition 0 will be processed using the same worker. For applications where message order is crutial this will cause issues.
Maybe I don't understand the message key concept so please correct me if I'm wrong. For me message key is a unique message identifier. While partition is a stream of messages that should be processed one by one (in order).

@ruiqbarbosa Here is a repository with a simple app that reporduces the issue: https://github.com/adambajguz/kafkaflow-issue440
Below are the logs from example run - it's cleary visible that although 50 messages were published to same partiton but with different message keys, they were not handled in order (different workers were used).
Send: 0
Send: 1
Send: 2
Send: 3
Send: 4
Send: 5
Send: 6
Send: 7
Send: 8
Send: 9
Send: 10
Send: 11
Send: 12
Send: 13
Send: 14
Send: 15
Send: 16
Send: 17
Send: 18
Send: 19
Send: 20
Send: 21
Send: 22
Send: 23
Send: 24
Send: 25
Send: 26
Send: 27
Send: 28
Send: 29
Send: 30
Send: 31
Send: 32
Send: 33
Send: 34
Send: 35
Send: 36
Send: 37
Send: 38
Send: 39
Send: 40
Send: 41
Send: 42
Send: 43
Send: 44
Send: 45
Send: 46
Send: 47
Send: 48
Send: 49
warn: KafkaFlow[0]
      An error occurred creating topic {Topic}: {Reason} | Data: {"Topic":"notification-events","Reason":"Topic \u0027notification-events\u0027 already exists."}
info: KafkaFlow[0]
      Partitions assigned | Data: {"GroupId":"notification-events","ConsumerName":"7179a1d6-de1d-48ae-bd30-6ef34b6b38d7","Topics":[{"Topic":"notification-events","PartitionsCount":10,"Partitions":[0,1,2,3,4,5,6,7,8,9]}]}
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 306 | Worker ID: 2 | Group ID: notification-events | Message: [0] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 310 | Worker ID: 6 | Group ID: notification-events | Message: [4] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 308 | Worker ID: 0 | Group ID: notification-events | Message: [2] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 312 | Worker ID: 9 | Group ID: notification-events | Message: [6] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 307 | Worker ID: 4 | Group ID: notification-events | Message: [1] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 313 | Worker ID: 8 | Group ID: notification-events | Message: [7] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 311 | Worker ID: 3 | Group ID: notification-events | Message: [5] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 316 | Worker ID: 6 | Group ID: notification-events | Message: [10] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 315 | Worker ID: 2 | Group ID: notification-events | Message: [9] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 309 | Worker ID: 4 | Group ID: notification-events | Message: [3] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 318 | Worker ID: 3 | Group ID: notification-events | Message: [12] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 323 | Worker ID: 2 | Group ID: notification-events | Message: [17] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 337 | Worker ID: 6 | Group ID: notification-events | Message: [31] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 320 | Worker ID: 4 | Group ID: notification-events | Message: [14] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 321 | Worker ID: 8 | Group ID: notification-events | Message: [15] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 322 | Worker ID: 4 | Group ID: notification-events | Message: [16] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 347 | Worker ID: 9 | Group ID: notification-events | Message: [41] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 319 | Worker ID: 3 | Group ID: notification-events | Message: [13] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 326 | Worker ID: 0 | Group ID: notification-events | Message: [20] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 343 | Worker ID: 6 | Group ID: notification-events | Message: [37] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 324 | Worker ID: 4 | Group ID: notification-events | Message: [18] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 329 | Worker ID: 2 | Group ID: notification-events | Message: [23] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 327 | Worker ID: 3 | Group ID: notification-events | Message: [21] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 333 | Worker ID: 2 | Group ID: notification-events | Message: [27] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 332 | Worker ID: 4 | Group ID: notification-events | Message: [26] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 334 | Worker ID: 3 | Group ID: notification-events | Message: [28] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 350 | Worker ID: 6 | Group ID: notification-events | Message: [44] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 314 | Worker ID: 7 | Group ID: notification-events | Message: [8] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 340 | Worker ID: 4 | Group ID: notification-events | Message: [34] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 353 | Worker ID: 3 | Group ID: notification-events | Message: [47] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 317 | Worker ID: 1 | Group ID: notification-events | Message: [11] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 345 | Worker ID: 7 | Group ID: notification-events | Message: [39] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 341 | Worker ID: 4 | Group ID: notification-events | Message: [35] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 328 | Worker ID: 5 | Group ID: notification-events | Message: [22] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 348 | Worker ID: 4 | Group ID: notification-events | Message: [42] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 330 | Worker ID: 5 | Group ID: notification-events | Message: [24] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 325 | Worker ID: 1 | Group ID: notification-events | Message: [19] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 335 | Worker ID: 0 | Group ID: notification-events | Message: [29] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 342 | Worker ID: 5 | Group ID: notification-events | Message: [36] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 331 | Worker ID: 1 | Group ID: notification-events | Message: [25] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 336 | Worker ID: 0 | Group ID: notification-events | Message: [30] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 344 | Worker ID: 5 | Group ID: notification-events | Message: [38] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 339 | Worker ID: 0 | Group ID: notification-events | Message: [33] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 349 | Worker ID: 9 | Group ID: notification-events | Message: [43] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 355 | Worker ID: 5 | Group ID: notification-events | Message: [49] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 338 | Worker ID: 8 | Group ID: notification-events | Message: [32] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 346 | Worker ID: 8 | Group ID: notification-events | Message: [40] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 352 | Worker ID: 9 | Group ID: notification-events | Message: [46] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 351 | Worker ID: 8 | Group ID: notification-events | Message: [45] test
info: KafkaFlow1.Messages.Customers.NotificationSentMessageCustomer[0]
      Partition: 3 | Offset: 354 | Worker ID: 9 | Group ID: notification-events | Message: [48] test
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7007
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5159
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: Y:\GitHub\dotnet\kafkaflow-issue440\KafkaFlow1\KafkaFlow1

Hi @adambajguz ,
To clarify, the message key does not necessarily serve as a unique identifier for the message. In an event-driven communication, the message key can be used as a unique identifier for a group of events related to a particular entity. This is the default approach. However, in a compact topic, the message key is the unique identifier of a message. This is because the retention policy removes older messages with the same key. The text below was extracted from the official documentation:
Events with the same event key (e.g., a customer or vehicle ID) are written to the same partition, and Kafka [guarantees](https://kafka.apache.org/documentation/#semantics) that any consumer of a given topic-partition will always read that partition's events in exactly the same order as they were written.
source: https://kafka.apache.org/documentation/#intro_concepts_and_terms

Hi @filipeesch, thanks for clarification.


Final figures for the paper

This PR aims at preparing the figures for the paper.
Closes #10
@RemDelaporteMathurin, I'd appreciate your opinion on new figures or any ideas on how we could improve their appearance. I'll update them iteratively. For now, I'll keep the old plots in Jupyter books.

@RemDelaporteMathurin, here is a new DWO figure. What do you think of it?

In subfigure (b) the MHIMS data for 0.75ML is the worst
What do you mean?

I like the version with crosses and dots.
Are you sure you want a) and b) in these? I don't think it's much needed. The figure is self explanatory and the caption can say comparison between FESTIM and experimental points and FESTIM and MHIMS.

@RemDelaporteMathurin

What do you mean?

There are many MHIMS dots in this case. Therefore, line and overlapped dots almost merge

That's ok we can distinguish the line and the dos thanks to the transparency

@RemDelaporteMathurin
There is a new figure for the MMS test:

Brilliant!

Here is the updated diagram:

Currently, Ediss, Edes, Qs appear in the paper

should we merge this PR soonish even if not all the figures are in yet? it's getting long and it's hard to review large PRs like this

should we merge this PR soonish even if not all the figures are in yet? it's getting long and it's hard to review large PRs like this

Yes. I also wanted to say that this PR is alreadt large. I can make a figure for the last case or we can merge it as it is. What do you think?


Works successfully but no map pins

Hi,
I've tried to download the folder and run on my localhost. I tried to run one of the examples given (google-maps.html) and it works, but the screenshot does not capture the map pin/marker. Is that it was supposed to work? How do I capture the marker with the google maps?
Thanks.

@dd-fadhilah I think it was something that changed the structure of Google Maps that is causing the "Taint". I'll try to see if it has the correct, but keep in mind that the problem may be in GoogleMaps.

Hi,
I've tried to replace with v0.5.0 (https://liveperson-consumer-marketing.s3.amazonaws.com/prestoexperts/html2canvas/html2canvas-0.5.js), but still no luck.
`

Below is the code:

<script type="text/javascript">
var map = null;
 function initialize() {
    var parametreCarteVillage = {
        zoom                        : 9,
        center                      : new google.maps.LatLng(38.959409, -87.289124),
        disableDoubleClickZoom      : false,
        draggable                   : true,
        scrollwheel                 : true,
        panControl                  : false,
        disableDefaultUI            : true,
        mapTypeControl              : true,
        keyboardShortcuts           : true,
        mapTypeId                   : google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById('map_canvas'), parametreCarteVillage);

  var marker = new google.maps.Marker({
      position:new google.maps.LatLng(38.959409,-87.289124),
      map: map,
      title: 'Title!'
  });
}

window.onload = function () {
    initialize();

    function convert(target) {
        html2canvas(target, {
            "proxy": "../html2canvasproxy.php",
            "logging": true, //Enable log (use Web Console for get Errors and Warnings)
            "onrendered": function(canvas) {
                var img = new Image();
                    img.onload = function () {
                        img.onload = null;
                        document.getElementById("output").appendChild(img);
                    };
                    img.src = canvas.toDataURL("image/png");
            }
        });
    }

    document.getElementById("save1").onclick = function () {
        convert(document.getElementById("map_canvas"));
    };

    document.getElementById("save2").onclick = function () {
        convert(document.getElementById("container"));
    };
};
</script>

v0.5.0 not work because proxy system is changed, I am creating a modification of my proxy to work with this version. @dd-fadhilah

Ok, thanks for the update ;) I'm looking forward for the new proxy.
Thanks again.

@dd-fadhilah Fixed in 0.2.0: https://github.com/brcontainer/html2canvas-php-proxy/commit/10dd9bd52f6d523ff05e3d2a6499c2743ec7ee5e


[Feature] Can we have a small icon attach to the box?

Can we have a small icon attached to the box? When we click the small colorful icon, we can add or see further explanations to the box. Keep the connected boxes clean and simple at the default high level, but have the option to click and add to enrich its associated information.
Each colored icon can mean different things. Like further explanations, box labels, etc. Maybe the icon can be in different shapes to further help to distinguish the usage between them.

This sounds little complex to me and seems to not align with the principle of Simplicity in Excalidraw :)
What is the requirement of this feature and how would you use it ?
We already support text containers and labelled arrows so is there anything else you would want to add in those shapes ?


Lambda support for S3 item encryption

Rather than use a scheduled job to encrypt all unencrypted items in S3 buckets, it would be useful (and more scalable) to encrypt items as soon as they are uploaded to a bucket.  The count of log files can grow very quickly, bogging down a scheduled run.

we already have support for doing that, via the action attach-encrypt which attaches a lambda encrypt function to a bucket. for non log buckets recommend is to use an encryption-policy action. custodian has filters on s3 buckets for automatically determining buckets that are log targets (s3, elb, cloudtrail, cfn) that can be used in conjunction with the attach-encrypt action.

Thanks.


Time left instead of time elapsed?

When playing a title through Plex it just shows the time elapsed. Is there a way of having it so it shows the full duration of the video?
For instance if it's a 45min video and you are 25 seconds in it would show as
00:25 / 45:00 (elapsed or other word here)
or have it show time remaining instead like a countdown.
44:35 left.
It's just a suggestion but it might be better this way as I've had friends message me how long I've got left on something I'm watching and this way they can just see it on the rich presence info,

I've added a timeRemaining property to the plexConfig class on line 17. Set this to True to display time remaining instead of time elapsed.

For instance if it's a 45min video and you are 25 seconds in it would show as
00:25 / 45:00 (elapsed or other word here)

It will be displayed this way when the media is paused. The rich presence only updates every few seconds except for the time elapsed/remaining field which uses a timestamp and updates client-side, so it will show the total time along with the time elapsed/remaining field below it while media is playing.

That was quick! Thanks. Works a charm! 👍


NOT A BUG: How to Install (Bicep Visualizer)

This should have been a comment on: Bicep visualizer #2357
I do not see this in the market place (perhaps I am doing a bad search). Nor did I see (but perhaps did not read deep enough) alternate install instructions...
Thanks in advance.

hi @dcorbin-wintellect.
You should follow the steps completed to see the diagram:
0. have the VS Code extension installed.
0. Have the Bicep binaries installed.

Open in VS Code the .bicep file
wait for the bicep language service to launch
on the top-left corner you'll see a new icon.
You should see the target diagram

That's should answer your question.

Thanks for answering @scibotaru!


refactor: 移除对消息的缓存 / remove message cache

关联的Issues (Related Issues)

close https://github.com/filecoin-project/venus/issues/5234
改动 (Proposed Changes)

附注 (Additional Info)

自查清单 (Checklist)
在你认为本 PR 满足被审阅的标准之前，需要确保 / Before you mark the PR ready for review, please make sure that:

[x] 符合Venus项目管理规范中关于PR的相关标准 / The PR follows the PR standards set out in the Venus project management guidelines
[x] 具有清晰明确的commit message / All commits have a clear commit message.
[x] 包含相关的的测试用例或者不需要新增测试用例 / This PR has tests for new functionality or change in behaviour or not need to add new tests.
[x] 包含相关的的指南以及文档或者不需要新增文档 / This PR has updated usage guidelines and documentation or not need
[x] 通过必要的检查项 / All checks are green

Codecov Report

Merging #257 (5d0d101) into master (308f6ab) will decrease coverage by 0.58%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #257      +/-   ##
==========================================
- Coverage   54.75%   54.17%   -0.59%
==========================================
  Files          63       62       -1
  Lines        6757     6597     -160
==========================================
- Hits         3700     3574     -126
+ Misses       2767     2743      -24
+ Partials      290      280      -10

Flag
Coverage Δ

unittests
54.17% <100.00%> (-0.59%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

integration_test/mock_messager_server.go
73.78% <ø> (ø)

main.go
0.00% <ø> (ø)

service/cache.go
81.25% <ø> (-3.24%)
:arrow_down:

service/message_service.go
59.47% <100.00%> (-1.16%)
:arrow_down:

service/message_state_refresh.go
71.63% <100.00%> (-1.50%)
:arrow_down:


Png file shows only part of the SVG file

I tried this coding to convert a SVG file to PNG:
uses Img32, Img32.Fmt.SVG, Img32.Fmt.PNG;
...
//change image format from SVG to PNG
img := TImage32.Create(800,600);
img.LoadFromFile('drawing.svg');
img.SaveToFile('drawing.png');
img.Free;

The SVG file looks like this in Chrome Webbrowser:

But the PNG file only shows this, independent of the provided pixel or any scale... methods I am calling:

The SVG file you can find in the attached zip file. What do I wrong?
drawing.zip
I use Delphi 10.2 and Image32 version 4.3

The SVG reader doesn't currently support nested SVG images.

Thanks for the info. Yes, other libraries also have issues displaying this file. I will try now Skia4Delphi or Direct2D.

Try this ... still a draft version as I haven't had time to extensively test it.
Img32_draft.zip

Thank you so much for your incredible work. It looks great also with other more complex music sheets. I cannot spot any issues.


Implement the new Zone API

This PR changes the API to be able Zones. It's mostly compatible, with the exception that the overrides option is replaced by beforeTask and afterTask hooks.
Instead of:
wait(fn).then(...

You do:
new Zone().run(fn).then(...

Exposes hooks in the Zone lifecycle.

This closes #45 and #40

New docs are here: https://github.com/canjs/can-wait/blob/globals/README.md


Use auth to get parquet export

added token to the _datasets_server functions

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Node has node.kubernetes.io/not-ready taint in integration tests even if the Node is ready

What happened:
In the integration tests nodes have node.kubernetes.io/not-ready taint even if in their status Ready condition is set to true
What you expected to happen:
Nodes didn't have the taint
How to reproduce it (as minimally and precisely as possible):
Run newly added integration test from this PR with toleration deleted
Anything else we need to know?:
I believe we should add util function that removes the taint based on Ready condition
Environment:

Kubernetes version (use kubectl version):
Kueue version (use git describe --tags --dirty --always):
Cloud provider or hardware configuration:
OS (e.g: cat /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

/cc @mbobrovskyi

/assign

I believe we should add util function that removes the taint based on Ready condition

Or a function createNode which does 3 things: (1) creates the node, (2) updates status based on the object, (3) removes the taint if the node is Ready


Update category menu selection when dragging flyout or scrollbar

Expected Behavior
In the auto-scrolling flyout with all the blocks (PR), the selected category should update when you scroll the flyout in any way.
Actual Behavior
Currently, the category selection is only updated on a "wheel" scroll event (via mouse wheel or trackpad scrolling gesture). It does not update when you scroll it by dragging the flyout or dragging the scrollbar.
Operating System and Browser
Mac OS 10.11.6 Chrome 60.0

Any pointers on this one @picklesrus or @rachel-fenichel?

Flyout's setMetrics is called when it's being scrolled (vertical and horizontal).
That's because scrollbar's set calls onScroll_, which calls setMetrics on the relevant workspace:

/**
 * Called when scrollbar is moved.
 * @private
 */
Blockly.Scrollbar.prototype.onScroll_ = function() {
  var ratio = this.handlePosition_ / this.scrollViewSize_;
  if (isNaN(ratio)) {
    ratio = 0;
  }
  var xyRatio = {};
  if (this.horizontal_) {
    xyRatio.x = ratio;
  } else {
    xyRatio.y = ratio;
  }
  this.workspace_.setMetrics(xyRatio);
};

/**
 * Set the scrollbar slider's position.
 * @param {number} value The distance from the top/left end of the bar.
 */
Blockly.Scrollbar.prototype.set = function(value) {
  this.setHandlePosition(this.constrainHandle_(value * this.ratio_));
  this.onScroll_();
};

wheel_ also calls scrollbar.set(), so you'll want to remove that code from wheel_ and only have it in setMetrics.  Beware of accidentally setting up loops between scrolling and setMetrics.  That could happen if setting the selected category on the toolbox makes it scroll the flyout to that category, for instance.


Preventing upload on error/wrong file type

I have the following set in my options, but it seems that returning false does not prevent an upload.
   acceptedFileTypes: ['image/*'],
   errInvalidFileType(type, _acceptedTypes, _file) {
       console.log(type)
       console.log(_acceptedTypes)
       return false
       console.log(_file)
  },

Where can I add any logic for preventing uploads?

Two things: first take care not to have statements after a return because they won't be executed. Second, the function you specified is used for generating an error message for that given error, not for determining whether or not a file should be accepted. I believe the function you want is the accept function. Returning a truthy value will sent a file. This is akin to the Nodejs error callback style.

Also, wherever you see underscore named params to a function signature, that's just me specifying the full signature, but marking the params as unused so typescript won't complain at compile time. It would normally fail to compile due to unused params, but adding underscores allows me to show off the extra params and still compile.

Another thing, accepted file types can be a global mime type like the example you have, an array of specific mime types, or an array of file extensions.

Apologies, I was in a rush and debugging, so I threw in a return false, assuming a return of false would stop execution on an upload. I know statements after a return aren't executed.
Great, so the accept function, does it get fed as part of the options as in the example above with the errInvalidFileType()?
Also, how can I find the params it accepts?
I guess I could just add the function and console.log dummy params to figure it out, but is there a way of knowing before doing this:
accept(param1, param2, param3) {
console.log(param1)
console.log(param2)
console.log(param3)
}

Looks like when I automated a doc update I blew away some of the descriptions. Here's the source: https://github.com/alexsasharegan/vue-transmit/blob/master/src/components/VueTransmit.vue
The accept function receives a VTransmitFile instance and the done callback. You do pass along with the other options.

I added better descriptions of the props in the readme. It now shows function signatures. There's also a table of contents to jump to sections on the page.


Photo broken on Android 7.0

If the demo apps cannot help and there is no issue for your problem, tell us about it
Photo looks like this

Which platform(s) does your issue occur on?

Android
Android 7.0.0
NVidia Shield (tablet)

Please, provide the following version numbers that your issue occurs with:

CLI: 7.1.1
Cross-platform modules: 7.1.0
Runtime: @nativescript/android 7.0.1
Plugin(s):

"dependencies": {
    "@nativescript-community/gps": "^2.1.5",
    "@nativescript-community/l": "^4.2.15",
    "@nativescript/core": "~7.1.0",
    "@nativescript/theme": "~2.3.0",
    "@nstudio/nativescript-floatingactionbutton": "^3.0.4",
    "@nstudio/nativescript-pulltorefresh": "^3.0.1",
    "@yoonit/nativescript-camera": "^2.0.0",
    "moment": "^2.29.1",
    "nativescript-app-tour": "^2.0.2",
    "nativescript-https": "^2.2.2",
    "nativescript-vibrate": "^4.0.1",
    "nativescript-windowed-modal": "file:./plugins/nativescript-windowed-modal-master/src"
  },
  "devDependencies": {
    "@nativescript/android": "7.0.1",
    "@nativescript/types": "7.1.0",
    "@nativescript/webpack": "~4.0.0",
    "node-sass": "^4.14.1"
  }

Please, tell us how to recreate the issue in as much detail as possible.
const {YoonitCamera} = require('@yoonit/nativescript-camera/Yoonit.Camera');

function cvLoaded(args) {

    const cView = args.object; // <ContentView> in my XML
    yCam = new YoonitCamera();

    yCam.on('imageCaptured', (data) => {
        yCam.stopCapture();
        ImageSource.fromFile(data.image["path"]).then((img) => {
            const folder = knownFolders.documents().getFolder("orderPhotos").path;
            const fileName = moment().format('x') + '.jpg';
            const filePath = path.join(folder, fileName);
            const saved = img.saveToFile(filePath, "jpg");
            if (saved) {
                closeCallback(filePath);
            } else {

            }
        });
    });

    cView.content = yCam;

    yCam.requestPermission().then(() => {
        yCam.setLens('back');
        yCam.setOutputImageWidth("1000px");
        yCam.setOutputImageHeight("1000px");
        yCam.setSaveImageCaptured(true);
        yCam.preview();
    });
}

function onTakePhoto(args) {
    yCam.startCapture('frame');
}

Hi @RGBvision we facing the same issue specifically on Xiaomi Redmi Note 9S and we don't know how to fix this, we do not have a such device that we can reproduce this bug, you can help us?

Hi @RGBvision we facing the same issue specifically on Xiaomi Redmi Note 9S and we don't know how to fix this, we do not have a such device that we can reproduce this bug, you can help us?

Hi @RGBvision we facing the same issue specifically on Xiaomi Redmi Note 9S and we don't know how to fix it, we do not have a such device that we can reproduce this bug, you can help us?

How can I help?
IMHO problem in image format. I faced this kind of problem before. The problem was solved by setting the correct format (YUV_420_888). But this is only a guess.

Hi @RGBvision we facing the same issue specifically on Xiaomi Redmi Note 9S and we don't know how to fix it, we do not have a such device that we can reproduce this bug, you can help us?

How can I help?
IMHO problem in image format. I faced this kind of problem before. The problem was solved by setting the correct format (YUV_420_888). But this is only a guess.

Hi @RGBvision, good point.
We will change the format of the image to YUV_420_888 and test with the devices that we have here.
If everything going right, we will post "here" the branch to you test.

Hi @RGBvision, good point.
We will change the format of the image to YUV_420_888 and test with the devices that we have here.
If everything going right, we will post "here" the branch to you test.

Hi @RGBvision.
In the android, we already using YUV_420_888 .
In the below Kotlin code, we are converting a Image (from camera preview) to Bitmap.
The nativescript-yoonit-camera is using the android-yoonit-camera.
For more details
fun Image.toBitmap(): Bitmap {
    val yBuffer = planes[0].buffer // Y
    val uBuffer = planes[1].buffer // U
    val vBuffer = planes[2].buffer // V

    val ySize = yBuffer.remaining()
    val uSize = uBuffer.remaining()
    val vSize = vBuffer.remaining()

    val nv21 = ByteArray(ySize + uSize + vSize)

    // U and V are swapped
    yBuffer.get(nv21, 0, ySize)
    vBuffer.get(nv21, ySize, vSize)
    uBuffer.get(nv21, ySize + vSize, uSize)

    val yuvImage = YuvImage(nv21, ImageFormat.NV21, this.width, this.height, null)
    val out = ByteArrayOutputStream()
    yuvImage.compressToJpeg(Rect(0, 0, yuvImage.width, yuvImage.height), 50, out)
    val imageBytes = out.toByteArray()
    return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
}

If we are doing something wrong, please, tell us.

Hi @RGBvision.
In the android, we already using YUV_420_888 .
In the below Kotlin code, we are converting a Image (from camera preview) to Bitmap.
The nativescript-yoonit-camera is using the android-yoonit-camera.
For more details
fun Image.toBitmap(): Bitmap {
    val yBuffer = planes[0].buffer // Y
    val uBuffer = planes[1].buffer // U
    val vBuffer = planes[2].buffer // V

    val ySize = yBuffer.remaining()
    val uSize = uBuffer.remaining()
    val vSize = vBuffer.remaining()

    val nv21 = ByteArray(ySize + uSize + vSize)

    // U and V are swapped
    yBuffer.get(nv21, 0, ySize)
    vBuffer.get(nv21, ySize, vSize)
    uBuffer.get(nv21, ySize + vSize, uSize)

    val yuvImage = YuvImage(nv21, ImageFormat.NV21, this.width, this.height, null)
    val out = ByteArrayOutputStream()
    yuvImage.compressToJpeg(Rect(0, 0, yuvImage.width, yuvImage.height), 50, out)
    val imageBytes = out.toByteArray()
    return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
}

If we are doing something wrong, please, tell us.

Hi @RGBvision  @luiguild @TeruyaHaroldo
I have the same behavior when I run the demo app in Xiaomi Poco X3 so I'm going look into this problem to bring us a solution

Hi @RGBvision  @luiguild @TeruyaHaroldo
I have the same behavior when I run the demo app in Xiaomi Poco X3 so I'm going look into this problem to bring us a solution

Hi @RGBvision @luiguild @TeruyaHaroldo
I have the same behavior when I run the android-yoonit-camera demo app in Xiaomi Poco X3 so I'm going look into this problem to bring us a solution

Hi @RGBvision @luiguild @TeruyaHaroldo
I have the same behavior when I run the android-yoonit-camera demo app in Xiaomi Poco X3 so I'm going look into this problem to bring us a solution

Hi @RGBvision we just released correction of this bug with a new feature allowing change the color encoding of the saved image in the Android repo and this should resolve the bug. For tomorrow I will do the nativescript wrap to work in this library to

Hi @RGBvision we just released correction of this bug with a new feature allowing change the color encoding of the saved image in the Android repo and this should resolve the bug. For tomorrow I will do the nativescript wrap to work in this library to

Problem not resolved. Photo still broken.

Problem not resolved. Photo still broken.

Hello @RGBvision
Sorry for the delay.
This release was (much) bigger than expected.
Test the v2.2.0 for us:
(https://github.com/Yoonit-Labs/nativescript-yoonit-camera/releases/tag/v2.2.0)[https://github.com/Yoonit-Labs/nativescript-yoonit-camera/releases/tag/v2.2.0]

Hello @RGBvision
Sorry for the delay.
This release was (much) bigger than expected.
Test the v2.2.0 for us:
(https://github.com/Yoonit-Labs/nativescript-yoonit-camera/releases/tag/v2.2.0)[https://github.com/Yoonit-Labs/nativescript-yoonit-camera/releases/tag/v2.2.0]

@RGBvision you could test this new version? Your photos are ok now?

@RGBvision you could test this new version? Your photos are ok now?


[DO NOT MERGE] Use OCI store as blob cache

Instead of caching based on the fully qualified reference of an artifact, this PR provides another implementation of caching:

Remote registries are cached behind a local OCI layout proxy. Anything pulled from the registry will be cached into the proxy.
Manifest and layer blobs are persistently cached in the OCI layout proxy.
Tag resolutions are cached in-memory (TODO: add expiration).
Blob can be mounted across repositories.

@qweeah this looks really interesting! I'm not familiar with stores - can you walk me through the differences, pros and cons for each approach?

@qweeah this looks really interesting! I'm not familiar with stores - can you walk me through the differences, pros and cons for each approach?

Sure. This PR utilizes the oci.Store provided via oras-go, which is an implementation of OCI layout spec.
The main improvement is on network traffic deduplication: In your implementation, files (layer blob with org.opencontainers.image.title) are cached based on the reference, which is a combination of names for registry, repository and tag. If two files in different artifacts have same content, they will be fetched from remote registry twice, causing extra network overhead. Implementation in this PR uses an OCI store to do deduplication, blobs with same digest is guaranteed to be fetched only once.
Still, there are drawbacks, the files need to be unzipped from blob every time when it's requested.

If two files in different artifacts have same content, they will still be fetched from remote registry twice, causing extra network overhead.

What is the real chance of that? Also with the store - are we then mounting them the same file? That would have issue if, for example, you wanted to change one (but not the other) or if it's just crossing a user namespace.

Still, there are drawbacks, the files need to be unzipped from blob every time when it's requested.

Hmm and that doesn't seem ideal.
@sajayantony what do you think?

What is the real chance of that?

Well, considering how container images are built with layer blobs shared, the chances are high (if we don't want to exclude caching image artifacts from the scope this project).

Also with the store - are we then mounting them the same file? That would have issue if, for example, you wanted to change one (but not the other) or if it's just crossing a user namespace.

OCI store acts like a read-only cache, cache user provides digest and get what they want from the cache and don't need to modify files within the OCI store.

Hmm and that doesn't seem ideal.

Yes, but it's just copying the file and I guess it unavoidable if user wante to change their own copy but not effecting others.

OCI store acts like a read-only cache, cache user provides digest and get what they want from the cache and don't need to modify files within the OCI store.

So this would only support read only?

OCI store acts like a read-only cache, cache user provides digest and get what they want from the cache and don't need to modify files within the OCI store.

So this would only support read only?

OCI store is readonly and not accessible to user, what is mounted to the consumer pod is copied from the readonly store and safe to be modified.

Gotcha. I can't say I have a strong opinion about this change. I don't like needing to untar archives every time, and I don't like the added complexity, but I see what you are saying about having a sort of shared cache. That shared cache would still need to be unique unique namespace, so I'm not sure it would give us that much.
My preference tends to be to keep things simple until more complexity is afforded. Let's wait to hear what @sajayantony has to say! I do really appreciate that you opened this and started the discussion - let's make sure we decide on a good path forward!

@vsoch Just to clarify, by the files need to be unzipped from blob every time when it's requested I mean the work of copying the blob from the OCI store to artifact root (see related code here)
I didn't read through the code of pullBlob and I thought it was doing unzip for the blob.

I didn't read through the code of pullBlob and I thought it was doing unzip for the blob.
If a blob isn't an archive it shouldn't need to be unzipped? But maybe I'm missing a detail.

If a blob isn't an archive it shouldn't need to be unzipped? But maybe I'm missing a detail.

I didn't read through the code of pullBlob and I thought it was doing unzip for the blob. I know I was wrong now.
In you implementation:

fetched the manifest;
readout manifest content, for all named blobs:
2.* fetch and save to artifact root

I used to think 2.* contains unzip, but turn out it's just simple read and save with verification.
Just to clarify that there is no unzip in both implementation.


Widgets is blocked by Content-Security-Policy

Pre-requisites

[X] I have double-checked my configuration
[X] I can confirm the issues exists when I tested with :latest
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened/what you expected to happen?
Argo workflows widget page cannot be reached from different origin due to Content-Security-Policy set here  https://github.com/argoproj/argo-workflows/blob/v3.4.4/server/static/static.go#L48.
Maybe we should make it configurable like https://github.com/argoproj/argo-workflows/pull/4420/files does?
Version
v3.3.8, v3.4.2
Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
-

Logs from the workflow controller
kubectl logs -n argo deploy/workflow-controller | grep ${workflow}

Logs from in your workflow's wait container
kubectl logs -n argo -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Succeeded

Find out I should modify the CSP of our own site, there's nothing to do with argo server.


Multiple options menus can be opened at once

Use webhooks as an example:

Go to webhooks
Make sure you have more than one
Open the options menu for the last record
Open the options menu for the record before it

It should close the first one before it opens the second one.
Locally I have this console warning:
instrument.js?ea14:109 [portal-vue]: source chec-options-menu already exists

This is turning out to be quite an annoying issue. It's already configured to not allow this and vue-portals documentation leaves a lot to be desired.

Still an issue:


API documentation has some formatting issues

I see strange coloring in API documentation as shown below:

This has been fixed via 546e33d


Revisit the design for New project and Edit Project, with a view to the two users and VF implementation

Here is where I am working on the project form fields and flow:
https://docs.google.com/drawings/d/1uai8JZmZ4n_EcLK4OGfmkgh0ciYySc4gqqVZd7FKtw0/edit?usp=sharing
Gabs

Just an update here. I am planning on separating the questionnaire bit of the project so that it's clear.
I am also thinking this questionnaire bit can be used for both the project catalogue and the ingest website, with a few changes.
Ideally

@gabsie  is this still relevant?


Update analysis provider config reference

What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes #
Does this PR introduce a user-facing change?:

NONE

/trigger test

/approve


Permission error on Ubuntu 24.04

I checked the things described in the docs.
RUST_DEBUG reveals little,  vagga fails at the first exe with permission error.
Maybe need an apparmor whitelist https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2056555
I disabled apparmor, with no luck.
lloyd@ryz36:/wdSSD/home/lloyd/gimpBuildContainers/mesonClang$ RUST_LOG=debug vagga run
 INFO 2024-08-01T21:11:27Z: vagga::config::config: Found configuration file: Some("/wdSSD/home/lloyd/gimpBuildContainers/mesonClang/vagga.yaml")
 INFO 2024-08-01T21:11:27Z: vagga::process_util: Running "id" "-u" "-n"
 INFO 2024-08-01T21:11:27Z: vagga::process_util: Running "exe" "__wrapper__" "_build" "gimpMesonDev"
Command <Command "/proc/self/exe" "__wrapper__" "_build" "gimpMesonDev"; environ[3]; uid_map=[UidMap { inside_uid: 0, outside_uid: 1000, count: 1 }, UidMap { inside_uid: 1, outside_uid: 100000, count: 65535 }]; gid_map=[GidMap { inside_gid: 0, outside_gid: 1000, count: 1 }, GidMap { inside_gid: 1, outside_gid: 100000, count: 65535 }]>: error when executing: Permission denied (os error 13)

Besides changing from 23.10 to 24.04, the vagga.yaml files are no longer in my home directory, but on a separate filesystem.
Separate issue is that when I was in 23.10, !Ubuntu noble failed to find a downloadable image.

Apparently this is because 24.04 does not allow unprivileged user namespaces, for security reasons.
You can disable the security.  See the Noble Numbat release notes.
/ect/sysctl.d/60-apparmor-namespace.conf  containing kernel.apparmor_restrict_unprivileged_userns=0


How to configure unocss?

I am using nest.js framework and found that the project lost unocss css style after build, can you teach me how to configure it?

I have not used unocss, maybe you should read it's document or use tailwindcss is recommended


Ionic 2 storage doesn’t have query method

I'm updating my app to Ionic 2 rc0 and using import {Storage} from "@ionic/storage"; But it doesn't have query method. It was there in beta 11 to query SQLite. How to query SQLite in rc0?

Try it
import { SQLite } from 'ionic-native';
let db = new SQLite();
db.openDatabase({
name: 'data.db',
location: 'default' // the location field is required
}).then(() => {
db.executeSql('create table danceMoves(name VARCHAR(32))', {}).then(() => {
}, (err) => {
console.error('Unable to execute sql: ', err);
});
}, (err) => {
console.error('Unable to open database: ', err);
});

@bergmito Storage uses SQLite behind the scenes so why not query method because it was available in beta 11. I don't see any reason to remove it in rc0.

@aggarwalankush clearly something has changed in beta 11 i used to do:
import { SqlStorage, Storage } from 'ionic-angular';
...
storage = new Storage(SqlStorage);

But after rc0 upgrade am getting following error:
/node_modules/ionic-angular/index"' has no exported member 'SqlStorage'.
@jgw96 did you guys get rid of SqlStorage ?

@okonon I also used to do same but now we have @ionic/storage which automatically uses Sqlite behind the scenes, I don't know where is query method? @mlynch implemented that in this commit, maybe he can answer 👍

+1 - was using Storage.query() heavily!

I'm having the same problem. In my app I have a "service" with a lot of queries that access and change data in my database (sqlite). I use the query method and return promises (it isn't working anymore too), will I have to change all my code because of this change?

Same here. I'm using the query method for everything.

Hi everyone,
I have passed this info along to the team and will keep you posted on this.
Thanks,
Dan

Additional Error (ionic rc 0)
When using example code from:
http://ionicframework.com/docs/v2/native/sqlite/
Got these errors (already try it on browser, emulator, ios device.. all the same) :
ERROR:  ReferenceError: sqlitePlugin is not defined     at http://localhost:8100/build/main.js:78458:13     at new t (http://localhost:8100/build/polyfills.js:3:15614)     at SQLite.openDatabase (http://localhost:8100/build/main.js:78457:16)     at new PCounter (http://localhost:8100/build/main.js:79945:24)     at DebugAppView._View_HomePage_Host0.createInternal (HomePage_Host.ngfactory.js:20:24)     at DebugAppView.AppView.create (http://localhost:8100/build/main.js:10658:21)     at DebugAppView.create (http://localhost:8100/build/main.js:10870:44)     at ComponentFactory.create (http://localhost:8100/build/main.js:6276:36)     at NavControllerBase._viewInit (http://localhost:8100/build/main.js:46701:44)     at NavControllerBase._transition (http://localhost:8100/build/main.js:46686:18)

I got the same - looking forward to hearing what we need to do!

Yes agreed, rightly or wrongly I was relying on Storage as an abstraction later to interact with a DB using .query - It would nicely abstract to websql or sqlite depending on whether I was working with "ionic serve" in the browser or against an actual device.

Another project broken here.  Following this decision, how should be be abstracting queryable storage to work in both browser (for debugging with ionic serve) and the device environments?
This seems like a pretty fundamental bit of functionality that Ionic 2 just lost :(

I hope they will restore it ASAP - a lot of projects are using that functionality.

@bergmito have you tried that code in RC.0 ?  I have tried it (straight from the docs) and it doesn't work for me?

This is urgent. RC0 is useless without Storage query method :/

Hi All,
I can't upgrade to rc0 😢   because of unavailability of query method so I'm unsure about below issue.
Following issue is not regarding query method, it's regarding get and set methods
Till beta 11, storage was in ionic-angular and it used to use kv as table name. https://github.com/driftyco/ionic/commit/f817ac0f6087e35e76086817e3a55c5c1b3fc4c1#diff-7e4a48359dfcc9528da611464b28ec11L87
Now from rc, storage has been moved @ionic/storage and as per my understanding, it uses _ionickv as table name https://github.com/driftyco/ionic-storage/blob/master/src/storage.ts#L42
But my app is in production with beta 11 and there would be lot of user data in kv table. So after upgrading to rc, how do I migrate kv table data to _ionickv?
Let me know if I can provide more details.
-Thanks

I'm having to downgrade to beta 11 to get this method back. I can't use a simple key/value store in my app sadly.

This is a important issue to solve!

@richardshergold yes. Here worked!! You add
providers: [
Storage
]
in app.module.ts?

I tried replace by SQLite, but it's not working here. An error related to NgModule :(

try replacing
this.storage.query("...")
with
this.db.executeSql("...", {})
you need two variables:
storage: Storage (get, set)
db: SQLite (executeSql)

@aldo-roman ReferenceError: sqlitePlugin is not defined.
I tried insert SQLite in AppModule, in the providers array, but not working

@bergmito Oh - I thought I'd tried that.  Will try again in the morning (late here in the UK).  Thanks

@drantunes did you add the plugin?
$ ionic plugin add cordova-sqlite-storage

@NickStemerdink yes.
The ionic plugin list returns cordova-sqlite-storage 1.4.7 as installed.
I think this issue is related to NgModule

@drantunes in app.module.ts
@NgModule({
  declarations: [
    MyApp,
    ...
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    ...
  ],
  providers: [Storage, SQLite]            // insert providers here
})
export class AppModule {}

Hey all, a query method doesn't make sense unless you know you are using SQLite. In that case, I think it's a better idea to use SQLite directly from ionic-native or from a sqlite plugin specifically: http://ionicframework.com/docs/v2/native/sqlite/
cc @danbucholtz. I don't think we should add this (also this issue belongs in https://github.com/driftyco/ionic-storage

@aldo-roman I did it, but not working yet.
I tried run in Android in live reload mode, and the Chrome inspect reported same error

@drantunes I think you also need to add it to the component, per Angular docs
I created an @Intectable() service and add that to my pages. Idk if that's the same setup for you.

@mlynch Thanks for the reply. If I use SQLite directly from ionic-native, it won't fallback to WebSQL(deprecated as you said). Then how can I test my app functionalities in browser? Do I need to do ionic build everytime and test in simulator/device? 😨

I get another error when using storage:
Error: Module<EMAIL_ADDRESS>does not export Storage (imported by C:\users\user\project.tmp\app\app.module.js)
What can i do?

@aggarwalankush If you are using SQLite directly, you can add the fallback to websql for testing in browser. This is just a convenience for testing. There is a misunderstanding.

If anyone else has trouble using Storage (in combination with firebase), look at this thread:
https://forum.ionicframework.com/t/error-module-node-modules-ionic-storage-dist-es5-index-js-does-not-export-storage/64903/4

I have now another issue:
When i'm injecting the storage, i get the following error:
TypeError: this.db.config is not a function
at new Storage (storage.js:38)
at NgModuleInjector.get (AppModule.ngfactory.js:343)
at NgModuleInjector.get (AppModule.ngfactory.js:373)
at NgModuleInjector.get (AppModule.ngfactory.js:383)
at NgModuleInjector.AppModuleInjector.getInternal (AppModule.ngfactory.js:522)
at NgModuleInjector.get (ng_module_factory.js:94)
at ElementInjector.get (element_injector.js:29)
at ElementInjector.get (element_injector.js:29)
at ElementInjector.get (element_injector.js:29)
at ReflectiveInjector._getByKeyDefault (reflective_injector.js:786)
Any ideas?

Hi all! Who can explain please or show little example how properly now using in rc0 Storage with sqlite ?

You need to use the sqlite plug in - see here
http://ionicframework.com/docs/v2/native/sqlite/

richardshergold, Thanks! Will this working now ? https://www.thepolyglotdeveloper.com/2015/12/use-sqlite-in-ionic-2-instead-of-local-storage/

Yes, that should help you.

richardshergold, Thanks!

@mlynch As @aggarwalankush said above, how are we supposed to fall back to websql when testing in a browser. The process was so seamless before, so i do not understand why query was removed at all. If I understand correctly, we now have to use the ionic-native SQLite plugin (which only works on the device), but use the Storage get/set API in the browser? Is that correct?

If ionic-native SQLite plugin only works on the device ? How debug it ?

@klochko7 same way as before? Safari for IOS, Chrome for android

davorpeic, Can I run app with ionic-native SQLite plugin and see result ?

@klochko7 no, ionic-native is for use only on device, it will not work in browser, but this is not new, please check http://ionicframework.com/docs/v2/native/ for more info.

I've created a quick example of how to use Sql storage by creating your own provider (based on the original), see this gist: https://gist.github.com/NickStemerdink/64c782807fc31b7bc9b529ad4b1d56d5
Note: this is just meant to point you in the right redirection and might still need some modifications.

davorpeic, Thanks! How now debug sqlite in browser ? We do not have console for error on device.

@klochko7 I think we are going off topic here, please consult documentation how to remote debug your app on device http://ionicframework.com/docs/v2/resources/developer-tips/#debugging-ios-safari

davorpeic , Thanks!

@zakton5 I will see if it makes sense to integrate a websql fallback. However, if browsers drop support for it, then it won't be very helpful. In that sense, I don't want you to rely on WebSQL existing, that will cause other pains down the road :)
Thanks everyone for responding and adding workarounds/etc. I will monitor this and see if we can't come up with a middle ground.

@mlynch can we fall back to IndexedDB instead of WebSQL?

@mlynch i guess if your Storage module is built on top of LocalForage it already has support for indexedDB. How do I tell Storage to use IndexedDB?

I would just like to add my two cents to the websql thing here. I would not be in favor of integrating any kind of websql fallback as I have seen some strong signals on the web that websql will be in danger of deprecation in chrome once indexedDB 2 hits, leaving Safari as the only browser that implements it. Also, websql is not a web standard anymore, and therefore is not being improved or maintained.

@jgw96 can we tell Storage to use IndexedDB

For those interested in the old engine, I think something we could do is create a similar module, like ionic-storage, but with just the old SqlStorage option. In fact, maybe it could be added to ionic-storage if you want to use SQL and you want to use the full sql engine. Then again, don't want folks to get hooked on WebSQL.
As for Storage to use IndexedDB, we are adding configuration shortly to specify that you wish to use it. For now, it doesn't really get you much because 1) it's not supported equally across browsers yet, and 2) as a key/value you'll get similar results to any of the other engines. However, we need to add this.

understood. thanks

Thank you @NickStemerdink,  your example worked like a charm!

@mlynch Consider 6 months from now, browser dropped WebSQL and my database is relying on Sqlite. There is no way to debug app in browser. Then the advantage of testing ionic apps in browser is gone. Like native apps, we have to rebuild and test in simulator/device.
Is that the future? 😢

So I would agree with what everyone is saying about WebSQL being deprecated. There is no sense in using and designing around if that is true. But its very unfortunate because my entire app was built around this API and using WebSQL to test in the browser, and there was no communication that this functionality would be removed. It would have been nice to have a temporary solution or at least keep WebSQL in the meantime until the IndexedDB functionality comes out.

@zakton5,
Here is the old code. Feel free to include in your app - but be aware WebSQL is going to drop at any point in time and we are not formally supporting this code or solution any more.
https://github.com/driftyco/ionic/tree/feature/progressbar/src/platform/storage
https://github.com/driftyco/ionic/blob/feature/progressbar/src/platform/storage.ts
Some of the code that it depends on is not a public API, so you'll have to read the src a bit to get it in good shape. It shouldn't be too hard to do, though.
Thanks,
Dan

Soluction
https://gist.github.com/NickStemerdink/64c782807fc31b7bc9b529ad4b1d56d5
if (this.platform.is('cordova')) {
            this.database = (<any>window).sqlitePlugin.openDatabase({name: this.db_name, location: 'default'}); //mobile
            } else {
                self.db = window.openDatabase(DB_CONFIG.name, '1.0', 'database', -1); //debug web
            }

So are we sure? In the rc0 and in the next rc, to manage database we have to use SqlLite, and WebSql for debug. Is it ok? Or Ionic team is thinking to another solution? I'm starting the porting from SqlStorage to SqlLite and I wouldn't  change again in the future my code.

There is no more sql storage was all moved to ionic / storage that does not support SQL queries more key value only so I posted the solution! above.
https://github.com/driftyco/ionic-storage

@aggarwalankush That is why you shouldn't rely on SQLite specifically if you want to run your app on Chrome. From https://github.com/driftyco/ionic-storage/blob/master/src/storage.ts:
 * When running in the web or as a Progressive Web App, Storage will attempt to use
 * IndexedDB, WebSQL, and localstorage, in that order.

From a PWA-oriented strategy, it makes a lot of sense to have a key-value store API that fallbacks transparently to whatever storage system is available. It's a great, dev-friendly default.
If you need a specific setup for you app or make queries, nobody prevents you from using your own Storage clone and define whatever fallbacks/drivers you like (e.g. only SQLite, IndexedDB, WebSQL). Come on, it's only 100 lines with comments, from which you would probably have to touch 10.

@FdezRomero That's exactly I did. I copied their storage and modified a little to use SQLite plugin from ionic-native. Any opinions if something is wrong or can be improved would be really useful.
sql.ts https://gist.github.com/aggarwalankush/0b700328e797e22a1d9994cb35afdf09

@danbucholtz Say i have an app that uses the beta.11 SqlStorage and delivers the app both as a mobile app but also deploy it as a web app, in mobile it uses SQLite, but in web browser fallback to WebSql, we rely heavily on the transaction methods delivered by both SQLite and WebSql in order to provide Offline support.
Most of that behavior is based on custom tables, tables that hold products, orders, bills and alike, those tables should still work on SQLite but if WebSql is being deprecated where should we look for Sql like storage on web browsers? or maybe an abstraction over IndexedDB that allows for transparent use of same api in both mobile or browser?

I've been looking to Lovefield as abstraction layer on top of IndexedDB to develop Relational Database like queries like selects, joins and others that make it easier to deal with tabular data (as it is my case since my app uses a lot of tabular data), but that seems to be a problem in mobile since the low memory triggers IndexedDB deletion issue, any insights about using that lib with Ionic 2?

Further to @NickStemerdink's solution, I have had to use the following function to process the results from sqlite (as it doesn't return an array/object on-device). Please correct me if I'm wrong, this is the only way I could get it working. Would love to use map, but there's nothing to map over.
return Observable.create(observer => {
      this.store.query('SELECT * FROM bookings')
        .then(results => observer.next(this._getResultsFromTransaction(results));
}
...

_getResultsFromTransaction(results){

    if(window.sqlitePlugin){
      let rows = results.res.rows;
      let items = [];

    	if(rows.length > 0){
    	  for(var i = 0; i < rows.length; i++){
    		  items.push(rows.item(i));
    	  }
        return items;
      } else {
        return [];
      }
    } else {
      console.log('indexeddb', results);
      return _.map(results.res.rows, item => item)
    }
  }

NickStemerdink , hi! I use your example, i did ionic plugin add cordova-sqlite-storage, but see in browser
Storage: SQLite plugin not installed, falling back to WebSQL. Make sure to install cordova-sqlite-storage in production!
Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-rc.0
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
OS: Windows 7 SP1
Node Version: v6.7.0
How can I solve this ? Help please..

@klochko7, the fallback is meant to be activated when using the browser, so this is correct behaviour and requires no changes.
Just make sure that your app also works as expected on a device. That should be the case if the cordova-sqlite-storage plugin is installed.

@NickStemerdink: Hey, I checked your workaround.  I understand the init process fallback, but I'm failing to see how the query method itself will fallback correctly in the browser?
It clearly goes straight to the SQLite.query method.
For example, if in my app I'm calling my storage service, how is this supposed to work?:
this.storageService.getUsers()

In my service (chopped for brevity):
export class StorageService() {
    // your query method here...

    getUsers() {
        return this.query('SELECT * FROM users').then((data) => {
           // ...
        });
    }

}

Obviously I'm missing something fundamental about your approach here.  Thanks.

I guess you are missing the abstraction layer in your example. See gist in this comment https://github.com/driftyco/ionic/issues/8269#issuecomment-250756711 for more information.
That will take care of initializing the correct database. The other methods will just refer to that database.
So after implementing the code from the gist, your code would look like:
export class StorageService(sql: Sql) {
    getUsers() {
        return this.sql.query('SELECT * FROM users').then((data) => {
           // ...
        });
    }
}

NickStemerdink, thanks.

@NickStemerdink: Thanks, very helpful of you. Good man.

I don't want to create another issue, but at the same time i hope it's not offtopic.
How can we use pre-populated databases now on RC0?

To build on top of @NickStemerdink's epic work, if anybody needs a batch function you can add it to the sql service like this:
batch(query:string, objects:any[]):Promise<any>{
      return new Promise((resolve, reject) => {
        try{
          let queries:any = _.map(objects, (object) => [query, object]);
          console.log(queries);
          this._db.sqlBatch(queries, function(){
            resolve();
          });
        } catch (err) {
          reject({err:err})
        }
      });
    }

Usage:
let objects = _.map(entries, entry => [entry.name, entry.id]);
        this.sql.batch(`insert into table (name, id) values (?,?)`, objects);

Its works!!!!!
I use this ExamplePage
Thanks @NickStemerdink

@NickStemerdink
thanks for the workaround...
I agree with @mlynch and the ionic team for reasons in taking this out.
What I think would be a good solution is to have an available interface for storage that supports sql like before RC0
Sql is a such a common solution in use as the main storage engine for both ios/android
Why not implement something like https://github.com/kripken/sql.js where we get sql as javascript in the browser, then on mobile it falls back to native sqlite?
I think while some apps use key/value stores its definitely not applicable to all applications and I don't think that framework should be that opinionated to not have a good sql option available for both in browser and app testing.

Agree with @seand88 this would be quite valuable for when we've otherwise coded our apps to be testable in the browser but direct SQLite makes the most sense for the persistence model on the actual device.
There just aren't alternatives with comparable secondary indexing performance that work seamlessly on the browser and the device—it's all on top of SQLite (or flat files that get rewritten wholesale...) in the device anyway, typically implementing interfaces that are really meant for massively parallel computing environments and not a mobile device. (For instance, the PouchDB developers themselves would tell you not to use PouchDB if you're not syncing with a CouchDB backend.)
Naturally the browser performance in this case would not be so critical since we'd be tuning for performance on the device; it seems we mainly just want the ability to functionally test in the browser that we don't get with the "more native" platforms.
Perhaps this could be done as a community effort?
Conversely, could this just be a matter of not being "good enough" at testing/debugging exclusively through emulators/devices? Maybe we just need to see the light and wouldn't miss the ability to test and debug in the browser?

@jkobylec
lets make this a community effort like you said.
I put the interface into one file for simplicity for now and removed the storage engine interface since we know its going to be sqlite.
I placed it in a repo here.
https://github.com/seand88/ionic2-sql-interface
Havent published an ionic module before but I will be working on integrating sql.js for the browser testing then can publish it as a module.
This should be a drop in replacement of one file for anyone else having issues with this. See the readme in the repo for instructions.

Thanks @seand88!
One thing I'd definitely want to set up in the build process if going the sql.js route in the future is to only include sql.js for the browser using ionic serve and not for device/emulator builds since sql.js is a quite hefty chunk of script (2 MB) that would be relevant only for in-browser testing. Does the new RC0 build model provide a straightforward way to configure something like this?

no idea i haven't looked into the build system internals yet.

@NickStemerdink Hey, quick question: I'm getting random occurrences of the:
Storage: Unable to create initial storage tables error on the actual devices when my app attempts to start from cold (i.e. not in the recent apps menu).
I'm providing the Sql class you gave us in my NgModule, so the whole app has access to it.
Any idea why this might be happening?
Cheers.

Dears,
I am using the solution of websql on browsers and sqlite on real devices, My problem is the transaction callbacks success and fail, They are reversed on the browser fail called instead of success and vice versa.
Example:
db.transaction((tx: any) => {
let vals, sql;
tx.executeSql(sql, vals, undefined, fail);
    },success , fail);
  });

on real devices success is called on success cases and fail is called on failure, but on browser fail is called for success and success is called on failure !!!!!!11
Am i misunderstood something ?
Anyone can help in this ?

@baffleinc Your solution about batch query works well on mobile devices, not in browser cause WebSQL doesn't support batch queries. I modified the function like this:
batch(query:string, objects:any[]): Promise<any> {
    return new Promise((resolve, reject) => {
      try {
        this._db.transaction((tx) => {
          var promises = objects.map((object) => {
            tx.executeSql(query, object);
          });
          Promise.all([promises])
            .then(() => {
              resolve();
            })
            .catch(err => {
              reject({ err: err });
            });
          },
          (err) => reject({ err: err }));
      } catch (err) {
        reject({ err: err });
      }
    });
  }

Hey, that will work but is not true batchSQL. you will notice significant
performance problems with 1000s of records!
I actually have an abstractor that does the above if on desktop, and uses
batchsql on mobile. Thinking of moving to pouchdb though!
On Wed., 2 Nov. 2016 at 5:29 am, Francesco<EMAIL_ADDRESS>wrote:

@baffleinc https://github.com/baffleinc Your solution about batch query
works well on mobile devices, not in browser cause WebSQL doesn't support
batch queries. I modified the function like this:
batch(query:string, objects:any[]): Promise {
return new Promise((resolve, reject) => {
try {
this._db.transaction((tx) => {
var promises = objects.map((object) => {
tx.executeSql(query, object);
});
Promise.all([promises])
.then(() => {
resolve();
})
.catch(err => {
reject({ err: err });
});
},
(err) => reject({ err: err }));
} catch (err) {
reject({ err: err });
}
});
}
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/driftyco/ionic/issues/8269#issuecomment-257652056,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABD99PMcyark1I7exbR6V38a_whOxo06ks5q54UhgaJpZM4KJScG
.

Hi,
Why SQLite calls transaction method has only one input param
transaction(fn: any): Promise;
while cordova plugin (https://github.com/litehelpers/Cordova-sqlite-storage) also has success and error callbacks
Sample below
  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS DemoTable (name, score)');
    tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Alice', 101]);
    tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Betty', 202]);
  }, function(error) {
    console.log('Transaction ERROR: ' + error.message);
  }, function() {
    console.log('Populated database OK');
  });

How did you get SQLite without the plugin?

ionic-native has this - see https://ionicframework.com/docs/v2/native/sqlite/

Are You guys really thinking that most of the people using sql database with their apps are glad to implement this  or similar kind of "tune-up" in their code instead of importing Storage and SqlStorage plugin? If You answered no, then I would like to know why didn't You also remove the ionic serve command? Because it was pretty useful for many of us to speed up the development. Now it is at least more useless than before this change..

If someone still facing issues using SQL properly in browser and device, I created a minimal demo repo -
https://github.com/aggarwalankush/ionic2-sql/tree/master/src/providers
Above repo handles platform ready event requires by SQLite plugin before making any queries. In this gist I forgot to wait for platform ready event and in device, my app was using WebSQL.
P.S. I'm still using WebSQL because it's not deprecated yet and I don't know what else can I use right now which will work perfectly in browser and device.

SQLite not work on browser
Storage don't support queries
= fail ionic update, can't really test anything on browser
Question : how do you make typescript accept "window.openDatabase" and "window.sqlitePlugin" because when I compile it keep saying error property is undefined ?

@flyingangel Here is an example for you

@anrtero Thanks it definitely save my day :)
The fallback really works on browser.

I updated sql example gist to wait for platform ready event. Without it, my production apps were unintentionally using WebSQL because sqlitePlugin is not available before platform ready event.

any solution? I want to keep using the query method!

@martingra  I placed it in a repo here.
https://github.com/seand88/ionic2-sql-interface
This will work fine for now testing in browser until chrome removes websql.

@seand88 you solutions might suffer race condition. You should wait for platform.ready event before checking win.sqliteplugin liked I did here https://gist.github.com/aggarwalankush/0b700328e797e22a1d9994cb35afdf09#file-sql-ts-L15

@aggarwalankush Its working fine. Can this code work in native ?

@hiranivipul yes it will use sqlite in physical device and WebSQL in browser.
Just remember to install cordova sqlite plugin with following command-
$ ionic plugin add cordova-sqlite-storage

@aggarwalankush  Your example is awesome.
But doing some tests i see that win.sqlitePlugin is initialized also debugging with Ripple.


📦(project) improve dependencies management

Purpose
Ralph can be used as a CLI, as a server, or as a library. To handle this complexity, we need to split dependencies.
Proposal
We decided to split dependencies to core and extra requirements:

the core package only contains dependencies to use Ralph as a library (mostly to use models in a python project),
the cli extra installs Click-related dependencies,
the backends extra installs all supported backends; it might also correspond to a library usage,
the lrs extra installs FastAPI-related dependencies for the LRS server implementation.

A full installation command would look like:
pip install ralph-malph[backends,cli,lrs]

While a library installation could be:
pip install ralph-malph

or
pip install ralph-malph[backends]

Depends on #217 for the Tray testing in the CI.

Ready for a new review! :pray:


Remove unused dependency either

Hi! I think the dependency either is not used in the project any longer and can be removed.

Thank you. Less is more :+1:


Only run GitHub actions if repo owner is SwiftLeeds

Only run GitHub actions if repo owner is SwiftLeeds.
This prevent workflow failures (as shown below) in forked repos.

This event allows your workflow to do things like label or comment on pull requests from forks. Avoid using this event if you need to build or run code from the pull request.

Hmm, reading the documentation a little more it seems this one isn't the right fit. It also hasn't run here which is strange.

This event allows your workflow to do things like label or comment on pull requests from forks. Avoid using this event if you need to build or run code from the pull request.

Hmm, reading the documentation a little more it seems this one isn't the right fit. It also hasn't run here which is strange.

I will revert that change, hopefully at some point we find a proper solution to that.


feature: be_approved rspec matcher for test response

Pull Request Test Coverage Report for Build 154

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.002%) to 99.038%

Totals

Change from base Build 153:
0.002%

Covered Lines:
412

Relevant Lines:
416

💛  - Coveralls


New version: GitHub.GitHubDesktop version 3.3.12

Pull request has been created with komac v2.1.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

Hi @vikingnope,
This manifest removes Apps and Features entries that are present in previous PR versions. These entries should be added to this version, to maintain version matching, and prevent the 'upgrade always available' situation with this package.
(Automated response - build 870.)


docs(dreamcode): function calling example

Preview 👀
closes #20, closes #11

I'm at a point where I want to try implement a higer-level API for function calling, so I'm going to go with the one specified in this PR. But please send your feedback, this is all very much in flux.


[External] GetHideValidationDialog in Service Header table

Hello, please add this procedure to the Service Header table to allow extensions to get the value of HideValidationDialog.
The same procedure is already present in Sales Header and Purchase Header.
    procedure GetHideValidationDialog(): Boolean
    begin
        exit(HideValidationDialog);
    end;

Thank you!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Allow clicking the  element of left sidebar links in /help/ page

We should be able to click the <li> element that holds the link element in the left sidebar of help page.

One small note @sawant: You can use zulipbot (http://zulip.readthedocs.io/en/latest/zulipbot-usage.html) to claim issues when you're working on a PR for an issue; that makes it easier for folks looking at views like https://github.com/zulip/zulip/issues to see which ones are still open :)


Fix #4152

beanFactory.isTypeMatch may lead to the initialization of FactoryBean,
dubbo consumer is a ReferenceBean which implements FactoryBean.
related to #2328 #3865
What's the purpose of this PR
XXXXX
Which issue(s) this PR fixes:
Fixes #
Brief changelog
XXXXX
Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Read the Contributing Guide before making this pull request.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit tests to verify the code.
[ ] Run mvn clean test to make sure this pull request doesn't break anything.
[ ] Update the CHANGES log.

Thanks for the quick fix, would you please also update the CHANGES.md?

@lonre I just found a problem that the getFactoryMethodMetadata used is only available from spring 4.1.1+, which is a breaking change as apollo shall support spring 3.1.1+
	/**
	 * Obtain metadata for this bean definition's factory method, if any.
	 * @return the factory method metadata, or {@code null} if none
	 * @since 4.1.1
	 */
	@Nullable
	MethodMetadata getFactoryMethodMetadata();


NS_ERROR_FAILURE: nsIPrincipal.origin

Having prefs.fsUris=true occasionally produces:
console.log: ipfs-firefox-addon: [JavaScript Error: "NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIPrincipal.origin]" {file: "resource://app/modules/sessionstore/SessionStorage.jsm" line: 78}]

@the8472 are you familiar with the origin of this error?  It seems to be related to https://github.com/lidel/ipfs-firefox-addon/issues/71

It basically means the session manager doesn't like pages without origin, in principle it's a bug in firefox, but implementing #71 would also prevent that.

Ok, so basically session storage is disabled and we have this bit verbose error in log, but no other side-effects.
I feel we can close this as a kind-of duplicate of #71


[Azure.Monitor.Query] Update autorest.md

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

https://github.com/Azure/azure-sdk-for-net/issues/24623

/azp run net - Azure.Monitory.Query - tests

/azp run net - Azure.Monitor.Query - tests-weekly

API change check
API changes are not detected in this pull request.

/check-enforcer override


❓ [Calibre & Mealie] Port Conflict (9090)

Which addon?
Calibre & Mealie
Addon or app?
Addons
Describe the solution you'd like
I would like to be able to run both of these addons without experiencing a port conflict
Describe alternatives you've considered
I've considered (and tried) running Calibre using Docker on my NAS instead, but am having some trouble with that. I'd prefer to use a Home Assistant addon.
Additional context
I am already running Mealie and have recipes saved to it. I'd very much prefer not to have to uninstall it as part of addressing this issue.

Hi, none of the those two addons use host_network so their ports should be customizable from the addon option page. Can you confirm that you have a conflict message even after having changed the published port ?

To be clear, you're suggesting changing the "Calibre wireless connection" from 9090 to a different value? Or do you mean I should change one of the other ports?

I mean that in the configuration panel, you change the port (such as 9090 if this is the one making the conflict) to something else, save and reboot


Snow-1847106 fix col*

Which Jira issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
<!---
In this section, please add a Snowflake Jira issue number.
<p>Note that if a corresponding GitHub issue exists, you should still include
the Snowflake Jira issue number. For example, for GitHub issue
https://github.com/snowflakedb/snowpark-python/issues/1400, you should
add "SNOW-1335071" here.
--->
Fixes SNOW-1847106

Fill out the following pre-review checklist:

[ ] I am adding a new automated test(s) to verify correctness of my new code

[ ] If this test skips Local Testing mode, I'm requesting review from @snowflakedb/local-testing

[ ] I am adding new logging messages
[ ] I am adding a new telemetry message
[ ] I am adding new credentials
[ ] I am adding a new dependency
[ ] If this is a new feature/behavior, I'm adding the Local Testing parity changes.
[ ] I acknowledge that I have ensured my changes to be thread-safe. Follow the link for more information: Thread-safe Developer Guidelines

Please describe how your code solves the related issue.
Please write a short description of how your code change solves the related issue.

I have read the CLA Document and I hereby sign the CLA


Add unit testing in continuous integration

Is your feature request related to a problem? Please describe.
This feature was discussed in PR https://github.com/awsaf49/gcvit-tf/pull/12.
For development, it would be helpful to perform unit testing for future commits and PRs. This assists in ensuring that no breaking changes are introduced.
Describe the solution you'd like
Unit tests should be performed in GitHub Actions for every commit, PR, and merge. Having the option to run tests through workflow dispatch would also be helpful.

Fixed in b0b43ba68421950726c7bdd91b81da5776401d16.


Unable to buy on bitstamp

(ERROR):	unable to buy: null { error: { all: [ 'You need $72.92 to open that order. You have only $72.91 available. Check your account balance for details.' ] } }
Something to with rounding i would guess.
Gekko v0.1.2
I have changed fees and slippage up and down, but no luck. Also looked into portfolioManager.js but i could not figure out where the problem is. Any help appriciated :)
My config is as follows
// Monitor the live market
config.watch = {
enabled: true,
exchange: 'Bitstamp', // 'MtGox', 'BTCe', 'Bitstamp', 'cexio' or 'kraken'
currency: 'USD',
asset: 'BTC'
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING TRADING ADVICE
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
config.tradingAdvisor = {
enabled: true,
method: 'DEMA',
candleSize: 30,
historySize: 30
}
// Exponential Moving Averages settings:
config.DEMA = {
// EMA weight (α)
// the higher the weight, the more smooth (and delayed) the line
short: 10,
long: 21,
// amount of candles to remember and base initial EMAs on
// the difference between the EMAs (to act as triggers)
thresholds: {
down: -0.025,
up: 0.025
}
};
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING PLUGINS
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Want Gekko to perform real trades on buy or sell advice?
// Enabling this will activate trades for the market being
// watched by config.watch
config.trader = {
enabled: true,
key: 'my_key',
secret: 'my_secret',
username: 'my_username' // your username, only fill in when using bitstamp or cexio
}
config.adviceLogger = {
enabled: true
}
// do you want Gekko to calculate the profit of its own advice?
config.profitSimulator = {
enabled: true,
// report the profit in the currency or the asset?
reportInCurrency: true,
// start balance, on what the current balance is compared with
simulationBalance: {
// these are in the unit types configured in the watcher.
asset: 1,
currency: 100,
},
// only want report after a sell? set to false.
verbose: true,
// how much fee in % does each trade cost?
fee: 0.5,
// how much slippage should Gekko assume per trade?
slippage: 0.05
}

@askmike is this still an issue?

I haven't seen it recently (did over 10 orders in the last few days). But needs a bigger sample size to rule it out

We now switched to Bitstamp's v2 API which handles rounding different, I am assuming this is fixed!


ImageNet-1k statistics?

Hello, thanks for the great work and the package.
Are there any plans to release ImageNet-1k statistics?
if not, I can try to do it, and provide the steps to reproduce.

Hi,
Thanks for the suggestion!
If you can provide me with the details of the dataset and steps to produce them, I can add these statistics too.

Gaurav

Hey, I could do it successfully using clean and legacy_pytorch modes.
I just needed to add the extension 'JPEG' to https://github.com/GaParmar/clean-fid/blob/main/cleanfid/utils.py#L50 because ImageNet-1k images have that extension. I think it would be nice to make the extensions parametrizable, I could do a PR for that.
Here is the link for the stats (training and validation stats for both clean and legacy_pytorch modes): https://drive.google.com/drive/folders/1q7b-hqc-xUUGi9fGzfI1gVlJYk2Jji5h?usp=sharing
For legacy_tensorflow, it did not work, it raised an exception:
 return torch.stack(batch, 0, out=out) RuntimeError: stack expects each tensor to be equal size, but got [3, 250, 250] at entry 0 and [3, 150, 200] at entry 1
Here are the steps to reproduce so that you can compare with the above stats if you would like:

Download ILSVRC2012_img_train.tar and ILSVRC2012_img_valid.tar from https://image-net.org/download.php
Extract training: tar xvf ILSVRC2012_img_train.tar -C train, which itself contains tars. Inside train: for v in *.tar;do tar xvf $v;done
Extract validation: tar xvf ILSVRC2012_img_train.tar -C valid
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_train", "train", mode="clean", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_train", "train", mode="legacy_pytorch", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_valid", "valid", mode="clean", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_valid", "valid", mode="legacy_pytorch", num_workers=8, batch_size=128)'

For training there are 1281167 images, and for valid 50000 images.
software stack:
torch==1.8.1+cu111
torchvision==0.9.1+cu111
numpy==1.19.0
scipy==1.6.3
pillow=8.2.0
requests==2.25.1
clean-fid==0.1.13

Also:
CUDA: 11.1.1
cuDNN: <IP_ADDRESS>

Thanks for providing the details.
I will take a look at the error with the "legacy_tensorflow" mode.
I will verify/test the statistics with some pretrained models and get back to you when I upload them.

Hi,
I would be more careful with the steps required in processing the ImageNet images. In the steps you have followed, you are resizing all ImageNet images without applying any crop. This might not be the commonly followed setting.
See Section A.1 in this paper for some details (https://arxiv.org/pdf/2006.10738.pdf)
Regards,
Gaurav

Hey, I could do it successfully using clean and legacy_pytorch modes. I just needed to add the extension 'JPEG' to https://github.com/GaParmar/clean-fid/blob/main/cleanfid/utils.py#L50 because ImageNet-1k images have that extension. I think it would be nice to make the extensions parametrizable, I could do a PR for that.
Here is the link for the stats (training and validation stats for both clean and legacy_pytorch modes): https://drive.google.com/drive/folders/1q7b-hqc-xUUGi9fGzfI1gVlJYk2Jji5h?usp=sharing
For legacy_tensorflow, it did not work, it raised an exception:  return torch.stack(batch, 0, out=out) RuntimeError: stack expects each tensor to be equal size, but got [3, 250, 250] at entry 0 and [3, 150, 200] at entry 1
Here are the steps to reproduce so that you can compare with the above stats if you would like:

Download ILSVRC2012_img_train.tar and ILSVRC2012_img_valid.tar from https://image-net.org/download.php
Extract training: tar xvf ILSVRC2012_img_train.tar -C train, which itself contains tars. Inside train: for v in *.tar;do tar xvf $v;done
Extract validation: tar xvf ILSVRC2012_img_train.tar -C valid
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_train", "train", mode="clean", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_train", "train", mode="legacy_pytorch", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_valid", "valid", mode="clean", num_workers=8, batch_size=128)'
python -c 'from cleanfid import fid;fid.make_custom_stats("imagenet1k_valid", "valid", mode="legacy_pytorch", num_workers=8, batch_size=128)'

For training there are 1281167 images, and for valid 50000 images.
software stack:
torch==1.8.1+cu111
torchvision==0.9.1+cu111
numpy==1.19.0
scipy==1.6.3
pillow=8.2.0
requests==2.25.1
clean-fid==0.1.13

Also:
CUDA: 11.1.1
cuDNN: <IP_ADDRESS>

Hi Mehdi, do you remember what image size did you use to rescale? 256x256 or 512x512?
The reason why I ask this is because of this.


Numbers and signs is a little difficult to see

BTW. I love this theme, thanks!

TO be fair it's the same for the VSCODE theme
Here a screenshot of vscode

I'm using the exact same colors as in vs-code.

Your font shows thinner than mine, so that also makes it darker in a way. For me it's light enough to easily read the text.
If you're using Kitty on macos, you can add the following in your config to improve the subpixel rendering: macos_thicken_font 0.5
Alacritty by default does "thicker" rendering.

Yes, I was thinking about it. I am using tilix I will find a way, thanks

ok! You can always override the LineNr highlight group after loading the theme as well if needed :)


#206: stretch-fill support

Adds support for feature request #206

Hey thanks for putting this together! I'll need to do some testing before merging it in.
I'm also not sure I'm sold on the name "stretch-fill", since it sounds like the image is not being stretched (distorted), but rather just scaled, yes?
It would also be great to have a test to go with this.

@reinink yeah, i'm not sure about the title too. It works more like contain-fill :) It was just the behaviour and name suggested by #206;
Because now it works same as contain, just contain, makes image smaller (crops transparent sides), and this one just fills it with a background color making image being the same size as requested.

Understood, okay, let me think on this.
Fair warning, I'm busy this week, and on holidays next week, so it will likely be the week after. 👍

I don't worry too much. I installed it from my own fork so i'm happy for myself :D just saw a related ticket :)

@reinink did you hve time to check this? I can have a look and merge if you're OK with it :)

@reinink did you hve time to check this? I can have a look and merge if you're OK with it :)

@tgalopin Negative, never had a chance. Feel free to proceed.
Note, maybe of the terminology that I've used for Glide is based on Imgix's API. I found they've done a pretty good job with their API. Obviously it doesn't have to match exactly, but it might be good to have a peak at their docs for some inspiration here. 👍

@tgalopin Negative, never had a chance. Feel free to proceed.
Note, maybe of the terminology that I've used for Glide is based on Imgix's API. I found they've done a pretty good job with their API. Obviously it doesn't have to match exactly, but it might be good to have a peak at their docs for some inspiration here. 👍

Thanks for the tip, I'll have a look!

Thanks for the tip, I'll have a look!

Implemented with name "fill-max" in #332.


only throw when the load_balancing_policy and specific fields of common_lb_config are set

Signed-off-by: wbpcode<EMAIL_ADDRESS>Commit Message: only throw when the load_balancing_policy and specific fields of common_lb_config are set
Additional Description:
An exception will be throwed when the common_lb_config and load_balancing_policy are set in the same time in the previous implemention.
But in fact, It should only throw an exception when the specific fields of common_lb_config and load_balancing_policy are set.
This PR correct it to make the behavior more appropriate.
Risk Level: Low.
Testing: Unit.
Docs Changes: n/a.
Release Notes: n/a.
Platform Specific Features: n/a.

Friendly ping @adisuissa

Seems that @lizan is too busy for this.
/assign-from @envoyproxy/senior-maintainers


Set EMBEDDED_CONTENT_CONTAINS_SWIFT to NO

Setting this to YES leads to Swift standard library being embedded in Cosmos.framework.
There is no need to do this as Swift standard library are provided by containing app (the app that uses Cosmos library).
If any framework contains Swift Standard Library, an error is raised while trying to submit to iTunes Connect.
ITMS-90206: "Invalid Bundle. The bundle at 'Livingroom.app/Frameworks/Cosmos.framework' contains disallowed file 'Frameworks'."

Thank you very much for the fix, @thelvis4. I have set this settings to YES in the past as a workaround to an issue in the interface builder. It looks like it was a bad idea and the issue does not show up in the latest Xcode anyway. Regards.


fix: Ensure server files never touch any class that imports from net.minecraft.client

fixes #14

I'm now doing development purely from a server/client model so this shouldn't be a problem in the future.

impleri/item-skills needs additional fixes to also work. impleri/mob-skills and impleri/dimension-skills did not throw any errors on player actions.


Format of Publish_Instruments

Dear all,
Could you please tell me which is the correct format of the Publish_Instruments.
I know that for Publish_Symbols is            string Publish_Symbols[1] = {"EURUSD"};
What is for , Instrument Publish_Instruments[] =???,  if I want EURUSD for 4 hour period???
Thank you in advance!!

I am trying different format but I am getting the following error:
'Publish_Instruments' - cannot be initialized with initializer list
Please help!!
Thank you,
Alex