Cancel pending operations

Is there no way to cancel pending operations other than spinning up a new database?
We have the requirement for the mobile user to sometimes say 'just refresh from the server and loose anything I've done locally'.  Is the only way of doing this is spin up a new database ?

Following commit in the 1.3.0 release: https://github.com/Azure/azure-mobile-services/commit/aa51d9fae89d734e8ef515501c37a79c67ef81a9
Allows purge to abort all pending operations on the table.

I noticed today that I am able to purge the pending changes, but it won't let me JUST purge the pending changes and not the actual table data. i.e.,
// this will delete pending changes, and then purge all rows in table
table.PurgeAsync("queryid", null, true, cancel).Wait();

// this will run if there are no pending changes
// if there are pending changes this throws an InvalidOperationException:
// "The table cannot be purged because it has pending operations."
table.PurgeAsync("queryid", "$filter=false", true, cancel).Wait();

I'm not sure why you can't force purge with a filter, anyone care to explain?

The general idea, to update purge to run the filter to get record Ids, purging just those pending ops, then purging the associated table data is possible.  The main complication would be how to deal with deletes in the queue. Since those are not in the SQL db, we'd need to figure out if we try to run the query against the stored items in the pending ops queue or ignore them and leave them pending.
At this time, it was mainly left out for simplicity reasons and to wait to see if it was a requested feature.

what do you recommend to simply wipe out any pending changes? I can manually scan the operations table to see which entities should be deleted and delete them before finally clearing the operations table (and errors table too?). I'm not sure if that is the best approach though, I was mostly hoping that your purge pending changes code would be available to call directly.

Ideally you could call the syncContext CancelAndUpdateItemAsync or CancelAndDiscardItemAsync for each op.  It looks like for some reason that takes an error and not an operation... Those two give you control over what you want to end up in the local db, while (hopefully) hiding implementation details.  Sadly you need to make an op error and probably get the op by doing a manual read.  Something we should improve here to make it easier to scan your ops, and handle them w/o triggering a push in this case.

I have ended up going with the simpler route and just allowing force purge (and immediate resync) to do it's thing and simply restrict that operation to only tables that I can detect pending operations on. I do think there is some value in automating the purge of pending ops and re-download of potentially deleted rows.
As a user of the SDK it's pretty low level to make this happen efficiently, but with access to all the internals it might be a little easier (not to mention familiarity with code). I'll keep my eye on this issue for sure though.

I encounter similar problem with patsissons. No way to modify pending content is really annoying. hope you could improve this soon

Would be great if there was a possibility of cancelling a specific pending operation that was not synced yet. Do you plan to implement it?

I also would be very interesting in canceling or clearing pending operations. I'm having a problem right now with a user adding an item to a table and later trying to remove it. The operations clash and cause issues

Performing selective canceling of pending operations is on our backlog currently. Can you elaborate the clash you mentioned?

I've been having instances where I'll delete an item and later try to re-add the same item (with the same Id) and get the exception a delete operation on the item is already in the queue which I know is thrown in the Validate function in DeleteOperation class. Of course it makes sense to throw that exception during normal operations since it no longer exists, but adding the same item back into queue shouldn't have this effect.

If the delete of record id X hasn't been synced to the server, the code can't tell if the reuse of the id is an undelete or a new item with an id clash.  Exposing the undelete method on the synctable API, could help with that case, and do the right thing (cancel the pending delete action, and replace it with an update operation instead (or no action if no changes exist between the old & new local items))
An insert + delete without a sync in the middle should result today like no action was taken, if this is not happening that should be a separate bug from this issue.

We are not accepting nor working feature requests on azure mobile services.  All attention has been moved to azure mobile apps.


[UI] Add box-shadow to the date picker popover.

Select one ...  (check one with "x")
[x] bug
[ ] feature request
[ ] enhancement

Expected behavior

Date picker popover should have the same box-shadow that other popovers have.
Note: Add the box-shadow for both the light and dark theme
Actual behavior

Date picker popover doesnt have a box shadow.
Reproduction of behavior
https://vmware.github.io/clarity/documentation/v0.11/datepicker
Environment details

Angular version: 4.x.x

Clarity version:

OS and version:

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

cc: @reddolan


Add useNativeDriver support

Default value is false.

@sidevesh
I think this PR is straightforward.
Let me know if you or anyone can review.

Closed in favour of #68


Pygion: crashes when running the pygion tests multiple times

To reproduce the error, we need to add for i in range(100): before this line https://gitlab.com/StanfordLegion/legion/-/blob/master/jupyter_notebook/ci_test.py#L36, and then run
legion_python ./ci_test.py -ll:py 1

In the 2nd iteration, pygion crashes with the following error:
[0 - 7f7cc0c1b800]    2.284031 {6}{python}: python exception occurred within task:
Traceback (most recent call last):
  File "/repo/bindings/python/pygion.py", line 1803, in __call__
    return self.execute_task(*args, **kwargs)
  File "/repo/bindings/python/pygion.py", line 1910, in execute_task
    result = self.body(*args)
  File "/repo/bindings/python/examples/must_epoch.py", line 44, in main
    assert global_var == 4123
AssertionError

@elliottslaughter Any ideas?

The failing test has global variables that you'll have to reinitialize if you want to do this:
https://gitlab.com/StanfordLegion/legion/-/blob/master/bindings/python/examples/must_epoch.py#L23
(And make sure to fence to avoid races.)
As it says in the test, "Don't do this at home."

Alternatively, you could just put the offending test outside of the loop and do the repeat-test on the remaining tests.

Thanks, I was trying to reproduce another bug and accidentally hit this error. If I can not run must_epoch.py multiple times, I will just not repeat it.

Close it as it has been solved.


Support for Multiple Portfolios

2023-DEC-11
Added support for Multiple Portfolios:
Filtering by Retail Portfolio ID
Added new filtering parameter retail_portfolio_id to List Orders and Create order.
Endpoints
Added the following new /portfolios endpoints:
List Portfolios
GET /portfolios
Create Portfolio
POST /portfolios
Move Portfolio Funds
POST /portfolios/move_funds
Get Portfolio Breakdown
GET /portfolios/{portfolio_uuid}
Delete Portfolio
DELETE /portfolios/{portfolio_uuid}
Edit Portfolio
PUT /portfolios/{portfolio_uuid}
see: https://docs.cloud.coinbase.com/advanced-trade-api/docs/changelog

After reviewing the docs it appears this feature is only supported when using the new Cloud API keys which cannot be used on SIWC APIs.
I am in favor of supporting this feature but support for Cloud API key authentication needs to be implemented first. Support to restrict usage of the SIWC APIs exposed by this library when using Cloud API keys will need to be added as well.

Added support in v3


fix linux binary requirements file

Pip wasn't finding the linux torch-cu116 dependency. This commit provides the necessary --extra-index-url so that the binary installer works on linux.

please let me know when this is fixed

superseded


Add a tick mark or color codes to show  the status of  student (currently Present in library or left)

closed by #17


Quarkus CRUDE Visits

GET /visits/{visitId} Get a visit by ID: works

POST /owners/{ownerId}/pets/{petId}/visits Adds a vet visit: works

PUT /visits/{visitId} Update a visit by ID: works


revisit sequence GB-s calculation

The sequence duration is the sum of the duration of each individual action in the sequence which are not sequences. This constitutes one term in the GB-s calculation (the s term). For the GB the sequence scheduler finds the max memory of all individual actions and uses that for the second term. Is this really what we intended or just a feature of the current implementation?

This is what we intended -- working as designed.


Forge impl of getRawColor() is very performant heavy.

Calling .getCapability() on the FrozenColorizer.item is using up a large amount of processing time, which is especially noticeable with slipways since they call FrozenColorizer.nextColor() multiple times per tick per slipway. I don't know what the solution to this would be exactly, unfortunately; I'm going to be caching a large number of results for .nextColor() on startup for now, and selecting one of those at random.

Huh. Irritatingly I think that's a problem with capabilities themselves.
Have you checked on Fabric? i know CC's have a lot of finagling in the background to make them as fast as a normal fn call.


feat: owlly api

Enhance getOwlly function with this to provide an API for our owllys :)
GET /owlly
GET /owlly/:id
POST /owlly

@peterpeterparker
Please check this description and let me know, if you need more information about this! It's basically an easy api for our initiatives, stored under /owlly.
I'm not sure, if we need to adjust the "admin" and initialize method in the firestore functions. we should do this somewhere in a separate .ts file and then import it in the others?

@sansan88

what's the goal of GET /owlly ?

where is POST /owlly is going to be called?

for scully, creating routes
to create Volksbegehren (initiativen+ Referendum)

NO POST


Cannot download thirdparty archives when build

Cannot download thirdparty archives when run build.sh

so,i copy the url from vars.sh and access the ur with chrome.
{"code":"NoSuchKey","message":"The specified key does not exist.","requestId":"f90e4a8e-71bf-4893-87d8-e90e228c628c"}

what should i do?
can anyone help me ?
Thanks!

