Create ThemeController from part of ObserverController

Delivers Pivotal #137757419. Also see recent Slack discussion.
Comments/Questions:
Checklist/Completeness.
I used this checklist (which augments @pellaea’s Slack post), except as noted below.  If there’s something that I should add to the checklist please let me know.
Callbacks and exceptions

I used the current scheme (list callbacks and excepts near top of controller), as we don’t yet have a replacement).
None of the ThemeController methods invoke before_action :login_required.  Therefore I could have omitted that callback.  Instead, I included it, excepting all methods. I did it this way to serve as a reminder in the unlikely circumstance that we one day add a method which does require login.

Actions
Doing this conversion made me really learn something which I’d read before.  One doesn’t need to define controller actions if there’s a template which matches that name.

There were no controller actions defined for the individual themes (Agaricus, etc.).  I left things that way, adding a comment explaining the absence of a definition.
QUESTION: would you prefer that I create actions for those themes.  The definitions will be empty, e.g.,

  def Agaricus
  end

There was an empty action defined for color_themes.  I retained it.  I could delete it.
QUESTION: Should I do so? (Then we’ll have a controller with no defined actions.)

Routes
I did not add routes to direct the old actions to the new controller.  This isn’t hard to do, but -- given that these actions have been invisible for a while -- seemed unnecessary clutter in the routes file.
QUESTION:  Should I add these routes? (If so, I also intend to add route tests.)
Other:

I will update the observer/news item right after I’m done creating this PR.
I’m trying to make my commit log and messages more useful via the practices suggested here and here.  (I can still improve; I see at least one thing I messed up -- mixing code changes with whitespace changes.)
Suggestions are welcome.

Coverage increased (+0.04%) to 86.9% when pulling 37adadd7056065e0339f543fb60d6a07cbf1d3d4 on JoeCohen:theme_controller into 4d31946952ddfaeb99195e411530730b9cd5d360 on MushroomObserver:master.

Coverage increased (+0.04%) to 86.9% when pulling 37adadd7056065e0339f543fb60d6a07cbf1d3d4 on JoeCohen:theme_controller into 4d31946952ddfaeb99195e411530730b9cd5d360 on MushroomObserver:master.

Nathan, do you want to look at this one, too, before I merge it?  Looks good to me.


UnlintedCode and Typing error

The readme files are not linted properly and there is a minor typo in index.js file

Created a PR for the same: #64


Can DZITileSource take varying sized tiles

We have converted our  images from czi to dzi and it contains tiles of various size even within
the same layer.  They have starting points and shape size info instead of rows and columns

We have converted our images from czi to dzi and it contains tiles of various size even within
the same layer.

Doesn't sound like DZI to me :)
However you could write a custom tile source.

They have starting points and shape size info instead of rows and columns

This part might be problematic because you won't be able to know the URL of a tile  for a given level, x and y coordinates. One option would be to have an extra file with all the mapping I guess (the same way the dzi format has an xml file giving the tile size and image dimensions).
Any reason to use such a pyramid type? How did you generate it?

The pyramid structure is in the czi file already. We just extracted the info and tiles into dzi conforming
structure.

It looks like it might still requires a fixed sized tile per level

I don't even think we support different tile sizes per level.
Maybe you can try to build a DZI pyramid with pyramidIO.
Apparently, the czi format is supported by imageio which is used by pyramidIO. So it may work.

