Publish and Prerelease from multiple branches (input desired)

Description
Related to this Issue and PR from me regarding prereleases:
https://github.com/relekang/python-semantic-release/issues/386
https://github.com/relekang/python-semantic-release/pull/413
With the (hopefully soon) new prerelease option, it would be nice to have the option to publish from multiple branches with different options.
Use cases
This would enable flows like:
Branch: master -> publish normal new version
Branch: dev -> publish new beta prerelease
Branch: feature/* -> publish new alpha prerelease
Possible implementation
This would change how the branch configuration option works - or possible remove it - as we than would not check out a branch on the publish command, but would analyse what to exactly do based on the currently checked out branch.
PS: Another possible option to handle this, could be a dedicated prerelease command which can be called from the ci pipeline directly, which than would operate on the current branch...
Would love to get some input!

Hi @jacksbox, @williamluke4 & @danth
I've been using the Node semantic-release for a while & in the process of converting to this to eliminate the need for Node installation on some Jenkins agents, and was looking to see if this was a feature today/came across this issue. I use pyproject.toml for configuration so :pray: please guide me if anything doesn't fit for setup.cfg, my level of understanding is "read the docs" for the latter.
If it was free-reign I think I'd look to implement the following:
Proposals
1. Create a new sub-table configuration option, something like
[tool.semantic_release.branches]
"branch regex" = <per-branch config dict>
# e.g.
main = true # always release
"^test-.*$" = false # never release test-* branches
"^dev-?.*" = {prerelease = true, prerelease_tag = "alpha"}

I believe it's possible to create the same kind of structure in setup.cfg:
[tool:semantic_release.branches]
"^dev-*$"=
    =prerelease = true
    =prerelease_tag = "alpha"

but admittedly haven't really tested yet.
This kind've follows the options available in the Node semantic-release configuration, and would allow a per-branch pattern configuration to hook into.
I had some ideas around defining keys such as force_major, force_minor and force_patch as boolean flags, which would help with multibranch CI pipelines when a user wants to associate a specific meaning with their branch naming conventions.
I also wonder if there's value in capturing groups from the branch regex for use in the config too - food for thought :thinking: ?
I think this will hook into the recent pre-release functionality pretty well as the recent inclusion of pre-release functionality in your ![PR], since (if I understood correctly) that relies on setting a flag True/False for whether we are or aren't doing a pre-release - it should be doable to grab that from the per-branch config structure above, provided we can match on branch name.
A question I still have is what the default should look like - I suggest a default which has the same effect as
[tool.semantic_release.branches]
master = true

but the specifics will depend on what options are allowed in that per-branch configuration. It could go as granular as allowing most other configuration settings (e.g. upload_to_repository, upload_to_release etc) to be done on a per-branch-pattern basis, or kept pretty tight in the first instance. Ultimately though I do think that being able to set most keys under Distribution and maybe Commits (at least commit message?) would be useful functionality.
2. Deprecate the branch configuration key
In favour of using the sub-table as outlined above.
3. Change the default behaviour around branches
Instead of checking the branch out from the configuration's branch key, semantic-release should check the current branch that the user is on in their repository, and if it doesn't match any configuration then should probably just print a message and exit gracefully.
Implementation
I think 1 and 2 are do-able without introducing any breaking changes, however the change to the default behaviour 3 will be what really makes the multibranching config come alive. All the while semantic-release is limited to checking out a target branch and then releasing, I guess the table for multibranching would have somewhat limited value.
What do you think of this? If no-one is looking at it yet I should have some space in the next couple of weeks to start drafting a PR, but better to get your thoughts first :slightly_smiling_face:.

@relekang hi, came to check on this and realised I didn't include you in the set of tags- sorry about that! I'd love to get your thoughts on the above, if that's a direction python-semantic-release could go in

Hi I'm also interested in this features, I was thinking on just add branch to the semantic-release command as a paremeter, but not sure if the inner-workings allow this
something like:
semantic-release --prerelease branch=develop
will be used if for example the merge is to the "develop" branch
if the merge is to the "master" branch it could be
semantic-release branch=master

it seems this works

Completed in v8 release.


feat(conference): setup design proposal for Mixit23

🤔 Why do you want to make those changes?

🧑🔬 How did you make them?

🧪 How to check them?

Open discussion with organisation is here https://github.com/lyonjs/social-video-generator/discussions/100


Unsupported version in docker-compose.yml

I wanted to give changd a test drive, but I ran problems when trying to boot it up.
I get this error message when I do docker-compose up
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

My environment is WSL2 on Windows 10.
Docker version 19.03.8, build afacb8b7f0
docker-compose version 1.25.4, build 8d51620a
Docker Desktop 4.4.3 (73365) is currently the newest version available.

@kerbe - if you would like to test out the app in the mean time, I published a test instance here: https://change.app

@kerbe - based on your 2nd issue, I believe this is an issue with your docker-compose version. Based on specs it shows that the v3.8 spec of the file was added in docker compose 1.25.5. (https://github.com/docker/compose/releases/tag/1.25.5)
I will see if there are any 3.8 specific params in the file and if not, downgrade the file version to 3.7 (or possibly lower).


[Bug]: Null values get dropped from properties in ShapeSource's onPress function

Mapbox Implementation
Mapbox
Mapbox Version
default
Platform
iOS
@rnmapbox/maps version
10.0.0-beta.11
Standalone component to reproduce
{
  "type": "Feature",

  "properties": {
    "foo": "Foo",
    "bar": null,
  },

  "geometry": {
    "type": "Point",
    "coordinates": [6.942103, 52.223644],
  }
}

In the example above, if I get this feature through the onPress function of a ShapeSource (I'll post an example down below), the bar property gets dropped. Is this expected behaviour, and if so, why?
<MapboxGL.ShapeSource shape={source} onPress={e => console.log(e.feature[0])} />

Observed behavior and steps to reproduce
No response
Expected behavior
No response
Notes / preliminary analysis
No response
Additional links and references
No response

I now understand this is caused by the Mapbox Vector Tile specification. Nothing something this project is responsible for.
https://github.com/mapbox/vector-tile-spec/blob/master/2.1/vector_tile.proto#L15-L28


Init

What

Allow to aggregate user data scripts and store it on s3
Allow fetch this data from s3 and execute as normal user data

Why

AWS user data is limited by size. This is workaround to avoid limit.

Terraform module name does not follow registry imposed naming convention.
Also, I think the better approach may be to use this with gzip turned on. Amazon Linux supports cloud init
https://www.terraform.io/docs/providers/template/d/cloudinit_config.html

https://www.terraform.io/docs/registry/modules/publish.html#requirements


Unable to build on Fedora 40

I keep receiving this error while trying to build the library in Fedora 40

[ 71%] Building CXX object CMakeFiles/dupe_finder.dir/src/dupe_finder.cc.o
/home/maria/scratchpad/resource_dasm/src/dupe_finder.cc: In function ‘int main(int, const char**)’:
/home/maria/scratchpad/resource_dasm/src/dupe_finder.cc:117:13: error: ‘find_if’ was not declared in this scope; did you mean ‘std::ranges::find_if’?
  117 |         if (find_if(input_filenames.begin(), input_filenames.end(), [&](auto s) { return !strcmp(s, argv[x]); }) == input_filenames.end())
      |             ^~~~~~~
      |             std::ranges::find_if
In file included from /usr/include/c++/14/tuple:44,
                 from /usr/include/c++/14/bits/uses_allocator_args.h:39,
                 from /usr/include/c++/14/bits/memory_resource.h:41,
                 from /usr/include/c++/14/string:67,
                 from /usr/include/c++/14/bitset:52,
                 from /home/maria/scratchpad/resource_dasm/src/ResourceIDs.hh:3,
                 from /home/maria/scratchpad/resource_dasm/src/Cli.hh:3,
                 from /home/maria/scratchpad/resource_dasm/src/dupe_finder.cc:3:
/usr/include/c++/14/bits/ranges_util.h:543:33: note: ‘std::ranges::find_if’ declared here
  543 |   inline constexpr __find_if_fn find_if{};
      |                                 ^~~~~~~
make[2]: *** [CMakeFiles/dupe_finder.dir/build.make:76: CMakeFiles/dupe_finder.dir/src/dupe_finder.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:307: CMakeFiles/dupe_finder.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

This could be because libc++ and libstdc++ include different headers "behind the scenes" (in other headers). Please try to add #include <algorithm> to the includes, that should fix it:
#include <stdio.h>

#include "Cli.hh"
#include "IndexFormats/Formats.hh"
#include "ResourceFile.hh"
#include "TextCodecs.hh"
#include <phosg/Filesystem.hh>
#include <algorithm>           // <===
#include <stdexcept>
#include <string>
#include <unordered_map>
#include <unordered_set>

Thank you Kristine, adding #include <algorithm> to the files RealmzGlobalData.hh and ResourceIDs.hh allowed the building process to complete

Thanks - I've added the include to both files.


worklog page:

Time spent
Feature

5h
film directors of Belarus #4

4h
author page: timeline #10

3h
author page: video #15

4h
team page: #21

Time spent
Feature

8h
author page: name, years, picture, list of works  #8

4h
author page: map #28

5h
main page: author of the day, portal description #23

Time spent
Feature

2h
author page: gallery his/her works #13

3h
Localization (3 languages) i18next #3


Error message when running any pscale command

I have a workflow setup similar to this:
jobs:
  ps_job:
    runs-on: ubuntu-latest

    steps:
      - name: Setup pscale
        uses: planetscale/setup-pscale-action@v1

      - name: Run my script
        working-directory: ./scripts
        run: bash ./my_script.sh
        env:
          PLANETSCALE_SERVICE_TOKEN_ID: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_ID }}
          PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }}

Then anytime I use a pscale command inside myscript.sh, I get the following error message:
Updater error: skipping update, error: open /home/runner/.config/planetscale/state.yml: no such file or directory

I was able to prevent the error by creating state.yml before running pscale:
mkdir -p "/home/runner/.config/planetscale" && touch "/home/runner/.config/planetscale/state.yml"

This error was a problem for me because although the commands would run, they did not return the expected output.

Thank you for reporting. We just released 177 with a fix for this. https://github.com/planetscale/cli/releases/tag/v0.177.0
If you see any more issues, please let us know!


fix: make all options optionally

e2e testing is the best testing 🙈

@zeke It's ready, I'm merging this when being ready.
@CharlieHess thanks for typings suggestions, I'm happy to review this in the other PR.


Decreased size of images

Decreased size of images by concatenating RUNs of SonarQube installation in one layer

For example image newtmitch/sonar-scanner:3.2.0-alpine has been decreased from 621MB to 348MB

Thanks @DmitriyStoyanov - merging now


fix: update definition of credential service

WHAT
The definition of the Credential Service was inconsistent among the different specification documents.
Closes #57
How was the issue fixed?
The term definition was aligned among all specification documents.

Sorry, I was doing this as part of #95. Let's see what is missing from that and update after it has been merged.

The only relevant change is that @nikschul's definition contains "network-accessible" which I would be ok with adding to the definition. I think it'd make sense to do this in a separate PR and close this one.


[Tests] Fix OpenAssetIO constants import

In OpenAssetIO/OpenAssetIO#998 the constants module was migrated to C++ as a CPython submodule. This means, annoyingly, that we can no longer import objects from the constants module. Instead, we must import the constants module wholesale.

Can we add a breaking change note to the OpenAssetIO release notes please?

Added in

https://github.com/OpenAssetIO/OpenAssetIO/pull/1017


Implementing nonlinear terms

Hello,
i'm a bit confused on how to approach implementing a nonlinear term in
MFEM which arises in the Navier Stokes or Euler equation for example.
There is the term in the momentum equation
u . grad(u)
for example. Am I supposed to use mfem::NonlinearForm and implement the
needed methods for the mfem::NewtonSolver? In other codes i implemented
the linearized Jacobian term like
inner(grad(du) * u, v)*dx + inner(grad(u) * du, v)*dx
where du is the trial function and u the function.
I also didn't understand in the nonlinear ex10, if there is an
implementation of a "Residual term". I could only spot that the
linearized jacobian is assembled every solving step.
Appreciate your help
Thanks
Julian

Hi Julian,
If you are solving the nonlinear equation (e.g. Euler) with an implicit method, then it will result in nonlinear terms for the unknown and you'll have to use NonlinearForm + NewtonSolver, as in ex10. That won't be the case for explicit methods.
I'm not sure what you mean by "residual term", could you be more specific?
Vladimir

I am used to providing formulations for SNES from PETSc which needs the nonlinear residual in the form of F(u) = 0 and the Jacobian formulation as linearized dF(u)/du for the Newton solver. So for the NS equation you would have something like that for the residual
F(u) = inner(grad(u), grad(v)) * dx + inner(dot(grad(u), u), v) * dx - p*div(v) * dx + div(u)*q*dx
and for the Jacobian
J = inner(grad(du), grad(v))*dx + inner(grad(du)*u, v)*dx + inner(grad(u)*du, v)*dx - dp*div(v)*dx + div(du)*q*dx
with u, p as functions and v, q as trial functions and du, dp as test functions. Does that make sense?
In a mixed formulation i would need to build a NonlinearForm including the ConvectionIntegrator which will be part of the blockmatrix in every iteration, is this correct?

Thanks, it's more clear now.
In ex10, the F(u) computation is in BackwardEulerOperator::Mult(), and the J computation is in BackwardEulerOperator::GetGradient().
First you need to define an Operator for your nonlinear system and Jacobian There are different ways to do it:

Use the existing NonlinearForm class, but define new classes for the missing NonlinearFormIntegrators. These classes should define the local gradients. Then they are attached to the NonlinearForm and it takes care of the rest, you don't need to reimplement Mult() or GetGradient().
As in ex10, create a new Operator (or NonlinearForm) class and implement Mult() and GetGradient() yourself. In this case, for GetGradient(), you can return a BilinearForm that contains a ConvectionIntegrator (was that your question?).

Both approaches result in an Operator, which is then given to a NewtonSolver. Alternatively, you can wait for the upcoming MFEM release, which will support PETSc nonlinear solvers (i.e. the Operator can be given to a PETSc solver).
I hope this helps,
Vladimir

Thanks, that makes it clearer.
I still do not understand if the ConvectionIntegrator would suffice as a nonlinear term (numerically it is just < grad(u)*u, v >). Would i project the old solution u to a VectorGridFunction and then use that as a Coefficient for the ConvectionIntegrator for the nonlinear term?
And for
<grad(du)*u, v> + <grad(u)*du, v>
with u, p as functions and v, q as trial functions and du, dp as test functions. Assembling <grad(du)*u, v> is straight forward, since it is the form the Integrator is implemented. How would i assemble the second term <grad(u)*du, v>?

Yes, you can add a ConvectionIntegrator to the NonlinearForm that represents F(u). This ConvectionIntegrator can have a VectorGridFunctionCoefficient that is linked to the current u (you want your Coefficient to change as u gets updated by the NewtonSolver).
<grad(u) du, v> can be done with VectorMassIntegrator. You'll need to create a new MatrixCoefficient class that takes a vector GridFunction and computes the gradient, see coefficient.hpp. I don't think such coefficient exists right now.
I hope this helps, good luck,
Vladimir

This ConvectionIntegrator can have a VectorGridFunctionCoefficient that is linked to the current u (you want your Coefficient to change as u gets updated by the NewtonSolver).

Okay thats exactly how i understood that.
Regarding the second term which is the linearized version of the ConvectionIntegrator. I need to implement this for the Jacobian, correct?
Or does GetGradient() called on a NonlinearForm (or Operator) including the ConvectionIntegrator give me magically the Jacobian for the ConvectionIntegrator term?! I mean, you'd have to do similar things in BLAST for the Euler equations, or am i wrong?
Thanks for the help!

I see, let me align the discussion with the two approaches from my second reply.

Using the existing NonlinearForm class; you can attach the <grad(u)*u, v> ConvectionIntegrator as discussed and it will give the correct F(u), but that integrator won't have the correct AssembleElementGrad() method, so the GetGradient() won't give the correct J. In this case you can write a new NonLinearFormIntegrator, similar to ConvectionIntegrator, but with a different AssembleElementGrad() that computes <grad(du)*u, v> + <grad(u)*du, v> in a zone. That's probably what I would do.
Creating a new NonlinearForm class; again you can attach the <grad(u)*u, v> ConvectionIntegrator (and other BilinearFormIntegrators) as discussed and use them for Mult(). For your custom GetGradient(), however, you'll need to return a BilinearForm that includes the mentioned <grad(du)*u, v> ConvectionIntegrator, the <grad(u) du, v> VectorMassIntegrator, and the other BilinearFormIntegrators involved in J.

So there is no magic, both cases need the computation of grad(u) at some point.
Let me know if you have further questions.

Thanks again for the detailed explanations! I think i understand the process now :+1:

If you have questions about implementation details you can contact me at juan [at] tf.uni-kiel.de.


Password Credentials - Client ID

Hi Guys,
I am using the PasswordCredentials grant type and I think I noticed a problem.
On line 19 of the PasswordCredentials GrantType it merges the parents required parameters with the username,password.
The parents getRequired returns 'client_id'.
This means that the PasswordCredentials required parameters become ['client_id', 'username', 'password']. I don't however think this is correct as looking at the RFC it states that only grant_type, username and password are the required parameters.
I have only started using the plugin so I might be doing things wrong but I wanted to flag it anyway.
Thanks,
Stephen

That is correct. From the RFC you linked:

The authorization server MUST:
require client authentication for confidential clients or for any
client that was issued client credentials (or with other
authentication requirements),

So, each flow requires a client_id unless you allow every client (which I've never heard anyone do).

Hi Bojan,
Thanks for getting back to me so quickly!
The RFC shows this as a example for getting an access token:

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=johndoe&password=A3ddj3w

It does not contain the client_id. I thought the section that you quoted was discussing the requirement for Basic Auth but I may be wrong.
Thanks,
Stephen

Hi Stephen
The client ID in that is czZCaGRSa3F0MzpnWDFmQmF0M2JW

Client credentials can be sent in the body as 'client_id' and 'client_secret', or in Basic authentication - see https://github.com/commerceguys/guzzle-oauth2-plugin/pull/16

Hi Patrick,
Ah right ok I see now! Thanks for clearing that up.
Do you know when your pull request will be merged in?
Thanks,
Stephen

Done! I'll tag a release with that soon (I want to review the other PR first) - if that all makes sense then please close this issue

Fantastic!
Thanks everyone this is maybe the best interaction I have ever on GitHub.
Keep up the good work ;)
Thanks,
Stephen

Hi Guys,
Sorry for reopening the issue but I might have noticed another wee issue.
In change that was made to add the client_id/client_secret to the headers: GrantTypeBase.php Line 70. The client_id and client_secret are being unset from the $body but on line 66 the body has already been assigned to the $requestOptions array. Meaning that the unset on line 70 has no effect.
Thanks,
Stephen

Correct... I'll fix that...!

Thanks


chore: update to Oclif V2

Proposed changes
Sorry for the huge PR.
 There is now a dev.cmd script to run the CLI locally. run.cmd will now execute the compiled JS from the lib/ folder
Restored -h, -v, and version since it is not part of @oclif/core and has to be added manually via plugins
Updated this.parse to await this.parse on commands
Replaced cli-ux library with CliUx (which is now part of @oclif/core)
Created a singleton to store global Oclif config since global.config was causing typescript errors
Adjusted how binaries are built
Fix unit tests
bump angular stuff because of some peer dependency issues

More info on Migrating to @oclif/core

Testing

[x] Unit Tests:

[ ] Functionnal Tests:

[x] Manual Tests:

Also, I would make sure we can get a full test run passing in CI with the changes made by Louis before merging and releasing this.
Otherwise it's very risky !

I concur, I want to stabilize and do a release first, then baby steps releases. (Well, baby... Oclif core will be a solid big one).
I think personally it was Ok to review in terms of size, close to the limit, but still digest because the changes were quite trivial.


Pass down vehicle_model to lower-level launch files

As far as I understand, this is needed because the vehicle model is set at the top level.

I think this is already fixed in ros2 branch, so I close this PR.


Time not initialized on first show

When I click on the datetimefield object for the first time and it is shown to the user, the time sliders and time label is set to 00:00, even though the time is something else (ie 09:40).  However, if the panel is hidden and then shown again, the time sliders and label is correct.
In order to get it to work for my needs I modified/added the following code.  I'm sure there is probably a better way, or I'm doing something wrong.  Thoughts?
 setValue: function(value) {
        var me = this;
        value.setSeconds(0);
        this.value = new Date(value);
        me.initTimePanel(value);  //Special Fix to Init the Time component.
        return this.update(this.value);
    },
initTimePanel: function(value) {
        var me = this;
        me.hourSlider.setValue(value.getHours());
        me.minuteSlider.setValue(value.getMinutes());

        var minutePrefix = value.getMinutes() < 10 ? '0' : '',
            hourPrefix = value.getHours() < 10 ? '0' : '',
            label = me.hourSlider.up().down('toolbar').down('label');

        label.setText(hourPrefix + value.getHours() + ':' + minutePrefix + value.getMinutes());
    },

As a separate issue (maybe related).  How should I properly install the the .js files to work with my code.  right now I've put the files in the following folder:  ext/ux/...
I also tried to build the package with with a "sencha package build" and get the following errors:
C:\app\packages\date-time-picker>sencha package build
Sencha Cmd v<IP_ADDRESS>
[INF] Processing Build Descriptor : default
[ERR] Failed to resolve dependency Ext.form.field.Date for file Ext.ux.DateTimeF
ield
[ERR]
[ERR] BUILD FAILED
[ERR] com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.form.field.Date
[ERR] Total time: 1 second
[ERR] The following error occurred while executing this line:
C:\app\packages\date-time-picker\.sencha\package\build-impl.xml:140: The following error occurred while executing this line:
C:\app\packages\date-time-picker\.sencha\package\js-impl.xml:32: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.form.field.Date

Thanks for your help!   Except for my few quirks, this solution works great for my needs.  Hopefully you can provide me some pointers or use my noted issues to make the solution better.
Best Regards,
Wesley
Using ExtJS 5.1.1

Hi, for your second issue, the package won't build because it needs components from the framework to do so. When you build your app, all packages in the packages folder are built automatically, so try building your app, not the package.
I'll review your first issue

Hi,
Issue has been fixed. Thanks for reporting it.


[Suggestion] Unraid compatibility

I'm unsure what it takes for Unraid to recognize a docker as "proper", but for some reason, Unraid doesn't see the docker well.
It shows no image, constantly shows an update (even when freshly ran), and has no options to edit parameters that other dockers provide.

Here you can see the no options for editing:

Here is what other dockers show:

When updating you see that a configuration was not found:

I went searching for Unraid documentation on this issue and have so far only found general reports of the same issue, such as
https://forums.unraid.net/topic/77869-docker-containers-always-update-ready/

unraid is widley used to run dockers. So a integration would be awesome.
I guess you need to add a template for unraid to "their appstore".
https://forums.unraid.net/topic/38582-plug-in-community-applications/
https://forums.unraid.net/topic/87144-ca-application-policies-notes/
https://github.com/Squidly271/Community-Applications-Moderators
If you have time for it, it would be really nice, there is currently no really working minecraft container, so that would be great.
(its still usable without integration, but not that nice... :P)

Thanks @eihns that lead me to find this specific comment from Squid (who apparently is the gatekeeper for the "community" applications). I might need you and/or other unraid users to be my proxy with submitting the "template xml" mentioned
https://forums.unraid.net/topic/57181-docker-faq/#comment-566084
I can create an empty github repo and invite you as a collaborator, if that helps.

Im not sure if that is allowed.

Publishing to CA

Create a GitHub repository and upload the XML(s)
Drop myself (squid)  a PM asking for it to be published with a link to the github repo.
I'm going to odds on reply first and then insist you create a  thread.  Just create it anywhere (as you won't be able to create in the docker Containers) and a moderator will move it.  Update the XML with the support link.  I will also insist on Categories being set.
I do a quick check on the xml(s) and then add it to CA.  If there are no major problems, within 2 hours all users of CA will have access to it under normal circumstances.
Time permitting after its available to all users of CA, I will update the Repositories thread

Note:  After you have a repository added, I do not need to know about any new xml's being added.  CA (and more to the point the  appfeed) will handle all changes to the xml's automatically every 2 hours.

If you want i could post it for you, but i guess it would be better if you create a account there, its a friendly community... besides the account on the forum, the rest you can handle automatic via github, it seems...

Since I don’t have unraid, mainly I was concerned about creating and/or verifying the xml the instructions say to provide.

Its very easy. In the end it has to look like this, ?!
  {
    "name":  "linuxserver's Repository",
    "url":  "https://github.com/linuxserver/docker-templates",
    "forum":  "http://lime-technology.com/forum/index.php?topic=42092.0",
    "web":  "https://www.linuxserver.io/"
  },

--->

<?xml version="1.0" encoding="UTF-8"?>
<Container version="2">
  <TemplateURL>https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/airsonic.xml</TemplateURL>
  <Beta>False</Beta>
  <Category>MediaApp:Music MediaServer:Music Status:Stable</Category>
  <Date>2017/12/30</Date>
  <Changes>
  [center][img width='300px' src='https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_small.png'][/center]

  [center][font size=4] Change Log[/font][/center]
  </Changes>
  <Name>airsonic</Name>
  <Support>https://forums.unraid.net/topic/62456-support-linuxserverio-airsonic/</Support>
  <Description>Airsonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

[br][br][b][u][span style='color: #E80000;']Configuration[/span][/u][/b][br]
  [b]/music[/b] - Location of music.[br]
  [b]/media[/b] - Location of other media.[br]
  [b]/podcasts[/b] - Location of podcasts.[br]
  [b]/playlists[/b] - Location for playlists storage.[br]
  [b]CONTEXT_PATH[/b] for setting url-base in reverse proxy setups[br]
  [b]JAVA_OPTS[/b] for setting Java options, default is 256MB starting RAM and Max RAM of 512MB[br]
[br][b]Default user/pass is: admin/admin[/b]</Description>
  <Project>https://airsonic.github.io/</Project>
  <Overview>Airsonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.</Overview>
  <Repository>linuxserver/airsonic</Repository>
  <Registry>https://hub.docker.com/r/linuxserver/airsonic/</Registry>
  <Network>bridge</Network>
  <BindTime>true</BindTime>
  <Privileged>false</Privileged>
  <WebUI>http://[IP]:[PORT:4040]/airsonic</WebUI>
  <Icon>https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/airsonic-logo.png</Icon>
  <Networking>
    <Mode>bridge</Mode>
    <Publish>
      <Port>
        <HostPort>4040</HostPort>
        <ContainerPort>4040</ContainerPort>
        <Protocol>tcp</Protocol>
      </Port>
    </Publish>
  </Networking>
  <Data>
    <Volume>
      <HostDir></HostDir>
      <ContainerDir>/music</ContainerDir>
      <Mode>rw</Mode>
    </Volume>
    <Volume>
      <HostDir></HostDir>
      <ContainerDir>/playlists</ContainerDir>
      <Mode>rw</Mode>
    </Volume>
    <Volume>
      <HostDir></HostDir>
      <ContainerDir>/podcasts</ContainerDir>
      <Mode>rw</Mode>
    </Volume>
    <Volume>
      <HostDir></HostDir>
      <ContainerDir>/media</ContainerDir>
      <Mode>rw</Mode>
    </Volume>
    <Volume>
      <HostDir></HostDir>
      <ContainerDir>/config</ContainerDir>
      <Mode>rw</Mode>
    </Volume>
  </Data>
  <Environment>
    <Variable>
      <Value>99</Value>
      <Name>PUID</Name>
      <Mode/>
    </Variable>
    <Variable>
      <Value>100</Value>
      <Name>PGID</Name>
      <Mode/>
    </Variable>
    <Variable>
      <Value>airsonic</Value>
      <Name>CONTEXT_PATH</Name>
      <Mode/>
    </Variable>
    <Variable>
      <Value>-Xms256m -Xmx512m</Value>
      <Name>JAVA_OPTS</Name>
      <Mode/>
    </Variable>
  </Environment>
  <Config Name="User ID" Target="PUID" Default="99" Mode="" Description="Set to Desired User ID" Type="Variable" Display="always" Required="true" Mask="false">99</Config>
  <Config Name="Group ID" Target="PGID" Default="100" Mode="" Description="Set to Desired Group ID" Type="Variable" Display="always" Required="true" Mask="false">100</Config>
  <Config Name="Music" Target="/music" Default="" Mode="rw" Description="Container Path: /music" Type="Path" Display="always" Required="true" Mask="false"/>
  <Config Name="Playlists" Target="/playlists" Default="" Mode="rw" Description="Container Path: /playlists" Type="Path" Display="always" Required="true" Mask="false"/>
  <Config Name="Podcasts" Target="/podcasts" Default="" Mode="rw" Description="Container Path: /podcasts" Type="Path" Display="always" Required="true" Mask="false"/>
  <Config Name="Media" Target="/media" Default="" Mode="rw" Description="Container Path: /media" Type="Path" Display="always" Required="true" Mask="false"/>
  <Config Name="CONTEXT_PATH" Target="CONTEXT_PATH" Default="airsonic" Mode="" Description="Container Variable: CONTEXT_PATH" Type="Variable" Display="always" Required="false" Mask="false">airsonic</Config>
  <Config Name="JAVA_OPTS" Target="JAVA_OPTS" Default="-Xms256m -Xmx512m" Mode="" Description="Container Variable: JAVA_OPTS" Type="Variable" Display="always" Required="false" Mask="false">-Xms256m -Xmx512m</Config>
  <Config Name="Port" Target="4040" Default="4040" Mode="tcp" Description="Container Port: 4040" Type="Port" Display="always" Required="true" Mask="false">4040</Config>
  <Config Name="AppData Config Path" Target="/config" Default="/mnt/cache/appdata/airsonic" Mode="rw" Description="Container Path: /config" Type="Path" Display="advanced-hide" Required="true" Mask="false">/mnt/cache/appdata/airsonic</Config>
<DonateText>Donations</DonateText>
<DonateLink>https://www.linuxserver.io/donate</DonateLink>
<DonateImg>https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/donate.png</DonateImg>
<BaseImage>lsiobase/ubuntu</BaseImage>
 </Container>

I also found this https://github.com/selfhosters/unRAID-CA-templates

I'm happy this is getting somewhere. I'm here if you need any testing.
I'd go as far as to screen share on Discord and test the docker in front of you if that helps.

Yes, please keep us updated on this. We help where we can. :)

@eihns thanks, that repo looks like a more doable to me

Any news on this? I'd love to see this happen. I don't often update this docker and with this addition, I think I would much more because it'd be as simple as Unraid showing there's an update and I can effortlessly click an update button.
I'm definitely still willing to help test this anyway I can.

As far as i know there is no difference in updates. If something changes you have to manually edit your docker anyways.
Real benefit is only for new users.

Updates are different with compatibility.

You'll always know when your app is up to date (and keep it up to date)
It's easier to update. Rather than having to open the terminal, run docker stop <docker>, docker rm <docker> and then copy/paste whichever ideal settings to docker run, you literally just click "apply update" and it does all that for you.

Plus, yeah, installing would be easier without having to docker run.

I don’t understand why Unraid doesn’t do image update handling without all this extra, proprietary metadata. I can slightly understand variable descriptions (however it duplicates all the work put into the README), but everything else is available via the standard OCI image format and registry API.
Since I have no idea about the platform or file format, can I minimize my maintenance burden and just list one or two critical variables like EULA and TYPE?

Updates are different with compatibility.

You'll always know when your app is up to date (and keep it up to date)
It's easier to update. Rather than having to open the terminal, run docker stop <docker>, docker rm <docker> and then copy/paste whichever ideal settings to docker run, you literally just click "apply update" and it does all that for you.

Plus, yeah, installing would be easier without having to docker run.

Thats just wrong. You can normal update via CA auto update without a special unraid template. It makes no difference from update standpoint.
"I don’t understand why Unraid doesn’t do image update handling without all this extra, proprietary metadata. I can slightly understand variable descriptions (however it duplicates all the work put into the README), but everything else is available via the standard OCI image format and registry API.
Since I have no idea about the platform or file format, can I minimize my maintenance burden and just list one or two critical variables like EULA and TYPE?"
At the end its about the nice to use GUI for new users. They INSTANT see whats needed to run the docker and can fill in the neccessary stuff without knowing anything about linux or docker or anything...
I would really suggest you add all NEEDED like
-e EULA=TRUE -e ENABLE_AUTOPAUSE=TRUE -e VERSION=20w19a -e INIT_MEMORY=1G -e MAX_MEMORY=4G

Also, if you want, you could just install unraid in 5 min to a usb stick (theres a  free version) and just boot it on some random machine up, then oyu understand why we love it... xD

@eihns thanks, that's a great suggestion since it would solve my concerns about submitting something blind.

You can normal update (and even) via CA auto update without a special unraid template.

You saw this, right? This happens when you try to update normally.

As for CA, I don't have any plugins that mess with my docker updates (yes, I know CA Auto Update is available). So if it's not installed by default, I doubt many people have it, which is the main point of this.

You didnt "installed" this docker via community plugin.

You didnt "installed" this docker via community plugin.

How did I not? I installed it just like anybody else would install it, through the docker command. Even running your command and it still doesn't allow updates, so you're mistaken with thinking that it can be updated.

yeah thats "wrong".
The error messages even indicates it...

It runs the same command as above... even look at your copy/paste of your console messages, lol.
Running the command rather than installing via Apps just allows for a faster way to define variables.

?????
You want a solution or just make stress? just try it yourself and it works. wtf are we even talking about

I can help out with this, I'd like to see this on the CA store. Let me know what you need to do as far as submitting, testing, or maintaining something on the Unraid side.

@jahanson thank you so much for any and all help you can provide. I started working on a tool that will extract and itemize all of the environment variables that the image uses. If I can finish that tool and provide the variables list, then it would be fantastic if you ran with the Unraid specific bits.

Awesome, looking forward to getting this ball rolling.

Ok, the image is officially on the CA store for Unraid. These are the basic settings so far, but if any others are needed there is an "Extra parameters" field to put in the raw commandline "extras" like -e VERSION=1.7.9

In order to list it I had to list a folder on github with the XML in it. We can host it here, but it's currently at https://github.com/jahanson/unraid-docker-templates

Also, is there an Icon that I should post for this?

That's fantastic @jahanson! You're very welcome to continue maintaining the Unraid file there. A brief section/paragraph in the README here can link over to your repo to maintain the traceability.
As for the icon, I know I'm not too picky as long as the one chosen doesn't violate any license.

Nice, thanks, i found somethings i would consider changing (just a suggestion, highlighted is the important part i think):

itzg Minecraft Server

/mnt/user/Minecraft/minecraft1
should be
/mnt/user/appdata/minecraft-server

Im not sure where to add the text which stands under the NAME (like the description) i would add there a link to https://github.com/itzg/docker-minecraft-server/blob/master/README.md with the tip that there are all extra parameters

Thanks @eihns all good suggestions. I just sent a PM to request a support thread on the Unraid forums for any template support.

Hi, I suggest to make a Discord Support server for this Repo, i for example i need with my unRAID docker, and i prefer to speak on an LIVE chat rather an "email like" one :)
And would be a good idea if you want to make polls for features or things like that if you will want to consider adding them :)

@EndreEndi are you asking me or @jahanson ? This docker image has a Discord server and I can add a channel for Unraid specific discussion, if needed.

I see the confusion here, I just realized there was a Discord for your repo. It says chat, but I'm generally inclined to look for the Discord icon or the text "Join our Discord". I just joined it if you have any questions about the Unraid bits... as Veriwind

Good point. I think I will change the badge to "Join our Discord" or somehow make that more prominent.

Thank you Guys, i didn't know if there's a discord server for the repo.

@jahanson This is no longer on the CA store, what's required to get it back on there?

@jahanson This is no longer on the CA store, what's required to get it back on there?

It's right here

Appreciated, I was looking for itgz! DoH!


Setting env DM_Password sets auth on player area [docker]

When running latest and dev docker files setting an environment variable for DM_Password causes authentication on both /dm and the player directory (with password set to DM_Password variable). Leaving the variable unset allows access to all files as expected behavior.
docker run -e DM_PASSWORD=test -it -p 80:3000 --name mapForgotten -v $PWD/data:/usr/src/app/data -d apclary/dungeon-revealer:dev

This happens with the executables too.


Add benchmarks to measure impact of alpha saveLayers in DisplayLists

These benchmarks will establish a baseline to measure the impact of the upcoming engine PR: https://github.com/flutter/engine/pull/30957

The flutter-dashboard bot should be able to distinguish that new benchmarks don't need tests.

Expected results from upcoming engine changes...

And, because it is hard to read the small values with the long bars, a closeup of the small timings:


Not working on Brave by default

Since Brave is on the supported browser I decided to try on my Desktop PC encountering this error:
[18:05:58] error		: Casting is not supported in this browser
Brave Versión 1.17.73 Chromium: 87.0.4280.67 (Build oficial) (64 bits)
The fix to this issue is enabling Media Router on Brave Settings and restarting the browser, maybe you would want to include it on the Readme

I always thought Media Router is enabled by default, my bad. PR's are welcome!

I always thought Media Router is enabled by default, my bad. PR's are welcome!

@Albermonte added brave!


Hive Avro to Parquet table conversion

Hi.
I have following avro schema
{
     "namespace" : "com.example.test",
     "type" : "record",
     "name" : "TestRecord",
     "fields" : [{"name" : "objectLink", "type" : [
                           {"type": "record", "name" : "TestObj1", "fields" : [{"name":"obj1VisitorId","type":["null","string"]}] },
                           {"type": "record", "name" : "TestObj2", "fields" : [{"name":"obj2VisitorId","type":["null","string"]}]}
                       ]
                 }],
     "doc" : "event for test purposes"
}

Using this schema I can create avro objects, also I'm able to create table backed by avro in Hive. But then I want to create a table backed by parquet I'm doing
CREATE TABLE parquet_table
STORED AS parquet
AS SELECT * FROM avro_table
and i get
SemanticException java.lang.UnsupportedOperationException: Unknown field type: uniontype<structobj1visitorid:string,structobj2visitorid:string>
Is there a way to convert such structures, to store them in hive backed as parquet? This is a simple example, but I have big data structure described in avro, so I can't convert it manually, and also I have data which already stored in avro and need to be loaded in table, backed by parquet. Is there any way to this?
I'm using hive 0.13.
Reporter: Dmitriy / @dimaga
Note: This issue was originally created as PARQUET-155. Please see the migration documentation for further details.

Dmitriy / @dimaga:

What you could try is to write a simple map-only job that reads with Avro and writes with Parquet-avro. Then you wouldn't have to do any conversion

If I'll do this, then I need to define parquet backed table by myself, am I right? This is not very good approach for me, because my real schema is really big. Or there some other way to create hive table using existing parquet files? I searched for this, but only two approaches I've found "create as select" and define table when create it.

Ryan Blue / @rdblue:
Hive doesn't currently implement union types  in parquet, so we would have to plan and implement it to do this in Hive.
Parquet-avro does support mapping union types to Parquet by replacing the union with a group where each possible type in the union is a field. Then only one field in that group is defined at a time. What you could try is to write a simple map-only job that reads with Avro and writes with Parquet-avro. Then you wouldn't have to do any conversion. (Also, you should be able to do this without any code using the Kite CLI copy command)

Ryan Blue / @rdblue:

If I'll do this, then I need to define parquet backed table by myself, am I right?

Yes, you would until HIVE-8950 is merged and released.
In the mean time, if you already have an Avro table (with some minor restrictions), you can use Kite to get around the problem. Kite is a layer around Parquet and Avro that manages a collection of files as a dataset, similar to what Hive does. Kite can inspect an Avro Hive table and give you the schema, then you can use it to create a Parquet table with that schema. Finally, you can copy from one to the other:
kite-dataset schema avro_table --output hdfs:/user/me/schemas/table.avsc
kite-dataset create parquet_table --schema hdfs:/user/me/schemas/table.avsc --format parquet
kite-dataset copy avro_table parquet_table

You can find more information on Kite at kitesdk.org and find more help on the Kite mailing list.


Broken  link in docs

The link to setLanguages in 2. Set Languages seems broken. Getting a 404

Fixed. Thanks for the heads up.


Maui Blazor - Microsoft.JSInterop.JSException: this.cropperInstance.destroy is not a function

Hi,
We are using Cropper.Blazor in Hybrid Maui Blazor app.
The destroy method of Cropper is invoked even on pages where we do not use Cropper.Blazor. That in itself is fine but on those pages cropperInstance has not been initialized, hence Maui throws this error:

this.cropperInstance.destroy is not a function
TypeError: this.cropperInstance.destroy is not a function
at CropperDecorator.destroy (https://<IP_ADDRESS>/_content/Cropper.Blazor/cropperJsInterop.min.js:1:186)
at https://<IP_ADDRESS>/_framework/blazor.webview.js:1:3337
at new Promise ()
at beginInvokeJSFromDotNet (https://<IP_ADDRESS>/_framework/blazor.webview.js:1:3311)
at https://<IP_ADDRESS>/_framework/blazor.webview.js:1:42795
at EventTarget. (:7:62)
at EventTarget.i (https://<IP_ADDRESS>/dist/scripts/index.js:2:164733)
at EmbeddedBrowserWebView. (:1:38156)
at EmbeddedBrowserWebView.i (https://<IP_ADDRESS>/dist/scripts/index.js:2:164733)

I am new to Maui and do not know what is the proper solution for this. Should all methods in CropperDecorator check if the cropperInstance is initialized or should we add a dummy destroy method to the uninitialized cropperInstance or there is something wrong with MAUI and it should not have triggered the destroy method of Cropper at all?????
Please help.
Thank you!

I think, this example MAUI projects for .NET 7 version can help you: https://github.com/CropperBlazor/Cropper.Blazor/tree/dev/examples/Cropper.Blazor.MAUI.Net7
In addition, if you can still investigation all functionality cropper, just check that files:

https://github.com/CropperBlazor/Cropper.Blazor/blob/dev/src/Cropper.Blazor/Client/Pages/CropperDemo.razor.cs

I think, this example MAUI projects for .NET 7 version can help you: https://github.com/CropperBlazor/Cropper.Blazor/tree/dev/examples/Cropper.Blazor.MAUI.Net7
In addition, if you can still investigation all functionality cropper from demo site, just check these files:

https://github.com/CropperBlazor/Cropper.Blazor/blob/dev/src/Cropper.Blazor/Client/Pages/CropperDemo.razor.cs
https://github.com/CropperBlazor/Cropper.Blazor/blob/dev/src/Cropper.Blazor/Client/Pages/CropperDemo.razor

@MaxymGorn Thank you very much for replying! I tried out the examples you mentioned. It didn't help. The error was still thrown. After digging around the source code, I found that using ICropperJsInterop as a service in CropperComponent.razor.cs was causing the problem. That service was outliving all other components of the app. Don't ask me why, I have no idea.
If I remove ICropperJsInterop as a service in CropperComponent.razor.cs and instead use it as a normal instance, everything works just fine.
So, the changes in CropperComponent.razor.cs
Instead of [Inject] ICropperJsInterop CropperJsIntertop { get; set; } = null!;
We have:
    [Inject] private IJSRuntime JsRuntime { get; set; } = null!;

    private ICropperJsInterop? CropperJsIntertop { get; set; } = null;

    protected override Task OnInitializedAsync()
    {
        if (CropperJsIntertop == null)
        {
            CropperJsIntertop = new CropperJsInterop(JsRuntime);
        }

        return base.OnInitializedAsync();
    }

I also removed builder.Services.AddCropper(); from MauiProgram.cs
I guess it will be better to implement IDisposable in CropperComponent.razor.cs and destroy CropperJsIntertop there.
What do you think?

Tought interesting, I'm guessing it might be a lifetime issue with the ICropperJsInterop service. Now we use that service as transient scope (I can add scope or singleton scope for that service)! Maybe better to get me example your code for better understanding that problem. I do not rule out that this may be a problem in MAUI itself!
Sorry, I didn't catch  means "That service was outliving all other components of the app."

You can verify if it is problem with lifetime with ICropperJsInterop service and used customs initialization builder.Services.AddCropper(); like that:
builder.Services.TryAddScoped<ICropperJsInterop, CropperJsInterop>();
or
builder.Services.TryAddSingleton<ICropperJsInterop, CropperJsInterop>();
or
builder.Services.TryAddTransient<ICropperJsInterop, CropperJsInterop>(); (used now)

Testing it is easy. Just use the Cropper.Blazor in .Net 7 Maui hybrid Blazor app. The Cropper component should not be on home page. Make 3 pages in total.  (I should be able to give you a sample app during weekend, if you are not in a hurry).
Home page should open the 2nd page and the 2nd page should open the 3rd page which contains the component.
Now start the app and navigate till the 2nd page. Don't go to the 3rd page containing the Cropper component.
Press the back button. Now, you should see that error in the browser console. The "init" method of "cropperJsInterop.js" is never invoked. So "cropperInstance" in "CropperDecorator" is empty. Hence it throws error when Destroy method is invoked on it here: https://github.com/CropperBlazor/Cropper.Blazor/blob/db6efa79b7f18f0a7d511e4c59f14850b3d4aa8b/src/Cropper.Blazor/Cropper.Blazor/wwwroot/cropperJsInterop.js#L16
Now, this one: "That service was outliving all other components of the app." - sorry for the poor choice of words. This issue explains it better: DisposeAsync() on IJSObjectReference causes hanging... You were right, partially, it is also an issue of how Maui hybrid blazor is disposing components.
I have a question though, why make ICropperJsInterop as service at all? It isn't needed. Its lifetime should be tightly tied to the CropperComponent. It should be destroyed when that component is destroyed. Making it Singleton or Scoped will not do that.
Honestly, I am very confused at the moment. I have debugged so much that I have now forgotten what I started debugging it for...

Hi @dimplevador. Ok, I will wait example app with this issues.
Regarding your question about ICropperJsInterop as service at all:
Now the ICropperJsInterop service for the cropper component works like this, for every new cropper there is a new ICropperJsInterop service, because it is configured with the Transient life scope, as ! I also made it as a service, as it will be reused elsewhere, including custom croppers, etc.

@MaxymGorn Ok! I'll send you the example app.
Just my thoughts as an outsider (I could be totally wrong since I don't understand all the use cases for the lib):
I still feel that ICropperJsInterop is not needed as a service. Making it transient is equal to declaring it in the component itself. When using it in custom croppers, won't it be better to make it inheritable instead? Make custom croppers extend the main Cropper classes or components.

@MaxymGorn Sorry for the delay. Give me one more day. I got caught up in work. Few things moved up the priority list out of the blue and I had to take care of it.

@MaxymGorn Ok so, Maui hates me, it seems. I am not able to reproduce the original JsInterop error that I contacted you about in a fresh app with nothing but just Cropper.Blazor. Spent most part of my afternoon with it but... no dice. I suspect that I have forgotten the steps to reproduce the error or where to look for the error. I tried it with Cropper.Blazor 1.1.2 and also 1.1.3
But, I was able to reproduce the app freezing issue on splash screen i.e. "That service was outliving all other components of the app", which is the root cause for that JsInterop error. The one that I linked you to the other issue DisposeAsync() on IJSObjectReference causes hanging...
The test repo:
https://github.com/dimplevador/CropperTest.git
What you need:

Android device running on anything below Android 12. I tested on Android 8.1

Steps to reproduce:

Start the test app.
On home page click on "Cropper-1" -> "Cropper-2" -> "Cropper demo page" -> You should be able to see the cropper component here.
Now press the phone's back button until you exit the app.
Go to the android app list and start the demo app. Do not start it from the IDE in debug mode. You have to start it from the app list in this step.
You will notice that the app freezes on splash screen infinitely. You will have to kill the app by removing it from phone's history and start it again for it to work.
To test that the CropperComponent is the one causing the issue, On home page click on "Cropper-1" -> "Cropper-2". Stop here.  Do not click on "Cropper demo page". Now press phone's back button until you exit the app. Start the app from the app list. The app will start just fine.

This issue is fixed if we make changes to the CropperComponent as I had mentioned here i.e. remove it as service.
I have limited understanding of MAUI blazor. There might be some other solution to this, but I don't know about it.
Thank you for your patience in dealing with me :)

I tried the latest version 1.2 today. I was drowned in work, had to delay working with Cropper blazor.
All the problems are resolved now! Thank you very much. Works great with .Net7


⚠ ETF has degraded performance

In fdb2141, ETF (https://markets.hankyung.com/equity-product/etf) experienced degraded performance:

HTTP code: 200
Response time: 5024 ms

Resolved: 거래대금 performance has improved in 040cbdc.


Cuda 11 and RTX3000

Is CUDA 11.2 and RTX3000 series supported?

No, CUDA 11.2 is not supported. It neds to build the native yolo library for that.
However it shuold work with RTX3000 with older CUDA.

Probably yes. But i'm not sure.
Anyway if you can build the yolo native library, let me know and i'll check the  .Net part

HI, Did it work?

Just before texting here i opened new issue on original Alturos.YoloWrapper: Link to issue. Might be relevant to the case here.

HI, Did it work?

I built yolo native library with CUDA 11.1 and OPENCV support.

HI, Did it work?

I built yolo native library with CUDA 11.1 and OPENCV support.

Could you give me any hint how to do that?

Is it just building darknet framework, therefore building darknet.dll and coping it to projects folder as yolo_cpp_dll_gpu.dll?
Or maybe it is diferent dll, not the darknet.dll and i have to copy different one?
Or maybe somethink else?

I did follow This and This tutorials. And when it comes to my first question, I already tried that and yolo_cpp_dll_gpu.dll is being found but can not be loaded. Maybe you have some online tutorial that could guide me.
Thx for helping

Ok
I found out that even when I put right yolo_cpp_dll_gpu.dll version to projects folder, when building, that dll is being changed to old one. But when I start the program and hit brake, then put right dll to the place, resume program, all dlls are found correctly.
I can see that in DefaultYoloSystemValidator.cs. I changed yolo_cpp_dll_gpu.dll to yolo_cpp_dll_gpu8.dll not to be overwritten and it works.
    const string yoloDllFileName = "yolo_cpp_dll_gpu8.dll";
            int cudnnVersion = 8;
            int cudartVersion = 112; // 10.2

            if (File.Exists(yoloDllFileName))
            {
                report.YoloGpuDll = true;
                var data = File.ReadAllBytes(yoloDllFileName);
                if (FindVersion(data, CudnnPattern, out int version))
                {
                    cudnnVersion = version;
                }

                if (FindVersion(data, CudartPattern, out version))
                {
                    cudartVersion = version;
                }
            }

Despite that, I get another error while loading models weights:
 Used GPU 0
 0 : compute_capability = 860, cudnn_half = 0, GPU: NVIDIA GeForce RTX 3080 Ti
net.optimized_memory = 0
mini_batch =<PHONE_NUMBER>, batch = -455281152, time_steps =<PHONE_NUMBER>, train = 0
   layer   filters  size/strd(dil)      input                output
   0 Create CUDA-stream - 0

 cuDNN status Error in: file: C:\Users\User\Documents\Repositories\darknet\src\convolutional_layer.c : cudnn_convolutional_setup() : line: 253 : build time: Jan 25 2022 - 15:31:19

 cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED

Could it be some cudnn version mismatch?

Ok I found out that even when I put right yolo_cpp_dll_gpu.dll version to projects folder, when building, that dll is being changed to old one. But when I start the program and hit brake, then put right dll to the place, resume program, all dlls are found correctly. I can see that in DefaultYoloSystemValidator.cs. I changed yolo_cpp_dll_gpu.dll to yolo_cpp_dll_gpu8.dll not to be overwritten and it works.
    const string yoloDllFileName = "yolo_cpp_dll_gpu8.dll";
            int cudnnVersion = 8;
            int cudartVersion = 112; // 10.2

            if (File.Exists(yoloDllFileName))
            {
                report.YoloGpuDll = true;
                var data = File.ReadAllBytes(yoloDllFileName);
                if (FindVersion(data, CudnnPattern, out int version))
                {
                    cudnnVersion = version;
                }

                if (FindVersion(data, CudartPattern, out version))
                {
                    cudartVersion = version;
                }
            }

Despite that, I get another error while loading models weights:
 Used GPU 0
 0 : compute_capability = 860, cudnn_half = 0, GPU: NVIDIA GeForce RTX 3080 Ti
net.optimized_memory = 0
mini_batch =<PHONE_NUMBER>, batch = -455281152, time_steps =<PHONE_NUMBER>, train = 0
   layer   filters  size/strd(dil)      input                output
   0 Create CUDA-stream - 0

 cuDNN status Error in: file: C:\Users\User\Documents\Repositories\darknet\src\convolutional_layer.c : cudnn_convolutional_setup() : line: 253 : build time: Jan 25 2022 - 15:31:19

 cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED

Could it be some cudnn version mismatch? What combination of Cuda and Cudnn do you have?

You need to change Initialize method inside YoloWrapper.cs file (https://github.com/zgabi/Yolo.Net/blob/master/src/Alturos.Yolo/YoloWrapper.cs).
Batch size if added to darknet library.
 private static extern int InitializeYolo(string configurationFilename, string weightsFilename, int gpu, int batch_size);

You need to change Initialize method inside YoloWrapper.cs file (https://github.com/zgabi/Yolo.Net/blob/master/src/Alturos.Yolo/YoloWrapper.cs). Batch size is added to darknet library.
 [DllImport(YoloLibraryName, EntryPoint = "init")]
 private static extern int InitializeYolo(string configurationFilename, string weightsFilename, int gpu, int batch_size);

Ok
So I changed it. It works like a charm when it comes to loading yolo model. I'm given:
 try to allocate additional workspace_size = 378.61 MB
 CUDA allocate done!

But then one problem remains, when I try to detect any image exception occurs:
System.AccessViolationException: „Attempted to read or write protected memory.
This is often an indication that other memory is corrupt.”

It is thrown in:
public IEnumerable<YoloItem> Detect(string filepath)
  {
      if (!File.Exists(filepath))
      {
          throw new FileNotFoundException("Cannot find the file", filepath);
      }

      var container = new BboxContainer();
      var count = 0;
      switch (DetectionSystem)
      {
          case DetectionSystem.CPU:
              count = DetectImageCpu(filepath, ref container);
              break;
          case DetectionSystem.GPU:
              count = DetectImageGpu(filepath, ref container);
              break;
      }

      if (count == -1)
      {
          throw new NotImplementedException("C++ dll compiled incorrectly");
      }

      return Convert(container);
  }

on line:
count = DetectImageGpu(filepath, ref container);

So i'm tring to fix that.

When you find a solution, could you please share it? I'd appriciate a PR, too in my repo.
I don't have a compatible GPU, so I can't test it, but probably it would be useful for some users.
I'm adding the batch size parameter somehow...

Found this thread. Anyone got it to work on RTX30- ?

Yes, latest version does work on RTX30XX series. I have it running on 3080 TI

@avresial Would it be possible for you to post the reciepe...?
"The for-dummies-version" with what yolo to use and versions of CUDA and CUDNN?
It would be very appreciated!

I'm using cuda 11.2 with cudnn 8.1

@avresial What yolodll are you using? Could you share that?
I was trying CUDA 11.6 and cudnn 8.4 with a DLL downloaded from here but dont get it to work
Will revert to the versions you are using, but can you share you _GPU dll?
Thanks

Sure, there are dlls:
Alturos Yolo dll
GPU_DLL

Follow this instruction:

Thanks guys. Stilll dont get it to work...

Installed the latest drivers CHECK!
Installed CUDA 11.2 driver package CHECK
Downloaded cudnn-11.2-windows-x64-v<IP_ADDRESS>

Cant find the DLL. I can see it in the step 3 but it is really tiny (compared to the cudnn64_7.dll)

Where can I get the OPENcv_World452.dll file...
Thank you!
Christian

Hi..
So got the opencv_world452.dll. My bad,
I have all the DLLs in the output directory, including the yolo_cpp_dll_gpu.dll (the one provided by @avresial )
I have the latest drivers and a 3050 card.
I installed 11.2 CUDA toolkit
I Copied the cudnn64_8.dll to the output directory from cuDNN library (it is 260kb compared to 450MB for the cudnn64_7.dll)
I get the error: System.DllNotFoundException: 'Unable to load DLL 'yolo_cpp_dll_gpu': The specified module could not be found. (Exception from HRESULT: 0x8007007E)' when trying to instantiate the wrapper.
I guess it is dependency issue. Is it important to have the exect right version of Cuda (11.0)?
Any idea what I do wrong?
Best
Christian

Yes you need  Cuda 11.0

I don't know how to run this package with a newer CUDA, but I'd recommend you to "upgrade" from this package to https://github.com/ivilson/Yolov7net
We are also using that package with RTX 3060 Laptop GPUs and with Quadro P600 GPU. I think it should also work with RTX40xx.
That package is using the microsoftonnx runtime, so needs a new model file format. So the upgrade is not trivial, but I suggest it.


Send Slack invites from Hackbot

Right now, if you fill out https://hackclub.com/slack_invite to get an invite, you get this email:

This sucks and we can make it much nicer by changing the inviter to "Hackbot" and the email to<EMAIL_ADDRESS>instead of "Hack Club Admin" and<EMAIL_ADDRESS>respectively.
I've created a Google Group that forwards emails to<EMAIL_ADDRESS>to<EMAIL_ADDRESS>so everyone on the team has access.

Sorry for the label -- that was a misclick.

In our new Slack sign up flow the user doesn't see the inviter's name:


storage: implement a memory storage

Refactor storage interfaces as described in https://github.com/engula/engula/pull/80.
This PR also provides a memory storage implementation.
More tests may be added later.
Ref: https://github.com/engula/engula/issues/68

do we need to present local/remote/external category concepts in code structure?
https://github.com/engula/engula/pull/80/files#diff-1e47e7218df597c79a882aa1c109e42c332234bd8c92e1c493a788f8f64bb328R38-R40
if so do we need to move mem to local/mem and impl s3 as external/s3?

do we need to present local/remote/external category concepts in code structure?
https://github.com/engula/engula/pull/80/files#diff-1e47e7218df597c79a882aa1c109e42c332234bd8c92e1c493a788f8f64bb328R38-R40
if so do we need to move mem to local/mem and impl s3 as external/s3?

No, it's not necessary. We can provide some built-in implementations in storage/. Users can also provide their implementations outside.
As for cloud platforms, maybe we can consider adding a platform crate to put vendor-related things together. For example:
src/
  platform/
    aws/
    azure/

platform

ok, I'd like to implement s3 in src/platform/aws/storage after this merged cc #68

@zojw I refactored the file layout a little bit. Specifically, I move storage traits to an api/ directory to make things more clear. Would you mind reviewing it again?

@zojw Thanks for your review. You may be also interested in https://github.com/engula/engula/pull/82, the implementation is very similar to this.
Let's merge this now.


Added public field in revisions

This change is

Coverage increased (+0.003%) to 95.661% when pulling 39feed3a4bd3fab4829b2368ffaacc0fbfad4462 on yshalenyk:public_revisions into c23b425fea9910fe052fac75a9f93265d4f7d8a3 on openprocurement:production.

Coverage decreased (-0.04%) to 95.617% when pulling 1d86b8bbcd98125d4c234967df1d4349119133ca on yshalenyk:public_revisions into c23b425fea9910fe052fac75a9f93265d4f7d8a3 on openprocurement:production.

Coverage decreased (-0.04%) to 95.617% when pulling 1d86b8bbcd98125d4c234967df1d4349119133ca on yshalenyk:public_revisions into c23b425fea9910fe052fac75a9f93265d4f7d8a3 on openprocurement:production.


custom secret file for cloud.conf

What this PR does / why we need it:
This PR is fixing the absence of LoadBalancerClass parsing from the helm chart
This is a helm chart change only
Which issue this PR fixes(if applicable):
fixes #
Isue 1856
Special notes for reviewers:
Just pass a values.yaml containing a .Values.cloudConfigContents field
For example:
cloudConfigContents: |
[Global]
auth-url=""
username=""
user-domain-id=""
password=""
tenant-id=""
project-domain-name=""
region=""
ca-file=""
[Networking]
internal-network-name=""
[LoadBalancer]
enable-ingress-hostname="true"
use-octavia="true"
create-monitor="true"
floating-network-id=""
subnet-id=""
[LoadBalancerClass "testclass"]
floating-network-id = ""
subnet-id = ""
[BlockStorage]
ignore-volume-az=""
Release note:
This is a helm chart change only

@jichenjc apologizing for the inconvenience.
Closed the other MRs and opened this one with one commit and correct easycla

/retest

@jichenjc @chrigl
I think there is an issue with pull-cloud-provider-openstack-check job..
Something with the go version or anything .. because it fails for files that are ok.
For example:
I0728 12:29:04.416] pkg/csi/manila/validator/validator.go:31: File is not gofmt-ed with -s (gofmt)
or
I0728 12:29:04.422] pkg/util/blockdevice/blockdevice_linux.go:22:2: SA1019: package io/ioutil is deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code.
Can you plz check and advice so I can retest? Thanks

I created https://github.com/kubernetes/cloud-provider-openstack/pull/1955 and it failed
so something need to be improved, will see how to do it

/test pull-cloud-provider-openstack-check

/test pull-cloud-provider-openstack-check

/test pull-cloud-provider-openstack-check

/lgtm
/approve


Kramdown style links

In Kramdown you can define links at the bottom of the document using the syntax shown here:
A [link][kramdown hp] to the homepage.

[kramdown hp]: http://kramdown.gettalong.org "hp"

It doesn’t seem like this is possible in API blueprint, but I thought it could be a nice addition.

Hi @anhari,
That's a great idea. We do use these a lot ourselves in the specification and other documentation. Unfortunately this isn't completely straight forward to implement given how API Blueprint currently works. Each description block is independent and thus the CommonMark parser is only rendering the "title" or "description" blocks without further knowledge about the rest of the documentation.


Skip review for pull requests by BrewTestBot.

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[ ] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?
[ ] Have you successfully run brew man locally and committed any changes?

Review period will end on 2020-11-24 at 04:08:43 UTC.

Review period cancelled due to critical label.


make your own video on Mac OS

I'm able to install and run the code and get the output for an image. I tried following the steps in the section "Make your own video! (Ubuntu/Linux)". I'm running the code on a Mac with no GPU support. I have OpenCV already installed (i'm in a conda environment). I changed the line OPENCV=0 to OPENCV=1 in Makefile. I get the following errors:
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/gemm.c -o obj/gemm.o
/bin/sh: pkg-config: command not found
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/utils.c -o obj/utils.o
/bin/sh: pkg-config: command not found
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/cuda.c -o obj/cuda.o
/bin/sh: pkg-config: command not found
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/convolutional_layer.c -o obj/convolutional_layer.o
/bin/sh: pkg-config: command not found
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/list.c -o obj/list.o
/bin/sh: pkg-config: command not found
gcc  -DOPENCV `pkg-config --cflags opencv`  -Wall -Wfatal-errors  -Ofast -DOPENCV -c ./src/image.c -o obj/image.o
/bin/sh: pkg-config: command not found
./src/image.c:14:10: fatal error: 'opencv2/highgui/highgui_c.h' file not found
#include "opencv2/highgui/highgui_c.h"

Could you please guide me to the correct steps to compile DarkNet with OpenCV support, so I can make my own video on a Mac.
Thanks,

@sophia-wright-blue seems to be related to: https://github.com/pjreddie/darknet/issues/265

Try this: https://github.com/pjreddie/darknet/issues/485#issuecomment-381025528

thank you @philipperemy , that helped.

@sophia-wright-blue happy it did


Bump version to 0.3.0

Signed-off-by: Nana-EC<EMAIL_ADDRESS>Description:
Bump version to 0.3.0
Related issue(s):
Fixes #
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

Codecov Report

Merging #335 (9fb83f7) into release/0.3 (75a794c) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           release/0.3     #335   +/-   ##
============================================
  Coverage        59.18%   59.18%
============================================
  Files                9        9
  Lines              838      838
  Branches           135      135
============================================
  Hits               496      496
  Misses             312      312
  Partials            30       30

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 75a794c...9fb83f7. Read the comment docs.


Status code 429  - Qouta limits exceeded

I have started to see a lot of status code 429: "Quota limits exceeded" recently. I have asked Casambis support about it.

Maybe there has been a change on Casambi side in preparation for #65 and the integration is making too many calls for running without a paid api key?

It can be all of the reasons, but I think it might be that you are only allowed to have one active websocket on the standard plan. Since I only see it when I try to setup a websocket.
I hope Casambi can clarify what it is.

I don't think its the number of web requests, I am just speculating so I might be wrong, but I implemented a lookup for fixture id and aiocasambi will also only lookup one fixture_id ones and that didn't help. I think its a limit on the number of websockets.
New code is in main/master, I probably not do another release until this is resolved.

It's not an user limit, from the support:

"The "Too many active websocket connections" is not a customer-specific limit in question, and we are working on getting this limitation high enough so that it won't be an issue in the near future."

After out 16th of December server downtime, which has been communicated to our direct customers - the limits will be the following:

"Casambi server is going down for a planned maintenance break on Friday, 16th at 13:00 EET (UTC+2, Finland). The estimated end time for the break is Friday, December 16th at 18:00 EET (UTC+2, Finland). The estimated duration of the break is 5 hours.
Notice of a possible impact to Casambi API users after the maintenance break:
New runtime limitations will be introduced for the use of Casambi WebSocket Service. These limitations are intended to prevent excessive usage of the service beyond the following recommendation: "Recommended way to use OPEN message is to create one wire per one network." The implemented limitations are:

Maximum number of open wires per network per WebSocket: 1
Maximum total number of wires per network across all WebSocket connections: 20"


juno-theme: init at 0.0.1

Motivation for this change
Add Juno theme to Nixpkgs.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 114437 at 99cfed05 run on aarch64-linux 1

1 package built:

juno-theme

2 suggestions:

warning: missing-phase-hooks
installPhase should probably contain runHook preInstall and runHook postInstall.
Near pkgs/data/themes/juno/default.nix:30:3:
   |
30 |   installPhase = ''
   |   ^

warning: unclear-gpl
gpl3 is a deprecated license, check if project uses gpl3Plus or gpl3Only and change meta.license accordingly.
Near pkgs/data/themes/juno/default.nix:39:5:
   |
39 |     license = licenses.gpl3;
   |     ^

@SuperSandro2000 anything else to update here?


Make Actor a fun interface instead of class

https://github.com/vivid-money/elmslie/pull/205#discussion_r1183249239


REQUEST: Time on site tracking

I really need to track the amount of time that is spent on each shortened URL. Is there currently functionality for that or is this something that would need to be added. If it needs to be added please advise me if this project is possible and we can discuss it. I know real time tracking is possible for chat software's so it must be possible for this. I know my situation might be a little unique that i have shortened URL's for individual clients but it is the case and i need to figure it out. Thanks this actually is an urgent situation for me thanks.

Maybe modify the sample toolbar plugin?

Indeed the only way to do this would be to display all your shortened URLs into an iframe (yuck) like the aforementioned plugin, and in that iframe add code to track time spent (probably a javascript function that would poll a special URL from your YOURLS install every XX seconds to increment a time counter)
See wiki page https://github.com/YOURLS/YOURLS/wiki/Possible-With-A-Plugin


Keybase Helper processes on macOS consumes all available memory

Keybase GUI Version: 5.0.0-20191114182642+f73f97dac6
A couple of times recently I've logged in to my Mac to find a disk space warning and two Keybase Helper processes sitting consuming exactly 48.0GB of RAM each, which eats all of my physical RAM (32GB) and fills up the remainder of my SSD with virtual memory swap files in /private/var/vm.
If it's not a known issue, let me know if and how I can provide more information about what's happening the next time it does.

Same here, but on Win. Seems like there's a memory leak somewhere.

Had this same issue. Several  Keybase helper processes consuming many many GB of RAM.

Same issue, two processes of key base helper (renderer) consuming more than 200% CPU each.

Same issue, two processes of key base helper (renderer) consuming more than 200% CPU each.

Already quit and force quit key base and the processes don't shut down.


Remove TAN hotline info from footer

This commit removes the number of the TAN hotline from the footer and adapts the corresponding test.
TEST PR

Everything works. Great!


feat(subm): loadgen key generation

This is deployed (yarn deploy) to https://submit.agoric.app/ but it's not working yet.
It seemed to work locally (yarn start).
TODO:

[ ] fix Error: IAM Service Account Credentials API has not been used...
[ ] fix UnhandledPromiseRejectionWarning from using async request handlers without catching rejections

It's mixed in with some WIP / obsolete gentx submission code, including refactoring.

Error: IAM Service Account Credentials API has not been used...

I'm guessing some things needs to be configured in GCP console?

I'm guessing some things needs to be configured in GCP console?

Yes, that seems likely

GCP gods satisfied; it works!
I was able to follow my nose using pointers from these two log messages:

2021-08-18T06:29:59.217721Z Error: IAM Service Account Credentials API has not been used in project<PHONE_NUMBER>17 before or it is disabled. Enable it by visiting https://console.developers.google. ...

2021-08-18T20:21:17.638502Z Error: The caller does not have permission; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature.

and lo...


Upgrade react-collapsed

Replaces #5511
react-collapsed v4 includes React 18 support (ie, uses useId), improves types, and fixes some edge case issues with animations. Doesn't involve the vanilla JS core refactor as discussed in the original PR (I haven't given up on that, but I didn't want to leave the original package unmaintained while I'm working on it).
Tested by running locally, I don't see any layout jumps as observed in the original PR.

Thanks for the update! Can you share the instructions to test locally?

Thanks for the update! Can you share the instructions to test locally?

@lunaleaps Sure! The collapse is used for the sidebar. You can test it be running the app and clicking through the different sections.

This looks good to me! However in the process of testing, I noticed that there's a scrollbar UI issue but I was able to also reproduce on main. I'll file an issue.

Filed the issue here: https://github.com/reactjs/react.dev/issues/6348


Fix sending cell info for iperf3

Issue link:
https://github.com/Cloud-City-RS/OMNTelcoMetrics/issues/39
Turns out, "cell info" was about the "cell_info" API parameter, and not the other stuff I've put in in #41
Either way, this PR does some minor cleanup and consolidation, as well as moving the getCellInfo() from the LoggingServiceExtensions into the CellUtil where it kinda belongs, apart from extending the Iperf3NetworkDataModel with teh new "cell_info" it was supposed to have.
The API returns correct responses, and the new request looks like this (minus the EARFCN due to being SIMless):
{
    "sensor_events": [
        {
            "accuracy": 12.166000366210938,
            "category": "Iperf3",
            "cell_info": {
                "cellId": 440,
                "eNodeBId": 6,
                "pci": 280
            },
            "speed": 0,
            "lat": 44.7483472,
            "lon": 20.4258946,
            "values": {
                "download_last": 8.388239016230942,
                "download_max": 8.388239016230942,
                "download_mean": 6.908275375018002,
                "download_median": 7.341265519762768,
                "download_min": 4.1954620696609375,
                "upload_last": 49.20704945121863,
                "upload_max": 49.20704945121863,
                "upload_mean": 37.69221902799094,
                "upload_median": 38.79339502049847,
                "upload_min": 23.06431407341595,
                "cell_type": 4,
                "rsrp": -107,
                "rsrq": -19,
                "rssnr": -2
            }
        }
    ]
}

Summary by CodeRabbit
Release Notes

New Features

Introduced a new CellInfoModel for enhanced cell data representation.
Updated data handling to streamline cell information retrieval.

Bug Fixes

Improved error handling and logging for cell data retrieval.

Documentation

Clarified method documentation for better understanding of changes related to cell information handling.

Refactor

Simplified the LoggingServiceExtensions class by removing unnecessary methods and consolidating functionality.
Modified method signatures to accommodate new data structures.

@coderabbit full review


[Bug] AutthenticationToken must implements configure(Map<String, String> authParams) | Spring integration broken

Search before asking

[X] I searched in the issues and found nothing similar.

Version
Pulsar Java client 3.1.1
Minimal reproduce step
Follow Spring doc
spring:
  pulsar:
    client:
      authentication:
        plugin-class-name: org.apache.pulsar.client.impl.auth.AuthenticationToken
        param:
          token: some-token-goes-here

What did you expect to see?
Configuration is correctly apply by method
public class AuthenticationUtil {

   public static final Authentication create(String authPluginClassName, Map<String, String> authParams)
            throws UnsupportedAuthenticationException {
        try {
            if (isNotBlank(authPluginClassName)) {
                Class<?> authClass = Class.forName(authPluginClassName);
                Authentication auth = (Authentication) authClass.getDeclaredConstructor().newInstance();
                auth.configure(authParams);
                return auth;
            } else {
                return new AuthenticationDisabled();
            }
        } catch (Throwable t) {
            throw new UnsupportedAuthenticationException(t);
        }
    }
}

What did you see instead?
The config is not applicable
 WARN- 23-12-20 19:59:39.966 1351900-[r-client-io-1-5] o.a.p.c.i.ClientCnx                       : [localhost/<IP_ADDRESS>:6650] Got exception java.lang.RuntimeException: failed to get client token
	at org.apache.pulsar.client.impl.auth.AuthenticationDataToken.getToken(AuthenticationDataToken.java:64)
	at org.apache.pulsar.client.impl.auth.AuthenticationDataToken.<init>(AuthenticationDataToken.java:36)

Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

Hi @ng-galien, closing this in favor of https://github.com/spring-projects/spring-pulsar/issues/529


style files still bundled

First of all: Thanks for this pretty elegant way of having CSS in JS!
I used csjs-extractify and the css files generated are correct. But the css is still inside the browserify bundle. Therefore the JS bundle will still be the same size (plus the generated CSS) and there will also be a runtime overhead.
This following behaviour is what i would have expected.
// foo.csjs.js
const csjs = require('csjs')
module.exports = csjs `
  .foo { color: red; }
  .bar { color: blue; }
`

// foo.csjs.js inside the JS bundle
module.exports = {
  foo: '.foo_12k4'
  bar: '.bar_ij5t'
`

Yeah, this is a known issue and was one of the things brought up in https://github.com/rtsao/csjs-extractify/issues/3 but it's somewhat difficult to do statically at build-time. That said, what you are describing is definitely possible to do but I haven't had a chance to implement it yet 👍

I agree that it's not possible with static analysis in every possible way the code might look like. Once this is implemented, there should be a note on that in the readme.


Add support for wildcard domains introduced in iOS 9.3

Starting with version 9.3, iOS now supports wildcard domains in universal link declarations (see current version of official documentation). This works out of the box with this plugin, i.e. the proper entitlements are created and the os interaction works as expected. The only problem is that no JS event is triggered, since the plugin code cannot identify the proper event name.
The attached changes update the findHostByURL method to match host names using wildcards.
Additionally the changes introduced for #44 are updated to also use the predicate match - this was done to avoid creating a second local var, while predicate matches already support case insensitive matching.
Please note, that Android also supports wildcard subdomains in intent-filter declarations. To make this work UniversalLinksPlugin.findHostByUrl would need to be updated accordingly.

Great, thanks for the PR!

I have just added the necessary changes for Android. Unfortunately Android/Java doesn't seem to offer a simple glob style matching API, so I had to check the host declaration explicitly for *..

Thanks! Can you also provide examples for android/ios with the wildcard domains in order to update plugin's documentation?

Sure thing:
    <universal-links>
      <host name="*.users.example.com" scheme="https" event="wildcardusers" />
      <host name="*.example.com" scheme="https" event="wildcardmatch" />
    </universal-links>

Please note, that iOS will look for the apple-app-site-association on https://users.example.com/apple-app-site-association and https://example.com/apple-app-site-association respectively.
Android/Google will try to access the app links file at https://*.users.example.com/.well-known/assetlinks.json and https://*.example.com/.well-known/assetlinks.json respectively. Not sure, how this is working in the background, but I guess, one would need to have a wildcard DNS entry and proper web server configuration which is able to handle asterisks in host headers. But I can confirm, that we actually got these requests to our servers after adding above rules.

Great, thanks!

@schmidt just bumped into this post after having read these docs.
It looks like Apple looks in the root and in .well-known

Upload the apple-app-site-association file to your HTTPS web server. You can place the file at the root of your server or in the .well-known subdirectory.

ETA on this getting merged?

@FreakTheMighty Your're right. Apple will look for the files at /apple-app-site-association and /.well-known/apple-app-site-association. But since they are trying /apple-app-site-association first (and only using the other if the first one returns an error), I did not mention it explicitly.
My main intent was to highlight the host names, that are used, and the differences between the ones, that Android and iOS test.

Merged. Thanks to @schmidt !


Dispose primarily for releasing managed, not unmanaged, resources?

The first sentence in the documentation is this: "Implementing the Dispose method is primarily for releasing unmanaged resources used by your code."
Later, in the The Dispose(bool) method overload section, the documentation states this:

The body of the method consists of two blocks of code:

A block that frees unmanaged resources.
A conditional block that frees managed resources.  The managed resources that it frees can include: Managed objects that implement IDisposable.

It seems to me that directly using unmanaged resources in C# is rare nowadays, so the primary reason why C# developers implement a Dispose method in their classes is to call .Dispose() on IDisposable objects that their classes have references to.
This would mean that the first sentence in the documentation is incorrect, and that the Dispose method is primarily implemented to release managed resources.
Or am I misunderstanding the terms "managed" and "unmanaged" in this context?

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

ID: 572ef6c6-5066-4a14-76a0-c3fb4b62e604
Version Independent ID: 9c754da1-c234-fb12-580b-0fcf9ffe2c20
Content: Implement a Dispose method
Content Source: docs/standard/garbage-collection/implementing-dispose.md
Product: dotnet
Technology: dotnet-standard
GitHub Login: @gewarren
Microsoft Alias: gewarren

Hi 👋 @Bosch-Eli-Black
Thank you so much for posting this issue. We really appreciate it.
You're referring to cascading .Dispose calls, where one of the common examples is to implement IDisposable if you're holding on to any IDisposable impls... right? The thing is, the reason that you do this is so that you can ensure that the unmanaged resources are released/cleaned up. Even if it is indirectly, you're code is still responsible. Does that make sense? I think this is fine the way it is stated now, but we can continue this discussion.
My point is that, even if you're just cascading .Dispose calls - you're still "releasing unmanaged resources used by your code", it's just indirectly.

@IEvangelist Ah, that makes sense, thanks!
Perhaps what tripped me up was the inclusion of "your code" in the first sentence: "Implementing the Dispose method is primarily for releasing unmanaged resources used by your code."
Maybe it would be better if shorten to just this: "Implementing the Dispose method is primarily for releasing unmanaged resources."
Or maybe it's fine as is; your call :)


My first branch

Created a new branch, did a commit and now creating a pull request

Merged the file into main branch


Format FROM  clauses

Is this the expected behavior?(version v1.6.1)
before:
SELECT
  *
FROM
  -- comment1
  hoge
  -- comment2
  LEFT JOIN fuga
  ON hoge.hoge = fuga.fuga -- comment3

after:
SELECT
  *
FROM
  -- comment1
  -- comment2
  hoge
  LEFT JOIN
  fuga
  ON hoge.hoge = fuga.fuga;

I will check it

v1.5.5 formats like below
SELECT
  *
FROM
  -- comment1
  hoge -- comment2
  LEFT JOIN
  fuga
  ON hoge.hoge = fuga.fuga;
-- comment3

The last comment is lost and that is unexpected, but the format of fuga is expected and default of ZetaSQL.
@yaya-data
Could you please write desired format?

For comments, please do not change the format.
My idea is,

If the comment only written in one line, please insert before the line containing the next word.(ex. comment1 and comment2)
If the comment written with the code in one line, please put it behind the previous word.(ex. comment3)

@yaya-data
Could you please write down desired outputs like test cases?
Some formats are difficult because of the limitation of ZetaSQL AST. You can read the blog below about it.
https://note.com/jdsc/n/n2a6d0d382000

@Matts966
How about a test case like the below written?
--comment1
WITH
  temp AS (
    SELECT
      --comment2
      aaa --comment3
    FROM
      --comment4
      hoge --comment5
      --comment6
      LEFT JOIN
      fuga --comment7
      ON hoge.hoge = fuga.fuga --comment8
    WHERE
      --comment9
      aaa = "" --comment10
      --comment11
  ) --comment12
--comment13
SELECT
  *
FROM
  temp --comment14
;

@Matts966
Has it already been released?

@yaya-data
No.
Could you give it try?


Replace pwd

Replace $(pwd) references as this changes where the logs are found based on the current directory when the user starts the program.

Thank you for the suggestion! I'll explain the reasoning for keeping it the way it is below.
The readme is intended to get someone started with as few steps as possible. The example commands are written so that if someone just copies and pastes them they will most likely work, but the form of the command to customize is also given for those who want custom locations.
Using pwd is a common convention in docker examples. Docker requires an absolute path when bind mounting volumes and using pwd removes a the need to prescribe a directory structure on the host system.
The directories for these example commands are already created in this repo for this purpose. And the instructions include the creation of the node.cfg file in the current directory. Yes, using pwd requires the user to execute the commands from the repo directory, but this is only needed when first configuring or starting zeek and is a common assumption. On the other hand, using a specific directory like /opt/zeek or /usr/local/zeek assumes users are running as root or with sudo privileges in order to be able to create that directory in the first place. Docker does not necessarily require root or sudo to run.


Add More Abilities

Submitter: Cyrus Bharda
Email<EMAIL_ADDRESS>Firstly, may I just say that your generator is great! easy, simple to use, well done! The group I play VtM in used the Second Ed character sheet, which only differs in the Abilities. So instead of making up a whole new sheet, could you add the functionality to add in more abilities, Or I can send you a copy of the Second Ed character sheet if you could add it as an option maybe?

Other people have requested alternate editions as well. Eventually I'd like to have an option to choose your edition. I think that'd be pretty nice. I have access to MrGone's character sheets, so any edition should be easily doable. Although don't quote me on that for V5.