@songzhandong
This problem has been fixed in #916, you can get and try it. Can you close this issue? if you are not convenient, I will close this issue next week.


Update ToWkt::write_wkt to not buffer string

[x] I agree to follow the project's code of conduct.
[ ] I added an entry to CHANGES.md if knowledge of this change could be valuable to users.
[x] I ran cargo fmt

This avoids buffering when writing WKT to std::io::Write. It's considerably faster:
geo: write small wkt    time:   [570.44 ns 573.74 ns 578.31 ns]
                        change: [-30.487% -29.975% -29.481%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) high mild
  8 (8.00%) high severe

geo: write big wkt      time:   [2.0220 ms 2.0300 ms 2.0405 ms]
                        change: [-19.849% -19.214% -18.603%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) high mild
  4 (4.00%) high severe

I updated the PR description. This is actually considerably faster than collecting a string and then writing that to the output buffer.


How to enable backpropagation for H265

Hello, very excellent work! I have a small question. In your paper, under the section "EXPERIMENTS D Application to Video Compression," you mention, "At the second stage, all the components in Fig. 12 are jointly trained for 50000 iterations (about 12.4 epochs)." Since H265 is not differentiable, I would like to know how you managed to implement joint optimization with backpropagation. Did you directly adopt the method from SelfC? Additionally, now that the paper has been accepted, when can the code be made open source?

Hello. Yes, we follow the settings in SelfC. We adopt the surrogate network and codec loss (L_{codec}) in SelfC (for approaching H.265), and use automatic differentiation of PyTorch during training. In our experiments, at the second stage we employ the surrogate network in the first 25000 iterations. We find that by removing the surrogate network and codec loss in the next 25000 iterations, the performance can be slightly better.
We are now carefully checking the codes. The testing codes, training codes and trained models will released as soon as possible.

Hi hahazh. We have uploaded our codes.
Inspired by your comments, in recent days we did a lot of experiments and found that by removing the codec loss for surrogate network, the performance can be almost the same or better. In our final codes, we set the coefficient of codec loss for the surrogate network to zero. Perhaps we can connect the outputs of the surrogate network with the decoding system to activate the surrogate network.
The whole system can be trained since we have the loss for low-resolution frames which can supervise the downsampling network. What's more, the parameters of the downsampling network and the pre-upsampling network are shared. When the parameters of the pre-upsampling networks are changed, the parameters of the downsampling network will also be changed.
For the fast implementation, we only use 50000 iterations for Stage 2. The performance may be further improved by employing more iterations.
Best regards.

Dear Dingyi:
Thank you for your timely and informative response. I have a few more questions I would like to discuss with you:
1.Why did you divide stage 2 into two sub-stages? From my understanding, the results of the first 25,000 iterations are for bicubically downsampled images (without quantization noise), while the latter 25,000 iterations consider quantization noise. Is this a progressive learning strategy, going from easy to difficult?
2.Why did you use different downsampling methods for the low-resolution supervision in stage 1 and stage 2? (Stage 1 used BD, and the first 25,000 iterations of stage 2 used BI). Does using different downsampling methods to supervise the downsampling network's output have a significant impact on the SR performance? We know that for video super-resolution tasks, the results of BD downsampling are often better than BI downsampling (perhaps because the Gaussian kernel downsampling has a wider coverage and implicitly embeds more information helpful for restoration). Does this conclusion still hold for video rescaling?
3.Neither the $L_{codec}$ in SelfC nor your current approach explicitly considers the bitrate, while end-to-end compression has a Rate term as a bitrate constraint, such as the entropy model in cheng2020[1]. Additionally, some image rescaling tasks for compression[2,3] have also introduced similar explicit bitrate loss terms. Do you think the bitrate constraint is necessary for the video rescaling task specifically? Based on your experimental results, if encoding is merely a sub-component of the video rescaling task, i.e., to better adapt to the compression artifacts in real-world applications, is the explicit bitrate constraint unnecessary?
My questions may be a bit abrupt, and some require further experimentations to verify. I am also working on video SR, video frame interpolation, and end-to-end compression-related projects, and I will continue to explore the above issues. I would be very pleased to have more discussions with you, and thank you again for your help!
ref:
[1]Learned Image Compression with Discretized Gaussian Mixture Likelihoods and Attention Modules
[2]Video Compression based on Jointly Learned Down-Sampling and Super-Resolution Networks
[3] An Efficient Content-aware Downsampling-based Video Compression Framework
Best regards.

Hello. We have checked and modified the descriptions in README.md. We will answer your questions detailedly later. Thank you for sharing the valuable references with us.
RDVR-H265: Combing our basic RDVR with H.265 video compression. There are two stages in trainning. For stage 1 we train a basic RDVR for scale factor of 2 with BD downsampling for 250000 iterations. The second stage has 50000 iterations with H.265 video compression. At the second stage (with 50000 iterations in total), BD downsampling is also utilized. We apply the BD downsampled frames for the inputs of H.265 encoding in the first 25000 iterations. We use the outputs of the downsampling network for the inputs of H.265 encoding in the next 25000 iterations at stage 2. We find that the two-step approach in Stage 2 leads to slight improvement in terms of MS-SSIM (about 0.0002 on average). Note that our final model is "RDVR-H265-Stage2-Step2".

Hi. As you can see in README.md, I have revised the descriptions of the details.
RDVR-H265: Combing our basic RDVR with H.265 video compression. There are two stages in trainning. For stage 1 we train a basic RDVR for scale factor of 2 with BD downsampling for 250000 iterations. The second stage has 50000 iterations with H.265 video compression. At the second stage (with 50000 iterations in total), BD downsampling is also utilized. We apply the BD downsampled frames for the inputs of H.265 encoding in the first 25000 iterations. We use the outputs of the downsampling network for the inputs of H.265 encoding in the next 25000 iterations at Stage 2. We find that the two-step approach at Stage 2 leads to slight improvement in terms of MS-SSIM (about 0.0002 on average), compared with the situation that Step 1 is removed and Step 2 has 50000 iterations. Note that our final model is "RDVR-H265-Stage2-Step2".
Here are my answers to your questions.

We find that a two-step approach at Stage 2 leads to small improvement in terms of MS-SSIM (0.0002 on average), compared with the situation that Step 1 is removed and Step 2 has 50000 iterations. Perhaps that the reason is that Step 1 is a good pre-training for reducing the learning difficulty at Step 2. In our final codes we use the two-step strategy at Stage 2.

In our experiments, we adopt Bicubic (BI) downsampling for RDVR, RDVR+ and RDVR++, for a fair comparison with MIMO-VRN and CLSA. We consistently employ BD downsampling for RDVR + H.265 for a fair comparison with SelfC + H.265. In video super-resolution, the PSNR and SSIM values of the results for BD downsampling are usually larger than those of BI downsampling. We found that in our experiments for RDVR and RDVR + H.265, this phenomenon also occurs at least for the scale factor of 2.

We didn’t introduce any bitrate loss in our previous experiments. We don’t know how bitrate loss can affect the performance of video rescaling + H.265. I guess that the bitrate loss can improve the performance, but the increase may be small. Since the low-resolution frames are forced to be similar to interpolation-based downsampled images, the bpp values of the H.265 encoded video may be in a small range for different models under the same scale factor. Note that the H.265 encoding procedure is fixed while the parameters of other learning-based video compression models can be modified by the bitrate loss. We are also wondering about the real effect of bitrate loss on video rescaling + video compression. Previously we read the paper of HyperThumbnail which used a bitrate loss. We didn’t find an ablation study on the loss. In the future, once your find or get some experimental results, please share with us if it is possible.

I’m glad to talk with you. You can contact with me here or through E-mail<EMAIL_ADDRESS>I hope that we can learn from each other and improve ourselves.
Best regards.

Thank you for your detailed response. I am also happy to keep in touch with you and share relevant experimental information at any time.


[MPWG- Marketing Calls for Q2] add to the calendar

We discussed this but no ticket yet. Here you go, John. Thank you!
Calls might be deleted, as per need by the monthly Stewards and those working on MPWG tasks.

Today, John created the Q2 potential calls in the zoom integration.
I went ahead and added them to the MP calendar for every other week when the Mktg meeting is not happening.
The idea is to have a secure space to use if/when  for example Trademark work needs live-discussion.
The pilot was the Budget call on April 5th, I believe that that time was valuable and effective to progress in the task at hand.
Any MicroProfile involved in the MPWG activities can make use of the 1hr. Agenda is required the Thursday before the call to the Marketing forum & / or Community forum (as applicable based on the topic)
Currently, only John & I have access to the be co-hosts of those calls.

Great! Thanks! If I understand the purpose of this correctly, we will need to use that already next week to move today's meeting to the 19th instead. Looping in @TetianaFTV as the call host (and myself as her co-host).

Correct, Rustam.
I have adjusted the calendar event from MPWG call to a regular marketing call. There is no extra steps to take, as the same call's processes apply.

oh and now, at least for Q2, the calls can be used for any relevant topic MicroProfilers deemed as a priority.