pyramidIO does not have any info on whether it can read the CZI pyramid format.
Our tiles have start positions and shape size info. The last thing would be to reprocess all tiles
into fixed sized tiles but it is rather hairy because there are overlap and alignment problem among them.
----- Original Message -----
From: "Antoine Vandecreme"<EMAIL_ADDRESS>To: "openseadragon/openseadragon"<EMAIL_ADDRESS>Cc: "meihuisu"<EMAIL_ADDRESS>Sent: Thursday, November 12, 2015 2:05:37 PM
Subject: Re: [openseadragon] Can DZITileSource take varying sized tiles (#770)
I don't even think we support different tile sizes per level.
Maybe you can try to build a DZI pyramid with pyramidIO.
Apparently, the czi format is supported by imageio which is used by pyramidIO. So it may work.

Reply to this email directly or view it on GitHub:
https://github.com/openseadragon/openseadragon/issues/770#issuecomment-156250673

pyramidIO does not have any info on whether it can read the CZI pyramid format.

Yes, I don't have any CZI to test it but it might be as simple as running:
java -jar pyramidio-cli-0.0.3.jar -i your-image.czi -o your-output-folder

You can download the jar from here: https://github.com/NIST-ISG/pyramidio/releases

I failed to make it work.
Error while building the pyramid.
java.io.IOException: No codec found for image a.czi
at gov.nist.isg.pyramidio.BufferedImageReader.(BufferedImageReader.java:35)
at gov.nist.isg.pyramidio.cli.Main.main(Main.java:153)

Hum, after making some more research, it looks like the czi reader is in another jar.
This is out of the scope of openseadragon so if you would like to continue pursuing this, you can create an issue on https://github.com/NIST-ISG/pyramidio and I will be glad to help. I am quite confident that we can get it working but I might need a czi file example.


Description of each algorithm

include description for each algorithm in readme.md file

If you just want to copy/past wikipedia list description, I can do it


Getting "The root type Query has already been registered" when running hello world project in development mode

Describe the bug
I am getting this error
System.ArgumentException: The root type `Query` has already been registered. (Parameter 'operation')
         at HotChocolate.SchemaBuilder.AddRootType(Type type, OperationType operation) in HotChocolate.Types.dll:token 0x60000f2+0xb6
         at HotChocolate.SchemaBuilderExtensions.AddQueryType[TQuery](ISchemaBuilder builder) in HotChocolate.Types.dll:token 0x6000096+0xe
         at Microsoft.Extensions.DependencyInjection.SchemaRequestExecutorBuilderExtensions.<>c__77`1.<AddQueryType>b__77_0(ISchemaBuilder b) in HotChocolate.Execution.dll:token 0x600083f+0x0

When trying to run super simple app in Development environment but when I switch to Production the problem goes away for some strange reason?
To Reproduce
https://github.com/kolpav/HcBug
Expected behavior
Be able to run hello world app in Development environment
Desktop (please complete the following information):
I was able to reproduce same behavior in docker running ubuntu
ProductName:	macOS
ProductVersion:	11.3.1
BuildVersion:	20E241

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="HotChocolate.AspNetCore" Version="12.0.0-preview.23" />
    <PackageReference Include="HotChocolate.Data" Version="12.0.0-preview.23" />
  </ItemGroup>

</Project>

Additional context
Please run the linked repo exactly as is described in README.

I remember another issue where another user had an issue with using dotnet run inside of Docker - I can't seem to find it though. I remember that I also could reproduce it.
#3930 might also be related since it's also using dotnet run.

@tobias-tengler Might be related I previously had docker-compose in linked repo but I deleted it because people were thinking the problem lies somewhere in docker.

That was me but I haven't received much help then so I thought I should create proper issue.

dotnet new graphql and ASPNETCORE_ENVIRONMENT="Development" dotnet run produces same error no need to use my repo.

Work without any issue on my machine:

Can you try to update the template?
 dotnet new -i HotChocolate.Templates.Server::11.3.1

@PascalSenn I forgot to mention I made one change to template generated by dotnet new graphql I changed target framework to net6.0
<TargetFramework>net6.0</TargetFramework>

Can you try again please?

There have been multiple issues reporting problems with the latest ASP.NET Core 6 preview.
I don't think we will introduce changes to accommodate .NET 6, while it's not even in its RC phase yet. Let's wait for the next preview, maybe it resolves the issue. In the meantime stick to <= .NET 5.

@tobias-tengler Understandable I'll try 5.0 and close this issue if the problem goes away, thank you.


Cannot build from source - git check fails

1.2.1 added 'check: true' on https://github.com/BuddiesOfBudgie/budgie-desktop-view/blob/a763515af60d199e709b23ba65e76f26b27eb4ff/meson.build#L46 but this is causing it unable to build if you are not building from git. If you download the source from the site by a tarball e.g. on the release page you can't build as the check will cause the build to fail. if I remove the check: true it works fine so it is an issue for sure.
Build error is:
--- stderr ---
fatal: not a git repository (or any parent up to mount point /var/tmp)"
Edit: From what I can see there is basically 3 ways to fix this;

remove the 'check: true' part
change the if statement check on whether git is present on the system to check if the directory is a git repo or something
remove/uninstall git from the entire system

Obviously number 3 is not ideal :P

If you download the source from the site by a tarball e.g. on the release page you can't build as the check will cause the build to fail.

That isn't the intent of git builds. You clone the repo, with git. You don't point to the master tarball.

I am the package maintainer for Gentoo. For our packages we grab the source and then build/compile it on the system itself. So yes I grab the source tarball and compile that. This is normal for gentoo. However while making the packages (we call them ebuilds) for budgie 10.7 and other software parts this was the only one that failed. With the if git.found() check and then calling the command with check: true you are forcing that if somoene builds this from source it must be in a git repo and it doesn't even check what is around this. Could be any git repo as it just checks the HEAD rev.
This also prevents anyone from tinkering or forking (just as an example) unable to just grab the source and build it for their system if they have git installed. For example you have a compile option for stateless, what if someone wants to build with that but doesn't want to initialize the git repo but just grab the source and build it?  While gentoo does support git builds of course that also puts me in an awkward position where I am have to set git are a build dependency requirement just cause of this check. For my package I currently patch out the check: true part to bring it back in line with the 1.1.1 release. But I could just patch out the entire git check option instead to make it more clean. Also Gentoo isn't the only source based distro around. Imho this is an issue, and should be fixed.

@Azania plase can you clarify why you are not using the release tarball which is added to the assets?

You should be using release tarballs. Git builds should be cloning the git repo, at which point they have git. This is a non-issue IMO.

Also Gentoo isn't the only source based distro around.

Arch handles this just fine with budgie-desktop-view-git by cloning git, which is the expected behavior.

@Azania plase can you clarify why you are not using the release tarball which is added to the assets?

You should be using release tarballs. Git builds should be cloning the git repo, at which point they have git. This is a non-issue IMO.

Even using the release tarball will result in the error, unable to build. As meson still checks if the build is inside a cloned git repo. Why would you release it in tarball and then the contents of that still have the git cloning required? It doesn't make any sense to me?
Also the tarball I was grabbing is https://github.com/BuddiesOfBudgie/budgie-desktop-view/archive/v1.2.1.tar.gz . But as said, whether I grab the tarball from the release one in the assets or the from archive result is the same if it is not in a cloned repo directory. What is the point of the release tarballs?

Also Gentoo isn't the only source based distro around.

Arch handles this just fine with budgie-desktop-view-git by cloning git, which is the expected behavior.

They require git since they clone it and build it then, thus bypassing this. This is the only package from BuddiesOfBudgie that requires to be build from a cloned gitrepo even. Not Budgie-Desktop, not Budgie-Control-Center etc, why is that? In gentoo git is by default not installed (last I checked) and tries to be minimalistic (and in general succeeds). Only packages that do not have release or source tarballs where git is the only option require git, nothing else.
Is it really needed to add the git head version to the package version or otherwise it can't be build? Or is there another reason that if you want to build it you need to be in the cloned git repo? I can see why you add check: true on that line so there are no issues with adding the git version, but shouldn't the git.found() be ammended to add if it is in a cloned repo rather than check if git is installed on the system itself? And include the git rev the tarball was made of instead of doing a git rev-parse HEAD command then if it is not in a git cloned repo directory?
Added is the build log from meson where it shows at the bottom it is crashing.
meson-log.txt

Why would you release it in tarball and then the contents of that still have the git cloning required? It doesn't make any sense to me?

It doesn't. The meson is very explicit:
git = find_program('git', required: false)

Followed by:
if git.found()

None if the git command bits run if it cannot find the program. This is identical to how it is in budgie-desktop. See:

https://github.com/BuddiesOfBudgie/budgie-desktop/blob/main/meson.build#L26
https://github.com/BuddiesOfBudgie/budgie-desktop/blob/main/meson.build#L70

Also the tarball I was grabbing is https://github.com/BuddiesOfBudgie/budgie-desktop-view/archive/v1.2.1.tar.gz .

That isn't the release tarball. That is the tarball generated by GitHub.

What is the point of the release tarballs?

Asset bundling, typically for translations and git submodules, which is useful for non-networked builds.

This is the only package from BuddiesOfBudgie that requires to be build from a cloned gitrepo even.

It does not require to be cloned from a git repo. It doesn't work that way in Fedora, Debian, or Solus. Seems like either your build is the issue here, or Gentoo.

Is it really needed to add the git head version to the package version or otherwise it can't be build?

No. version is declared in the project.
Your log indicates:

Program git found: YES (/usr/bin/git)

So it will reasonably assume it is a git repo, as there is no other reason why you should have git in the build environment.

I'm going to close this issue as it is quite clear from the log that the build environment in question has git, in which case our expectation (including in budgie-desktop) is that the build is git. This enables the package version to be appended with the git commit sha of HEAD. Remove git from the build environment and use the correct tarball, or otherwise use git cloning.

Why would you release it in tarball and then the contents of that still have the git cloning required? It doesn't make any sense to me?

It doesn't. The meson is very explicit:
git = find_program('git', required: false)

Followed by:
if git.found()

None if the git command bits run if it cannot find the program.

That has nothing to do with any git repository.

This is identical to how it is in budgie-desktop. See:

https://github.com/BuddiesOfBudgie/budgie-desktop/blob/main/meson.build#L26
https://github.com/BuddiesOfBudgie/budgie-desktop/blob/main/meson.build#L70

No, not the same. Check line after 70, 71. https://github.com/BuddiesOfBudgie/budgie-desktop/blob/e59a2003d4e27d5b2ced7ce12747901446edfb15/meson.build#L71
check: false instead of check: true. Which means it won't crash if the directory or its parents are not in a cloned git repo.
Budgie-desktop -> check: false
Budgie-desktop-view -> check: true

Also the tarball I was grabbing is https://github.com/BuddiesOfBudgie/budgie-desktop-view/archive/v1.2.1.tar.gz .

That isn't the release tarball. That is the tarball generated by GitHub.

I was using that tarball and when I switched to directly using the tarball from your release page as you said, it still crashed. And I also said I did use https://github.com/BuddiesOfBudgie/budgie-desktop-view/releases/download/v1.2.1/budgie-desktop-view-v1.2.1.tar.xz as well but the result is exactly the same. The log I posted is from using that release tarball. Not from any archive or anything else.

What is the point of the release tarballs?

Asset bundling, typically for translations and git submodules, which is useful for non-networked builds.

It would still crash then if run as a module from a non cloned project that uses this as a subproject as it still has to build it then.

This is the only package from BuddiesOfBudgie that requires to be build from a cloned gitrepo even.

It does not require to be cloned from a git repo. It doesn't work that way in Fedora, Debian, or Solus. Seems like either your build is the issue here, or Gentoo.

Is it really needed to add the git head version to the package version or otherwise it can't be build?

No. version is declared in the project. head is only added if git is found.

I can have git installed on a system with 0 projects and still would still crash. Cause that is what find_program() does, not if the directory or parent belongs to any git project as there is no .git directory there with the information.

Your log indicates:

Program git found: YES (/usr/bin/git)

So it will reasonably assume it is a git repo, as there is no other reason why you should have git in the build environment.

No that is not how it works. The log sais that cause of

git = find_program('git', required: false)
If it finds git installed on the system or not it will output that in the log as expected. So that is normal. It just checks if git is installed on the system.. I have git installed on the system, so it is yes. Not whether it is in a directory of subdirectory from a cloned git repository. That is a big difference. What happens is as follows:

-> checks for git, found, post in log
-> checks if git was found;
-> If yes: runs 'git rev-parse HEAD' command and checks if return is true, aka there was no error.
-> if there was no error great, ammend the git head revision to the package version
-> if there was an error.. build crashes due got git fatal error.
-> If no: nothing happens and continues.
The difference with budgie-desktop is that the check: false part instead of check: true part. It won't check if the result was true or not. cause a fatal error by git returns an error code so the check returns false if check: true was set. Which for budgie-desktop it is set to false, whereby for budgie-desktop-view it is set to true.
The biggest issue here from what you wrote is that you make a wrong assumption here:

So it will reasonably assume it is a git repo, as there is no other reason why you should have git in the build environment.

Which is not the case. the program_find only checks if git is installed on the system. I just run with git removed from my system and only then it says in log: Program git found: NO. Which I can supply if you want.

I'm going to close this issue as it is quite clear from the log that the build environment in question has git, in which case our expectation (including in budgie-desktop) is that the build is git. This enables the package version to be appended with the git commit sha of HEAD. Remove git from the build environment and use the correct tarball, or otherwise use git cloning.

As said before. This statement is wrong. That is not what find_program('git', required: false) does at all. Which means the following that the build is git is also wrong. Yes the environment has git. I can install and uninstall it np from my entire system. So you are basically telling me to either make the package git cloning rather than using a release tarball for 1 package while the rest of budgie doesn't need it or force people to uninstall git from their system to compile this package from tarball.
If you say it is the same as budgie-desktop then you need to change the check: true to check: false. Simple as that. Cause atm they are not the same but different, and causing a crash when using the release tarball.

So you are basically telling me to either make the package git cloning rather than using a release tarball for 1 package while the rest of budgie doesn't need it or force people to uninstall git from their system to compile this package from tarball.

The expectation is that if they are building it on their system, they should be either using an isolated build environment where they are either:

Using the release tarball, in which case git does not need to be in the environment
Using git.

Or on their host system, where it is expected that the user would be developing Budgie Desktop (or using git builds, like with the -git build that I referenced).

That is not what find_program('git', required: false) does at all.

I never claimed it did. That is what the rev-parse does. I am fully aware what find_program does, just as I am of the check on the run_command.
Per the Meson doc:

If check: true is given, meson will error out if command returns with a non-zero exit code. Alternatively, you can set check: false and get the exit code with r.returncode().

The check is expected behavior, the fact it works for budgie-desktop is purely accidental in nature given the intent behind the builds in the scenarios I provided above. This is not going to be fixed, because there is no flaw here.

This has been modified in git main branch

@Azania Does Gentoo have a mechanism for building these things in a chroot that could be promoted as the way to build Budgie components? For example, Fedora has mock and Solus has solbuild.

I would have to dig into portage to see how it works and how it builds all the paths and stuff used for building packages on the system. I am not sure if they are using chroot when building or not. I do know that everything tha is build is inside /var/tmp/portage/// etc. There is also /etc/portage/ for additional configuration etc inc make.conf which is used for building. In short I can't tell you right now for sure. A lot of variables and paths get added and sent over to build. Even compiler options set in the make.conf file i mentioned earlier gets added to variables for the compilers. So it is isolated at the very least from what I gather, but am not an expert on portage inner detailed workings. I have to look it up etc and go in deep.

@JoshStrobl
This entire logic is invalid, checking for the presence of a git program doesn't inform Meson whether the project is building from a git clone or from an uploaded meson dist tarball.
The thing that tells you whether the program is building from a meson dist tarball is:
fs = import('fs')

if fs.exists('.git')
    message('running from a git repo; will run git to determine stuff like versions')
    git = find_program('git', required: true) # it's a git clone, git must be installed
    version = run_command(git, 'describe', '--importantflags', check: true)
endif

@eli-schwartz Yea that's a fair point and probably a better way of implementing it. PRs welcome.

Can do, later today if no one beats me to it.

#17

I did the fix I suggested above for budgie-desktop itself, here: https://github.com/BuddiesOfBudgie/budgie-desktop/pull/294


What is the reason for UMI?

The document states:
"While using system-assigned managed identity is possible, when used at scale (for example, for all VMs in a subscription) it results in substantial number of identities created (and deleted) in Azure AD (Azure Active Directory). To avoid this churn of identities, it is recommended to use user-assigned managed identities, which can be created once and shared across multiple VMs."
But it does not explain, nor does any other document I can find, why this "churn" of system identities would be a problem? There is a built-in policy for creating system assigned identities for the AMA agent at scale (/providers/Microsoft.Authorization/policyDefinitions/17b3de92-f710-4cf4-aa55-0e7859f1ed7b). The reccomended solution of having an umi pr sub pr region seems more complicated and more reasoning should be provided in the documentation.

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

ID: c9ee3c44-16f6-e2e3-17f1-a226a9e03265
Version Independent ID: 984a27cc-cbfe-b31d-a335-8afd3032f905
Content: Use Azure Policy to assign managed identities (preview) - Microsoft Entra
Content Source: articles/active-directory/managed-identities-azure-resources/how-to-assign-managed-identity-via-azure-policy.md
Service: active-directory
Sub-service: msi
GitHub Login: @karavar
Microsoft Alias: vakarand

There are two main limits to Azure AD that get impacted due to churn

Azure AD object quota limit (more here) - each object counts towards the quota. If identities churn you run a risk of reaching your quota faster.
Your deployments getting throttled due to throttling in Azure AD.

In general, we suggest moving towards a model where identities are pre-created and re-used as much as possible rather than churning them in the system.

In general, we suggest moving towards a model where identities are pre-created and re-used as much as possible rather than churning them in the system.

Thank you for your quick reply. So the advice to have UMI in this scenario is not spesific to the AMA agent, more a general advice to reduce the impact on AAD? The guiding in the AMA doc is to create one UMI pr subscription, per region. Is this also unrelated to AMA, and more of a general best practise? (as opposed to having one UMI pr subscription, or even one centrally for all AMA VMs). If that is the case I think the documentation should make that much clearer.


Dacfx invoke test getting failed

Description
It looks like the test path needs to be updated for Dacfx in Tools.Tests.ps1 file. Deployment getting failed with error message: Expected path 'C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe' to exist, but it did not exist.
I tried to install the Dacfx manually in the windows server, it looks like the correct path for sqlpackage is "C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe".
Virtual environments affected

[ ] Ubuntu 18.04
[ ] Ubuntu 20.04
[ ] macOS 10.15
[ ] macOS 11
[ ] Windows Server 2016
[X] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Windows 2019
Is it regression?
No response
Expected behavior
No response
Actual behavior
No response
Repro steps
It looks like the test path needs to be updated for Dacfx in Tools.Tests.ps1 file. Deployment getting failed with error message: Expected path 'C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe' to exist, but it did not exist.
I tried to install the Dacfx manually in the windows server, it looks like the correct path for sqlpackage is "C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe".

Hey @prabhusirpi ,
We will take a look at it.

Hey @prabhusirpi , We will take a look at it.

Thanks @al-cheb . Let me know once its corrected.

@prabhusirpi this is now fixed, please update your fork's main branch.

@prabhusirpi this is now fixed, please update your fork's main branch.

Sure and thank you


Latest "stable" version doesn't pull from nuget correctly

**When trying to get 6.0.8 i get this error from nuget package manager.
It is a UWP application targeting windows 10 Version 16299**
Restoring packages for C:\Desktop\2.0 Projects\Games\MonoGame\MonoGame.Framework\MonoGame.Framework.Net.WindowsUniversal.project.json...
NU1102: Unable to find package Microsoft.Net.Native.Compiler with version (>= 2.0.3)
  - Found 1 version(s) in Microsoft Visual Studio Offline Packages [ Nearest version: 1.5.0-beta ]
NU1102: Unable to find package Microsoft.NETCore.Platforms with version (>= 2.0.0)
  - Found 3 version(s) in Microsoft Visual Studio Offline Packages [ Nearest version: 1.0.2 ]
NU1102: Unable to find package NETStandard.Library with version (>= 2.0.1)
  - Found 1 version(s) in Microsoft Visual Studio Offline Packages [ Nearest version: 1.6.0 ]
NU1101: Unable to find package Microsoft.Net.UWPCoreRuntimeSdk. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages
Package restore failed. Rolling back package changes for 'MonoGame.Framework.Net.WindowsUniversal'.
Time Elapsed: 00:00:00.0733960

If I fiddle around with things by putting old fallback packages back I get this error instead.
Restoring packages for C:\Desktop\2.0 Projects\Games\MonoGame\MonoGame.Framework\MonoGame.Framework.WindowsUniversal.project.json...
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-arm\build' contains an invalid version.
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-arm\tools' contains an invalid version.
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-x64\build' contains an invalid version.
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-x64\tools' contains an invalid version.
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-x86\build' contains an invalid version.
The folder 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\microsoft.net.native.sharedlibrary-x86\tools' contains an invalid version.
Unable to find metadata of Microsoft.Net.Native.Compiler.2.0.3
Time Elapsed: 00:00:00.2252657

This repo is no longer actively monitored. Closing up old issues that have not had activity in while. If this is still an issue, please open a new issue in an appropriate repo listed in microsoft/dotnet#1275

This repo is no longer actively monitored. Closing up old issues that have not had activity in while. If this is still an issue, please open a new issue in an appropriate repo listed in microsoft/dotnet#1275


Wrong color on popup windows

I am moving from my old config to new one on Neovim wich support Lua, so I rewriting it enterily from scratch.
For some reason base16 theme looks bad, here is the video:
https://github.com/RRethy/nvim-base16/assets/228536/c1bd3c30-780d-429b-85ea-d170eb7f53cb
No idea how to fix it myself :(
Here is the config: https://github.com/pronvis/configs/tree/nvim_to_lua_cfg/nvim

Looks like it is telescope related issue (cause popup is from telescope).
Popup windows from https://github.com/ThePrimeagen/harpoon looks fine

I found fix, but have no idea why it works:
require('base16-colorscheme').with_config({
    telescope = false,
})
require('base16-colorscheme').setup({
    base00 = '#2d2d2d',
    base01 = '#393939',
    base02 = '#515151',
    base03 = '#999999',
    base04 = '#b4b7b4',
    base05 = '#cccccc',
    base06 = '#e0e0e0',
    base07 = '#ffffff',
    base08 = '#f2777a',
    base09 = '#f99157',
    base0A = '#ffcc66',
    base0B = '#99cc99',
    base0C = '#66cccc',
    base0D = '#6699cc',
    base0E = '#cc99cc',
    base0F = '#a3685a'
})

Colors is default ones, so there is no reason to setup them, but if you remove it, then Telescope popup window will be not fixed.
So
require('base16-colorscheme').with_config({
    telescope = false,
})
``` alone does not do the job - have no idea why.

Probably:
require('base16-colorscheme').with_config({
    telescope = false,
    telescope_borders = true,
})

@RRethy thanks, but for some reason now it works even without colors rewrites. Dont know why.
I moved to lazy_vim instead of packer & use this to set theme in nvim:
local fn = vim.fn
local cmd = vim.cmd
local set_theme_path = "$HOME/.config/tinted-theming/set_theme.lua"
local is_set_theme_file_readable = fn.filereadable(fn.expand(set_theme_path)) == 1 and true or false

if is_set_theme_file_readable then
    cmd("let base16colorspace=256")
    cmd("source " .. set_theme_path)
end


package server + example

Iterating on the previous server implementation, this is still just a sketch...

I've spent some time studying the example addsvc. It is instructive. I have a better feel for how package metrics works now. It is interesting to see how you hook up multiple transports. The server package is indeed quite minimal. In one of your comments on my logging PR (#16) you said that you are "biased toward functional composition whenever possible" and that is evident. But in some cases there are more layers of functional composition than seem necessary to me.
To be specific, I had to study the server.Gate function for quite a while before I could grok all the layers of functional indirection involved. First the code:
// Gate returns a middleware that gates requests. If the gating function
// returns an error, the request is aborted, and that error is returned.
func Gate(allow func(context.Context, Request) error) func(Endpoint) Endpoint {
	return func(next Endpoint) Endpoint {
		return func(ctx context.Context, req Request) (Response, error) {
			if err := allow(ctx, req); err != nil {
				return nil, err
			}
			return next(ctx, req)
		}
	}
}

Which gets used in main.main like so:
// `package server` domain
var e server.Endpoint
e = makeEndpoint(a)
e = server.Gate(zipkin.RequireInContext)(e) // must have Zipkin headers

I wonder if we can strip back one of the layers without loss of functionality like so:
func Gate(next Endpoint, allow func(context.Context, Request) error) Endpoint {
	return func(ctx context.Context, req Request) (Response, error) {
		if err := allow(ctx, req); err != nil {
			return nil, err
		}
		return next(ctx, req)
	}
}

// in main.main
e = server.Gate(e, zipkin.RequireInContext) // must have Zipkin headers

This approach is easier for me to understand, and the call site looks more idiomatic to me without the double function call. We lose the ability to store the Endpoint generator in a variable, but I'm not clear how important that is. The sample service does not do it.
The same pattern appears with grpcInstrument, httpInstrument, and cors.Middleware, and in all of those cases it seems like the arguments for the primary function and the returned anonymous function could be merged into a single function call.
I'm sure there is a rationale for this pattern that I am missing, please explain.

@ChrisHines the rationale is simply that it enables the use of alice-style middleware chaining, which is slightly nicer to use by callers, providing a uniformity of type signature for everything that operates on Endpoints (in this case). A more sophisticated main.main may look like
e := server.NewChain(
    recoveryMiddleware,
    server.Gate(zipkin.RequireInContext),
    server.Check(otherProperty),
    myOtherFilter,
    // ...and so on...
).Then(makeEndpoint(a))

@peterbourgon, @ChrisHines: In functional programming lingo, you're doing partial currying: http://en.wikipedia.org/wiki/Currying
It's partial because you still have a function that receives more than one argument.

Since we're in the topic, this middleware chaining can be modelled as a right fold: http://en.wikipedia.org/wiki/Fold_(higher-order_function)

Alright, I think this has sat in a branch for long enough. If there aren't any huge outstanding problems, I'll merge to master later today.


Changing Colors

Hello, would it be nice to have the choice about changing colors like Adobe Fireworks does :-)
Find: ededed - Replace with: 000000 and all objects with this light grey will change to black
Or, on more detail/choice - only objects (not text elements)
Best, Maik

