Update "Get started with Progressive Web Apps"

Fixed link per work item 36011249 and issue 1351

Docs Build status updates of commit 25dc356:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit f269b23:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit fcd22cf:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 5ccb61e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a50d875:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 59ab635:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 7391ced:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/progressive-web-apps-chromium/get-started.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


(1.18.2 Create mod incompatibility) Portals gets pushed be contraptions

According to your testing, does the issue occur with ONLY Immersive Portals mod and Farbic API?
No
Describe the issue
For whatever reason, portals can get pushed by Create mod contraptions as the title says, and possibly other similar stuff from other mods as well.
1: Make a sliding-door contraption (mechanical pistons are the easiest method I know of)
2: Make a portal that is right at the beginning of the sliding door like this example screenshot shows (paperdoll from the Figura mod)

3: Activate the door
Also, the same contraptions (most of the time) visually bugs out when viewed from a see-through portal that leads to another dimension.
Post the log here
Mods marked with ">name<" are the mods in question
Mod list:
accurate-block-placement-1.0.12
animatica-0.5+1.18.2
BetterThirdPerson-Fabric-1.18.2-1.8.1
bitsandchisels-2.6.13
charm-fabric-1.18.2-4.4.4
continuity-2.0.1+1.18.2
>create-fabric-1.18.2-0.5.0e-733<
>fabric-api-0.66.0+1.18.2<
figura-0.1.0-rc.10+1.18.2
>immersive-portals-1.4.10-mc1.18.2-fabric<
indium-1.0.7+mc1.18.2
iris-flywheel-compat-1.18.2-0.1.7-BETA
iris-mc1.18.2-1.4.0
lambdabettergrass-1.2.4+1.18
Pehkui-3.6.0+1.14.4-1.19.3
sodium-fabric-mc1.18.2-0.4.1+build.15
worldedit-mod-7.2.10
WorldEditItems-1.2.0-Fabric

As far as I can understand, the cause is more or less the fact that Create contraptions can push any entity that can be pushed by a Minecraft Piston (with several explicitly set exceptions) - and Portal entity is setup to have a "Normal" reaction to pistons, which is to be pushed.
I'm not quite sure if this kind of reaction in portals is intended.

Not sure if this would fix this issue, but here's a link to a compatibility mod for immersive portals and create mod that someone made for 1.19.2 to get the trains working:
https://www.dropbox.com/s/chay7nhip54ywge/immersive_trains-1.0.1.jar?dl=0
Original place it was posted: https://github.com/Sascha-T/tele-create/issues/2

Not sure if this would fix this issue, but here's a link to a compatibility mod for immersive portals and create mod that someone made for 1.19.2 to get the trains working: https://www.dropbox.com/s/chay7nhip54ywge/immersive_trains-1.0.1.jar?dl=0 Original place it was posted: Sascha-T/tele-create#2

This is a different issue, unfortunately. that mod only allows trains to travel to the nether through portals.


FYI: RNifti package

Just FYI - the RNifti package has implemented a similar pointer structure for NIfTI files if you find it relevant: https://github.com/jonclayden/RNifti

cool.  @cookpa  @jeffduda this may be relevant to better understanding or resolution of https://github.com/stnava/ANTsR/issues/111

I was thinking the same. I would guess this package has the same gc()
issue. :)
On Thu, Sep 1, 2016 at 3:56 PM, stnava<EMAIL_ADDRESS>wrote:

cool. @cookpa https://github.com/cookpa @jeffduda
https://github.com/jeffduda this may be relevant to better
understanding or resolution of #111
https://github.com/stnava/ANTsR/issues/111
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/stnava/ANTsR/issues/112#issuecomment-244193452, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AIqafddlEi0AiIiMa2zwJ32brzpvs5zPks5qly3wgaJpZM4Jy6al
.

Same issue for me on our cluster, with gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC).
Memory is released after a gc()
Still, this package will be useful. It lets you have direct access to the header, which is great. And because it doesn't have the compatibility overhead of ITK I/O, it should be more flexible in what it will let you do (eg, qform != 2).

right - just to be clear, antsr i/o supports many more file formats than nii:
    NiftiImageIO
    NrrdImageIO
    GiplImageIO
    HDF5ImageIO
    JPEGImageIO
    GDCMImageIO
    BMPImageIO
    LSMImageIO
    PNGImageIO
    TIFFImageIO
    VTKImageIO
    StimulateImageIO
    BioRadImageIO
    MetaImageIO
    MRCImageIO
    GE4ImageIO
    GE5ImageIO
    MGHImageIO

this need for multiple I/O type compatibility is the first reason why we (ITK community) cannot support affine transformations in the header.   the second reason is that even basic operations would not be correctly implemented unless they included the affine tx which would induce massive overhead.  we discussed these issues years ago in the itk development process and, as such, it is how it is.

Thanks for the explanation. I wasn't suggesting changing anything, ITK is the way it is for good reasons.
I envision using RNifti either independently of ANTsR, or to import / export ANTsR data, where headers might need modifying to maintain compatibility with different software.
Again to be clear, this is to be avoided where possible because tinkering with headers is painful and risky. But sometimes a necessary evil.


Improve error reporting for FormattingError

🚀 Description
Got a bug report from Slack: https://kotlinlang.slack.com/archives/C0BJ0GTE2/p1615839796241500?thread_ts=1615809255.232100&cid=C0BJ0GTE2
📄 Motivation and Context
Failures from FormattingError (coming from google-java-format) engine are not catched and will just let the tool fail.
🧪 How Has This Been Tested?
Attached JUnit test
📦 Types of changes

[x] Bug fix (non-breaking change which fixes an issue)

The ; issue is opened upstream here https://github.com/facebookincubator/ktfmt/issues/194


Redeemer Map Support

Sure, dropped the second commit :)

Thank you!

I'll merge this once I hear okay from Koz or Peter :+1: Thank you!


fix [SDWebImageCombinedOperation cancel] crash (Issue #809)

Current coverage is 77.07% (diff: 0.00%)

No coverage report found for master at 032ab1d.

Powered by Codecov. Last update 032ab1d...970d5b4

I don't think this is the right fix. Let's see if the issue (which is now fixed) reproduces after we release 4.0.


Use Source Serif Pro

...instead of Georgia.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2258000-use-source-serif-pro?utm_campaign=plugin&utm_content=tracker%2F294423&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F294423&utm_medium=issues&utm_source=github).

Changed to Athlas.


How to fuzz a binary project file built by makefile

Hello andreafioraldi , Invscov is a very interesting idea. I benefit a lot from it. Thank you very much :)
As mentioned in readme, invScov uses the following steps：

set the env var INVSCOV_OUTPUT_PATH to an existing empty folder
compile the PUT with InvsCov/dump-cc/c++
run InvsCov/reconstruct-dump
run InvsCov/learn-invariants with the dumper binary produced in the second step
run InvsCov/generate-constraints
compile with InvsCov/instrument-cc/c++
fuzz this last binary with AFLplusplus/afl-fuzz

But I have a small question. If we want to fuzz the target program that is compiled by Makefile,  and there are many project files. In this case, what should I do to fuzz these complex programs? Specifically, I don't know how to do steps 2, 3 and 4 for such a complex project.
I successfully used invscov to fuzz some very simple demos, but I was very confused about using it to fuzz other complex projects.
Looking forward to your reply :)

Hi, I don't fully understand your question.
You have to just take one of the binaries produced by the target build system that you want to fuzz, make cmake or whatever it is.

Hi, Thank you for your reply :)
I am sorry that I did not describe the problem clearly. Now I randomly selected a project to explain my doubts.Like LightFTP.
In this program, after executing make, a binary file named fftp can be constructed. After executing the make command, a series of output results will be generated on the command line. It can be seen that the generation of fftp requires multiple executions of gcc or clang commands, and finally multiple files are linked into the final fftp binary file.
The following is part of the output:
cc  -std=c99 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -pedantic -Wall -Wextra -c -fmessage-length=0 -Wno-unused-parameter -Wno-unused-result -fno-ident -v -pthread -MMD -MP -MF"main.d" -MT"main.o" -o "main.o" "../main.c"
...
cc  -std=c99 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -pedantic -Wall -Wextra -c -fmessage-length=0 -Wno-unused-parameter -Wno-unused-result -fno-ident -v -pthread -MMD -MP -MF"x_malloc.d" -MT"x_malloc.o" -o "x_malloc.o" "../x_malloc.c"
...
cc  -pthread -o "fftp"  ./cfgparse.o ./fspathtools.o ./ftpconst.o ./ftpserv.o ./main.o ./x_malloc.o   -lpthread -lgnutls

Then, I noticed the code implementation of Invscov's dump-cc and instrument-cc files, which essentially executes a clang command.  Therefore, does this mean that if I want to use Invscov and AFL++ to Fuzz the fftp file mentioned above, I must execute files such as dump-cc many times, because normally, only one execution of the clang command cannot successfully build a complete  binary file just like fftp.

You have to use the compiler wrappers (dump-cc et. al) as compilers in the build system. With make, just type make CC=/path/to/dump-cc CXX=/path/to/dump-c++. This is how build system works.

Thank you very much, I understand it.


UML web

for system design

our methods in the UML diagram are:
pushNewProfile
pullWebProfile
pushNewChallenge
pushSelectChallenge

@Chris19138 we were originally thinking of more specific UML per subsystem, cause @a-shmyg just did a basic overview (right ana?)

@Chris19138 we were originally thinking of more specific UML per subsystem, cause @a-shmyg just did a basic overview (right ana?)

this is for the object oriented programming btw

yes i did a general UML for request types between communication devices, just using the request types you described @Chris19138. There are some issues (typos) with it so when I update to include the new pull_stats request I will also update Web to relflect those

it would be worth doing a more specific Web UML to see how pages interact with each other


Scriptable Main Menu

Currently, pressing the Menu button opens up a hardcoded menu, managed in https://github.com/RogueCollab/RogueEssence/blob/3087d839a779c6927759d4bdc008cd559318142b/RogueEssence/Dungeon/DungeonScene.cs#L385
Instead, this should be made into a script call, so that modders can decide what menu to open instead.  Even a custom menu.
Try having it done by publishing a script event, with this function: https://github.com/RogueCollab/RogueEssence/blob/3087d839a779c6927759d4bdc008cd559318142b/RogueEssence/Lua/ScriptServices.cs#L67