Align "Contract Interaction" modals to use same contract address input component

What it solves
Resolves #2313
How this PR fixes it
Uses <EthAddressInput /> to input the contract address. This component passes a handleScan to the <ScanQRWrapper /> separating the modal responsabilities.
How to test it
Go to "Contract Interaction", switch to Use custom data (hex encoded) and scan a QR code to input the Contract address. After scanning or uploading a QR code, the "Contract address" field shall be filled.
Screenshots

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 8 (0.0%)  changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.1%) to 31.687%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/routes/safe/components/Balances/SendModal/screens/ContractInteraction/SendCustomTx/index.tsx
0
8
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/routes/safe/components/Balances/SendModal/screens/ContractInteraction/index.tsx
1
0%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
2974

Relevant Lines:
8372

💛  - Coveralls

On inputting a valid Contract address with the option "Use custom data (hex encoded)", we were displaying the address with <EthHashInfo />.

I found it a good idea to align with the way we were displaying the Contract address with the option "Use custom data (hex encoded)" off and thus only displaying the form field with the Contract address

Works fine now. I can use the QR code for "Use custom data" modal just fine.
A gif:


Cleanup config files

This PR moves all entities related to the MHI-AC-Ctrl into the conf/*.yaml files. And any unrelated components out of them, and into the main lr_mhi_ac_ctrl.yaml config file.
These changes make it easier for users to include these config files in their own main device configuration without having to manually add the other entities such as the defrost and compressor protection status.
Entities unrelated to the MHI-AC-Ctrl (e.g. WiFi stats) have been moved out of these config files as they are not related to the core functionality that is provided by this component.
Top level inclusion is now done using packages (instead of the direct inclusion: <<: !include), which allows merging of e.g. the sensors: defined in multiple files when including.
Re-structuring the config files like this makes it easier for users to include this repo as a Submodule in their EspHome config directories without the need to make in-repo changes or to copy-paste most of the config files into their own. This keeps the Submodule clean and easier to stay up to date with any future changes.
This also greatly simplifies the main config file.
( mine: )

substitutions:
  # Unique device ID in HA
  deviceid: "mhi_ac_ctrl"
  # Unique device name in HA (sensor names will be prefixed by this name)
  devicename: "MHI-AC-Ctrl"

  friendly_name: ${devicename}
  hostname: "mhi-ac-ctrl"

packages:
  # Basic common boilerplate configuration:
  common: !include common/base_config.yaml
  # Use new 33B framesize to allow for Vanes control
  mhi-ac-ctrl: !include SubModules/MHI-AC-Ctrl-ESPHome/conf/large_framesize.yaml

esp8266:
  board: d1_mini

esphome:
  platformio_options:
    # Run CPU at 160Mhz to fix mhi_ac_ctrl_core.loop error: -2
    board_build.f_cpu: 160000000L
  includes:
    # https://github.com/ginkage/MHI-AC-Ctrl-ESPHome
    - SubModules/MHI-AC-Ctrl-ESPHome/mhi_ac_ctrl.h
    - SubModules/MHI-AC-Ctrl-ESPHome/MHI-AC-Ctrl-core.h
    - SubModules/MHI-AC-Ctrl-ESPHome/MHI-AC-Ctrl-core.cpp

api:
  services:
    # Call the set_vanes service from HA to set the vane position
    # Needed because the ESPHome Climate class does not support this natively
    # Possible values: 1-4: static positions, 5: swing, 0: unknown
    - service: set_vanes
      variables:
        value: int
      then:
        - lambda: |-
            return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value);

With some mis clicks frommy side, i made this from a small merge conflict to a giant mess... resolved it, tested and ready to merge


upgrade to 2.3.1 (latest current)

[ch34362]
WHAT
upgrade to 2.3.1 (latest current)

@christopherriley I think this change should be made here instead:

https://github.com/sagansystems/galaxy/blob/master/conf/charts/sumologic/values.yaml.gotmpl#L3

oh, thanks!

closing in favor of https://github.com/sagansystems/galaxy/pull/372


ambiguity_threshold not documented in "Fallback actions" page

It's currently only documented in the "Policies" page.

@erohmensing I would like to work can you please assign to me?
Need reviews on PR - https://github.com/RasaHQ/rasa/pull/5857

Thanks for taking this over @Archish27 🚀


💷 SPIKE: Investigate using AWS Lambda functions.

User Story
As a… Cloud Ops Engineer
I want to deliver the Bot with a priority on cost
So that… the bot doesn't cost too much
Value / Purpose
Current costs for running the bot are listed here: https://reports.cloud-platform.service.justice.gov.uk/namespace/cloudopsbot-prod
Useful Contacts
No response
Additional Information
Could we use DynamoDB for slack users?
Definition of Done
Investigate using other means of delivering the cloudopsbot, specifically look at Lambda functions.
Consider shutting the bot down if not cost efficient.

Added the use of DynamoDB
Also to clarify the costs on the namespace report they are all shared costs and by going into the namespace e.g. CloudOps bot you can see the costs and shared costs is not included.
Amazon Relational Database Service	61.33
Amazon DynamoDB	0.91

Spoke to an old colleague last Friday, this approach would involve creating AWS Lambda function(s) and an API endpoint. This would all have to be done in Terraform, at this moment I don't believe this offers enough value as a solution for us. We'd also have to significantly re-engineer the bots DB to somewhere in AWS.


Save stack (work) says something changed when it didn't

Hi again :)
I have a CI job where I'm testing cache-s3, I run the build twice in a row and expect the second build to not save a new cache since nothing should have changed. However, it still says there were changes and uploads anyway (adding 4m33s).

Restore cache output
#!/bin/bash -eo pipefail
# Restore ~/.stack
~/.local/bin/cache-s3 \
  --bucket frontrow-ops \
  --prefix ci-cache/build-backend \
  restore stack --base-branch master

# Restore */.stack-work
~/.local/bin/cache-s3 \
  --bucket frontrow-ops \
  --prefix ci-cache/build-backend \
  restore stack work --base-branch master
[cache-s3][Info ][Thu, 27 Feb 2020 22:39:35 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack.cache> - Restoring cache from Thu, 27 Feb 2020 22:05:47 UTC with total size: 954.5 MiB
[cache-s3][Info ][Thu, 27 Feb 2020 22:39:38 UTC]: Progress: 10%, speed: 30.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:39:46 UTC]: Progress: 20%, speed: 12.2 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:39:54 UTC]: Progress: 30%, speed: 12.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:02 UTC]: Progress: 40%, speed: 11.1 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:11 UTC]: Progress: 50%, speed: 11.4 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:13 UTC]: Progress: 60%, speed: 40.6 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:19 UTC]: Progress: 70%, speed: 16.0 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:26 UTC]: Progress: 80%, speed: 13.2 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:35 UTC]: Progress: 90%, speed: 11.0 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:42 UTC]: Progress: 100%, speed: 13.7 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:42 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack.cache> - Successfully restored previous cache with hash: 8utS22ULekcFD1Zitvp1S8hXpJZ9n+E0ykvCZ56EdiY=
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:42 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack-work.cache> - Restoring cache from Thu, 27 Feb 2020 22:07:46 UTC with total size: 494.0 MiB
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:46 UTC]: Progress: 10%, speed: 14.6 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:49 UTC]: Progress: 20%, speed: 13.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:53 UTC]: Progress: 30%, speed: 14.3 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:40:57 UTC]: Progress: 40%, speed: 12.5 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:02 UTC]: Progress: 50%, speed: 10.6 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:07 UTC]: Progress: 60%, speed: 9.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:11 UTC]: Progress: 70%, speed: 11.4 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:15 UTC]: Progress: 80%, speed: 13.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:19 UTC]: Progress: 90%, speed: 11.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:23 UTC]: Progress: 100%, speed: 11.5 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:23 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack-work.cache> - Successfully restored previous cache with hash: LpHpIK1K8NOKmGaHTPPW2w3Wq3y9kMaKqz6QUYqXFpc=
CircleCI received exit code 0

Build step, showing no compilation happens -- i.e. nothing changed
#!/bin/bash -eo pipefail
# NB: We need to name all our packages explicitly to avoid packages
# which are dependencies to other packages from being built by this
# command.
packages=$(
  find . -type f \
    -not -wholename '*/.stack-work/*' \
    -name package.yaml \
    -printf '%h\n' | sed 's|.*/||'
)
stack build --no-terminal \
  --only-dependencies $packages
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
CircleCI received exit code 0

#!/bin/bash -eo pipefail
mkdir -p /tmp/workspace/dist/backend-binaries

# Build non-master backend with --fast to speed things up
stack-build() {
  if [ "$CIRCLE_BRANCH" = master ]; then
    stack build "$@"
  else
    stack build --fast "$@"
  fi
}