Well really this is a text find and replace plugin and there are other plugins that already do this for object properties but I might look into adding this in future so i'll leave it open.


Add function to read spacy files and export as jsonl

This is my first pr to the open-source community, so any feedback is welcomed 😊
Description

Add read_spacy function with spacy parser
Add export to jsonl

Fixes # Issue #13
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[✅] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ✅] Test user1
[ ✅] Test user2

Checklist:

[✅ ] My code follows the style guidelines of this project
[✅ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ✅] My changes generate no new warnings
[✅ ] I have added tests that prove my fix is effective or that my feature works
[✅ ] New and existing unit tests pass locally with my changes
[ ✅] Any dependent changes have been merged and published in downstream modules

:( @Hironsan


running Compass from a Singularity image

Thanks for making this amazing tool.
I am trying to run Compass from a Singularity image. While the task is running, I am getting the following error msg:
 Traceback (most recent call last):
  File "/usr/local/bin/compass", line 8, in <module>
    sys.exit(entry())
  File "/usr/local/lib/python3.8/site-packages/compass/main.py", line 572, in entry
    precacheCompass(args=args)
  File "/usr/local/lib/python3.8/site-packages/compass/main.py", line 884, in precacheCompass
    cache.clear(model)
  File "/usr/local/lib/python3.8/site-packages/compass/compass/cache.py", line 85, in clear
    save(model, media)
  File "/usr/local/lib/python3.8/site-packages/compass/compass/cache.py", line 55, in save
    os.makedirs(cache_dir)
  File "/usr/local/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)
OSError: [Errno 30] Read-only file system: '/usr/local/lib/python3.8/site-packages/compass/Resources/COMPASS/RECON2_mat/default-media'

I would assume this is because my image is not writable, I might be mistaken. Any suggestion how to overcome this issue?
EDIT: I got the same error msg when running the test-data
Thanks, HM

We are seeing a similar error on the same file path when running compass natively (no Singularity). Although the error is "Permission denied" instead of "Read-only". Please advise.

We also are running this in Singularity, but this is a generic issue with any install where the Compass install directory is not writable by the user. This seems to stem from the "caching" that Compass does, which uses a subdirectory of the RESOURCE_DIR global. Perhaps this can be changed to use the --temp-dir as it's root directory?

it helps, thanks a lot, and sorry for the delay reply.


Create My Courses Homepage and the Roster View

This incremental pull request covers the creation of the My Courses homepage component and the roster component, as well as related service and API features.
Major Changes

Adds the my courses page at the route /my-courses, which shows the courses the user is enrolled in (or manages).
Adds a tab page for each course at /course/:termid/:courseid, which contains three tabs - one to contain the future office hours page, one that shows the course's roster, and another for settings. Office hour and settings still has to be implemented, and full security for these routes also has to be implemented.
Adds the roster page at /course/:termid/:courseid/roster, which contains a paginated table showing members of a course.
Adds an API at the route /api/academics/my-courses/:termid/:courseid/roster which returns a paginated list of users in a course. Only instructors and students can access this data.
Adds related models and service methods for the newly added API.
Moves academics pages into a new catalog page with tabs separating current section offerings and all courses.

@KrisJordan just wanted to check in, mainly with the roster service method, to ensure that the query is built in a way that is not too inefficient!


FR: Add to the mason registry

A lot of nvim users use mason to install their LSPs, and thus it would be useful if the basics LSP also was added to the mason registry, so it is also available via mason: https://github.com/mason-org/mason-registry

sure. I have opened a PR at the mason registry: https://github.com/mason-org/mason-registry/pull/7570


UX changes for interacting with templates as resources

Now that templates are resources (just like other resources), and we don't have a separate Profile Editor, we need some UX improvements to fully take advantage of this shift and to limit confusion.
This ticket will have a bunch of preliminary explanation to give Astrid info to design UX.
Explanation of concepts (purposely avoiding the terms "edit" and "resource" since both those terms have multiple meanings):

Sinopia is a tool for creating RDF "descriptions" of materials managed by a library
a "description" is a set of RDF statements
a "description" is created by a user entering data into a "form"
the "form" defines which statements can be in a description, which statements are required, which are repeatable, what properties those statements use, and what kind of object the statements have
a “template” is a “recipe” that Sinopia uses to create this "form"
a “recipe” itself is a set of RDF statements (just like a "description" of a library material)
“recipes” have their own “master recipe”:  http://sinopia.io/vocabulary/ResourceTemplate plus 6 sub-recipes like http://sinopia.io/vocabulary/PropertyTemplate

Sinopia users can:

create a set of statements describing something in a library (in other words, use one of the “recipes” to create a "description")
change an existing "description"
copy an existing "description" in order to make a new one
see which "recipes" are available
make a new “recipe” (template)
change an existing “recipe”
copy an existing "recipe" in order to make a new one

but users cannot:

change the “master recipe” for a template

Confusing things about current UX
Now that users can create and change "recipes" (templates) in the same way (almost) that they can create and change "descriptions", the current UX becomes confusing.
We have Editor tab, previously for creating and changing "descriptions".
Now this Editor tab would also serve for creating and changing "recipes".
We have the "Resource Templates" tab, previously this was for selecting a "recipe" to use in creating a "description"
Now this "Resource Templates" tab would allow also creating and changing "recipes"
Question
Do we have one "starting point" for both creating "descriptions" and creating "recipes"? or do we have 2 different places: one to "pick a recipe in order to open a form and create a description" and another to "create a new recipe or change an existing recipe"?

On one hand, it would make sense to distinguish between the action of creating or changing a "description" and the action of creating or changing a "recipe". They are quite different in terms of who will do them (only a subset of users will be involved in "recipe" tinkering).
On the other hand, now that "descriptions" and "recipes" are both just sets of statements, we can treat them the same. Also, for expert users, they would probably like to easily interchange among tinkering with recipe and making description.

One solution (just as a starting point, open to whatever)

Leave "Resource Templates" tab as is (Maybe just rename to Templates?) and for each template, have icons that allow you to either "open for cataloging" or "change the recipe itself" (maybe you can also "preview" the recipe, similar to how we are adding something to allow you to preview "descriptions" without copying or changing them)
add a separate single Button for "Create a new recipe" (because the only way to do that is to open the "master recipe" to make a new "instance" of it, and this is not at all clear when you just have the "master recipe" listed like any other "recipe")
hide the "master recipe" and its subrecipes from the list of Templates (the "master recipe" and sub-recipes have class beginning http://sinopia.io/vocabulary/ and no other templates do)

Unknown: will users also want the option to interact with the "recipe" (preview it, change it) from other places, like while creating a "description"?

we have "New resource template" button now.
also, when editing a template, the UX is a different color than when editing a "regular" resource, so that helps


Remove unused host_interface as it has been moved to deprecated_host_interface

host_interface.rs has been moved to deprecated_host_interface.rs but the file still is in the repo

Will need a fix for polkadot.

The check_polkadot error is not related to this change.


Can 10.7.0-32U be downgraded?

First off, I'd just like to say thank you Plailect for this guide and your guidance! I got it working and love my 3DS once again! :)
A friend of mine bought a 3DS and updated to 10.7.0-32U before telling me! :( Can I downgrade his to 9.2 and then proceed to using your guide?

As far as I know, there is nothing special that the guide requires other than being on 9.2, and not being on frankenfirm. You can use a exploitable game to get homebrew and then downgrade from there.

https://github.com/Plailect/Guide/wiki/Get-Started


New integration plugin

Hello, I would love to contribute to your project and add another integration plugin. A plugin to save articles to Nunux Keeper. It's a kind of Pocket or Wallabag alternative.
But I saw the "Opinionated" section of your documentation. Therefore, before starting to code, I prefer to ask your opinion ;)

What the API endpoint looks like? Is it straightforward to implement? Is it simple enough for non-technical users to configure this integration?

The simplest way to do it, it to use an API key. We can also use OpenID connect but it's a bit more complicated.
Create a document with the API key is only a POST on the /v2/document endpoint using basic auth credentials.
Here a example with curl on my self hosted instance:
$ curl https://api:<KEY>@api.nunux.org/keeper/v2/documents?origin=<URL>

<KEY> is the API key and <URL> the URL you want to save.
You can also send the document body directly by posting a JSON payload:
{
  "title": "My title",
  "content": "
bla bla bla
",
  "origin": "http://foo.bar"
}

Therefore, the only configuration required for the end user is to define a base url and an API key.

Sounds good.

Thank you for your pull-request. This is now merged.
I would like to update the documentation for integrations (https://docs.miniflux.net/en/latest/integrations.html). Can you explain briefly how a non-technical end-user can get an API key and the API endpoint for Nunux Keeper. Thanks.

Here (trying to keep up with the current style of the doc):

The API URL is the root URL of your instance, for example, if you are using the hosted version: https://api.nunux.org/keeper.
To create a new API key, go to the settings tab: "API key" and choose “Regenerate API key”.

The doc has been updated (https://docs.miniflux.net/en/latest/integrations.html#nunux-keeper). If you would like to change something, just send a pull-request.


Update requirejs information

Include information about the files property and how to get scripts loaded before requirejs.
Also update test-main.js extract to match template.
This requires https://github.com/karma-runner/karma/pull/1458
to be pulled first.

Thanks a lot, can you change the commit message to follow our convention please

Okay, done

Thanks


Add the performance & tunning page for GAE

Related issue number
Part of #2628

Cool! An essentially but missing piece of the GAE docs.
Comment: how do you think about attaching some performance reports conducted by Shumin as micro-benchmarks?

how do you think about attaching some performance reports conducted by Shumin as micro-benchmarks?

Will be handled by @vegetableysm in a separate PR.


Ngrok endpoints

Automatically detect ngrok endpoint for tails server
Need to pass in the name of the tails server docker network, e.g.:
TAILS_NETWORK=docker_tails-server ./run_demo faber --revocation

Codecov Report

Merging #507 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #507   +/-   ##
=======================================
  Coverage   95.25%   95.25%
=======================================
  Files         236      236
  Lines       12058    12058
=======================================
  Hits        11486    11486
  Misses        572      572

looks good


HttpPut and HttpDelete template parameter names issue

This is very similar to #72, but is not the same or it might have been the core cause of #72.
If the route templates for HttpPut and HttpDelete only have a single parameter, there is a toxic relationship between the parameter names that will cause a version error to be thrown in certain situations.
The server reports:
Microsoft.AspNetCore.Mvc.Versioning.ApiVersionActionSelector: Information: Multiple candidate actions were found, but none matched the requested service API version '1.0'. Candidate actions:
The client reports:
  "Error": {
    "Code": "UnsupportedApiVersion",
    "Message": "The HTTP resource that matches the request URI 'http://localhost:27162/api/v1.0/values/5' does not support the API version '1.0'."
}

Good
[HttpPut("{id}")]
[HttpDelete("{id}")]

[HttpPut("{boots}")]
[HttpDelete("{id}")]

Bad
[HttpPut("{middle}")]
[HttpDelete("{id}")]

[HttpPut("{boots}")]
[HttpDelete("{boo}")]

There seems to be some kind of super/sub string issue between the names.  I did all my testing on the Put call but it turns out that a relationship between the parameter names exists that will prevent the Delete route from being matched also.
Here is an example project.  I started with a new .NET Framework 4.6.1 ASP.NET Core Web Application (.NET Framework) project.  I pruned out unnecessary methods and includes and updated all of the Microsoft.AspNetCore packages.
https://www.dropbox.com/s/vo80iolv08fms5l/RoutingSample.zip?dl=0
I have been using a combination of Postman and the PowerShell Invoke-RestMethod to call my app.
Here is my powershell script
https://www.dropbox.com/s/eshnz68kx17bwm7/test.ps1?dl=0

There isn't anything particularly special about HTTP methods in routing; however, they are used to whittle down the candidates for dispatching. Based on your test script, I think the issue may be a mismatch in the media type (like #72). Your example uses only primitive strings, but you are specifying that the media type is application/json. Using the literal value "Eric" is not valid JSON.  Try switching to the world's simplest complex type or make your payload {"value":"Eric"}.  That should do the trick. If not, I'll investigate further.

OK.  I think you are getting caught up in how I implemented my test rather than the actual issue.  The name of the template parameter in the HttpPut route can prevent an HttpDelete from getting routed correctly.
I took your suggestion and updated my code to use a class as a parameter and I modified my powershell script to pass a JSON string.  I still get VersionActionSelector errors.
Checkout TwoController.cs
irm 'http://localhost:27162/api/v1.0/two/6' -Method Delete
fails with a 400
the server reports
Microsoft.AspNetCore.Mvc.Versioning.ApiVersionActionSelector: Information: Multiple candidate actions were found, but none matched the requested service API version '1.0'. Candidate actions:
If I make the call with Postman it reports
{
  "Error": {
    "Code": "UnsupportedApiVersion",
    "Message": "The HTTP resource that matches the request URI 'http://localhost:27162/api/v1.0/two/5' does not support the API version '1.0'."
  }
}

Here is my new project
https://www.dropbox.com/s/mcfrijb16gksl1f/RoutingSample.zip?dl=0
Dave

Hmmm... ok. Thanks for the follow up. I'll try to repro and diagnose this over the weekend. The action selector doesn't do anything specific with parameter names. Route constraint filtering should be the same as it always was. Out of curiosity, what happens if you remove API versioning? I'm assuming you may have already tried or started with that, but I want to make sure there isn't something already flawed with the default ASP.NET Core action selector. I had the fork the code for that class. It's possible there was an update that I don't have.

I don't have the issue without API versioning.

I just wanted to let you know what I've found. There is seemingly some part of the ASP.NET Core routing infrastructure that I don't understand.
For PUT api/v1/one/42, here's what I see happen:

IActionSelector.SelectBestCandidate is called containing only the action description for DELETE

The method returns null

IActionSelector.SelectBestCandidate is called again, but this time only with PUT

The action is selected and the operation succeeds

The reason it isn't working with API versioning is that the ApiVersionActionSelector assumes it will not be called again and if there are no matches, but there could be one, it returns an appropriate response (400 or 405). If there is no possible match, then it returns null, which propagates a 404. It appears that there is some logic that causes the IActionSelector to be called again. I was able to confirm that if I let the ApiVersionActionSelector return null, it will be called again.
No closer to a solution just yet, but that's what I've found. It sounds like I may have something fundamentally incorrect about when a result should be returned in the pipeline. Odd that this only occurs in your scenario. The solution to unblock yourself is obviously make the route parameter names be the same. Regardless, I'll continue looking into this issue. It appears to be a bug on my side, I'm just not sure why yet.

Thanks.

Would this problem be relevant on a controller marked as ApiVersionNeutral?
My problematic method looks like so:
        [Route("edit/{id:int?}")]
        [HttpGet]
        public async Task<IActionResult> Edit(int? id) {
            if (id == null) {
                return NotFound();
            }

            var product = await _context.Products.SingleOrDefaultAsync(m => m.ID == id);
            if (product == null) {
                return NotFound();
            }
            return View(product);
        }

        [Route("edit/{id:int}")]
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("ID,Name")] Product product) {
            if (id != product.ID) {
                return NotFound();
            }

            if (ModelState.IsValid) {
                try {
                    _context.Update(product);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException) {
                    if (!ProductExists(product.ID)) {
                        return NotFound();
                    }
                    else {
                        throw;
                    }
                }
                return RedirectToAction("Index");
            }
            return View(product);
        }

With ApiVersioning enabled the HttpPost method produces:
A 400 - An API version is required, but was not specified if I remove AssumeDefaultVersionWhenUnspecified from the ApiVersioning configuration in startup.cs.
A 405 - The HTTP resource that matches the request URI 'http://localhost:3712/products/edit/1' does not support the API version '1.0' if I set AssumeDefaultVersionWhenUnspecified to true.
If I change the HttpPost method's name/route & update the view to reflect that it works fine.
The controller & views were generated using the "Add Controller > MVC Controller with views, using EntityFramework" scaffolding option in VS2017, with the only change being I added the annotations for Attribute Routing.

I expect the issue to remain. Regardless of whether you use explicit or implicit versioning, the ApiVersionActionSelector expects to only be called once. The selector doesn't find a match on the first pass and then short-circuits the pipeline causing the incorrect behavior. I've confirmed that if the selector just returns null on the first pass, it will be called again and will perform the expected action. I'm not going to arbitrary change this without a better understanding of things because that would break a now established behavior. I'm meeting with the ASP.NET team so I should have an answer and fix to this problem soon.
One of the key culprits I have found that cause this behavior is when you have two overlapping routes that only differ by route parameter constraints. In your scenario, you have such a case. You have two route definitions that only differ by {id:int} and {id:int?}.  As long as these are the same, this problem won't occur. This is by no means a solution, but it may unblock you for now.

The 1.1 RC has now been published that resolves this issue. Note that there is breaking, behavioral change for ASP.NET Core to support it. :(  You'll now need to call app.UseMvc().UseApiVersioning(). This is called out in the release notes.
Let me know if you run into anything, but I think 1.1 is ready.

Hello!
I'm not really sure whether I should open up a new issue or comment here so I guess I''ll leave a comment here.
With the new version these two routes aren't clashing anymore, which is good! Thanks!
//api/v1.0/persons/idstring
[HttpGet("{ids}")]
//api/v1.0/persons/idstring
[HttpDelete("{id}")]
But now I have the problem that it doesn't differentiate between these two routes:
//api/v1.0/persons/search/?query=name
[HttpGet("search")]
//api/v1.0/persons/idstring
[HttpGet("{ids}")]
Am I doing something wrong? Or could this possible be a new bug?
Thanks in advance!

I locally updated the HelloWorldController in the "BasicSample" to match your scenario. The following routes work as expected:

http://localhost:1237/api/v1/helloworld/
http://localhost:1237/api/v1/helloworld/42
http://localhost:1237/api/v1/helloworld/search?query=name

Can you share more about your controller and/or configuration? Perhaps compare them to the BasicExample? I'm not able to reproduce the behavior you're seeing.

Hey Chris!
Thanks for the quick reply, sorry for the late answer!
I downloaded the BasicExample project and changed the names and endpoints to reflect my project and I found something interesting.
These are the routes I have:

http://localhost:5000/api/v1.0/persons/search?query=test   [HttpGet("search")]                 (Search)
http://localhost:5000/api/v1.0/persons                                  [HttpGet]                                (Get)
http://localhost:5000/api/v1.0/persons/{ids}                          [HttpGet("{ids:required}")]     (GetMultiple)
http://localhost:5000/api/v1.0/persons                                  [HttpPost]                               (Post)
http://localhost:5000/api/v1.0/persons                                  [HttpDelete("{id:required}")]  (Delete)

When the example runs and I call the search endpoint first, I get the following 500 internal server error:
`info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:5000/api/v1.0/persons/search?query=asdasd application/json
fail: Microsoft.AspNetCore.Mvc.Routing.DefaultApiVersionRoutePolicy[1]
Request matched multiple actions resulting in ambiguity. Matching actions: Microsoft.Examples.Controllers.PersonsController.Search (BasicSample)
Microsoft.Examples.Controllers.PersonsController.GetMultiple (BasicSample)
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HL50RM9M3GSD": An unhandled exception was thrown by the application.
Microsoft.AspNetCore.Mvc.Internal.AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:
Microsoft.Examples.Controllers.PersonsController.Search (BasicSample)
Microsoft.Examples.Controllers.PersonsController.GetMultiple (BasicSample)
at Microsoft.AspNetCore.Mvc.Routing.DefaultApiVersionRoutePolicy.OnMultipleMatches(RouteContext context, ActionSelectionResult selectionResult) in D:\xampp\htdocs\apitest\src\Microsoft.AspNetCore.Mvc.Versioning\Routing\DefaultApiVersionRoutePoli
cy.cs:line 166
at Microsoft.AspNetCore.Mvc.Routing.DefaultApiVersionRoutePolicy.RouteAsync(RouteContext context) in D:\xampp\htdocs\apitest\src\Microsoft.AspNetCore.Mvc.Versioning\Routing\DefaultApiVersionRoutePolicy.cs:line 111
at Microsoft.AspNetCore.Routing.RouteCollection.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame1.<RequestProcessingAsync>d__2.MoveNext() info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]       Request finished in 4.6099ms 200
But, if I call the GetMultiple endpoint first and after that the Search endpoint, I get a 200 but it connects to the GetMultiple endpoint:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]       Request finished in 171.3243ms 200 application/json; charset=utf-8 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]       Request starting HTTP/1.1 GET http://localhost:5000/api/v1.0/persons/search?query=asdasd application/json info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]       Executing action method Microsoft.Examples.Controllers.PersonsController.GetMultiple (BasicSample) with arguments (search) - ModelState is Valid info: Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[1]       Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext. info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]       Executed action Microsoft.Examples.Controllers.PersonsController.GetMultiple (BasicSample) in 4.6482ms info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]       Request finished in 8.4701ms 200 text/plain; charset=utf-8
I hope I put enough information in my post, I can add the code of the controller to if you'd like!

Hmm... this is an interesting edge case. On one hand, it's a regression, but on the other the route is ambiguous.  Without even seeing the code, I suspect that {ids} is a string. This means that following are ambiguous:

api/v1/persons/{ids}
api/v1/persons/search

The router will treat the action search as the string value for ids. This doesn't happen with the default action selector because it always stops at the first match in the route tree (e.g. search). API versioning requires that all the candidates be considered in order to select the best candidate. If API versioning stops too early candidates are missed. If API versioning goes to long (as is the case now), then invalid candidates might be discovered.  This is also why you are seeing the behavior where the wrong action is selected. Once a full pass has been made on a route, there is a optimization to short-circuit the pipeline so that the whole chain doesn't need to be evaluated for every request.
I suspected the problem might be caused these symptoms. I'm not sure exactly how to resolve the ambiguity just yet, but I'll start looking into it. I'll create a new issue to track this and link it back. It's related to this issue, but it's really not the same thing.

I'm now tracking this as part of #133


Distance from start to a point on the track

I would like to implement a feature in my own project where you can click on a point on the gpx track, and have a pop-up showing the cumulative distance up to that point, and maybe some point information like elevation.
I think this will require some changes in this library, and this is how I'm thinking of implementing it.  I would appreciate any feedback you may have.
I can follow the same design as the _info.elevation._points, and have a new structure for the cumulative distance up to that point.
The Polyline onclick event returns the latlng of where it was clicked.  I can lookup the _points array index in a Hashmap, which is generated when processing the trk data.  The hashmap can have key = latlng and value = [array indexes].  It's possible that there could be multiple points at the same latlng, which is why the value is an array.
A new event on the GPX object should be triggered when the polyline onclick is triggered. It should also give the array indexes so that the user can lookup the relevant data from the arrays.
So the additions to the library would be:

cumulative_distance structure that at least stores a _pts array with the data and API to access the data
Hashmap to store array indexes given a latlng
handle Polyline onclick event and generate a new event with array indexes

Then in my own project, I can register on the GPX track click event, lookup the data with the array indexes, and generate a pop-up.

Actually, now I see that the addline event does return the polyline object.  And also the elevation _points array also does store the cumulative distance as well.  So maybe it can be done all outside.  The main challenge is how to get the _points array index from the polyline object, since you could have multiple polylines map to one _points array.

For my use case, all my gpx files only have one trkseg, so this works for me.  I was able to implement it without making any changes to the library.


How to support CPU multi-thread in a different way?

I tested the openmp example xxx in xxx directory and cpu example xxx of legion in xxx directory. Both examples don't do task partation in programs. The "-ll:othr 4" specifies the number of openmp successfullly. But cpu program stills use single thread if we set "-ll:cpu 4". If we manully partation tasks in cpu programs such as the example xx in xx directory, "-ll:othr 4" works. Hence, is there another method, such as legion mapper to support CPU multi-thread instead of partationing tasks in main program?

What do you mean by "support CPU multi-thread instead of partitioning tasks"? Legion and Realm are task parallelism programming model. I recommend you to take a look at the Legion tutorial (https://legion.stanford.edu/tutorial/) or Realm tutorial (https://gitlab.com/StanfordLegion/legion/-/blob/master/tutorial/realm/RealmTutorials.md)

It is true that if you use OpenMP you can avoid needing to partition the data, at least if you only use a single CPU node. This is a bit of a special case in Legion and it didn't really generalize. For basically anything else you'd want to do (multi-node CPU, multi-node or single node multi-GPU) you well need to partition the data to get parallelism.


Clean up code

Standardises and improves code quality.

Codecov Report

Merging #263 (1125ca4) into master (4ff3b81) will not change coverage.
The diff coverage is 75.00%.

:exclamation: Current head 1125ca4 differs from pull request most recent head dea9a8f. Consider uploading reports for the commit dea9a8f to get more accurate results

@@            Coverage Diff            @@
##             master     #263   +/-   ##
=========================================
  Coverage     69.39%   69.39%
  Complexity      598      598
=========================================
  Files           117      117
  Lines          2055     2055
  Branches        220      220
=========================================
  Hits           1426     1426
  Misses          547      547
  Partials         82       82

Impacted Files
Coverage Δ

src/main/java/seedu/foodrem/MainApp.java
0.00% <0.00%> (ø)

...c/main/java/seedu/foodrem/commons/core/Config.java
63.15% <ø> (ø)

...n/java/seedu/foodrem/commons/core/GuiSettings.java
63.63% <ø> (ø)

...main/java/seedu/foodrem/commons/core/Messages.java
0.00% <ø> (ø)

.../main/java/seedu/foodrem/commons/core/Version.java
82.50% <ø> (ø)

.../main/java/seedu/foodrem/commons/util/AppUtil.java
88.88% <ø> (ø)

...ava/seedu/foodrem/commons/util/CollectionUtil.java
87.50% <ø> (ø)

...in/java/seedu/foodrem/commons/util/ConfigUtil.java
75.00% <ø> (ø)

...main/java/seedu/foodrem/commons/util/FileUtil.java
77.27% <ø> (ø)

...main/java/seedu/foodrem/commons/util/JsonUtil.java
94.11% <ø> (ø)

... and 65 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


BuyAsync not working

Hey man,
I'm trying to work with the api to make a purchase, but it doesn't materialize, I just receive the object without information
Can i help, please

Iqoption allows you a time interval to do trade, outside of that intervals it is returning that error . Just open iqoption.com/traderoom and watch the time counter there will be a horizontal line which has alarm icon and 'purchase time' text.You must purchase before position leaves that line. I think this is  the cause of your issue and not related to code

Iqoption allows you a time interval to do trade, outside of that intervals it is returning that error . Just open iqoption.com/traderoom and watch the time counter there will be a horizontal line which has alarm icon and 'purchase time' text.You must purchase before position leaves that line. I think this is  the cause of your issue and not related to code


xAPI statements based on profile extension with inlineSchema property

Hello,
I am currently developing an xAPI profile. As a means of profile validation I have been using DATASIM (CLI) to generate xAPI statements that conform to the profile.
I have tried adding an extension to the profile, using the "inlineSchema" property to specify data type and some additional restrictions with JSON schema, but mostly DATASIM does not seem to be able to reflect the additional restrictions in the xAPI statements generated.
For instance I tried adding a (slightly modified) example JSON schema from the xAPI profiles specification (GitHub) to the extension in the profile:
"inlineSchema": "{ \"type\": \"object\", \"properties\":{ \"rank\": {\"type\": \"number\"},\"medal\":{\"type\": \"string\"}}, \"required\": [\"rank\", \"medal\"]}".
When generating statements based on the profile with an extension having such an inlineSchema, the value of the xAPI statement extension is not as expected an object with properties rank (value of type number) and medal (value of type string), but rather the extension value varies between string (e.g. '1X6m9L94OQR'), number (e.g. 1.2574462890625), empty object ({}) and empty array ([]).
Another example is that when setting the profile extension data type to string, and specifying either a format (e.g. uri, date-time) or pattern (regular expression), I experienced that formats and patterns are not reflected in the generated xAPI statements.
In the future it would be great if the generated xAPI statements could reflect the full JSON schema for extensions (and document resources) that are specified in a profile.

Hello,
One way to account for this limitation is via usage of Statement Template rules which target the extension (location) and then usage of any, all and/or none to control the generated values.
{"location" : "$.context.extensions.['extension-iri'].rank",
 "any" : [-1.0 -0.5 0.0 0.5 1.0],
 "presence" : "included"},
{"location" : "$.context.extensions.['extension-iri'].medal",
 "any" : ["gold", "silver", "bronze"],
 "presence" : "included"}

This solution isn't ideal but it will produce data in the expected shape with consistent values. JSON schema based generation is expected to be improved in a future release.

Thank you for the explanation on how to use Statement Template rules to produce data with values as expected. I look forward to the future release where JSON schema based generation will be improved.


Automated cherry pick of #8392: fix(region): compute binded disk count when deleting snapshotpolicy

Cherry pick of #8392 on release/3.4.
#8392: fix(region): compute binded disk count when deleting snapshotpolicy

Codecov Report

Merging #8393 into release/3.4 will decrease coverage by 2.68%.
The diff coverage is 0.00%.

@@              Coverage Diff               @@
##           release/3.4   #8393      +/-   ##
==============================================
- Coverage         6.22%   3.53%   -2.69%
==============================================
  Files              759     304     -455
  Lines           117145   62293   -54852
==============================================
- Hits              7289    2203    -5086
+ Misses          109197   59936   -49261
+ Partials           659     154     -505

Flag
Coverage Δ

#aFlag
3.53% <0.00%> (-2.69%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/appsrv/stats.go
0.00% <0.00%> (ø)

pkg/cloudcommon/notifyclient/events.go
0.00% <0.00%> (ø)

pkg/cloudcommon/notifyclient/notify.go
2.07% <0.00%> (-0.17%)
:arrow_down:

pkg/compute/models/buckets.go
1.10% <0.00%> (+0.03%)
:arrow_up:

pkg/compute/models/cachedimages.go
1.67% <0.00%> (-0.14%)
:arrow_down:

pkg/compute/models/capabilities.go
0.00% <0.00%> (ø)

pkg/compute/models/cloudaccounts.go
0.48% <0.00%> (-4.66%)
:arrow_down:

pkg/compute/models/dbinstance_skus.go
2.83% <0.00%> (-0.02%)
:arrow_down:

pkg/compute/models/dbinstances.go
0.78% <0.00%> (-0.01%)
:arrow_down:

pkg/compute/models/disks.go
0.50% <0.00%> (-0.01%)
:arrow_down:

... and 442 more

Continue to review full report at Codecov.

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


Migrate to WC v1

I'm submitting a
Feature request
Description
The Simpla ecosystem is currently built on v0 of the Web Components specs (and Polymer 1). We should upgrade all elements to WC v1 specs, which will allow us to:

Strip Polymer from render bundles and use the raw browser APIs, greatly improving first-paint performance
Server side render content, using skatejs/ssr, fixing #66
Document element authorship, and make a generalised ES6 mixin to make building elements with any framework easy peasy
Move to ES6 modules and NPM as soon as Polymer 3, and es module support, lands in evergreend (🎉 )

Progress

[ ] simpla-text
[ ] simpla-img
[ ] simpla-article
[ ] simpla-video
[ ] simpla-admin
[ ] simpla-link
[ ] simpla-collection
[ ] simpla-notify
[ ] simpla-markdown
[ ] simpla-element-behavior
[ ] simpla-richtext-behavior

Notes

Simpla-img will need to be turned into a wrapper element, since is="" type extension is hard deprecated in v1 😞

The element behavior should be renamed, since its now a mixin

The richtext behavior should probably be split off into a generalised JS module, since it's not actually tied to Simpla in any way

Note: Just realised that when we move to WC v1 we'll lose out-of-the-box IE11 support, because Polymer (and all other v1 wc's) don't ship transpiled element definitions.
Users will require a buildstep. That sucks on its own but is worse because they'll either have to bundle everything with Polymer CLI, which is an anti-pattern w/ h2, or transpile Bower components in-place with a postinstall hook, which is a hack and prone to failure.
Might even be worth waiting for Polymer 3 to drop, at least when everything is in JS land there are precedents users can easily follow (ie: import and code split, or transpile es modules directly)
/cc @bedeoverend

Wel, that really sucks.
Can you just transpile with Polymer CLI? Surely you can - and just partly bundle / code split? Anti-pattern to bundle everything, but also still advised to bundle some things to avoid long request paths.
 It'd also suck to have to wait for Polymer 3, but might be the way to go. I'd prefer just wait and do that rather than spend a whole heap of time on solutions that'll eventually be superseded anyway.
Other option would be drop IE11 support for editing. We can move our view only elements to vanilla v1 or similar, and then editing elements support the evergreens.

No dice, re: transpiling our own stuff and saying no IE in editing, because the ES5 shim throws if you try and register an element with an ES6 class. So you can't mix ES5 and ES6 definitions.
I've never actually used Polymer CLI, but I would be very surprised if it did any kind of easy code splitting, it wouldn't know enough about the user's views for a start. It might do transpile-only, but unless you're also moving components out of bower to dist, it's probably cleaner to just advise doing a bower postinstall hook to transpile in place. Especially since polymer CLI is a kitchen sink, like I think most of those tools are tied to serving/prod configs/etc.
Well there'll likely be very little difference in public API between polymer 2 and 3, so as far as implementation workload it's not a big deal. Just whether we want to have that awkward intermediary phase of shitty HTML build steps. Can always start on the v1 conversions, and decide whether to ship or not when we get there.

Ah of course, forgot about the ES5 shim. Yeah I'd say we can start work on v1 conversions, that's not going to change, and have another look at best way to handle IE11 when we're getting closer.

Of course a final option is moving everything to a pure JS helper library like Skate now, but that's probably overkill, and we'd lose the ability (basically) to use any other helper elements

because the ES5 shim throws if you try and register an element with an ES6 class. So you can't mix ES5 and ES6 definitions.

So I tried this in Chrome and it seems to work fine - mixing and matching ES6 / ES5. Perhaps transpiling our own, and no editing in IE is back on the cards?

Hrmm. That's weird, every time I've transpiled my own stuff and forgotten to transpile polymer deps (for eg) it throws. Will need to test more.
But yeah if that's the case then happy with that, then can just say to add a buildstep if they want to support IE in editing

@seaneking how can I help?

@netdur would you be confident submitting PRs for any of the action items in the first comment?
Before converting any elements we'll need to fork simpla-element-behavior into an ES6 mixin. I can probably do that later today.
Once that's done, some elements, like simpla-video and simpla-link, should be pretty trivial to upgrade to Polymer 2 and are a good place to start.
We've settled (I'm pretty sure, @bedeoverend ?) on migrating to WC v1 now, and doing a quick jump to NPM when Polymer 3 lands to make the browser support issue less awkward. So these can all start shipping (unversioned until we can coordinate docs and such) now.
Thanks!!

@seaneking yes I am, I have good experience building javascript widgets, I will wait for simpla-elements-behavior to get done first.
isn't polymer 2 absolute? because of its html import! shouldn't you jump to polymer 3?

Great! I'll ping you when it's ported.
And we'd love to, but Polymer 3 is still very much in preview and not ready for prod. We don't like relying on HTML imports/Bower either, but until the platform and/or tooling catches up our hands are tied.

Have made a PR for the new element mixin in #86. @seaneking could you review?

An update on this - we're going to jump over to pure JS and migrate to NPM at the same time, moving all official elements to a monorepo (in particular, this monorepo). Still hashing out a few minor details before we merge that PR for the element behavior. Sorry for the wait!

FWIW @bedeoverend after playing with SkateJS for some of my own stuff, I am totally on board with using that for all elements, rather than waiting for Polymer 3 or going full native. Skate with a lit-html renderer (which itself wouldn't be needed for all components) is all of ~4-5kb, hardly a (shared) dep worth worrying about. The 5.1 release also reintroduced spec-compliant classes as the recommended approach (ie: static getters).
Rollup now also supports code splitting and dynamic imports, shimmed with SystemJS for older browsers. Something that could potentially solve the lazy-loaded editors issue.


Fix local images in production builds.

hello, this PR seems merged but is this released on npm so that we can start using the fix for production builds

not released yet
see this https://github.com/DylanVann/react-native-fast-image/blob/master/CHANGELOG.md


Automation Port Drillcone Bug, and unused Config

Hey! Looks like i found a bug.
The laser drillcones Automation port stays on red even when the storage is full.
This only seems to occur tho when the rocket already flew out to somewhere already and came back.
Also theres a config option for an RTG Decay time even tho theres no such rocket part from the mod.

ah, another bug at the drillcone. I will adress it in the next update.
the rtg option is a teaser for the next update

I will once it reoccurs , but there's honestly not much to show.
The automation port will still be red and even hovering over it will highlight the "Otherwise RED signal" text.
While when clicking on the module, it will clearly say 6000/6000 bolts, and radbolts will just fly past its input port

Save and load could fix this, I'm not sure what caused this to happen.

this honestly sounds like something coming from the vanilla radbolt storage (since Im reusing that logic).
I'll close this issue for now.


Polygon Blocks end on September 6, 2022

The last available block in bigquery-public-data.crypto_polygon.blocks is block 32751950, which has timestamp 2022-09-06 06:01:58 UTC. Blocks after this date are not included anymore in the table.
@araa47 @TimNooren

Hi @SimonCousaert, this seems a duplicate of https://github.com/blockchain-etl/polygon-etl/issues/100:)

@TimNooren Apologies, thank you for your quick response.
For Polygon raw data, public-data-finance.crypto_polygon is the one to use; for parsed log data, you need to use the blockchain-etl project. Correct?

@SimonCousaert No worries:) I'm not aware of the reason for keeping the dataset in bigquery-public-data. Might be better to remove it, since it understandably causes confusion. Will look into this.

For Polygon raw data, public-data-finance.crypto_polygon is the one to use; for parsed log data, you need to use the blockchain-etl project. Correct?

Yes, correct👍


HP40A-995-RDK Services:org.rdk.Network.1.onIPAddressStatusChanged is not getting triggered on connecting to wifi

HP40A-995: RDK Services:org.rdk.Network.1.onIPAddressStatusChanged is not getting triggered on connecting to wifi
Reason for change: Fix for not getting ACQUIRED event in the WPEFramework.log
Test Procedure: none
Risks: Low
Signed-off-by: vummad796<EMAIL_ADDRESS>

Change set needs to be validated in sprint branch

Created RDKCOM-2089 for the same to track.

Cleaning up older PRs. Please create new PR on latest sprint if required.


docs about servers side support for auto updating a windows build

The doc about 'auto-updater' module says

The server-side setup is also different from OS X. You can read the documents of Squirrel.Windows to get more details.'

But I can't find that at Squirrel.Windows'  documents.
Where I can find the info about that?

Does anyone have an example for a server side implementation for Squirrel.Windows? I cannot seem to find it, I managed to get the RELEASES file to establish that there is an update available, but thats all, no way to download nor install the update.
Any help here will be appreciated.

I think they wanted you to read/visit this link

@dkfiresky, already read it. couldn't find any info about a server side implementation for hosting the updates, as @plrthink says no docs in that link about how it works.
I found out that when checking for updates it makes a request to the updater.setFeedURL and appends a RELEASES?id=APPNAME&localVersion=1.0.2&arch=amd64 at the end.
If there's no update the update-not-available event is fired, but when there is an update the download is not triggered as in Squirrel.Mac

The update is only fired when you reply with 200 OK and following json:

{
   "url": "http://mycompany.com/myapp/releases/myrelease",
   "name": "My Release Name",
   "notes": "Theses are some release notes innit",
   "pub_date": "2013-09-18T12:29:53+01:00",
}

Ref: https://github.com/Squirrel/Squirrel.Mac#update-json-format
I assume it's the same with Squirrel.Windows.

@dkfiresky So, does it means the server side setup for auto update windows builds is same as ways for OS X except that we are supposed to add a config file as this says?
There is no pcs available to me right now, so I would try that tomorrow. But I think the doc is so misunderstanding if it's true...

I really don't think so, cause the only way it detects that theres is an update available is by downloading the RELEASES file.
My Squirrel.Mac implementation works flawless but this one I cannot seem to understand.

Ok folks, got it working!!!!
This is the way it works at least for me:

use grunt-electron-installer to generate the installer
In your electron app set the updater URL with setFeedURL (it has to be a valid URL with SSL)

I have suppor for both mac & windows updates.. my URL is https://mycompany.com/update/:app/:platform/:version then in the server I have two routes for this

/update/:app/:platform/:version -> This one is for Mac updates and returns 204 or  200 status code with the Squirrel.Mac json update format
/update/:app/:platform/:version/releases -> This one is for Windows updates and downloads the latest RELEASES file (be aware that the RELEASES file have to have only one line per version  one for the full and one for the delta)

After that the URL for the Mac downloads is set in the json update format in the url property, but the Squirrel.Windows way of doing it is by making a GET Request to the same URL as in the setFeedURL  of the updater meaning that is something like this /update/:app/:platform/:version/filename.nupkg.
Serve the file in that URL and you're set.

@enahum nice! It would be great if you can show a example here or create a gist.

@enahum A few questiones here:
1.For windows builds, does electron (or Squirrel.Windows) automatically decide whether there is a update available based on the latest RELEASES file? Since unlike that on mac, which you can decide if there is a update or not by making different response, on windows it just download the latest RELEASES file.
2.Does electron (or Squirrel.Windows) automatically request the update (the .nupkg) file or you should manually request that?

@plrthink

For windows build, Squirrel.Windows will decide automatically if there is an update based on the RELEASES file it downloads, it will make a comparison with the RELEASES file that you already have with the installed app. That means that when checking for updates you have to send the RELEASES file to the electron app.

When the RELEASES file have a newer version than that installed by the user it will automatically request the newest .nupkg found in the RELEASES file (it could be the full version or the delta version).

Hope it helps

@enahum Yeah, that make sense for me. An additional question. How to generate a delta .nupkg file?

the grunt-electron-installer creates it all by itself if you don't delete your previous builds of the installer.
Cheers!!

Oh, got it, thank for answering questions.

@enahum @dkfiresky After digging Squirrel.Windows, I find this:

At this line, Squirrel.Windows fetch a remote RELEASES file.

And this file is response for downloads .nupkg files.

I haven't been able to run the app with the squirrel events getting triggered, I even modified the rcedit project to include SquirrelAwareApp=1.
Anyone have had successfully made this work?

@enahum Did you say it work?

Could anyone of electron team update the docs about this section and explain how it works? May be it's easy for a windows developer to understand but it's not  for a js developer without any existing knowledge about windows development.

I suggest bringing this up in issues list of Squirrel.Windows, you should be able to get much better answers there, and the documents on auto-updater in Electron just links to there.

Hey guys, can I use auto-updater on windows without using grunt-electron-installer (I want to use Inno Setup for creating the installer).

@evgenyzinoviev I haven´t tried but it shouldn't be a Problem, and if you include the binaries from Squirrel.Windows you should have support for the auto-updater feature, Its only a wild guess. Give it a try and let us know if it works.
Cheers.

Could anyone of electron team update the docs about this section and explain how it works? May be it's easy for a windows developer to understand but it's not for a js developer without any existing knowledge about windows development.

Squirrel.Windows, I totally agree with this sentiment, it's been on my TODO list to make this much easier / less confusing. Sorry that right now it's kind of Black Magic.

(I want to use Inno Setup for creating the installer)?

auto-updater specifically works with Squirrel.Windows, if you use Inno Setup you're on your own

okay then, I ported osx auto-updater to windows and it seems to work: https://github.com/evgenyzinoviev/electron-windows-updater

@paulcbetts :+1:

@paulcbetts any news on updated docs?


Maximising code reuse in operator functions

In operator functions for both matrices and vectors, similar code is used in the normal and _r versions of each operator.
This can be eliminated by referring to the normal version of the operator in the _r version. For example, take zmlAddVecs():
// assert size ...
zmlVector r = zmlCopyVector(&v1);
zmlAddVecs(&r, v2);
return r;

Closed with commit 309433516ba9bd620329396d285ee502ccd4a769.


Set a css class active to the parent element

When you have multiple lines it's difficult to know which line has triggered the context menu. It'd be very useful to have a class on the parent element.
For example: If I have got a table and I have applied the context menu to the tr, when you activate the context menu, the tr could have a css class to show it's currently active.

That's a good idea for a new feature.
Here's a potential workaround in the mean time:
<tr *ngFor="let item of itemList" (contextmenu)="onContextMenu($event, item)" [class.active]="item === activeItem">

activeItem: any;
onContextMenu(event: MouseEvent, item: any) {
  this.activeItem = item;
  this.contextMenuService.next.emit({
    // etc...
  });
}

Thanks for the quick response.
I implemented it as per your suggestion. The only thing I added was <context-menu (close)="onCloseContextMenu()"> so that it clears the selection once you close the context menu.


Only square icons possible?

It looks like in the latest version only square icons are possible (on macos). In the older version I could also use an rectangular icon but in 4.0.1 it only accepts square icons even if I define the icon like 64x32. Is this on purpose?

@HanSolo - In my experience, MacOD won't even allow icons to be larger than 22 x 22 in the system tray. Though admittedly I haven't tried any rectangular dimensions. Can the system tray even display 64 x 32 without resizing it?

I did display the rectangular version in an older version of FXTrayIcon but not in the newer version anymore. And yes it will scale down the image (I’ve choosen a higher resolution to get a sharper result because it is text).

The first image version is with FXTrayIcon 3.1.2 and the other with 4.0.1, I guess you can see the difference :)

@HanSolo How are you instantiating? When I try that icon with 3.1.2, it looks like this

@HanSolo How are you instantiating FXTrayIcon? When I try that icon with 3.1.2, it looks like this

This is the icon that I'm using

Here is the dependency declaration
        <dependency>
            <groupId>com.dustinredmond.fxtrayicon</groupId>
            <artifactId>FXTrayIcon</artifactId>
            <version>3.1.2</version>
        </dependency>

And this is how I'm instantiating
FXTrayIcon icon = new FXTrayIcon.Builder(stage,iconurl,22,22).addExitMenuItem().show().build();

@HanSolo I even tried making the same icon with proportional dimensions

But I get the same results from 3.1.2 and 4.0.1
Nonetheless, based on What Dustin said about that commit causing the issue, this one here only executes that change if the machine is running Windows so it will not run that code if its being ran on a mac ... try this and see if it doesn't solve the problem:
FXTrayIcon-4.0.1-SIMS.jar.zip

Sorry, was on vacation and on travel. It looks like the patch from @EasyG0ing1 fixes the issue 👍🏻

Closing issue as @EasyG0ing1 pushed a commit to fix this issue. Looks like it's another one of those issues specific to MacOS.


Slimraw compressed DNG files do not open

I have here two .DNG files created by Sigma FP and then converted to lossless compressed with Slimraw
( https://www.slimraw.com )
https://www.dropbox.com/s/exehkhx884anv4u/A001_005_20220409_000001.DNG?dl=0
One is compressed with premiere cc compatible on and the other without.
https://www.dropbox.com/s/mtx0q9nhxglizns/B001_005_20220409_000001.DNG?dl=0
Both have an error when opening in RawPlayer

This is something we are aware of, unfortunately it requires some re-writing of the lossless jpeg decoder - not a quick fix :( . It is in the road map for the first quarter of 2023.

We have completed a rewrite of the lossless decompression code which now supports SlimRAW. This will be released as part of the next major revision at the end of the month

We have completed a rewrite of the lossless decompression code which now supports SlimRAW. This will be released as part of the next major revision at the end of the month

Great to hear that!


v0.1.6 - Fix rendering

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Implement signing requirement for addkey into AppCache SCRAPER section

Currently while testing, anyone can add or remove a key in the SCRAPER section, which holds the list of authorized scrapers (by address).
This should remain this way during the middle stages of testing the new scraper/NN.
As we move towards final testing and then inclusion in master, we need to add this to the masterkey requirement.

@denravonska is that all I have to do? Seems too easy.


Take more than 3 photos

SandCam script will only take 3 photos before shutter button stops working.

The problem is the gpsd.next() command. I used the link from your issue #38 and it is the solution. The physical GPS is not connected right apparently so I am going to retry the instructions and get it working