https://github.com/RogueCollab/RogueEssence/pull/48
This was not a good first issue.


Reuse TextBuilder when validating SpriteText

Before:

After:

Provides the InvalidateTextBuilder() method for any consumers that have a custom TextBuilder and provide properties to control it other than truncate/ellipsisstring/multiline.

Okay with changing this to
?

Sure, I originally had it similar to that before.


SeekFast

Improved seek performance by factor 5 to 10. See [issue] (https://github.com/aspnet/KestrelHttpServer/issues/512)

Hi @Anderman, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

May be Vector.IsHardwareAccelerated == false issue

That was the problem


chore(doc): add deployment guide and FAQ

[x] add deployment guide
[x] add FAQ

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Hi @wchaws
PR is ready. Please take a look.


Can't log in, 2FA errors forever

2FA accounts are unable to log in when running script/server:
our-boxen andre$ script/boxen
--> Preparing to auto-update...
--> Complete! Nothing new from upstream.
--> Oh, looks like you've provided your login as environmental variable...

GitHub password: **********

--> It looks like you have two-factor auth enabled.

One time password (via SMS or device):
******

--> That one time password didn't work. Let's try again.

One time password (via SMS or device):
******

--> That one time password didn't work. Let's try again.

Repeat until you get tired and give up. It's an infinite loop.
(Yes, I'm 100% sure my password and token are correct, and I used them to log in to GitHub.com moments before using them in Boxen.)

Thanks for the report @indirect.
Are you able to check whether Boxen is listed as an authorized application at https://github.com/settings/applications? Could you also provide the version of boxen and our-boxen you are running?
From the messages above, it looks like something is breaking down at lib/boxen/preflight/creds.rb#L59. Could you try debugging around that HTTP request and ensure it is passing the correct token, etc?

@jacobbednarz ah, sorry I should have included versions and such. I did a straight up checkout of boxen/our-boxen@a61b60d22a60ba24d1c0f6bf0dcd48e63cafc344, and ran bundle install --path .bundle; script/boxen. That should make it pretty easy to repro. 👍
I did some print-debugging inside creds.rb, and it does appear to be passing the headers hash to Octokit with the correct OTP:

One time password (via SMS or device):
******
otp is 445316
headers: {"X-GitHub-OTP"=>"445316"}
otp is 445316
rescued OneTimePasswordRequired
--> That one time password didn't work. Let's try again.

Nevertheless, it seems like Octokit is raising OneTimePasswordRequired even with the header set correctly. :/

I've taken the following steps:

Checked out boxen/our-boxen@a61b60d

Revoked boxen-web token at https://github.com/settings/applications

Revoked single personal token at https://github.com/settings/tokens

Ran Boxen commands from your report
$ bundle install --path .bundle; script/boxen
--> Preparing to auto-update...
--> Complete! Nothing new from upstream.
--> Oh, looks like you've provided your login as environmental variable...

GitHub password: *******

--> It looks like you have two-factor auth enabled.

One time password (via SMS or device):
******
Fact file /opt/boxen/repo/facts.d/example.yaml was parsed but returned an empty data set
Notice: Compiled catalog for helios.belkin in environment production in 4.41 seconds

From what I can guess, the OTP stuff is being caused by one of the following:

Your OTP device is suffering from clock drift. I've experienced this in the past and to fix it is to resync your devices' clock and try again. I'd recommend your Mac and 2FA device be resynced to be sure.
There are duplicate tokens and it's grabbing the first one (maybe?) and it's using the wrong seed.

Ugh. Thanks for checking on this! It working for you is super, super confusing. I'm using the Authy app on my iPhone, and I am able to generate valid OTP tokens and log in to github.com successfully, so I'm super confused about why Octokit can't log in using them. I guess I'll just manually generate a token and stuff it in my netrc and move on.

If you dump the HTTP request being made, does it line up with your Mac clock (and be within a couple of minutes)?

@jacobbednarz here's a full dump using the debug instructions from the Octokit readme and some extra debug prints from me (starting with "**"). It seems like Octokit is making a second request, and the second request is raising the exception, even though the first request failed? The only line of ruby code getting run is tmp_api.authorizations(:headers => headers).
My best guess about what's happening is that Octokit is following the returned Link URL to the second page, and that request is failing because the OTP code is only valid for one request? Not sure. Open to any ideas. In the end, I'm making this work by running boxen --token abc123 and letting it save my token into the keychain.
GitHub login: |indirect|
GitHub password: **********
** got login and password, going to try `get_tokens`
** started get_tokens
** about to run `tmp_api.authorizations(:headers => {})
I, [2017-01-27T23:56:04.924339 #11160]  INFO -- : get https://api.github.com/authorizations?&per_page=100
D, [2017-01-27T23:56:04.924413 #11160] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.7.2"
Authorization: "Basic aW5kaXJlY3Q6Z2JTZGFmbDswMQ=="
** rescued OneTimePasswordRequired
--> It looks like you have two-factor auth enabled.

** before get_otp
I, [2017-01-27T23:56:05.326115 #11160]  INFO -- : post https://api.github.com/authorizations
D, [2017-01-27T23:56:05.326174 #11160] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.7.2"
Authorization: "Basic aW5kaXJlY3Q6Z2JTZGFmbDswMQ=="
One time password (via SMS or device):
******
** get_otp return 782335
** before get_tokens again
** started get_tokens
** about to run `tmp_api.authorizations(:headers => {"X-GitHub-OTP"=>"782335"})
I, [2017-01-27T23:56:12.639715 #11160]  INFO -- : get https://api.github.com/authorizations?headers%5BX-GitHub-OTP%5D=782335&per_page=100
D, [2017-01-27T23:56:12.660826 #11160] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.7.2"
Authorization: "Basic aW5kaXJlY3Q6Z2JTZGFmbDswMQ=="
X-GitHub-OTP: "782335"
I, [2017-01-27T23:56:13.083434 #11160]  INFO -- Status: 200
D, [2017-01-27T23:56:13.083526 #11160] DEBUG -- response: server: "GitHub.com"
date: "Sat, 28 Jan 2017 07:56:13 GMT"
content-type: "application/json; charset=utf-8"
transfer-encoding: "chunked"
connection: "close"
status: "200 OK"
x-ratelimit-limit: "5000"
x-ratelimit-remaining: "4985"
x-ratelimit-reset: "1485593330"
cache-control: "private, max-age=60, s-maxage=60"
vary: "Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding"
etag: "W/\"dc15ee839174d41a75ed63362a0eb350\""
x-github-media-type: "github.beta; format=json"
link: "<https://api.github.com/authorizations?headers=%7B%22X-GitHub-OTP%22%3D%3E%22782335%22%7D&per_page=100&page=2>; rel=\"next\", <https://api.github.com/authorizations?headers=%7B%22X-GitHub-OTP%22%3D%3E%22782335%22%7D&per_page=100&page=2>; rel=\"last\""
access-control-expose-headers: "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"
access-control-allow-origin: "*"
content-security-policy: "default-src 'none'"
strict-transport-security: "max-age=31536000; includeSubdomains; preload"
x-content-type-options: "nosniff"
x-frame-options: "deny"
x-xss-protection: "1; mode=block"
x-served-by: "0e17b94a265a427d9cafe798ceea7c02"
x-github-request-id: "CBD5:2C95:71DD497:909038C:588C4E9C"
I, [2017-01-27T23:56:13.106454 #11160]  INFO -- : get https://api.github.com/authorizations?headers=%7B%22X-GitHub-OTP%22%3D%3E%22782335%22%7D&page=2&per_page=100
D, [2017-01-27T23:56:13.106533 #11160] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.7.2"
Authorization: "Basic aW5kaXJlY3Q6Z2JTZGFmbDswMQ=="
** rescued OneTimePasswordRequired
--> That one time password didn't work. Let's try again.

** before get_otp
I, [2017-01-27T23:56:13.455564 #11160]  INFO -- : post https://api.github.com/authorizations
D, [2017-01-27T23:56:13.455612 #11160] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.7.2"
Authorization: "Basic aW5kaXJlY3Q6Z2JTZGFmbDswMQ=="
One time password (via SMS or device):

I've tried replicating this for the last few days and I've come up empty 😞
@MikeMcQuaid are you able to take a look at the logs at GitHub for the possible cause here? I'd like to be able to safe guard against but not sure what is actually causing the issue.

@jacobbednarz Email<EMAIL_ADDRESS>and they'll be able to help more.

@indirect did you get anywhere with this? I'm happy to make changes within Boxen if there is something we can do better.


Plugin is broken

Plugin no longer works since 8/14 game update

Guess this is abandoned. Anyone know of an alternative?

Guess this is abandoned. Anyone know of an alternative?

I can request to take it over from the plugin repo and try to maintain it. hmm


Configure Severity for Asp.netcore Controller Action methods [CA1822: Mark members as static]

Hi,
If you install the FX Cop analyzer on an asp.net core project which contains controllers (e.g. web api template), you get this warning on Controller Actions. E.g.
[HttpGet]
public IEnumerable<WeatherForecast> Get() //member Get does not access instance data and can be marked as static
Is there a straightforward way to have the analizer ignore this rule JUST on controllers for instnance? E.g. via the editorconfig file.
Or better yet, have the analyzer itself ignore this rule on asp.net core controllers?

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

ID: 8b2b086b-cda0-2741-2b2b-b2d7e87d0ac9
Version Independent ID: 29465605-4eda-76c5-4254-8976bc17ca37
Content: Configure FxCop analyzers using editorconfig - Visual Studio
Content Source: docs/code-quality/configure-fxcop-analyzers.md
Product: visual-studio-windows
Technology: vs-ide-code-analysis
GitHub Login: @jillre
Microsoft Alias: jillfra

@fvilches17 -- Francisco, thanks for your question. It looks like you're having an issue with the product itself, rather than an issue with the documentation. Here are a few options where you might consider asking your question:

https://social.msdn.microsoft.com/Forums/vstudio
https://www.stackoverflow.com
https://www.reddit.com/r/VisualStudio/

As well, you might also consider using the Report a Problem tool to report the issue.


Overlay backdrop animation not triggered when detaching

Bug, feature request, or proposal:
[x] bug report
What is the expected behavior?
Transition animations (vanilla css / Angular) triggered for when Overlay backdrop leaves the DOM
What is the current behavior?
Both CSS and angular animations are completely ignored when detaching a view from the overlay
What are the steps to reproduce?
    // Returns an OverlayRef (which is a PortalHost)
    const overlayRef = overlay.create();

    // Create ComponentPortal that can be attached to a PortalHost
    const overlayChildPortal = new ComponentPortal(OverlayChildComponent);

    // Attach ComponentPortal to PortalHost
    overlayRef.attach(overlayChildPortal);

    ...

    overlayRef.detach(); /* <- No animation triggers whatsoever */

    /* I've tried this as well */
    overlayRef.dispose(); /* <- No luck... */

What is the use-case or motivation for changing an existing behavior?
Uneasy on the eyes when removing overlays
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular 5.0.0,
Angular CDK 5.0.0-rc-0
Typescript 2.5.0
Ubuntu 16.04
Google Chrome

Will be fixed by https://github.com/angular/material2/pull/6627#issuecomment-334335051.


Fixing _close.pyx to be compatible with OS X

Currently I cannot run python3 setup.py develop in macOS 12 as there is an error during compilation:
...
building 'dit.math._close' extension
creating build
creating build/temp.macosx-11-x86_64-3.9
creating build/temp.macosx-11-x86_64-3.9/dit
creating build/temp.macosx-11-x86_64-3.9/dit/math
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -fwrapv -Wall -O3 -DNDEBUG<EMAIL_ADDRESS>-c dit/math/_close.c -o build/temp.macosx-11-x86_64-3.9/dit/math/_close.o
dit/math/_close.c:1301:36: error: implicit declaration of function '_isnan' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  __pyx_t_1 = __Pyx_PyInt_From_int(_isnan(__pyx_v_x)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
                                   ^
dit/math/_close.c:1301:36: note: did you mean '__nan'?
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/math.h:558:14: note: '__nan' declared here
extern float __nan(void)
             ^
dit/math/_close.c:1377:42: error: implicit declaration of function '_finite' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  __pyx_t_1 = __Pyx_PyInt_From_long((1 - _finite(__pyx_v_x))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
                                         ^
dit/math/_close.c:1377:42: note: did you mean 'finite'?
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
extern int finite(double)
           ^
2 errors generated.
error: command '/usr/bin/clang' failed with exit code 1

This PR fixes this issue, using latest isinf, isnan, and fabs from libc.math.

The cython part of this has been added as a separate commit because of the unrelated pid stuff in this PR


Can't do multipart requests that contain "frontier"

request uses frontier as the static multipart boundary, which means that it's impossible to create requests that contain that word. request should auto-generate a long random string.

I was just reading over the multipart code and noticed this. Please consider using a boundary that is much less likely to show up in uploaded content.


Fixes issue #2570

This change is

Thanks for looking at this! :+1: as far as I'm concerned.

:thumbsup: from me too!

Reviewed 2 of 2 files at r1.
Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from Reviewable


Dan

Updated code to work on deslanted data files
Updated batch size
Updated samples per epoch

Apologies, was intending to PR into forked repo


Home Battery Discharge Control not Working with Minimum SoC

Describe the bug
The option "prevent home battery discharge for fast charge" does work well - except if there is a minimum SoC configured for the vehicle. In that case the vehicle will automatically start to charge when plugged in - but the home battery will be used for that.
Expected behaviour: The home battery should not be used in that case, similar to what happens when the fast charge option is selected
Steps to reproduce

Activate the option prevent home battery discharge for fast charge
Enable a minimum SoC for the vehicle in the arrival tab (e.g. 80%)
Plug in the vehicle with a lower SoC (e.g. 50%)

The vehicle will start to charge automatically, but the home battery will be used.
When step 2 is skipped and fast charge is selected instead, everything works like expected: The home battery is not used
Configuration details
network:
  # schema is the HTTP schema
  # setting to `https` does not enable https, it only changes the way URLs are generated
  schema: http
  # host is the hostname or IP address
  # if the host name contains a `.local` suffix, the name will be announced on MDNS
  # docker: MDNS announcements don't work. host must be set to the docker host's name.
  host: evcc
  # port is the listening port for UI and api
  # evcc will listen on all available interfaces
  port: 7070
#uri: #############
interval: 10s # control cycle interval
sponsortoken: #######

log: debug

meters:

- name: Homemanager
  type: sma
  serial: 1901### # insert your own serialnumber

- name: Tripower
  type: template
  template: sma-inverter
  usage: pv
  host: 192.1####P-Adresse oder Hostname
  password: ### # Anlagenpasswort / Installateurspasswort # Optional

- name: STP_SE
  type: template
  template: sma-hybrid
  usage: pv

  # Modbus TCP Inverter
  modbus: tcpip
  id: 3
  host: 19####9 # Hostname
  port: 502 # Port

- name: byd
  type: template
  template: sma-hybrid
  usage: battery

  # Modbus TCP Battery
  modbus: tcpip
  id: 3
  host: 1###9 # Hostname
  port: 502 # Port

chargers:
#- type: template
#  template: go-e-v3
#  host: 1####3
#  name: wbPascal
- type: template
  template: go-e-v3
  host: 1####55
  name: wbSandra

vehicles:
- type: template
  template: nissan
  title: Leaf Pascal
  user: ####
  password: ####
  vin: #####
  capacity: 40
  name: ev1

loadpoints:
- title: Ladepunkt Sandra
  charger: wbSandra
  vehicle: ev1
#  mode: now
  mode: pv
#  mode: minpv #In Kombination mit den Sunny Portal Einstellungen kann in diesem Modus auch mit reduziertem PV Anteil geladen werden, z.B. mit 30% Netzbezug
  phases: 1 # ev phases (default 3)
  enable: # pv mode enable behavior
    delay: 5m # threshold must be exceeded for this long
#Summer value
    threshold: -1600 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
#Winter value
#    threshold: -1000 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
  disable: # pv mode disable behavior
    delay: 10m # threshold must be exceeded for this long
#Summer value
    threshold: 300 # maximum import power (W)
#Winter value
#    threshold: 900 # maximum import power (W)
  guardDuration: 10m # switch charger contactor not more often than this (default 5m)
  minCurrent: 6 # minimum charge current (default 6A)
  maxCurrent: 32 # maximum charge current (default 16A)
  soc:
    poll:
      mode: always
      interval: 120m #interval for polling while not charging
#    min: 0
#    target: 100
    estimate: true

#- title: Ladepunkt Pascal
#  charger: wbPascal
#  vehicles:
#  - ev1
#  mode: pv
#  resetOnDisconnect: true
#  phases: 3 # ev phases (default 3)
#  enable: # pv mode enable behavior
#    delay: 5m # threshold must be exceeded for this long
#    threshold: -1600 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
#  disable: # pv mode disable behavior
#    delay: 10m # threshold must be exceeded for this long
#    threshold: 300 # maximum import power (W)
#  guardDuration: 10m # switch charger contactor not more often than this (default 5m)
#  minCurrent: 6 # minimum charge current (default 6A)
#  maxCurrent: 32 # maximum charge current (default 16A)
#  soc:
#    poll:
#      mode: charging
#      interval: 60m
#    min: 0
#    target: 100
#    estimate: true

site:
  title: Home Ladestation # display name for UI
  meters:
    grid: Homemanager # grid meter
    pv:
      - Tripower # list of pv inverters/ meters
      - STP_SE
    battery: # battery meter
      - byd
#  prioritySoC: 50 # give home battery priority up to this soc (empty to disable)
#  bufferSoC: 85 # Ist SoC der Batterie > bufferSoC, wird dieser Teil als PV Erzeugung zum Laden des Fahrzeugs genutzt (auch im PV Modus) (empty to disable)
  residualPower: -200 #-690 #Wintermodus: Wie viel Netzbezug ist ok, damit trotzdem geladen wird (z.B. -1000W)

#hems: #Versuch, die SMA Logik zur Steuerung zu verwenden. Aktuell "allowcontrol" auf false gesetzt, da es nicht so funktioniert wie gewünscht
#  type: sma
#  allowcontrol: false
#  vendorid: ###
#  deviceid: ###

# tariffs are the fixed or variable tariffs
# cheap (tibber/awattar) can be used to define a tariff rate considered cheap enough for charging
tariffs:
  currency: EUR # three letter ISO-4217 currency code (default EUR)
  grid:
    # either static grid price
    type: fixed
    price: 0.26 # EUR/kWh
  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.127 # EUR/kWh
influx:
  url: http://#####
  database: evcc
  user: #####
  password: #####

plant: #####

What type of operating system are you running?
Docker container
Version
evcc version 0.124.9

This topic was also discussed in #11504

I know this problem too. The option is called "Avoid discharge in fast charge mode and for planned charging".
The minimum charge to a predefined SOC on arrival is a planned charge! Then the battery should not be used.
I would really appreciate it if this could be fixed.

The minimum charge to a predefined SOC on arrival is a planned charge!

It isn't.

It isn't.

Correct, but I guess we should clarify/update the label to avoid confusion.
Battery-hold while minsoc charging should work as of https://github.com/evcc-io/evcc/pull/11941

@Percy2Live can't reproduce it. Works as expected in my setup. Tested on nightly, but the minsoc hold features has been introduced a few releases ago. Can anyone else reproduce this? Any anomalies in your log file (unable to control battery)?

I have a bit of difficulty in understanding why this behaviour is desirable.
I set the min SOC under the "Plan" link. There the value is labelled as "Charge planning".
In the battery settings, the option is labelled "Prevent discharging ... during planned charging". Based on this description, I as a user conclude that the battery is not being used to charge the car.
When I connect my car to the wall box, evcc starts the charging at 11 kW, which is fast charging in my case. My battery and the hybrid inverter are involved in the charging process with the max. available power (approx. 6 kW). This is exactly what I want to avoid, as it put a lot of stress on the inverter. It gets very warm over time and I also want to avoid this constant load on the battery.
From the forum posts, it seems that there are other users who are bothered by this behaviour. I can understand if some do not want to change it. How about introducing an additional option in the yaml file that allows you to change this behaviour? If the option is not present, evcc would work as before so that the compatibility is maintained.

@naltatis I'm surprised that your system behaves differently. I have a very similar configuration to percy2live: an SMA Tripower SE with BYD HVS battery and a go-e gemini wallbox. Maybe it has something to do with that?

I have now installed the latest version. lt still behaves the same. There are no errors in the log.

Ah interessting. I guess something with the hold implementation for your inverter is wrong. In the Screenshot we can see, that evcc assumes it has successfully "locked" your battery while minsoc charging (Batterie gesperrt). But since it still provides power there's someting wrong.
@premultiply any ideas?

No idea. ☹
Should be in battery hold mode if "gesperrt" is displayed.
I don't see what should be different between manual fast charging and automatic minsoc fast charging.

For me it is similar as for Pustelbaer. The UI says "battery locked" but the battery is used for charging in MinSoC mode:

In general the battery lock works, when I use the fast charge option instead, the behaviour is as expected:

Does the MinSoC battery lock call another function as the fast charge lock?

Missing logfile

On docker you can just use docker logs https://docs.docker.com/reference/cli/docker/container/logs/
Or you run evcc to create the log on windows or Mac to produce the needed log.

I can download the log from portainer web ui, but is it what you're looking for?
e.g.
[lp-2  ] DEBUG 2024/03/28 20:32:19 charge power: 0W
[site  ] DEBUG 2024/03/28 20:32:19 pv power: 0W
...

@StefanSchoof ein PR für die Doku wäre Klasse :)

An friend has the same problem when charging his ID.3. I would like to help to solve the error, but I need to know how to access the log file (I have already searched the file system of the Docker container completely, but cannot find it). Can someone give me a short info?
P.S. Simply closing the entry is not a solution either.

@andig Die Doku hat dazu schon:

If you're using Docker, you should be able to use docker logs. See the Docker documentation for more details.

https://docs.evcc.io/en/docs/faq/#how-do-i-create-a-log-file-for-error-analysis

Many thanks for the information. Here is a log file from today. The start of the loading process can be found at '2024/04/08 20:48:39'.
I started the process in "PV" mode by setting the min SOC to 50% on arrival. In the UI, the battery was again displayed as 'locked' but discharged. I hope it'shelpful ;-)
_evcc_logs_20240408.txt

Could this be related to the fact, that using modbus registers 40149 and 40151 doesn't seem to possible anymore since SMA's SHM2 update to version 20.14.13.R? Please see this rather long thread: https://www.photovoltaikforum.com/thread/220338-shm2-0-software-version-2-14-10-r-ca-märz-2024/ Doesn't make sense at first glance but Homemanager seems to be overruling the inverter's Modbus parameters.

Kann gut sein- wirst Du aber nur mit SMA klären können. Kein evcc Thema...

Schon klar.  Darauf wollte ich hinaus.

Bei mir wird der Stromspeicher des Hauses, obwohl "Verhindere Entladung im Schnell-Modus und bei geplantem Laden" aktiviert ist, bei folgenden Einstellungen entladen:

Schnell laden

Geplantes Laden Abfahrt

Geplantes Laden Ankunft

Ich fände es wünschenswert, wenn in keinem dieser Modi der Stromspeicher entladen würde.

Den Text "Batterie (gesperrt)" wie man es oben in den Screenshots sehen kann, habe ich in meinem GUI noch nie gesehen.

Eine relativ häufige Fehlermeldung in meinen Logs ist: "[site ] ERROR 2024/10/13 09:18:50 battery mode: modbus: exception '4' (server device failure), function '4' "

Kann mir jemand hilfreiche Tips geben?

Ist dieser Fehler möglicherweise die Ursache für das Fehlverhalten von EVCC?

Schon jetzt vielen Dank für Eure Unterstützung,
beste Grüße
Klaus

Das Thema hier ist seit 6 Monaten erledigt. Gerne neues auf machen.


Add help for EKS with custom CNIs

Add help text for EKS users with a custom CNI, as hostNetwork needs to be enabled for webhooks to work on those clusters.
See: https://github.com/kyverno/kyverno/issues/1433
Also:
https://cert-manager.io/docs/installation/compatibility/#aws-eks
https://github.com/elastic/cloud-on-k8s/issues/1369

Cross-link when this option is available and assign me for the website update if you like.

Cross-link when this option is available and assign me for the website update if you like.

done, thanks!

done, thanks!

Tracking for 1.3.1

Tracking for 1.3.1

Need to watch https://github.com/kyverno/kyverno/issues/1443

Need to watch https://github.com/kyverno/kyverno/issues/1443

Will be added to the Troubleshooting section of the docs.


Please consider adding Kosovo (temp code - XK)

As of 2010 Kosovo has been assigned a temporary code XK. While the US are already using code KV, ISO  have yet to assign them a permanent one.
More info:
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#cite_note-23
http://en.wikipedia.org/wiki/List_of_states_with_limited_recognition

Ah, noticed that there has been the same issue already - #26.

sorry for that..


Deprecation of provider array notation

TL;DR We recently realized that supporting an array of providers in the Prisma schema was premature, adding complexity in the process of improving the product (migrate, native types...), and causing some confusion about our intent.
We are deprecating its use and will consider another solution, better addressing how we want Prisma to support working with multiple databases in the future.
Context
On July 7th, we released Prisma 2.2.0, which came with the following feature: https://github.com/prisma/prisma/issues/1487
It allowed to define a provider using an array notation like:
datasource db {
  provider = ["sqlite", "postgres"]
  url = env("DATABASE_URL")
}

We want to deprecate this use and only allow a single provider per datasource.
Why are we doing this?
Our goal at Prisma is to make it approachable to work any database while ensuring people can make the most of them too.
Each database provider has their own strengths and weaknesses, making them fit certain use cases better than others. As an example, SQLite is great to easily get started anywhere but doesn't scale in high-concurrency scenarios.
By allowing a Prisma data source to fit multiple providers, and leaving it up to the environment to decide which provider was active, we made it look like a single Prisma data source could work interchangeably with any of our supported database vendors, despite of their differences. This, in turn, restricts the set of functionalities one can use with their database.
This is not fully aligned with the goal mentioned above.
What we want is:

to make it easy to start developing using your database of choice (often SQLite as being the simplest for a lot of people) and make it possible to, when the time comes, switch to another database vendor while understanding the implication such a change will have on the schema, your data, and your code;
to enable developers making the most out of functionalities of their specific database provider, and not feel limited by using Prisma;
in the future, to make it simpler to have a single application using multiple data sources, each data source being possibly from a different provider.

I was using this! What should I do?
What will happen
In an upcoming release, Prisma will reject schemas that include multiple providers in a data source declaration.
We will communicate this date and update the issue once it's defined. This issue is a heads up so we can let you know of the intent and you can prepare for it.
At that point, this means that the following will no longer be possible:
datasource db {
  provider = ["sqlite", "postgres"]
  url = env("DATABASE_URL")
}

Instead, Prisma will expect to have only a single provider listed:
datasource db {
  provider = "sqlite" // or "postgres"
  url = env("DATABASE_URL")
}

Implications
A situation where we've seen people using multiple providers for a single data source was when SQLite was used in their development environment while Postgres or MySQL was used in the staging/production environment.
This won’t be possible anymore after this change. Note that, while some projects have been famous for doing that, it is also generally considered more robust to align the providers across environments, as the tests will be consistent.
In situations where you started off an SQLite local database, we recommend installing a local instance of Postgres or MySQL on your local machine.

We use the same schema in two versions of our project one of which uses SQLite and one which uses Postgres. This change will definitely affect us. We were previously using the constructor to specify DB type at runtime which works great, but this schema issue will be a problem for migrations.

If you remove this, can we please use environment variable for provider instead? As @rhlsthrm said migrations would not work for us anymore.

As has been previously commented the ability to use an environment variable for the provider would solve the issue I have of using sqlite in local environment development but running another database such as postgres in the production environment and allows us to keep local development light weight until we need to have postgres locally

This won't be an option for the time being unfortunately.
The reason is that migrations are now SQL-based and generated depending on the provider, making dynamically switching provider not a possibility.
This will require to install a Postgres instance locally.

@thebiglabasky we are in a different situation where we support both SQLite and PostgreSQL using the same schema.prisma. How can we resolve this? Would I need a separate schema file for SQLite?

You would indeed need multiple schema files for the time being indeed.
We would like to explore possibilities to import files from a schema, to simplify the process, but that's not possible at the moment. You can follow this issue for that capability: https://github.com/prisma/prisma/issues/2377

Note: the new migrate is coming out in preview in this 2.13 release and will not be working with schemas using multiple providers

@thebiglabasky is it an acceptable workaround to "find and replace" the provider name in our schema with the other db type?

Am I missing something or is something changing between the version today and the next version but I do not see any SQL in the migration files in my repo.  I am using the netlify plugin for switching the provider at build time and its working today with a single provide defined in my schema
datasource DS {
  // optionally set multiple providers
  // example: provider = ["sqlite", "postgresql"]
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

At build time before Prisma is executed the plugin swaps the provider in the schema and all of the migration schemas as well as steps.json for each of the migrations where the provider is mentioned.
In the new release will this continue to work or are there other changes which are being made that will make this process not work any longer?

@mbush92 if I understand correctly, this will be rolled out in the next version, which will break the multiple providers. I would think the SQL replaces steps.json.

Starting in 2.13 (released in a few hours) migrate will generate SQL based on the provider specified, hence not accept schemas that are referencing multiple providers in the array notation.
The suggestion is to stick to a single provider that reflects your production environment by installing the database on your system (e.g. Postgres has plenty of easy options to install it locally, MySQL too, Docker is also an option...), or working with a hosted instance used for development purposes if you really can't install anything on your workstation (e.g. a free Heroku Postgres...)
This is generally considered a good practice to develop against the same database provider as the one running in production as it prevents from facing discrepancies that these systems have.

If you need two DBMS' for your project, I'd love to learn more about it and understand better your setup @rhlsthrm
I assume that this would require to keep two versions of the schema with separate providers or do a search / replace at runtime, but that's hard to tell without understanding the specifics.

@mbush92 I assume this could still work, but that's not something we've necessarily actively tested as we assume stable providers across environments. You should be able to try that out with the new version once it's out and tell us how it goes!

If you need two DBMS' for your project, I'd love to learn more about it and understand better your setup @rhlsthrm
I assume that this would require to keep two versions of the schema with separate providers or do a search / replace at runtime, but that's hard to tell without understanding the specifics.

@thebiglabasky we are building a distributed system that we provide docker images of. The images allow databases to be plugged in by our user and we need to support both Postgres and SQLite. If we do a search/replace at runtime (assuming for just the provider string in the schema?), will the migrations be properly generated?

@rhlsthrm this is the plugin that we are using on netlify, it is currently working to replace the database provider at build time when we deploy to production, maybe you could do something like this in your build scripts
netlify-plugin-prisma-provider

@mbush92, cool this is interesting! It seems to me like this will stop working once the migrations start generating SQL though.

Yeah, I am afraid for that as well.  It's not that I can't spin up a local postgres database but it sure was easy to get started with RedwoodJS when this just worked the way that it did as out of the box I didn't have to do anything locally to be able to develop outside of spinup the app

@rhlsthrm If you're up for it I'd love to hop on a call to dig more into your setup, and how the upgrade system works currently. That would be important for us to enable products that aim at supporting multiple database systems under the hood, and it looks like your use case could help figuring some aspects out.
Here's a Calendly link if you can find a spot. If timezones differences make that harder, I'm happy to accommodate: https://calendly.com/labas-prisma/multi-provider

Thank you very much @thebiglabasky! I've scheduled time and looking forward to chatting.

@mbush92 That's indeed a drawback of the new migrate, but the benefits of being able to customize migrations and have predictable execution on production environments won over the convenience of not having to install a local instance of the database used in production.
If this turns out to be a major requirement by most of our users, we'll evaluate solutions to better support these scenarios (e.g. a DSL, or else).

Hi,
We are planning to proceed with removing support of the multi-provider notation entirely in the upcoming release in two weeks.
You can refer to this section of our documentation if you wonder about how to deal with this change.

@DarkBitz A unit test should never depend on an external system like a database, in my opinion. To decouple unit tests from a database query I recommend the repository pattern. You define an abstract class with abstract methods for particular queries, like getUserById. Then you implement the repository twice:
The first one uses an in-memory data structure and is used in your unit tests.
The second one uses the actual Prisma client.
You inject the in-memory repository into your unit tests and the Prisma repository into your production code.
Example:
The abstract repository:
// user.repository.ts
abstract class UserRepository {
  abstract save(user: User): Promise<void>{}
  abstract getUserById(id: string): Promise<User>{}
}

The in-memory implementation:
// in-memory-user.repository.ts
@Injectable()
class InMemoryUserRepository extends UserRepository {
  private readonly users = new Map<string, User>()

  async save(user: User): Promise<void> {
    this.user.set(user.id, user);
  }

  async getUserById(id: string): Promise<User> {
    return this.users.get(id)
  }
}

Inject the in-memory repository in the unit test:
//...
const module: TestingModule = await Test.createTestingModule({
      providers: [
        {
          provide: UserRepository,
          useClass: InMemoryUserRepository,
        },
        //...
      ],
    }).compile();
//...

The Prisma repository:
// prism-user.repository.ts
@Injectable()
export class PrismaUserRepository extends UserRepository {
  constructor(private readonly prismaService: PrismaService) {
    super();
  }

  async save(user: User): Promise<void> {
    // Use actual Prisma query here.
  }

  async getUserById(id: string): Promise<User> {
    // Use actual Prisma query here.
  }
}

The provider for the Prisma repository
// user-repository.provider.ts
export const UserRepositoryProvider: Provider = {
  provide: UserRepository,
  useClass: PrismaUserRepository,
};

Load this provider when you would like to inject and use the actual Prisma repository.

Provider arrays were removed as of 2.22.0.
Thanks for all the feedback in this issue. Please open new ones for discussions about related problems in the future.

define an abstract class with abstract methods

Well one could do all that... or one could just start a tiny sqlite instance if you guys would let us.  What do you think would be more efficient?

We are deprecating its use and will consider another solution, better addressing how we want Prisma to support working with multiple databases in the future

Have you got any news about working with multiple databases now?

We are deprecating its use and will consider another solution, better addressing how we want Prisma to support working with multiple databases in the future

Have you got any news about working with multiple databases now?

check out https://github.com/prisma/prisma/discussions/24413#discussioncomment-9777748 🙂


fixed fee option for policy and wallet

If fixedfee is non-zero, then all transactions require exactly fixedtxfee in fees, and wallet generates txs with this fixed fee.

Added a new policy rule (IsSpam) that is enforced if fixedfee > 0. It checks if any outputs are 'split' in a tx, i.e. that the same asset is paid to the same address in more than output. It also rejects the tx if there is more than 1 op_return output.


Log GLIBC version in GNU/Linux

This is a crazy though. We've been experiencing some issues where users running older GLIBC versions couldn't load native modules when starting the flash process.
Could we log the GLIBC version the user is running to get some data about the types of Linux systems our users are running?

Closing stale issues


mixed language support (vhdl/verilog)

Description
I was wondering if mixed language support could be officially added to openlane2.
Proposal
Openlane2 already has the capability to read in VHDL files using the VHDLClassic flow. Hopefully support for mixed verilog/vhdl might not be too hard to add, such that both VERILOG_FILES and VHDL_FILES can be specified in the configuration file at the same time.

This is on our radar.
For others who want this feature, please react 👍 to the original post as it will help me get it prioritized.


KAFKA-17386: Remove broker-list, threads, num-fetch-threads in ConsumerPerformance

The broker-list, threads, num-fetch-threads are deprecated options in ConsumerPerformance.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@FrankYang0529 please add the jira which deprecated those configs to KAFKA-17386. That is helpful to check the deprecation cycle.

@FrankYang0529 please add the jira which deprecated those configs to KAFKA-17386. That is helpful to check the deprecation cycle.

Updated it. Thank you.


Documentation: define the differences in valgrind and valgrind-light on search.nixos.org

Package name: valgrind-light
Latest released version: valgrind-3.23.0

Problem

Searching for valgrind on search.nixos.org/packages shows valgrind as well as valgrind-light.
But both these look exactly same except for their package name.
and the reason for these being different packages is not at all communicated.

Further looking in:

the "Source" button for both refers to the exact same file
i.e. maybe the differences in light/normal version does NOT matter for Nix

searching the MRs, it seems that:

several other things use valgrind-light in their build process, and
their build process might be used outside of nix too, where the light/normal distinction matters
and the valgrind-light exists only to cater to those packages

Proposal

If above observation is correct, then it should be said in description (of say valgrind-light) that:

In context of nix-pkgs, valgrind-light is same as valgrind. If you are unsure about which one to use, pick the valgrind.

Or else, if there is some other reason for existence of both these, then that should be put in the corresponding description.

Or else, if valgrind-light used to exist for some reason, but is no longer relevant anymore, then it should be removed.

Checklist

[x] Not Applicable
checked latest Nixpkgs manual (source) and latest NixOS manual (source)
[x] checked open documentation issues for possible duplicates
[x] checked open documentation pull requests for possible solutions
[x] Checked the [nixpkgs pull requests][prs]

Notify maintainers/last updaters

@edolstra @trofi @alyssais

Note for maintainers: Please tag this issue in your PR.

Add a :+1: reaction to issues you find important.

Looking at the current definition of valgrind-light the only difference is no gdb hardcoding as a dependency (gdb is usually not needed for non-interactive use like tests): https://github.com/NixOS/nixpkgs/blob/f6330df71841e65bdb2e0afd196b6fd88f0a1c6b/pkgs/top-level/all-packages.nix#L19126

<... link ...>

ohww, didn't know there's yet another thing modifying the package description.
  valgrind-light = res.valgrind.override { gdb = null; };

the only difference is no gdb hardcoding as a dependency (gdb is usually not needed for non-interactive use like tests)

so, would that be useful to someone who's not using gdb otherwise?
as i might have been that "someone", had the lldb-mi been available in nix-pkgs :smiley: :laughing:

Well valgrind-light can override the meta.description too, that would resolve this issue.


Fix/mutex read locks

Codecov Report
Base: 100.00% // Head: 100.00% // No change to project coverage :thumbsup:

Coverage data is based on head (5c5e106) compared to base (51cc5cb).
Patch coverage: 100.00% of modified lines in pull request are covered.

:exclamation: Current head 5c5e106 differs from pull request most recent head 0dd5024. Consider uploading reports for the commit 0dd5024 to get more accurate results

Additional details and impacted files
@@            Coverage Diff            @@
##            master        #4   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines          230       230
=========================================
  Hits           230       230

Impacted Files
Coverage Δ

tlru.go
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


build_timeline() can not deal with absolute datetime distributions in technosphere exchanges

it seems that we broke this when changing the way two td's are added. But while Temporalis does not cause an error, it also does not behave as expected...


Single-quote instead of double, fixes #356

Thank you for raising the issue and opening PR!
The reason for such quoting was exactly as the one you specified in the #356:

Polybar doesn't quote values unless whitespace is really important to the value

E.g. I thought it would be counterintuitive if someone would have option = "something   " in their configuration and extra spaces in the end wouldn't be preserved.
In my configuration, for example, I was using format-prefix with spaces in the end for additional padding. Since then I, however, discovered format-NAME-padding option that solves the issue without using extra spaces hack.
I see two options here:

To add a special case for empty value. The benefit here is that it will be compatible with the current format and users will not have to change anything.
To go with your patch and suggest users to change their configuration to option = ''"something   "'' in case they need it (I haven't tested, but I guess it should work).

I wouldn't mind going with the second option if we can be quite sure that padding/margin settings cover most cases when extra spaces are needed.

@JonathanReeve Thanks for the contribution, I have no strong opinion about this since I don't use this module myself. Although it would be nice, if possible, to keep backwards compatibility.
I mostly wanted to point out that the commit message to read something along the lines of

polybar: single-quote instead of double
Polybar expects quoted values only when whitespace is important to the value.
Fixes #356

Is there a way to check (using some nix library) whether there's whitespace at either end of a value, and quote it if so? That way it follows the INI specification of only quoting when necessary, maintains backwards compatibility, and solves the empty value issue.

Something like
diff --git a/modules/services/polybar.nix b/modules/services/polybar.nix
index a187f62..423b0f1 100644
--- a/modules/services/polybar.nix
+++ b/modules/services/polybar.nix
@@ -11,9 +11,14 @@ let
   toPolybarIni = generators.toINI {
     mkKeyValue = key: value:
     let
+      quoted = v:
+        if hasPrefix " " v || hasSuffix " " v
+        then ''"${v}"''
+        else v;
+
       value' =
         if isBool value then (if value then "true" else "false")
-        else if (isString value && key != "include-file") then ''"${value}"''
+        else if (isString value && key != "include-file") then quoted value
         else toString value;
     in
       "${key}=${value'}";

might do it.

Nice! I think this should do the trick. If you can make the changes I'll be happy merge this PR :)

Awesome. I applied @rycee's patch. (And changed the commit message and PR message while I was at it.) Let me know if this looks good!

Nice, thanks! I squashed it all and rebased to master in 629d66e0b983b0ea5780ddf805f65a024d7deb5b.

@JonathanReeve thanks for the contribution! And thank you for merging it @rycee :)


Run BF3 scenario

Description
Run the BF3 scenario and document issues. Fix SP and/or the Light Client, if necessary.
Follow-up from #1691
Acceptance criteria

Tasks

[ ]

Done, green with current master (5b3bfb9b26f9f090f787d321b4b1214dfaa2dde7):

This can be considered part of #1691 , since it also did a sizeable stress test with concurrent requests in both directions in a 5-node linear network.


GH-41460: [C++] Use ASAN to poison temp vector stack memory

Rationale for this change
See #41460. And reduce the overhead of current manual poisoning (filling the entire stack space with 0xFFs) that happens even in release mode.

What changes are included in this PR?
Use ASAN API to replace the current manual poisoning of the temp vector stack memory.

Are these changes tested?
Wanted to add cases to assert that ASAN poison/unpoison is functioning. However I found it too tricky to catch an ASAN error because ASAN directly uses signals that are hard to interoperate in C++/gtest. So I just manually checked poisoning is working in my local, e.g. by intentionally not unpoisoning the allocated buffer and seeing ASAN unhappy.
Just leveraging existing cases that use temp stack such as acero tests, which should cover this change well.

Are there any user-facing changes?
None.

GitHub Issue: #41460

Hi @felipecrv , this is a followup of our discussion in https://github.com/apache/arrow/pull/41335#discussion_r1583226550. Think you might want to take a look. Thanks.

Thank you for doing this! ASAN is so cool.


issue of primus socket

Hi, FootNiko,
When I test the sample, have a problem that is:
I replace socket.io.js with primus.js and primus-emit, because the socket.io often broken on cordova mobile application. However the sample can not join room but say 'timeout'.
How can I fix the problem? Does the mediasoup not fit to the primus.js ?
Thank you very much.

Hi,
You can use MediaSoup with any signaling library you prefer.
If it doesn't work, probably you're doing something wrong. Make sure you understand the workflow and just replicate it with primus.js (I haven't used primus, so not sure I'll be much helpful).

Hi, footniko,
I found the error when using primus.
AT CLIENT LOG:
at server log:
request: { method: 'queryRoom', target: 'room' }
incoming::data :  {"emit":["mediasoup-request",{"method":"queryRoom","target":"room"},null]}
queryRoom response: { rtpCapabilities:
{ codecs: [ [Object], [Object], [Object] ],
headerExtensions:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
fecMechanisms: [] },
mandatoryCodecPayloadTypes: [] }
queryRoom error: TypeError: cb is not a function

Hi, footniko,
I found the error when using primus, that is the cb of "spark.on('mediasoup-request', (request, cb)" is NOT a function.
AT CLIENT, the statement, primus.emit('mediasoup-request', request, (err, response) => {});
LOG:
outgoing::data :  {"emit":["mediasoup-request",{"method":"queryRoom","target":"room"},null]}
AT SERVER, the statement, room.receiveRequest(request)
.then((response) => {console.log('queryRoom response:', response);cb(null, response)})
LOG:
request: { method: 'queryRoom', target: 'room' }
incoming::data : {"emit":["mediasoup-request",{"method":"queryRoom","target":"room"},null]}
queryRoom response: { rtpCapabilities:
{ codecs: [ [Object], [Object], [Object] ],
headerExtensions:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
fecMechanisms: [] },
mandatoryCodecPayloadTypes: [] }
queryRoom error: TypeError: cb is not a function
cb is NOT a function. How to set the cb to a function?
Thank you very much.

Please, try to ask such a kind of questions on StackOverflow since they are programming related questions and have nothing to do with MediaSoup.


feat(#19): Add support for toggle full screen mode

Closes #19
This PR adds the option to toggle between the default size (750 x 750) and full screen mode by pressing [f].

In the mouse when I play the game in fullscreen it get's out of the screen a little and the pixels of the ship get stuck there, as you can see in the image below,

Other thing is that the toggle works perfectly but I want you to put the toggle in the maximize/minimize button on the application instead of using another key.

@Mayank0255 Thanks for the feedback! For the maximize/minimize button, do you mean here?

Because the problem is that this bar won't show in full screen mode.
Or should I add a button to the screen? If so, where would you like it to be placed?

@lyu4321 for that the general scenario is that when the game is in small screen then the you can use the button to maximize it, then when a user wants to exit the fullscreen and go back to the small screen then the [esc] key should be enabled to just going to small screen from fullscreen

@Mayank0255 Hi I've added a fix for the pixels issue and as we discussed previously, I'll be creating a separate issue for the maximize/minimize implementation. Please let me know if there's anything else to be changed, thank you!

@lyu4321 actually my laptop is not working suddenly, so I won't be able to test it out but I think you might have done the job so I will be merging it

@lyu4321,
I had a request to make that as Hacktoberfest has only one week left, I am planning to do a tweet on twitter at the end of the month congratulating all the contributors and giving them a special mention for there efforts,
To do this I would like you to do the steps below so that it becomes easy for me to document,

Follow me on Mayank0255
Text me on twitter itself so that I have your twitter handles.
In the text mention three things-

GitHub Handle Link
Name of the project you worked with me

I hope to receive a favorable reply 🎉

@Mayank0255 Thanks for merging the changes. Unfortunately, I don't have a Twitter account :( If you want, you could mention my GitHub name.


t2 help command

Current status: no such command
Spec:
tessel [--help | -h]
Prints out all the commands and what they do (usage)
$ tessel
> tessel <command> [--help]
> 	help		prints usage. Add ‘--help’ after any command for more info
> 	init		initialize the current directory as your working directory
>	list 		list nearby tessel devices
>	select		choose which tessel you want to interact with
>	name		change the hostname of the selected tessel
>	erase		erase code pushed to flash
>	logs		display the console.logs from the currently running process
>	push		push a file to flash to be run anytime tessel is powered
>	root		provides access to the underlying linux system on board
>	run		run a file in RAM immediately
>	status		get the current status of the selected tessel
>	update		update the selected tessel to latest firmware build
>	wap		create a wireless access point on the selected tessel
>	wifi		configure wifi connection on the selected tessel
$

$ tessel --help
> tessel <command> [--help]
> ...
$

The descriptions should be pulled from the .help functions, related: https://github.com/tessel/t2-cli/issues/83

nomnom completely takes care of this when it's not broken (see https://github.com/tessel/t2-cli/pull/97). I'll just clean up the help messages so they're standard and add in  metavars where appropriate


get_aps() returns devices other than access points

I have a UniFi switch and an AP. I'd expect just the AP to be returned by get_aps(), but I get the switch too:
In [20]: [x["type"] for x in c.get_aps()]
Out[20]: [u'usw', u'uap']

I don't think the unifi solution had other kinds of devices than APs when this was written.

Would the solution be to filter by type "uap"? Do we have an exhaustive list of "type" values for all UniFi products?

I don't know. I only have AP:s, and frankly don't really use this API any more. Perhaps someone else can fill in here.

I don't mind taking it on. I'm aware that the API is undocumented/unsupported, but is there a source of information other than reverse engineering the management JS app?

Not that I've found, no :(


NIFI-11167 - Add Excel Record Reader

Summary
NIFI-11167
Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking

[x] Apache NiFi Jira issue created

Pull Request Tracking

[x] Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
[ ] Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000

Pull Request Formatting

[x] Pull Request based on current revision of the main branch
[ ] Pull Request refers to a feature branch with one commit containing changes

Verification
Please indicate the verification steps performed prior to pull request creation.
Build

[x] Build completed using mvn clean install -P contrib-check

[x] JDK 11
[ ] JDK 17

Licensing

[ ] New dependencies are compatible with the Apache License 2.0 according to the License Policy
[ ] New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

[x] Documentation formatting appears as expected in rendered files

@dan-s1 you have some unit test failures in your commit.

@exceptionfactory @dan-s1 This is a really interesting PR. I've had a number of clients that would benefit from this sort of capability. My one big question/concern is whether or not this new reader will be tolerant of poorly formatted or inconsistent documents. As an example, one of the things I've seen over the years is people doing stuff like inserting arbitrary values at various points of the spreadsheet. Comments, stuff like that. Will this reader be flexible enough to ignore junk and badly formatted stuff or will it just fail on contact with such data?

@MikeThomsen @exceptionfactory The test failures I see are

Error:  Failures:
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecords:62 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecordsWithEL:94 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>

The problem is on my box those tests are passing. I am not sure how to go about fixing these short of removing those assertions. Please advise.

@MikeThomsen @exceptionfactory The test failures I see are

Error:  Failures:
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecords:62 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecordsWithEL:94 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>

The problem is on my box those tests are passing. I am not sure how to go about fixing these short of removing those assertions. Please advise.

The problem is due to the fact that the timestamp is implicitly local, so the expected value needs to account for that fact. I will take a closer look at the test to determine the best solution.

@MikeThomsen @exceptionfactory The test failures I see are

Error:  Failures:
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecords:62 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>
Error:    TestExcelSchemaInference.testInferenceIncludesAllRecordsWithEL:94 expected: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, TIME:HH:mm:ss a, STRING]> but was: <CHOICE[TIMESTAMP:yyyy/MM/dd/ HH:mm, STRING]>

The problem is on my box those tests are passing. I am not sure how to go about fixing these short of removing those assertions. Please advise.

After taking a closer look, the problem does not appear to related to the time zone necessarily. The test is failing across all platforms in different time zones.
@dan-s1 Does the test succeed when running a Maven build from the command line? Can you provide the version of Java and Maven you are using?

@MikeThomsen That's a good question about strict versus lenient parsing. I have not reviewed the pull request in detail yet either, but I plan to review it soon. One primary goal is to replace the existing ConvertExcelToCSVProcessor.

@exceptionfactory When running mvn -v I have
Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584)
Maven home: /opt/apache-maven-3.9.0
Java version: 11.0.18, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-<IP_ADDRESS>.10-1.el7_9.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.232-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"

@exceptionfactory @dan-s1 This is a really interesting PR. I've had a number of clients that would benefit from this sort of capability. My one big question/concern is whether or not this new reader will be tolerant of poorly formatted or inconsistent documents. As an example, one of the things I've seen over the years is people doing stuff like inserting arbitrary values at various points of the spreadsheet. Comments, stuff like that. Will this reader be flexible enough to ignore junk and badly formatted stuff or will it just fail on contact with such data? IMHO, to be genuinely useful it would need to have a flexible mode and a strict mode so that people could make at least a "best effort" at extracting data.
(I haven't actually dug into the PR, so just asking some high level questions. Going to try to start reviewing today or tomorrow)

@MikeThomsen  I believe the Inference schema strategy will work for you customers as it is will infer all the different data types a column can have.  Using that will allow for the tolerance while a more specific schema will enforce the strict mode.

@exceptionfactory Are the locales where these CI builds English speaking? I suspect if not, then PM is not displayed in the Excel spreadsheet as it would be in an English speaking locale. Hence there would be no column to match the 'TIME:HH:mm:ss a' format as there is on my box which is an English speaking locale. I did some quick research and it appears by default Excel displays dates based on regional settings.

@exceptionfactory Are the locales where these CI builds English speaking?

@dan-s1, no the automated builds use different locales (EN, HI, JP, and FR) to surface potential issues.
It sounds like changing the tests to avoid using language-based indicators (such as AM and PM) would be the best way forward.

@exceptionfactory So my changes did improve things though now on the Windows box it is failing due to it interpreting a number as a string. What would you like me to do for this?

Thanks for improving the tests @dan-s1. The Windows build failure needs to be corrected, can you narrow down why it is failing?

@exceptionfactory The only thing I can think of right now is perhaps there are differences between how the Excel document is interpreted on a native Windows environment and on Linux environments.  The file being tested against was created with LibreOffice (I believe it was one of the test files from ConvertExcelToCsv and I added a column and saved with LibreOffice). I will look into this further.

@exceptionfactory I was able to find the discrepancy and it is not what I thought. It is actually dependent on the java.util.Locale and not the operating system. In order to use the org.apache.nifi.util.SchemaInferenceUtil.getDataType method for inferring the correct data type, I needed to get the cell value as a string. To do that I used  apache.poi.ss.usermodel.DataFormatter which I hoped would take care of any formatting and give the best inference possible especially if the cell value was a timestamp or perhaps a big integer. It is only now I realize that class is heavily reliant on java.util.Locale which determine how numbers and dates are formatted in a given locale. Hence the difference across the CI builds which are running in different locales.  The particular  field which has the differences is a field with a number in scientific notation. In FR it is represented for example as 9,8765E+08 while the other locales represent it as 9.8765E+08. The underlying NIFI code which parses numbers does not recognize commas hence it is inferring the field's data type as a string and not a float. I still believe the choice I made for the inference logic is correct as the POI handles all of the necessary formatting. Though it seems  I probably should use simpler data which would work across all locales. Please let me know how you would like me to proceed.

@exceptionfactory I simplified the unit tests to avoid any  locale issues (much like org.apache.nifi.csv.TestCSVSchemaInference). I also added unit tests to highlight the difference between locales when the schema is inferred.

Thanks @dan-s1! For subsequent changes on this pull request, please add new commits so it we can track the changes necessary. I started the automated build to evaluate the changes.

@exceptionfactory I realize you are very busy as I see a lot of activity with your name but I was wondering if this PR can please be considered?  If there are any issues I would like to answer them and/or fix them while the code is somewhat fresher in my mind. Thank you!

Thanks @dan-s1, this is on my list to review, I plan to take a closer look soon.

@exceptionfactory I believe I covered all the points your brought up. Please let me know how this looks and whether there is anything else to change.
Can I mark the conversations resolved or is that something the reviewer does? I have seen it done both ways on projects and I am not sure how Apache NIFI does it.
Thanks!

@exceptionfactory Just checking if there is anything else I need to do for this PR. Thanks!

@exceptionfactory I went through the code again and I corrected things based on feedback you had given on other PRs.

Thanks @dan-s1, I will review the latest version soon.

@exceptionfactory Seems like the failure in the build was unrelated to the code I checked in.

@exceptionfactory Can you please restart the Windows Zulu JDK 11 FR ? It had timed out yesterday. Thanks!

@exceptionfactory 👍Finally that Windows build succeeded.

I verified this PR by executing a flow to convert xlsx to json . I tested with both ConvertRecord and QueryRecord processors.
Note: Since the columns are denoted with numbers , i have to quote the QueryRecord select sqls like select * from FLOWFILE where "0" <> ''  .

@exceptionfactory Can you please restart the Windows Zulu JDK 11 FR build? It timed out. Thanks!

@exceptionfactory I just added the check to the RowIterator next() method to see whether to throw a NoSuchElementException or not.

@exceptionfactory  Please let me know if there is anything else. Thanks!

@exceptionfactory In order to do this I do need many of the dependencies that are already in nifi-schema-registry-service-api as well as classes that are in that module e.g. (org.apache.nifi.schema.inference.InferSchemaAccessStrategy and org.apache.nifi.schema.inference.SchemaInferenceUtil). Do I just include that module as a dependency which whereby I would get the other dependencies as transient dependencies?

@exceptionfactory I found that I had to cut and paste files

org/apache/nifi/schema/inference/CachedSchemaAccessStrategy.java
org/apache/nifi/schema/inference/InferSchemaAccessStrategy.java
org/apache/nifi/schema/inference/SchemaInferenceUtil.java
org/apache/nifi/util/SchemaInferenceUtil.java

Wouldn't it make sense to move these files under module nifi-schema-inference-utils so both nifi-record-serialization-services  and nifi-poi-services  could use them ?

@exceptionfactory I found that I had to cut and paste files
1. org/apache/nifi/schema/inference/CachedSchemaAccessStrategy.java

2. org/apache/nifi/schema/inference/InferSchemaAccessStrategy.java

3. org/apache/nifi/schema/inference/SchemaInferenceUtil.java

4. org/apache/nifi/util/SchemaInferenceUtil.java

Wouldn't it make sense to move these files under module nifi-schema-inference-utils so both nifi-record-serialization-services  and nifi-poi-services could use them ?

Yes, given the usage pattern, it moving the schema.inference classes to a shared module makes sense. It looks like nifi-schema-inference-utils does not depend on nifi-record-serialization-services-api right now, which is the reason for their current location. It actually seems like a nifi-record-serialization-services-shared module under nifi-record-serialization-services-bundle would be a reasonable approach. That would keep the classes closer to their current usage, but also support reuse in nifi-poi-services as planned.

@exceptionfactory I added the new modules as you requested. Please let me know if these are what you envisioned.

@exceptionfactory Done

Thanks for moving the VolatileSchemaCache back to the record services module. The latest code changes look good.
In the course of review, I noticed that nifi-poi-services was not included in nifi-poi-nar, so it wasn't being picked up at runtime. I also noticed that the Required Sheets property was not being evaluated with the attributes passed to the createRecordReader method. I pushed a commit correcting those two issues, along with adjusting spacing and adding the final keyword in a few places.
With those changes, this should be ready to go, and I will plan on merging pending successful build completion.


Option to disable snapping

First up a big thanks for making pretty much the exact thing I was looking for!
Secondly, it would be awesome if you could implement an option to disable snapping!
I mainly just need the x-axis wrapping feature and kinda like my cursor getting stuck in the corners. (yes, I'm weird.)
Kind Regards!

You are right.
The existing behaviour of -s to only enable snapping is kind of awkward; it makes more sense and is easier to explain if -s simply enables snapping.
Implementation wise it was more tricky than I thought, because I think that it still makes sense to keep snapping when doing outer mouse warping

I.e. in the above example moving the mouse cursor to the hard edge (1) it would not snap to move over to the second monitor, but if you move to the left edge (2) then you would still want it to wrap around and move to the edge of the rightmost monitor.
The alternative would be to either:

wrap around the first monitor only if there is a hard edge (annoying) or
apply a hard edge on both sides if there is a hard edge on one side (complicated, especially if you have more than 2 monitors)

I'll push what I have so far anyway. Can you have a look to see if that works for your use-case?

Hey thanks for implementing it that quickly!
I currently have it installed via the AUR. Is it safe to install it with the Instructions provided and then overwrite it later once the updated version is released?

Yes should be perfectly fine. If you are unsure then you can just uninstall one before you install the other. Actually if you just clone and run make (rather than sudo make install) then the binary will be placed in the local directory and you can run ./encircle to test.

YES! works like a charm and exactly how I want it to! Keep up the great work!
I think you can release this as an update now haha

Have pushed the update to the AUR now.


bug: failed to build on macOS 13.4

Super excited about a rust-based LSP and type checker! Blazing fast, here we go!
Was unfortunately unable to build due to type errors.
macOS 13.4
M1 MBP
Rust 1.70.0

Error output
cargo install pylyzer
    Updating crates.io index
  Downloaded pylyzer v0.0.31
  Downloaded 1 crate (1.2 MB) in 0.97s
  Installing pylyzer v0.0.31
    Updating crates.io index
  Downloaded fake-simd v0.1.2
  Downloaded erg_parser v0.6.14
  Downloaded lsp-types v0.93.2
  Downloaded num-bigint v0.2.6
  Downloaded ordermap v0.3.5
  Downloaded petgraph v0.4.13
  Downloaded py2erg v0.0.31
  Downloaded sha2 v0.8.2
  Downloaded string_cache v0.7.5
  Downloaded rustpython-parser v0.1.2
  Downloaded term v0.5.2
  Downloaded unicode-xid v0.1.0
  Downloaded unic-ucd-ident v0.9.0
  Downloaded unicode_names2 v0.4.0
  Downloaded fixedbitset v0.1.9
  Downloaded precomputed-hash v0.1.1
  Downloaded new_debug_unreachable v1.0.4
  Downloaded string_cache_shared v0.3.0
  Downloaded string_cache_codegen v0.4.4
  Downloaded lalrpop-util v0.17.2
  Downloaded byte-tools v0.3.1
  Downloaded block-padding v0.1.5
  Downloaded diff v0.1.13
  Downloaded dirs v1.0.5
  Downloaded docopt v1.1.1
  Downloaded els v0.1.26
  Downloaded ena v0.13.1
  Downloaded block-buffer v0.7.3
  Downloaded erg_common v0.6.14
  Downloaded ascii-canvas v2.0.0
  Downloaded itertools v0.8.2
  Downloaded generic-array v0.12.4
  Downloaded digest v0.8.1
  Downloaded opaque-debug v0.2.3
  Downloaded lalrpop v0.17.2
  Downloaded rand_hc v0.1.0
  Downloaded bitflags v1.3.2
  Downloaded aho-corasick v1.0.2
  Downloaded serde v1.0.164
  Downloaded bit-set v0.5.3
  Downloaded bit-vec v0.6.3
  Downloaded rand_chacha v0.1.1
  Downloaded rand_core v0.4.2
  Downloaded rand_jitter v0.1.4
  Downloaded rand_pcg v0.1.2
  Downloaded rand_xorshift v0.1.1
  Downloaded rand_isaac v0.1.1
  Downloaded rand_core v0.3.1
  Downloaded phf_shared v0.7.24
  Downloaded phf_generator v0.7.24
  Downloaded lazy_static v1.4.0
  Downloaded either v1.8.1
  Downloaded autocfg v0.1.8
  Downloaded atty v0.2.14
  Downloaded log v0.4.19
  Downloaded regex v1.8.4
  Downloaded serde_derive v1.0.164
  Downloaded unic-char-property v0.9.0
  Downloaded num-traits v0.2.15
  Downloaded strsim v0.10.0
  Downloaded siphasher v0.2.3
  Downloaded proc-macro2 v1.0.60
  Downloaded unic-emoji-char v0.9.0
  Downloaded rand v0.6.5
  Downloaded unicode-xid v0.2.4
  Downloaded quote v1.0.28
  Downloaded memchr v2.5.0
  Downloaded serde_json v1.0.96
  Downloaded num-integer v0.1.45
  Downloaded unic-char-range v0.9.0
  Downloaded unic-common v0.9.0
  Downloaded tinyvec v1.6.0
  Downloaded tinyvec_macros v0.1.1
  Downloaded form_urlencoded v1.2.0
  Downloaded rand_os v0.1.3
  Downloaded byteorder v1.4.3
  Downloaded unicode-bidi v0.3.13
  Downloaded url v2.4.0
  Downloaded serde_repr v0.1.12
  Downloaded percent-encoding v2.3.0
  Downloaded typenum v1.16.0
  Downloaded unicode-ident v1.0.9
  Downloaded unicode-normalization v0.1.22
  Downloaded itoa v1.0.6
  Downloaded syn v2.0.18
  Downloaded unic-ucd-version v0.9.0
  Downloaded ryu v1.0.13
  Downloaded idna v0.4.0
  Downloaded regex-syntax v0.7.2
  Downloaded erg_compiler v0.6.14
  Downloaded regex-syntax v0.6.29
  Downloaded libc v0.2.146
  Downloaded autocfg v1.1.0
  Downloaded 93 crates (5.6 MB) in 1.49s
   Compiling autocfg v1.1.0
   Compiling proc-macro2 v1.0.60
   Compiling quote v1.0.28
   Compiling unicode-ident v1.0.9
   Compiling rand_core v0.4.2
   Compiling libc v0.2.146
   Compiling serde v1.0.164
   Compiling siphasher v0.2.3
   Compiling rand_core v0.3.1
   Compiling autocfg v0.1.8
   Compiling rand_hc v0.1.0
   Compiling rand_isaac v0.1.1
   Compiling rand_xorshift v0.1.1
   Compiling typenum v1.16.0
   Compiling phf_shared v0.7.24
   Compiling rand_chacha v0.1.1
   Compiling rand_pcg v0.1.2
   Compiling rand v0.6.5
   Compiling erg_common v0.6.14
   Compiling memchr v2.5.0
   Compiling string_cache_shared v0.3.0
   Compiling rand_jitter v0.1.4
   Compiling rand_os v0.1.3
   Compiling byteorder v1.4.3
   Compiling byte-tools v0.3.1
   Compiling syn v2.0.18
   Compiling block-padding v0.1.5
   Compiling dirs v1.0.5
   Compiling regex-syntax v0.7.2
   Compiling lazy_static v1.4.0
   Compiling aho-corasick v1.0.2
   Compiling term v0.5.2
   Compiling num-traits v0.2.15
   Compiling opaque-debug v0.2.3
   Compiling new_debug_unreachable v1.0.4
   Compiling log v0.4.19
   Compiling fake-simd v0.1.2
   Compiling phf_generator v0.7.24
   Compiling generic-array v0.12.4
   Compiling string_cache_codegen v0.4.4
   Compiling precomputed-hash v0.1.1
   Compiling tinyvec_macros v0.1.1
   Compiling block-buffer v0.7.3
   Compiling digest v0.8.1
   Compiling ordermap v0.3.5
   Compiling strsim v0.10.0
   Compiling either v1.8.1
   Compiling bit-vec v0.6.3
   Compiling fixedbitset v0.1.9
   Compiling string_cache v0.7.5
   Compiling bit-set v0.5.3
   Compiling petgraph v0.4.13
   Compiling itertools v0.8.2
   Compiling sha2 v0.8.2
   Compiling tinyvec v1.6.0
   Compiling ena v0.13.1
   Compiling ascii-canvas v2.0.0
   Compiling atty v0.2.14
   Compiling regex v1.8.4
   Compiling num-integer v0.1.45
   Compiling unic-common v0.9.0
   Compiling serde_derive v1.0.164
   Compiling unicode-xid v0.1.0
   Compiling unic-char-range v0.9.0
   Compiling regex-syntax v0.6.29
   Compiling lalrpop-util v0.17.2
   Compiling diff v0.1.13
   Compiling unic-char-property v0.9.0
   Compiling unic-ucd-version v0.9.0
   Compiling unicode-normalization v0.1.22
   Compiling num-bigint v0.2.6
   Compiling unicode-xid v0.2.4
   Compiling erg_compiler v0.6.14
   Compiling percent-encoding v2.3.0
   Compiling unicode-bidi v0.3.13
   Compiling serde_json v1.0.96
   Compiling form_urlencoded v1.2.0
   Compiling idna v0.4.0
   Compiling erg_parser v0.6.14
   Compiling ryu v1.0.13
   Compiling itoa v1.0.6
   Compiling unic-ucd-ident v0.9.0
   Compiling unic-emoji-char v0.9.0
   Compiling serde_repr v0.1.12
   Compiling bitflags v1.3.2
   Compiling unicode_names2 v0.4.0
   Compiling docopt v1.1.1
   Compiling url v2.4.0
   Compiling lalrpop v0.17.2
   Compiling lsp-types v0.93.2
   Compiling rustpython-parser v0.1.2
   Compiling els v0.1.26
   Compiling py2erg v0.0.31
error[E0308]: mismatched types
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/py2erg-0.0.31/convert.rs:1272:18
     |
1272 |             Some(class_spec),
     |             ---- ^^^^^^^^^^ expected `TypeSpecWithOp`, found `TypeSpec`
     |             |
     |             arguments to this enum variant are incorrect
     |
help: the type constructed contains `TypeSpec` due to the type of the argument passed
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/py2erg-0.0.31/convert.rs:1272:13
     |
1272 |             Some(class_spec),
     |             ^^^^^----------^
     |                  |
     |                  this argument influences the type of `Some`
note: tuple variant defined here
    --> /rustc/90c541806f23a127002de5b4038be731ba1458ca/library/core/src/option.rs:572:5

error[E0308]: mismatched types
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/py2erg-0.0.31/convert.rs:1296:18
     |
1296 |             Some(class_spec),
     |             ---- ^^^^^^^^^^ expected `TypeSpecWithOp`, found `TypeSpec`
     |             |
     |             arguments to this enum variant are incorrect
     |
help: the type constructed contains `TypeSpec` due to the type of the argument passed
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/py2erg-0.0.31/convert.rs:1296:13
     |
1296 |             Some(class_spec),
     |             ^^^^^----------^
     |                  |
     |                  this argument influences the type of `Some`
note: tuple variant defined here
    --> /rustc/90c541806f23a127002de5b4038be731ba1458ca/library/core/src/option.rs:572:5

error[E0308]: mismatched types
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/py2erg-0.0.31/convert.rs:1442:17
     |
1437 |             let sig = Signature::Subr(SubrSignature::new(
     |                                       ------------------ arguments to this function are incorrect
...
1442 |                 return_t,
     |                 ^^^^^^^^ expected `Option<TypeSpecWithOp>`, found `Option<TypeSpec>`
     |
     = note: expected enum `Option<erg_compiler::erg_parser::ast::TypeSpecWithOp>`
                found enum `Option<TypeSpec>`
note: associated function defined here
    --> /Users/Leisure/.cargo/registry/src/index.crates.io-6f17d22bba15001f/erg_parser-0.6.14/ast.rs:3907:18
     |
3907 |     pub const fn new(
     |                  ^^^

For more information about this error, try `rustc --explain E0308`.
error: could not compile `py2erg` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile `pylyzer v0.0.31`, intermediate artifacts can be found at `/var/folders/tx/6pp47_bj75z6xtv1jmt7rpk00000gq/T/cargo-installE807Bp`

Anything else I can do to help? :-)

The pylyzer release is automated, but I now find that the process is failing.
https://github.com/mtshiba/pylyzer/actions/runs/5230489178/jobs/9444062584
The cause is that the parser was updated with v0.0.32. We are using https://github.com/RustPython/Parser as our parser, but this crate is not published on crates.io, so it was failing to publish. This problem seems to have already been reported.
https://github.com/RustPython/Parser/issues/67
https://github.com/astral-sh/ruff/issues/43
As a temporary solution, you can clone this repository and install with cargo install --path ..

Excellent, thanks a lot!
Again, super excited about this project! Can't wait for it to reach maturity.

fixed with v0.0.39.


Add rubocop gem

I am not sure if it is acceptable, but it would be nice use rubocop during coding.

I will use Gemfile.dev.