stack-build --no-terminal \
  --ghc-options '-j +RTS -A64m -n2m -RTS' \
  --pedantic \
  --copy-bins \
  --local-bin-path \
  /tmp/workspace/dist/backend-binaries | ts
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/build-standard-fixtures to /tmp/workspace/dist/backend-binaries/build-standard-fixtures
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/data-gen to /tmp/workspace/dist/backend-binaries/data-gen
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/fancy-api to /tmp/workspace/dist/backend-binaries/fancy-api
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/fancy-api-mkroutes to /tmp/workspace/dist/backend-binaries/fancy-api-mkroutes
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/fancy-api-routes to /tmp/workspace/dist/backend-binaries/fancy-api-routes
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/jobs to /tmp/workspace/dist/backend-binaries/jobs
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/provision to /tmp/workspace/dist/backend-binaries/provision
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/sync-school-class-link to /tmp/workspace/dist/backend-binaries/sync-school-class-link
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/text-assets to /tmp/workspace/dist/backend-binaries/text-assets
Copying from /root/megarepo/backend/.stack-work/install/x86_64-linux/6eca7dcc4c00c5efff615b45d8027edbda3e13cd0db69a175f918a0c4613d613/8.8.2/bin/verify to /tmp/workspace/dist/backend-binaries/verify

Copied executables to /tmp/workspace/dist/backend-binaries:
- build-standard-fixtures
- data-gen
- fancy-api
- fancy-api-mkroutes
- fancy-api-routes
- jobs
- provision
- sync-school-class-link
- text-assets
- verify

Warning: Installation path /tmp/workspace/dist/backend-binaries
         not found on the PATH environment variable.
CircleCI received exit code 0

Save cache step, which shouldn't do any uploading, but does
#!/bin/bash -eo pipefail
# Cache ~/.stack
~/.local/bin/cache-s3 \
  --bucket frontrow-ops \
  --prefix ci-cache/build-backend \
  save stack

# Cache ~/.stack-work
~/.local/bin/cache-s3 \
  --bucket frontrow-ops \
  --prefix ci-cache/build-backend \
  save stack work
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
[cache-s3][Info ][Thu, 27 Feb 2020 22:41:29 UTC]: Caching: /root/.stack
[cache-s3][Info ][Thu, 27 Feb 2020 22:43:54 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack.cache> - Data change detected, caching 954.3 MiB with sha256: xbj5BhKf446PcC0pj4pTDUvMkC36ZBepBv9TTMk3vxU=
[cache-s3][Info ][Thu, 27 Feb 2020 22:43:55 UTC]: Progress: 10%, speed: 161.7 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:43:57 UTC]: Progress: 20%, speed: 46.7 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:43:59 UTC]: Progress: 30%, speed: 48.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:01 UTC]: Progress: 40%, speed: 46.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:03 UTC]: Progress: 50%, speed: 44.6 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:05 UTC]: Progress: 60%, speed: 47.3 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:07 UTC]: Progress: 70%, speed: 45.4 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:09 UTC]: Progress: 80%, speed: 43.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:11 UTC]: Progress: 90%, speed: 46.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:13 UTC]: Progress: 100%, speed: 49.0 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:14 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack.cache> - Average speed: 47.7 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:14 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack.cache> - Finished uploading. Files are cached on S3.
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/core/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/data-gen/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/entities/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/fancy-api/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/frontrow-app/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/jobs/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/provisioning/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/roster-management/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:44:15 UTC]: Caching: /root/megarepo/backend/text-assets/.stack-work
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:50 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack-work.cache> - Data change detected, caching 494.0 MiB with sha256: BRj4kPTgYz2CBSWoZ+IazcWLVQARCJkpTS+VYNKahCY=
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:50 UTC]: Progress: 10%, speed: 124.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:51 UTC]: Progress: 20%, speed: 188.2 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:52 UTC]: Progress: 30%, speed: 28.2 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:53 UTC]: Progress: 40%, speed: 191.5 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:55 UTC]: Progress: 50%, speed: 28.1 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:55 UTC]: Progress: 60%, speed: 190.4 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:57 UTC]: Progress: 70%, speed: 26.6 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:57 UTC]: Progress: 80%, speed: 178.9 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:59 UTC]: Progress: 90%, speed: 22.1 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:45:59 UTC]: Progress: 100%, speed: 174.1 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:46:01 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack-work.cache> - Average speed: 44.8 MiB/s
[cache-s3][Info ][Thu, 27 Feb 2020 22:46:01 UTC]: <cache-s3/ci-cache/build-backend/pb/cache-s3../snapshot.yaml.stack-work.cache> - Finished uploading. Files are cached on S3.

Am I don't something incorrectly again?

From a higher level overview it seems like you are doing everything right. Here are things to keep in mind:

cache-s3 only looks at the contents of the cached directories. According to the computed hash it looks like something in those directories has changed.
any change, even to file modification time can trigger the new cache to be uploaded, so it doesn't have to be the contents of some file that have changed
It is unlikely that cache-s3 is the culprit here. It is possible that stack or something else does some slight adjustment, which triggers cache-s3 to replace the full cache.

The most straightforward way to debug this is to download the cache file from the s3 bucket before the build and another after the build and compare what exactly has changed. Those cache files are just regular .tar.gz files so you can use any of the off the shelf tools to inspect them.
Let me know how it goes.

Thanks for giving this some thought, I'll pull down the archives and work out what file has changed and report back.
We've struggled with similar problems with some Shake timestamp-based caches, so it's possible Circle specifically does something weird timestamp-wise. Just to confirm: you have seen cache-s3 actually not upload new caches in y our own no-compilation jobs on your CI?

Naturally, here is a recent example

you have seen cache-s3 actually not upload new caches in y our own no-compilation jobs on your CI?

I believe you, but for that specific example, I see the .stack-work save saw a data change there.

Of course, that is because we use stack install on CI, which copies the binary, so it is expected to update .stack-work cache on every build. See this line

Makes sense. It's just not an accurate test then. We install the binaries elsewhere, so I wouldn't expect that to cause a cache miss.

Not sure what you mean by this?

It's just not an accurate test then

Ah, sorry, I was just imprecise before. I should've said, you have seen cache-s3 actually not upload new caches in your own no-compilation jobs on your CI [for stack save work where you've not installed the bins in .stack-work]? This example wouldn't be an accurate test of that case (which is our case).

I see what you mean. With that in mind I can tell you for sure that I have seen it not upload .stack-work when the cache did not change. I just can't come up with an example for you, since we mostly use cache-s3 on closed source projects. It could be the case that something changed in stack recently, I don't know.
Your best bet is to inspect the cache and find out what exactly is different between two runs in the cache. This problem is not cache-s3 specific and would be triggered with native CI caching as well, it would be just much harder to debug it.

This problem is not cache-s3 specific and would be triggered with native CI caching as well

It's a bit of a cheat, but on Circle you typically create your cache key(s) based source files' contents, not the actual things you're caching, which, as mentioned, may differ in minor ways for unimportant reasons. So we checksum stack.yaml/snapshot.yaml as the cache key for (the equivalent to) save stack and we checksum the output of git ls-files | xargs md5sum as the cache key for (the equivalent to) save stack work. It works really well, cache hit-wise anyway.

For what it's worth, we've moved away from this strategy and I won't be able to investigate this further any time soon. Feel free to close as stale!


CLOUD-913 added json converter tests

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1632/


How best to parameterize a "return" transition of a state

Example: A leveling system, which has a LEVELING state.
This LEVELING state can be started by a external LEVEL command. This will start actuators based on an MPU until the platform is level and state will return to IDLING
But the system also has  an EXTEND_LEVEL command, which will raise the platform level as far a possible.
The EXTENDING_LEVEL state raises the platform by starting all actuators, but when its not level anymore, it will transition to state LEVELING. When its LEVEL again, it will continue raising the platform until MAX_LIMIT is reached.
So the LEVELING state can be started from IDLING state and from EXTENDING_LEVEL state and has to return to that state when the platform is level.
What is the best way  to tell the LEVELING state to which state it has to transition when the platform is LEVEL?

I think I've found the answer myself ;)
I should add a Transition parameter to LEVELING state OnEnter() method with the return transition, and store this locally
This should work, right?

I should add a Transition parameter to LEVELING state OnEnter() method with the return transition, and store this locally
This should work, right?

Yep, that should work just fine!

Your documentation is really complete and very helpfull!

Thanks! Glad it's helping :)


New TileSet editor: set_tile only writes NULL

Godot version
4.0 dev
System information
2017 macbook pro
Issue description
Godot version
4.0alpha
System information
mac book pro
Issue description
only seems to write NULL into the map.
Steps to reproduce
I have included a project that demonstrates this.
Minimal reproduction project
Uploading tile_set issue.zip…
Steps to reproduce
run the included project
Minimal reproduction project
tile_set issue.zip

There's an error in your code. You need to specify the alternative_tile as 0 as the last argument of your function:
$TileMap.set_cell (  layer,  mapcoords,  sourceid, atlascoords, 0)
We should most likely document that, as the default values are for clearing a cell by default.

That works.  Thanks.  No way to have known yes, documentation.  :)

Would it be more expected for users if the default value was 0, and -1 had to be passed explicitly to clear the cell?

Would it be more expected for users if the default value was 0, and -1 had to be passed explicitly to clear the cell?

Yeah that makes sense.

Fixed by #58659.


[WIP] Add ScheduledExecutorService

@zml2008 has asked if I was willing to contribute my implementation of the standard ExecutorService (Original post: Sponge forums) to the project, this implementation delegates the execution of its tasks to the existing SchedulerService.
While most of the implementation is based on the original version (https://gist.github.com/Kiskae/5c44ea146857ca173170), I went through the contract of the ScheduledExecutorService again and changed the implementation to be more compliant:

The schedule(AtFixedRate|WithFixedDelay) methods would not execute more than once due to the implementation of FutureTask preventing multiple executions, the private class RepeatableFutureTask solves this issue
The contract of the  schedule(AtFixedRate|WithFixedDelay) methods specify that they should stop executing when they encounter an exception. Sponge tasks do not stop when they encounter an exception so the RepeatableFutureTask will cancel its parent task if an exception occurs.

TODO the SchedulerService implementation prints to the log when an exception occurs, should this behaviour be replicated in the RepeatableFutureTask. Otherwise it can fail completely silently.

ScheduledFuture.getDelay(TimeUnit) specifies that it must return the amount of time UNTIL the next execution, the previous implementation simply returned Sponge's Task.getDelay(), which is the original execution delay. The implementation now tries to approximate the delay until the next execution.

TODO Decide whether the following should be implemented: This could be made more accurate (and less hacky) by moving a part of the SpongeFuture implementation to SpongeCommon, where the timestamp value is available.

Other changes made to better integrate with Sponge:

Added syncExecutor(Object) and asyncExecutor(Object) to the SchedulerService, they take a plugin instance and return the ExecutorService
Removed the ability to customize the task names, given that it is an abstraction over the SchedulerService, the default naming based on creation order makes the most sense anyway.

What will this PR allow for?
Through this pull request it is possible to use many of the concurrency frameworks that are available on the JVM, since many use the ExecutorService as basis for the execution of whatever they do.
Known frameworks that support execution through an arbitrary executorservice are:

RxJava: A custom Scheduler can be used - Schedulers.from(game.getScheduler().syncExecutor(this))
Java 8 CompletableFuture: All the *Async methods have an overload that accepts an Executor to run on.
Scala Futures: All futures take an implicit ExecutionContext - ExecutionContext.fromExecutorService(game.getScheduler().syncExecutor(this))

Example of usage:
final Server s = game.getServer();
ExecutorService executor = game.getScheduler().syncExecutor(this);
ObserableFuture<UUID> futurePlayerId = someSource();
futurePlayerId.thenApplyAsync((playerUUID) -> {
    //Any actions performed here are thread-safe!
    final Player p = server.getPlayer(playerUUID).get();
    //Modify the world at the players location
    return player;
}, executor).thenApply((player) -> {
    //Beware, this also runs on the server thread, use another *Async call to move to another thread
      player.kick();
    return player.getName();
}).thenApplyAsync((playerName) -> {
    //This is no longer thread-safe, but will not risk blocking the main thread
    computeNameCoolnessVerySlow(playerName);
});

Regarding the current implementation of ScheduledFuture.getDelay(TimeUnit), the approximation works but it will slowly get out of sync with the actual delay for repeating tasks due to the actual delay between scheduled time and execution time. However given that getDelay depends on the current time to calculate the delay I doubt any large libraries rely on the accuracy of this value for ordering.
If we wanted an accurate implementation then it would be possible to move the SpongeFuture implementation to SpongeCommon and make the ExecutorService abstract, so the creation of the SpongeFutures can be delegated to a subclass that knows the correct time.

Thanks a ton for PRing this!
A few things:

I think it would make sense to also expose this executor through Guice as you mentioned in your PM -- an ExecutorService per plugin -- so binding ExecutorServices to the appropriate implementaion.
Because this is an implementation item, I'll hook it up when merging the PR so you don't have to deal with another branch. However, to separate sync vs async services, it would probably make sense to add an @Async annotation that would be used to mark the async scheduler (and sync is unannotated or @Sync -- I'm leaning towards unannotated but thoughts?)

Would implementing shutdown()/awaitTermination() by cancelling all tasks started through the service make sense? This might be useful in some cases --if a plugin wants to manage tasks differently or something.

For the delay calculation, it's probably fine to move that to common -- really you could move the whole SpongeExecutorService to common and just return ScheduledExecutorService from the API methods.

@zml2008

Injection would be trivially implemented as a provider:

@Provides @Sync
SpongeExecutorService provideSyncExecutor(SchedulerService ss, PluginContainer plugin) {
    return ss.syncExecutor(plugin.getInstance())
}

I don't believe it makes sense when you combine it with the Guice injection support, since the contract specifies that no more tasks can be scheduled after shutdown() has been called. There is also the issue of identifying the tasks that were scheduled through the executor, which would require either maintaining a list and using ListenableFutures to clear out finished futures.
With the delay change, I presume the preferrable solution would be to reduce the class on the API side to just the interfaces, and move all of the implementation to SpongeCommon?

As a small side-note, while figuring out the actual contract of getDelay by looking at the reference implementation, I noted that all of java.concurrent uses System.nanoTime rather than System.currentTimeMillis, since nanoTime is guaranteed to be monotonic. It might be a good idea to replace currentTimeMillis with nanoTime.

Implementation pushed to SpongePowered/SpongeCommon#151

ok great. I see your point about shutdown() not making sense to implement -- would probably be good to stick a comment about that in the implementation for clarity, since it's not necessarily immediately obvious.
Using System.nanoTime instead is probably a good idea too -- since currentTimeMillis may go backwards or skip with leap seconds or system time corrections.

@zml2008 I've implemented those two points on the SpongeCommon PR.
We only need to figure out whether the executor should log exceptions like SchedulerBase does, since it would otherwise silently cancel a repeating task?

imo the best to do here it so match the documented behavior of ScheduledExecutorService, setting the thrown exception as the result of the future. Since the future is run through the executor service, I'd expect whatever is scheduling the future to be the one handling the exception, so not sure if it really makes sense to pass the exception through to the scheduler, instead just cancel the task.

After considering it I agree, the exceptions are captured by the Future pattern and the Executor.submit method delegates exceptions to the underlying thread, which is handled by Sponge's Scheduler.
@zml2008 The current PRs should be functionally complete, the only thing that has been discussed and is still missing are the guice providers.

awesome! I'll let this sit for another day or two just in case anyone has other comments

Forgot to close this, lol. Nice work @Kiskae


add jsonnet file extension

Jsonnet is a JSON templating language;
http://jsonnet.org

Thanks! This is part of 1.4.2


Evaluate: core42/jais-XX

For XX in [13b, 13b-chat, 30b-v3, 30b-chat-v3]:
Check upon issue creation:

[x] The model has not been evaluated yet and doesn't show up on the CoT Leaderboard.
[x] There is no evaluation request issue for the model in the repo.
[x] The parameters below have been adapted and shall be used.

Parameters:
NEXT_MODEL_PATH=core42/jais-{XX}
NEXT_MODEL_REVISION=main
NEXT_MODEL_PRECISION=bfloat16
MAX_LENGTH=2048
GPU_MEMORY_UTILIZATION=0.7
VLLM_SWAP_SPACE=8

ToDos:

[ ] Run cot-eval pipeline
[ ] Merge pull requests for cot-eval results datats (> @ggbetz)
[ ] Create eval request record to update metadata on leaderboard (> @ggbetz)

Looks like a tricky one here, will look into where this is coming in:
2024-05-10T22:36:35.181385695Z INFO 05-10 22:36:35 selector.py:16] Using FlashAttention backend.
2024-05-10T22:36:36.885485950Z (RayWorkerVllm pid=7595) INFO 05-10 22:36:36 selector.py:16] Using FlashAttention backend.
2024-05-10T22:36:36.885536750Z (RayWorkerVllm pid=7595) INFO 05-10 22:36:36 pynccl_utils.py:45] vLLM is using nccl==2.18.1
2024-05-10T22:36:36.885543520Z INFO 05-10 22:36:36 pynccl_utils.py:45] vLLM is using nccl==2.18.1
2024-05-10T22:36:41.312005618Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44] Error executing method load_model. This might cause deadlock in distributed execution.
2024-05-10T22:36:41.312037008Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44] Traceback (most recent call last):
2024-05-10T22:36:41.312043168Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/engine/ray_utils.py", line 37, in execute_method
2024-05-10T22:36:41.312049198Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     return executor(*args, **kwargs)
2024-05-10T22:36:41.312054648Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/worker/worker.py", line 107, in load_model
2024-05-10T22:36:41.312060448Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.model_runner.load_model()
2024-05-10T22:36:41.312065698Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/worker/model_runner.py", line 95, in load_model
2024-05-10T22:36:41.312071528Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.model = get_model(
2024-05-10T22:36:41.312098688Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/model_loader.py", line 91, in get_model
2024-05-10T22:36:41.312104668Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     model = model_class(model_config.hf_config, linear_method)
2024-05-10T22:36:41.312110048Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/jais.py", line 270, in __init__
2024-05-10T22:36:41.312115687Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.transformer = JAISModel(config, linear_method)
2024-05-10T22:36:41.312120977Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/jais.py", line 230, in __init__
2024-05-10T22:36:41.312126507Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.h = nn.ModuleList([
2024-05-10T22:36:41.312132687Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/jais.py", line 231, in <listcomp>
2024-05-10T22:36:41.312138737Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     JAISBlock(config, linear_method)
2024-05-10T22:36:41.312144097Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/jais.py", line 183, in __init__
2024-05-10T22:36:41.312149707Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.mlp = JAISMLP(inner_dim, config, linear_method)
2024-05-10T22:36:41.312155027Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/jais.py", line 137, in __init__
2024-05-10T22:36:41.312160747Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.c_fc = ColumnParallelLinear(
2024-05-10T22:36:41.312165967Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/layers/linear.py", line 173, in __init__
2024-05-10T22:36:41.312171587Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     self.output_size_per_partition = divide(output_size, tp_size)
2024-05-10T22:36:41.312176897Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/parallel_utils/utils.py", line 19, in divide
2024-05-10T22:36:41.312182467Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     ensure_divisibility(numerator, denominator)
2024-05-10T22:36:41.312187737Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]   File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/parallel_utils/utils.py", line 12, in ensure_divisibility
2024-05-10T22:36:41.312199477Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44]     assert numerator % denominator == 0, "{} is not divisible by {}".format(
2024-05-10T22:36:41.312205177Z (RayWorkerVllm pid=7595) ERROR 05-10 22:36:41 ray_utils.py:44] AssertionError: 13653 is not divisible by 4
2024-05-10T22:36:41.312211187Z (RayWorkerVllm pid=7380) INFO 05-10 22:36:36 selector.py:16] Using FlashAttention backend. [repeated 2x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)
2024-05-10T22:36:41.313330131Z Traceback (most recent call last):
2024-05-10T22:36:41.313366891Z   File "/usr/local/bin/cot-eval", line 8, in <module>
2024-05-10T22:36:41.313526370Z     sys.exit(main())
2024-05-10T22:36:41.313550730Z   File "/workspace/cot-eval/src/cot_eval/__main__.py", line 149, in main
2024-05-10T22:36:41.313593179Z     llm = VLLM(
2024-05-10T22:36:41.313605389Z   File "/usr/local/lib/python3.10/dist-packages/langchain_core/load/serializable.py", line 120, in __init__
2024-05-10T22:36:41.313659589Z     super().__init__(**kwargs)
2024-05-10T22:36:41.313672039Z   File "/usr/local/lib/python3.10/dist-packages/pydantic/v1/main.py", line 341, in __init__
2024-05-10T22:36:41.313752498Z     raise validation_error
2024-05-10T22:36:41.313823148Z pydantic.v1.error_wrappers.ValidationError: 1 validation error for VLLM
2024-05-10T22:36:41.313833768Z __root__
2024-05-10T22:36:41.313839598Z   13653 is not divisible by 4 (type=assertion_error)
2024-05-10T22:36:43.599831555Z (RayWorkerVllm pid=7380) INFO 05-10 22:36:36 pynccl_utils.py:45] vLLM is using nccl==2.18.1 [repeated 2x across cluster]
2024-05-10T22:36:43.599894725Z (RayWorkerVllm pid=7380) ERROR 05-10 22:36:41 ray_utils.py:44] Error executing method load_model.


"errorMessage": "[Errno 2] No such file or directory: 'ld'",

Latest amazonlinux2 image seems to be lacking binutils, but more specficially the command line utility ld.
Tested in amazonlinux2 container.
Will add install of binutils as PR

{
"errorMessage": "[Errno 2] No such file or directory: 'ld'",
"errorType": "FileNotFoundError",
"requestId": "1e03148a-d95c-47df-9ea5-238b567cb126",
"stackTrace": [
"  File "/var/task/update.py", line 27, in lambda_handler\n    clamav.update_defs_from_freshclam(AV_DEFINITION_PATH, CLAMAVLIB_PATH)\n",
"  File "/var/task/clamav.py", line 87, in update_defs_from_freshclam\n    ":".join(current_library_search_path()),\n",
"  File "/var/task/clamav.py", line 32, in current_library_search_path\n    ld_verbose = check_output(["ld", "--verbose"])\n",
"  File "/var/lang/lib/python3.9/subprocess.py", line 424, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n",
"  File "/var/lang/lib/python3.9/subprocess.py", line 505, in run\n    with Popen(*popenargs, **kwargs) as process:\n",
"  File "/var/lang/lib/python3.9/subprocess.py", line 951, in init\n    self._execute_child(args, executable, preexec_fn, close_fds,\n",
"  File "/var/lang/lib/python3.9/subprocess.py", line 1821, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n"
]
}

Hi @c-goosen, did you ever resolve this?    New to trying this setup and hitting this exact error today.  Thanks

@StuShepherd this might help, I created a dockerfile that we use in our lambda functions: https://github.com/vatglobal/lambda-s3-bucket-clamav/commit/b767ad14cfdb6405c5bfb2ad3828401e677511f8

@StuShepherd I had to update my Dockerfile, and made a PR: https://github.com/hmrc/lambda-s3-bucket-clamav/pull/9. Note that we launch it in Lambda via ECR. Everything is in the dockerfile already.


Representing and using point processes

Hi @cscherrer @mschauer
Following up on our Slack discussion, here's an issue about the implementation of point process models and algorithms. Here are our main questions sofar:

What is a point process realization? A tuple (locations, marks) or a measure?
How do we represent a point process?
Where would I put this code?
Could it interface well with Distributions.jl inspite of the more general sample type?

Thanks @gdalle ! I don't have many definitive answers, but here are some thoughts...
We really need at least two different representations:

An infinite sample from a point process, from which we can compute on a finite subset with no artificially-imposed bound
A set of user-supplied observations, on which we can evaluate the log-density (assuming there is one that's computable)

For (1), I'm not sure about the concrete representation. I do think in general we need to have good support for infinite sequences (see https://github.com/cscherrer/MeasureTheory.jl/issues/65), and to be able to reproduce the same sampled values in different traversals. This means a given instance will always need to store the current RNG state, as well as an initial seed.
For (2), I'd suggest starting with some methods on AbstractArray observations. We can later add alternatives, like maybe a Dict in cases where there's lots of multiple observations of the same point.
The code can go in MeasureTheory, maybe in a new folder if it's multiple files. If it happens to end up with lots of heavy dependencies that aren't used elsewhere, we should consider a separate repo. But let's not worry about that for now.
I think it should be easy to make it usable with most of Distributions. This is mostly a matter of adding some methods.

@gdalle I've invited you as a collaborator, so you should be able to start a new branch. Please start branch names with something identifying you, like maybe gd- or gdalle-

I mostly work with temporal and tempo-spatial problem you see. We have not fully worked out how to represent stochastic processes (temporal, spatial...) in MeasureTheory, you often want to think about them differently as just a distribution object.
For Mitosis we have added Markov kernels https://github.com/cscherrer/MeasureTheory.jl/blob/master/src/kernel.jl - which generalise distributions, represent the transition distribution and not the joint law, I found them quite useful, and the code is just 20 lines or so!
I have a number of instances where I have worked with point processes and where I would think that having common infrastructure in MeasureTheory to express those concepts would help interoperability.
Maybe I list them here:
Sampling inhomogenous Poisson process:
https://github.com/mschauer/Bridge.jl/blob/master/src/poisson.jl
and inference
https://github.com/mschauer/PointProcessInference.jl
Compound Poisson
https://github.com/mschauer/Bridge.jl/blob/master/src/levy.jl
also Gamma processes which is also based on a jump measure
and then the plan to add Poisson observation edges to https://github.com/mschauer/Mitosis.jl which would then immediately give something like an  extended Kalman filter with Poisson observations.

Thanks for all of these pointers! I just need to have a quick chat with my advisors regarding open source contributions, and I'll get back to you shortly with proposals :)

:-) Tell them it is good for your academic networking.

I set up a meeting with my advisors next Thursday, so I should have news by the end of the week.
In the meantime, @cscherrer I understand what you mean by representing an infinite sample lazily, but I fear it might be harder than with a mere time-indexed random process, since if you have a point process on R^2 for instance there is no natural order of enumeration. So we need a method to ensure we get the same thing if we query, say, the point locations in one hyperrectangle and then another, without it depending on the order of queries.
Btw, I'm not even sure what kind of regions we should allow in queries for spatial point processes. Any thoughts?

Ok, yes that makes sense. Let's take a step back. For the point processes you're interested in, ...

What kinds of computations are possible?
What parameterizations are interesting/useful?
I assume a log-density would be defined with respect to counting measure on whatever support you're using. It that right?

Hello there,
I had a long talk yesterday with my advisors, and I convinced them that it would be interesting to develop a package for point processes simulation and inference in Julia. In terms of academic benefits for me, they agreed it would be better to create my own package, something like PointProcesses.jl. However, I think it would be interesting, both theoretically and practically, to base it on the MeasureTheory.jl formalism, since a point process is basically a random measure.
For the purposes of my research, I am mainly interested in temporal point processes, represented using their conditional intensity function. However, if I am to develop such a package, it would make a lot of sense to include common spatial or spatio-temporal processes.
My idea would be to design a common framework, and then implement the most common processes, along with (possibly custom) inference / learning algorithms.
As for the measure-theoretical formalism, I would really need to dive back into my point process books, but I think we could make it work in an elegant fashion, as long as something like a lazy infinite sum of Diracs is available in MeasureTheory.jl.
In any case, this is not my most pressing project, more like a long-term objective for this spring and summer.
What do you guys think?

Sounds good! It will be exciting to see this develop.

PointProcesses.jl is now up and running, and it uses MeasureTheory.jl syntax, so I'll close this for now


No visual indication on file/folder hover

Hello, I noticed that when hovering over a folder or file there is no indication that it is a clickable item. I think I can fix this by making the mouse pointer turn into a hand when hovering over items if this is ok with you of cource :)

Hello @tonyanant,
Thank you for your valuable comment.
Actually I am following google drive concept to build this project. Google drive does not indicate any effect or even pointer on mouse hover.
another thing is that all files and folders clickable and have a context menu as like your pc and file. That's why the hover effect or pointer identification not required for this type of applications.

Ahh, I see what you mean .  Sorry I didn't realise that. However, when hovering over the folder icon the mouse becomes a vertical bar. Is this supposed to happen ?

I think it should not happen. please fix it. just put cursor: default in media-item class in mediaItem.vue file :)
Thank you


python version

Is it mandatory requirement to have python 3.9?
I have 3.8.8 and can't update to 3.9 currently.
When installing bjsfm I get this ERROR:
ERROR: Package 'bjsfm' requires a different Python: 3.8.8 not in '~=3.9'
Regards,
Sergej

Hi Sergej,
I wasn't able to reproduce your error, but I was able to produce the expected one.
-> tuple[complex, complex]:
TypeError: 'type' object is not subscriptable
Python => 3.9 is required because the code uses standard names for type hints.
Sorry for the inconvenience.

After thinking about this more, you can try installing on older version (0.2.4 or earlier). Those should work with Python 3.8.
Also, another option is to use the web app.
https://www.centricengineers.com/free-software/ce-bjsfm


Make memory size and concurrent scans count configurable

Current Lambda function runs at maximum permitted memory size of 10GB. Coupled with cold start latency and possible bursts of concurrent invocations in response to many files uploaded at once, it might be beneficial to make amount of reserved concurrency and memory size configurable.
I understand that ClamAV can use quite a bit of memory, but it hasn't been using much more than 1.5GB only in my test cases.
Right now it's possible to reconfigure scan lambda using escape hatches, but it's quite easy to expose memory size and reserved concurrency settings as construct props.
I am willing to implement that myself if required.

I would like to note that Lambda compute scales proportionally to memory, providing too little memory/compute can cause the function to not properly start up or cause many timeouts. I think a minimum size is necessary to make sure that this does not happen.
That being said, PRs are welcome and encouraged and I think that those are good features to add in

While compute power does scale with memory size, Lambda gets an equivalent of >1 vCPU after ~1700MB mark. clamscan is single-process however.
I'll prepare a PR.

I fixed this by patching the cdk-serverless-clamscan dependency using patch-package. Instructions here https://www.mariokandut.com/how-to-patch-an-npm-dependency/
It creates a patch file with the updated memory you'd like and then applies that patch when you do npm install

Can we please just add this to the props object please?

Submitted PR #564


End-to-end encryption for Quiver

Closely related to key verification (https://github.com/uProxy/uproxy/issues/1943) - we should end-to-end encrypt all messages sent over the Quiver social network, to help prevent against man-in-the-middle attacks and user spoofing.

Done in https://github.com/uProxy/uproxy/pull/2061


Compatibility Request: MicroOcpp with Citrine-OS

Which repository?
Is it:

citrineos-core

Is your feature request related to a problem? Please describe.
I am working on a project that requires seamless integration of an OCPP 2.0.1 client with a CSMS. I am using MicroOcpp, a lightweight OCPP client library, and would like to ensure compatibility with Citrine-OS, which offers an excellent user interface and comprehensive API documentation. However, it is unclear whether these two systems are fully compatible out of the box, which is a critical step for my project's success.
Describe the solution you'd like
I would like to request testing and/or validation of compatibility between MicroOcpp and Citrine-OS for OCPP 2.0.1. Ideally, this would include verifying the ability of MicroOcpp to communicate with Citrine-OS as a CSMS, ensuring that all major features work seamlessly (e.g., session management, authorization, and telemetry).
Describe alternatives you've considered
As an alternative, I could consider using a different OCPP client or CSMS, but both MicroOcpp and Citrine-OS are well-suited for my use case due to their lightweight design and feature-rich implementations. Ensuring compatibility between these two would save significant time and effort while leveraging their strengths.
Additional context
Here are the GitHub links to the respective repositories:
MicroOcpp: GitHub Link
Citrine-OS: GitHub Link
I believe validating this integration could benefit the broader OCPP community and provide a solid reference for similar projects. If additional information or assistance is needed from my side, I am happy to contribute.
Thank you for considering this request!

Hello @mohammdkhalilii , thank you so much for reaching out!
Currently, we primarily use Everest (https://everest.github.io/) as our OCPP client for testing and development. Being a sibling LFE project, we have experienced a great deal of synergy working with Everest.
We are also in the process of testing with OCA’s OCTT (https://openchargealliance.org/test-tool/) and pursuing the Core and Advanced Security certification, ensuring that CitrineOS is fully compliant with OCPP 2.0.1, so in theory, COS should work flawlessly with any OCPP 2.0.1 client.
We’re excited to support you in completing compatibility testing and addressing any challenges that may arise. Please don’t hesitate to reach out as you move forward!


Section three

This PR is for all of section three of the book.

Thanks a lor @hpux735. A real improvement for the rust community.


chore: rename mongodb/mongocli to mongodb/mongodb-atlas-cli & fixed some changes

I was fixed some changes.
Changed points is folloiwng:

Changed repository name

mongodb/mongocli -> mongodb/mongodb-atlas-cli

Changed GitHub Release tag style

Since atlascli was added later, mongocli/ has been added to the prefix since v1.23.0

Changed directory structure

I was added mongocli child directory. The reason is this repository contains other cli tool (atlas)

Added old version support

Thank you always!

8085ecf Fix the package name.
The package name should be same as the package directory path from the directory pkgs.
TODO: Update the style guide. https://github.com/aquaproj/aqua-registry/blob/main/CONTRIBUTING.md#style-guide

121c357 Support darwin/arm64

456c417 Fix version_filter

Released. https://github.com/aquaproj/aqua-registry/releases/tag/v3.98.0


quoting syntax for literal-arrays-as-keys

Edge case: It's possible to key hashes by arrays. In particular, { [] => 1 } is valid. Since qig takes [] to mean value iteration, the [] key is currently unaddressable by qig.
As a developer, I want a key-quoting syntax so I can tell qig to use the literal version of a key in cases where said key has a special meaning.
For consistency and ease-of-use, said quoting operator should be able to quote arbitrary keys, not just special operators. (less for caller to remember. think posix basic vs posix extended regex escapes-- the former requires memorizing relevant operator collisions, whereas the latter I can just spam \x to my heart's content whenever I'm feeling uneasy about literalness)

Syntax proposal: [[], literal_key]

this is meant to mimic a backslash escape
it's easy to implement, and provably correct
downside: it's rather a lot chunkier than a backslash escape. Is there a slimmer alternative?

Syntax proposal: maybe some kind of constructor syntax? lit(literal_key) or lit literal_key. Though, more likely Qig.lit(literal_key)
Heckuva lot more readable than the array syntax
Qig({ [] => 1 }, lit []) # => 1

unparenthesized version of the call unfortunately not compatible with ,
Qig.qig({ [] => { :a => 1 } }, lit [], :a) # ambiguous! is `:a` an argument to `lit` or to `qig`?

# would need to be rewritten:
Qig.qig({ [] => { :a => 1 } }, lit([]), :a) # => 1
# or
Qig.qig({ [] => { :a => 1 } }, (lit []), :a) # => 1

The lit syntax is also a bit too rosy
Qig.qig({ [] => { :a => 1 } }, (Qig.lit []), :a) # => 1

syntax proposal: [:lit, literal_key]
Qig.qig({ [] => { :a => 1 } }, [:lit, []], :a) # => 1

more readable than [[], []], less verbose than Qig.lit []

Tweak: :q, :quote, or maybe even '''? (hearkening to lisp)
Qig.qig({ [] => { :a => 1 } }, [''', []], :a) # => 1
Qig.qig({ [] => { :a => 1 } }, [:q, []], :a) # => 1
Qig.qig({ [] => { :a => 1 } }, [:quote, []], :a) # => 1


[release-2.2]fix CVE-2021-43565

The related issue: stolostron/backlog#18854
Signed-off-by: zhujian<EMAIL_ADDRESS>

/hold

/close

/close


AKMicrophone has to be created before AudioKit.output is assigned

This may be expected behaviour, but if so, it should be mentioned more prominently in the documentation:
When instantiating an AKMicrophone after assigning AudioKit.output, it only records zeros (i.e., silence). It took me a fair amount of debugging to figure this out. Simply moving
let mic = AKMicrophone()!

before
AudioKit.output = ...

fixed it.
I had wrongly assumed that the order of these operations doesn't matter, as long as they all happen before AudioKit.start().
This is on the most recent 4.8 release.

Yeah, this is well known and an unfortunate side effect of so much happening when you set the output. In the future, we're architecting a system that will be less sketchy.

Thank you for reacting to my issue so swiftly, I really appreciate it.
If it is well known, I suggest adding a comment in the playgrounds that explains this. It took me almost two days to figure this out; a small comment in the code might save the next person some time :-).

Good suggestion, might you like to make a pull request doing it? I like it when the affected party makes the fix! :)

Yes, of course. I just filed a pull request.
I'm having some more issues right now with zero-valued samples coming from AKMicrophone when headphones are connected, but I will try to get to the bottom of that first and will then file a separate issue (or, if I can, a PR).

I fixed my other issue. I didn't have a fully connected graph; my microphone wasn't routed to the output.
Interestingly, that worked okay for the internal mics but not for the headphones. @aure if you have a suggestion where this kind of mistake should best be explained, happy to make another PR.


updated geolit2lacgay still having KeyError: 'region

I am trying to convert a file , following your how to do having below error? can you please help?
I have all the latest file from your repo. :)
./geolite2legacy.py -i GeoLite2-Country-CSV.zip -f geoname2fips.csv -o GeoIP.dat
Traceback (most recent call last):
File "./geolite2legacy.py", line 447, in
main()
File "./geolite2legacy.py", line 427, in main
parse_fips(opts.fips_file)
File "./geolite2legacy.py", line 358, in parse_fips
geoname2fips[row['geoname_id']] = row['region']
KeyError: 'region'

very strange, this code reads geoname2fips.csv, are you sure it is the file from my repo?
python version?

I pulled the all files again today and re-run the conversion and it worked. Thank you so much.
Python 2.7.12.


Batch size of training the warm-up model

Thanks for uploading both the technical report and the code.
In your report, you mentioned that the warm-up model was trained using 8 A100 GPUs, with a mini-batch size of 4:
(1) Does this mean each GPU will have 4 inputs, thus, the total batch size on all GPUs would be 8 x 4 = 32?
(2) In the README.MD, your example command to reproduce the training of the warm-up model uses a batch size of 48 (i.e., -d 8 -b 48).
I am wondering, which configuration did you use to achieve the best warm-up model?
Thank you!

There was a calculation error in the technical report. We will correct this. Our batch size is 48 and 6 images per gpu.


Magic Effects Erroneously Showing in Status Menu

The Medic backpack mod and the Stabilizing Barrel weapon mod both show their associated magic effects in the Status menu when they should not be present.

Details
Backpack_Medic_Effect and ModWeaponEffect_StabilizingBarrel (Form IDs 1CB592 and 1462A3 respectively) both lack the Hide in UI flag, when they should have it. Fixing this is as simple as adding the flag to these magic effects.
Game Version
<IP_ADDRESS>
Language
English (EN)
New Game
Yes
Reproduction Steps
Equip a backpack with the Medic mod, and a weapon with the Stabilizing Barrel mod (for example, the Va'ruun Inflector). Check the Status menu, and you will see their magic effects given by their enchantments.

Fix here: https://1drv.ms/u/s!AhuMaF-FsKU-lEM_eUgZMoNvZGo7?e=Pbmae8

Fix updated to include the Stabilizing Stock effect too. Redownload from the same link in the last comment.


API compatibility checker

In sentry-dotnet, https://github.com/getsentry/sentry-dotnet/pull/234 introduced PublicApiAnalyzers.
This is a tracking issue in case we ever want to do the same for sentry-go, in particular after a 1.0.0 release.
References:

https://blog.merovius.de/2015/07/29/backwards-compatibility-in-go.html
Go does keep track of its own public API:

https://github.com/golang/go/tree/master/api
https://github.com/golang/go/issues/4993
https://github.com/tv42/go/commit/15e43aaea62cc3b745d7f64f50dccdd8501daeb5

https://github.com/smola/gocompat
https://golang.org/doc/go1compat

https://github.com/go-modules-by-example/index/blob/master/019_apidiff/README.md

https://go.googlesource.com/exp/+/master/apidiff/README.md


Log format for cloud provider stacks is not human-friendly

What problem are you facing?

I was debugging an issue I was running into when following the Crossplane Stacks Guide using AWS, and I took a look at the logs for the AWS Stack as part of that process. I noticed that the format appears to be json, like this:
{"level":"error","ts":1569442751.2482467,"logger": . . .

I find the core crossplane pod's format much more human-friendly, which looks more like this:
2019-09-25T17:53:07.031Z        DEBUG

I am filing this under crossplane instead of the individual stack because I am not sure whether it also applies to other stacks too.
How could Crossplane help solve your problem?

As a human operator I would prefer that the log format is more like the core crossplane pod's output than the AWS stack pod's output.

@suskin I believe using the --debug flag produces the user friendly format. It could be that core Crossplane has that on by default at the moment. IMO the default should be machine friendly rather than human friendly logs.

@negz thanks for explaining! I tested setting the --debug flag locally, and I can confirm that setting it does produce the human-friendly format. My crossplane pod does appear to have the flag set.

I suppose the takeaways for me would be:

Discovering the difference in functionality is not something I have figured out how to do yet
The difference between the default for crossplane and the default for the AWS stack was confusing

agreed with this @suskin, I would have liked to have DEBUG logging on by default for the stacks similar to how we do for core crossplane and stack manager.
This is actually making me think about how configuration can be influenced for stacks at install time, similar to how you may want to influence what version of the controller the stack starts up when it is installed.  Both debug logging and controller version are hard coded in the stack's install.yaml file currently, so it would require editing it and rebuilding and publishing the stack which is not a great solution.  Wonder if we can do better here and allow configuration to be specified for the stack at stack install time?
Example: https://github.com/crossplaneio/stack-aws/blob/master/config/stack/manifests/install.yaml#L20

Good point @jbw976 ; I agree that it would make sense to be able to do some configurationing at install time. I remember talking about this being useful for some other use-case also, but I don't remember what the use-case was right now. It may have been for being able to specify a different source for the controller image at install time.

I would have liked to have DEBUG logging on by default

I really don't think this is a good practice. How often do you run software that defaults to debug level logging? My suggestion would be to disable debug logging being on by default on Crossplane and all stacks, but make it straightforward and well documented how to do so.


feat: add support for embed assets and custom models

In the future, you will be able to embed other models in the rich text field type, apart from assets like videos and images. This PR adds support for rendering custom assets or any other model (can be a Post, Author, anything).
To render those custom models, we are searching for a component inside the embed object on renderers. Example:
const content = [
  {
    type: 'embed',
    nodeId: 'custom_post_id',
    children: [
      {
        text: '',
      },
    ],
    nodeType: 'Post',
  },
];

const references = [
  {
    id: 'custom_post_id',
    title: 'GraphCMS is awesome :rocket:',
  },
];

function App() {
  return (
    <RichText
      content={content}
      references={references}
      renderers={{
        embed: {
          Post: ({ title, nodeId }: EmbedProps<{ title: string }>) => {
            return (

{title}

{nodeId}

            );
          },
        },
      }}
    />
  );
}

If the nodeType were BlogPost, the custom renderer should also be BlogPost.
Other important notes:

If we have a type embed in the content object and the references prop is empty, a warning is thrown on dev.
When querying references, it's necessary to include the id in it. This way we can match the content with the reference, and render it correctly. If the id is not present, an error is thrown and the custom model is not rendered.
Asset references require mimeType and url in the reference query.

Still pending:

[ ] Docs

Closes MAR-1895 and MAR-1896.

This looks really cool @jpedroschmitz!
Are you planning to update the README with a similar example to what's in the PR description?

I've added docs around this new feature. You can check it here.
I had a few issues with TypeScript, so the API changed slightly for embed assets (other models stayed the same).
Maybe we should release it under beta. What do you think, @notrab?

Looks really good! I'm not sure this needs a beta branch, wdyt?
There's a note about the unsupported embedded models so we're good on that front.

I've done a lot of testing on this, and it's pretty stable.
I think we don't need beta testing 🙈

@jpedroschmitz yeah I had a play with this just now too. Looking good!