Positional argument doesn't work after flag argument

Describe the bug
https://github.com/AzureCR/azure-cli/issues/161
To Reproduce
az acr build -r MyRegistry --no-push .
az acr build: '.' is not an az acr build command. See 'az acr build --help'.

The following however works:
az acr build -r MyRegistry . --no-push

Expected behavior
The CLI shouldn't take the positional argument as a value for flag argument.
Environment summary
azure-cli (2.0.41)
acr (2.0.29)
acs (2.1.3)
advisor (0.5.3)
ams (0.1.3)
appservice (0.1.37)
backup (1.1.3)
batch (3.2.6)
batchai (0.3.3)
billing (0.1.10)
cdn (0.1.0)
cloud (2.0.16)
cognitiveservices (0.1.15)
configure (2.0.18)
consumption (0.3.3)
container (0.2.1)
core (2.0.41)
cosmosdb (0.1.23)
dev-tools (0.1.1)
dla (0.1.2)
dls (0.1.0)
dms (0.1.0)
eventgrid (0.1.14)
eventhubs (0.1.5)
extension (0.1.1)
feedback (2.1.4)
find (0.2.12)
interactive (0.3.24)
iot (0.1.23)
keyvault (2.0.24)
lab (0.1.0)
maps (0.2.0)
monitor (0.1.9)
network (2.1.6)
nspkg (3.0.3)
policyinsights (0.1.0)
profile (2.0.28)
rdbms (0.2.6)
redis (0.2.15)
reservations (0.2.2)
resource (2.0.33)
role (2.0.28)
servicebus (0.1.4)
servicefabric (0.1.0)
sql (2.0.29)
storage (2.0.37)
testsdk (0.1.4)
vm (2.0.36)
Python location 'C:\Users\doyou\gitrepo\azure-cli-venv\Scripts\python.exe'
Extensions directory 'C:\Users\doyou.azure\cliextensions'
Python (Windows) 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]

/cc @sajayantony @ankurkhemani

The reason you observe this behavior is because --no-push isn't a pure flag--you have it registered as three_state_flag which means it could have a value (true/false).  Thus, it is parsing . against the allowed values of true/false.
This is standard argparse behavior so we would not make alterations to the CLI to change this; however, it looks like --no-push is a behavioral flag on the command, which means pure flag behavior (action='store_true') would be more appropriate than three state flag, which is really meant for boolean properties on resources.  If that's the case, you can change it to a pure flag and you wouldn't see this issue.


Array supports the use of Componenet

For flexible modeling, I would like to use a pre-defined Componenet in Array. Why are the following formats not supported, and do you have any plans to support them in the future?
{
"@type": "Telemetry",
"name": "ledState",
"schema": {
"@type": "Array",
"elementSchema": "Component"
}
}

Components allow to create composable interfaces by referencing another interface.
Arrays allow to describe a message with a sequence of different elements in the same message.
What is the use case to create an Array of Components?
Maybe, updating your example with a concrete interface that will be used as a component will help us to understand your requirement.

If the Array is supported to have a Component format, it has the advantage of being able to plug-in multiple models in a Component format by defining a single model. As it is not currently supported, it is cumbersome to create a model in a separate Object format under the Array when defining multiple models (the same code must be rewritten)


Any interest in joining the trac-hacks organization?

Hi,
I'm an administrator for trac-hacks.org.  We've created an organization on GitHub and are inviting authors of trac-hacks plugins to join the organization.  Your repository could be transferred into the organization as described in the GitHub docs.  You'd retain full control over the repository, but the hope is that it will be easier for users on GitHub to fine trac-hacks plugins, including yours, by viewing the trac-hacks organization.
In the future, if you choose to no longer maintain the plugin, the organization would be able to provide commit access to new developers.  This would only be done with your permission, as has been the policy for plugins hosted on trac-hacks.org.  If you've already decided to no longer maintain the plugin, we would particularly appreciate you transferring the plugin to the trac-hacks organization so that we can help find new maintainers for it.
Finally, creating the trac-hacks organization is a work in progress. I appreciate if you have any suggestions on how to best support the community of trac plugin developers on GitHub. I'll be writing a blog post soon with more information and will follow-up here with a link to that post.
Kind regards,

Ryan

Hey Ryan, thanks for the invitation! However, I am not really developing this project... I just set up a git svn mirror... Having said that, if you want this mirror to be in your org, I'd be delighted to move it.

Thanks, I didn't look very carefully at the source code before opening the ticket. I probably shouldn't create a mirror for code developed by SARA without involving that team. Thank you for the reply.


Add e2e testing support for browsers

Motivation
Improve the test coverage.
Description
Add testing support for the browsers, using the cypress. For now it covers electron, chrome and firefox
Closes #2723

@nazarhussain we have not used emojis in commit messages before. While not opposed to it let's keep the codebase consistent and if you want bring it up to the team if we should adopt emojis or not

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.7 out of 8 committers have signed the CLA.:white_check_mark: wemeetagain:white_check_mark: g11tech:white_check_mark: dapplion:white_check_mark: tuyennhv:white_check_mark: nazarhussain:white_check_mark: dadepo:white_check_mark: philknows:x: elopioYou have signed the CLA already but the status is still pending? Let us recheck it.

The only item left in this PR is to find a workaround for the SSE (sever sent events) for the mocking server and run it inside browsers.

Browser tests are pretty quick in CI! 42s, that's cool


Passive scan feature

Hi!
I would need a passive scan function to get the RSSI values from advertisement data at a relative high rate (like hcitool lescan --passive). The discover function is way too slow for this.
Is this even supported by the dbus API? I don't know where to start.
Best regards

But is there any way to get RSSI-values from a connected device using gatt-python?


feat: Add deploy command to automatically deploy by using a manifest

Looks in ./manifests/ for a manifest matching the argument.

feat: Add deploy command
fmt

What would be nice is if it could compute the build URL from the response and return that as a reply.


added backup function to database object

I wanted to have the backup support from sqlite3 exposed in node-sqlite3 for a project I am working on. Here is a link to the documentation for this API: Using the SQLite Online Backup API. I have included a unit test that just makes a backup of an existing database in the test/support directory. I only tested this on my ArchLinux server.

Changes Unknown when pulling 2a019218e1635c6bfe507f14d2bdff3cb68570a5 on schraf:master into ** on mapbox:master**.

I got an Error: SQLITE_CANTOPEN: library routine called out of sequence when trying to use this PR commit to backup sqlite database file.
node version: v6.11.3
system version: centos 7

Actually the problem is the path not existed,we need to create the path first.
Or get a library routine called out of sequence error without any useful error message.


Impossible to flush cache without tags

For me it seems that flushQueryCache() doesn't work without tags at all: https://github.com/rennokki/laravel-eloquent-query-cache/blob/master/src/Traits/QueryCacheModule.php#L152
Am I right? There doesn't seem to be easy way to empty whole cache per model?
Originally posted by @apeisa in https://github.com/rennokki/laravel-eloquent-query-cache/issues/12#issuecomment-612664909

You can set up an additional tag on each query and flush it by that tag:
Post::cacheFor(60)
    ->cacheTags(['query', 'posts'])
    ->get();

Category::cacheFor(60)
    ->cacheTags(['query', 'categories'])
    ->get();

Post::flushQueryCache(['query']); // flushes both

Query Cache relies on the tags to invalidate the cache, making a distinction between the cached queries and your normal cache; otherwise you can call cache:clear to invalidate all the cache.

Check this tag: https://github.com/rennokki/laravel-eloquent-query-cache/releases/tag/1.4.0

Thanks, looks great! Does that implementation mean that this doesn't work at all with cache drivers that doesn't support tags?

You have to "mark" each query. It would be a pain to invalidate queries giving the query string.


[Bug]: The window of openpose-editor is too small

Is there an existing issue for this?

[X] I have searched the existing issues and checked the recent builds/commits of both this extension and the webui

What happened?
After a clean install i have and edit button but frame of an editor appears shrinked.

Steps to reproduce the problem

What should have happened?
Normaly it should fit to div container.
Commit where the problem happens
webui: 1.7.0
controlnet: 1.1.430
openpose-editor: 0.2.4
What browsers do you use to access the UI ?
Microsoft Edge
Command Line Arguments
No

Console logs
***

Browser logs

Additional information
No response

https://github.com/vladmandic/automatic/issues/2594
found relevant issue here for SD.Next, but fix not woeking for automatic1111

Should be fixed by https://github.com/Mikubill/sd-webui-controlnet/pull/2463


[Bug]: Layout issue with latest Mushroom update.

Current Behavior

Expected Behavior
No response
Steps To Reproduce
No response
Environment
- OS:
- Node:
- Version:
- Hassio:

Anything else?
No response

Are you running the latest version of the thermostat card? v1.8.3-thermostat.1

HACS is only offering up 1.7.3-thermostat.2

Manually updated, and now its fine.. although there is some kind of shadow now

.

Do you not see shadows in other mushroom cards? All mine have a shadow (mostly visible to me in light mode).

Perhaps I have not noticed them.. I will check again.

Ah I zoomed in on your screenshot and see what your describing.  I'm not seeing the same issue however. It looks like the thermostat card is nested in another card.

P.S. You should probably close https://github.com/piitaya/lovelace-mushroom/issues/485

It is not nested inside another card, but I also can't reproduce the issue on other PCs or apps.. I will investigate a bit more

From: ulic75 @.>
Sent: Monday, 16 May 2022 11:55 AM
To: ulic75/lovelace-mushroom @.>
Cc: wishie @.>; Author @.>
Subject: Re: [ulic75/lovelace-mushroom] [Bug]: Layout issue with latest Mushroom update. (Issue #15)
Ah I zoomed in on your screenshot and see what your describing. I'm not seeing the same issue however. It looks like the thermostat card is nested in another card.
[Screenshot_20220515-194831]https://user-images.githubusercontent.com/5641964/168506782-13286d77-2c5a-4616-8743-5c6ecfb0cad5.png
P.S. You should probably close piitaya#485https://github.com/piitaya/lovelace-mushroom/issues/485
—
Reply to this email directly, view it on GitHubhttps://github.com/ulic75/lovelace-mushroom/issues/15#issuecomment-1127134812, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAE3HRGJXP2URLU35Z5ZOPTVKGTKHANCNFSM5V7AGPUQ.
You are receiving this because you authored the thread.Message ID: @.***>

It was only happening on the Home Assistant Companion App for macOS and forcefully resetting the app appears to have fixed it.


Issue backing up to a single .jex file

Joplin 2.3.5 (prod, linux)
Client ID: 675f26f8e7e542b3900bb8885dbf414a
Sync Version: 3
Profile Version: 39
Keychain Supported: No
Revision: 819af3c
I recently updated simple backup and when I backup to a single .jex file the size has dropped from 36mb to 8mb. I'm assuming this to be an issue, not going to try to recover and lose everything. When I do a backup to individual .jex files everything seems to be fine.
Any ideas on this.

Witch version of the plugin do you use?
Do you have zip compression enabled?

Please post a Logfile of the Backup with Verbose setting, after the backup the log is stored under ~\.config\joplin-desktop\cache\io.github.jackgruber.backup\

The version of the plugin I am running is 1.0.3, I do not have compression enabled, as I mentioned the normal backup that creates individual .jex files works fine.
I don't have a ~.config\joplin-desktop\cache\io.github.jackgruber.backup\ directory, my log file goes into ~/.config/joplin-desktop.
The flags.txt file contains this line, "--open-dev-tools --debug --log-level debug" , is there something I need to add here to make it verbose, or something else?
This issue started to occur when I upgraded to 1.0.3 a couple of days ago.
Thanks
Carson

@.***
GNU/Linux Ubuntu 20.04.2 LTS
Sent with ProtonMail Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, September 5th, 2021 at 2:40 PM, JackGruber @.***> wrote:

Witch version of the plugin do you use?
Do you have zip compression enabled?

Please post a Logfile of the Backup with Verbose setting, after the backup the log is stored under ~.config\joplin-desktop\cache\io.github.jackgruber.backup\
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

It about the plugin log, not the Joplin log.
Enable verbose logging: Options > Backup > Logfile set to Verbose then you can find the Logfile under ~/.config/joplin-desktop/cache/io.github.jackgruber.backup/backup.log"

Really sorry, I must be missing something, I don't see a Logfile entry under Options > Backup >
Attached is a screenshot of Options > Backup >
Carson

@.***
GNU/Linux Ubuntu 20.04.2 LTS
Sent with ProtonMail Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, September 5th, 2021 at 4:26 PM, JackGruber @.***> wrote:

It about the plugin log, not the Joplin log.
Enable verbose logging: Options > Backup > Logfile set to Verbose then you can find the Logfile under ~/.config/joplin-desktop/cache/io.github.jackgruber.backup/backup.log"
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Sorry Ignore my last, I'll send a log file after dinner, my appologies.

@.***
GNU/Linux Ubuntu 20.04.2 LTS
Sent with ProtonMail Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, September 5th, 2021 at 4:26 PM, JackGruber @.***> wrote:

It about the plugin log, not the Joplin log.
Enable verbose logging: Options > Backup > Logfile set to Verbose then you can find the Logfile under ~/.config/joplin-desktop/cache/io.github.jackgruber.backup/backup.log"
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

I've attached the logfile, hope it helps.
Looking at it it would seem to have my notes, I just don't understand the smaller size.
Thanks
Carson
@.***
GNU/Linux Ubuntu 20.04.2 LTS
Sent with ProtonMail Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, September 5th, 2021 at 4:26 PM, JackGruber @.***> wrote:

It about the plugin log, not the Joplin log.
Enable verbose logging: Options > Backup > Logfile set to Verbose then you can find the Logfile under ~/.config/joplin-desktop/cache/io.github.jackgruber.backup/backup.log"
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Sorry, there is no screenshot and no log attached.

Closed, since no activity


Fix #709 Enable developers to inject non-bolt arguments to listener function args

This pull request resolves #709
Category (place an x in each of the [ ])

[x] slack_bolt.App and/or its core components
[x] slack_bolt.async_app.AsyncApp and/or its core components
[ ] Adapters in slack_bolt.adapter
[ ] Document pages under /docs
[ ] Others

Requirements (place an x in each [ ])
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

[x] I've read and understood the Contributing Guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've run ./scripts/install_all_and_run_tests.sh after making the changes.

This pull request is still in progress. Existing tests detected regressions.

After looking into this more deeply, I concluded this enhancement is not feasible. Even if it's feasible in some way, I don't think it's maintainable for us. Let me close this my proposal here.


Doesn't load?

Hmmmm,
I've tried to run this on the latest version of MM with exactly the example configurations shown, but nothing displays.
I've tried a variety of different sites, different browsers, and different module locations.  I've added the electron block to the config.  There are no errors in the javascript console.
I'm out of ideas for things to try :/

Argh.  I had "Webview" not "WebView".  I was sure I copy pasted that.
Never mind.


os_signpost not ended when procedure finishes

os_signpost is correctly started but Instruments shows it running indefinitely. Logs say that the procedures finish correctly.

Reproducing
Reproducable both on the development branch, commit 9eb6deb, and on the latest release 5.0.0-beta.2. iOS version 12.1.4.
Profile the TryProcedureKit iOS (haven't tested on macOS), choose Blank template, add the os_signpost instrument and run the app. All started procedures will show as "Executing" indefinitely.

+1, I just ran into the same issue.

+1, this feature is very promising but unusable in the current state.


Use case Validation forces public classes

I have purchased and watched both of your training courses on modular monoliths and found them to be really helpful.  However, there is one issue that I have which I think causes a bad code smell.  But I can't seem to find a way around it.
I have a module that receives message from a RabbitMQ queue, I then use Mediatr to pass the received message to a handler for processing. i.e., saving the record to a database.
These handlers have validators on the incoming messages to check them before the handler processes them.
In my web host, I am using the
''' builder.Services.AddValidatorsFromAssemblies(mediatRAssemblies); ```
command to register the mediatr validator assemblies.  However, the assemblies are only registered if they are defined as public classes, not internal classes.  This in turn forces the DTO object being passed to the handler to be public.  But this DTO is only used within this module, and I do not want any other modules to be able to use it.  So my preference is to keep it internal.
I have even tried to add the validators within the modules, so both the DTO and validator can be internal, but the validators are still not registered.  Is there a way I can use internal classes as validators so all classes can be internal?
I have tried using this template and the sample code form the courses. but neither tackle this problem.
Thanks

I found the solution to this.  If anyone else comes across this issue, please check out https://github.com/FluentValidation/FluentValidation/issues/2202


Cannot run osxphotos after upgrading to pipx 1.1.0

osxphotos v0.50.3
June 3 I upgraded pipx 1.0.0 -> 1.1.0 and ever since when I run osxphotos, I get:
zsh: /Users/peter/.local/pipx/venvs/osxphotos/bin/osxphotos: bad interpreter: /Users/peter/.local/pipx/venvs/osxphotos/bin/python: no such file or directory

I was going to try downgrading pipx, but when I run brew install<EMAIL_ADDRESS>It just says Warning: No available formula with the name<EMAIL_ADDRESS> So not sure what I'm doing wrong there.
Any advice?

Guess I figured it out. I had to update my symlinks for /Users/peter/.local/pipx/venvs/osxphotos/bin/python3.10 to point to /opt/homebrew/Cellar/pipx/1.1.0/libexec/bin/python3.10.
It was still pointed to /opt/homebrew/Cellar/pipx/1.0.0/libexec/bin/python3.10
Not sure why that didn't update when I updated to pipx 1.1.0.
When I run osxphotos, it does give this warning now (assuming this will be addressed at some point?).
2022-06-14 19:57:38,800 - WARNING - photosdb.py - 112 - WARNING: This module has only been tested with macOS versions [10.12, 10.13, 10.14, 10.15, 10.16, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 12.0, 12.1, 12.2, 12.3]: you have Darwin, OS version: 12.4

Yes, I'll update the version check for 12.4.  I'm overly cautious about new versions of MacOS since Apple has a tendency to break things and I want to make sure osxphotos performs as designed.

Adding this in case others stumble upon the issue:
Upgrading pipx breaks installed packages.  Do fix this do the following after updating pipx:
pipx reinstall-all


Error: Empty mysql_connection_string

So basically i already have a mysql server running on my computer, this causes some issues durring startup since the port 3306 is already in use... i would like to know if i can change that by default? Also im getting this that might be related to the above?

Error: (node:27864) UnhandledPromiseRejectionWarning: Error: Empty mysql_connection_string detected.
at global.on (mysql-async.js:5066:49)
at citizen:/scripting/v8/main.js:193:28
Error: (node:27864) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
Error: (node:27864) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Not entirely sure what causes this since the error seams to be located at this line:

if (connectionString === 'Empty') throw new Error('Empty mysql_connection_string detected.');

I have a clean install of mysql-async only.

Please tell how you fixed this


How to Plot Real-Time Data Performatively

https://scottplot.net/faq/live-data/
There is an explanation in this link, but I couldn't understand it fully. Is Signal Plot the best performer in live streaming data?

Hi @bulent017, check out the demo app https://scottplot.net/demo/
It comes with source code, and there are a few demos specifically about how to display real time streaming data 👍


IO-1217: harden ciphers

Removing:

EECDH+aRSA+RC4

Does anyone have concerns with this? Looks good to me.

Team Approved


Training material for qcodes docs

Leaving it here in order not to forget about this branch and its contents. Ideally should be reworked and merged into qcodes docs.

@astafan8 let's revisit this PR soon

@astafan8 sorry accidently closed. This PR would be good to revisit soon to see if any of your points have been addressed over the past year. Lot's of good avenues for improvements in here.


fix(Validator): Handle deeply messages array for custom messages

I've encountered a problem using the Validation process (Through FormRequest). When dealing with custom messages :
public function rules(): array
        {
            return [
                'custom' => [
                    'integer',
                    'boolean',
                    new CustomRule(),
                ],
            ];
        }

public function messages()
        {
            return [
                'custom.integer' => 'xxx.',
            ];
        }

Here, it will works as expected, the error shown for integer will be xxx. and other defaults will be used for the custom rule + boolean.
A problem come when we do something like that :
public function rules(): array
        {
            return [
                'custom' => [
                    'integer',
                    'boolean',
                    new CustomRuleTwo(),
                ],
            ];
        }

        public function messages()
        {
            return [
                'custom' => [
                    'integer' => 'xxx.',
                ],
            ];
        }

Here it will only show the validation messages for the integer and not for the others.
Here is a test suite I've made on my Laravel application :
<?php

use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Route;

test('custom rule messages with dot notation', function () {
    class CustomRule implements ValidationRule
    {
        public $implicit = true;

        public function validate(string $attribute, mixed $value, Closure $fail): void
        {
            $fail('The custom rule failed.');
        }
    }

    class FormRequestTest extends FormRequest
    {

        public function rules(): array
        {
            return [
                'custom' => [
                    'integer',
                    'boolean',
                    new CustomRule(),
                ],
            ];
        }

        public function messages()
        {
            return [
                'custom.integer' => 'xxx.',
            ];
        }

    }

    class Controller extends \App\Http\Controllers\Controller
    {
        public function __invoke(FormRequestTest $request)
        {
            return 'OK';
        }
    }

    Route::post('/form-request', Controller::class);

    $this
        ->postJson('/form-request', [
            'custom' => 'string',
        ])
        ->assertUnprocessable()
        ->assertJsonValidationErrors([
            'custom' => [
                'xxx.',
                'The custom must be true or false.',
                'The custom rule failed.',
            ],
        ]);
});

test('custom rule with messages with array notation', function () {
    class CustomRuleTwo implements ValidationRule
    {
        public $implicit = true;

        public function validate(string $attribute, mixed $value, Closure $fail): void
        {
            $fail('The custom rule failed.');
        }
    }

    class FormRequestTestTwo extends FormRequest
    {

        public function rules(): array
        {
            return [
                'custom' => [
                    'integer',
                    'boolean',
                    new CustomRuleTwo(),
                ],
            ];
        }

        public function messages()
        {
            return [
                'custom' => [
                    'integer' => 'xxx.',
                ],
            ];
        }

    }

    class ControllerTwo extends \App\Http\Controllers\Controller
    {
        public function __invoke(FormRequestTestTwo $request)
        {
            return 'OK';
        }
    }

    Route::post('/form-request-two', ControllerTwo::class);

    $this
        ->postJson('/form-request-two', [
            'custom' => 'string',
        ])
        ->assertUnprocessable()
        ->assertJsonValidationErrors([
            'custom' => [
                'xxx.',
                'The custom must be true or false.',
                'The custom rule failed.',
            ],
        ]);
});

And the result is :

With the change I propose, it's working all fine :

I assume it's a bug as it's working with dot notation but not with deep nested array in messages (I may be wrong).
I had this issue several time while dealing with FormRequest and wanted to only custom translate one rule but not all the others. I had to implement things like that to get it work with the default behavior of getting the translation from the validatin file :
"{$attribute}.distinct" => trans()->has('validation.custom.secondary_beverage_types.distinct')
                ? __('validation.custom.secondary_beverage_types.distinct')
                : __('validation.distinct', ['attribute' => __('validation.attributes.secondary_beverage_types')]),

As I prefer to work with arrays instead of dot notation.
If this is indeed a bug, I'd like to add tests for that. I searched a bit through the repo and I'm quite not sure where would it be the best place to test that, If you could give me some insights on that it'd be highly appreciated.
Thank you:

It seems to break the default behavior in test here :
$v = new Validator($trans, ['name' => 'foobarba'], ['name' => 'size:9'], ['size' => ['string' => ':attribute should be of length :size']]);
        $this->assertFalse($v->passes());
        $v->messages()->setFormat(':message');
        $this->assertSame('name should be of length 9', $v->messages()->first('name'));

It returns validation.size.string.
Maybe the dot notation of the messages should be passed to the Validator instance from the factory used by the FormRequest ?
$validator = $factory->make(
            $this->validationData(),
            $rules,
            Arr::dot($this->messages()),
            $this->attributes(),
        )->stopOnFirstFailure($this->stopOnFirstFailure);

in FormRequest.php:120

We never document it working with arrays?

@taylorotwell Oh ok, I think it may come from answers on stackoverflow or things like that. Wouldn't it makes sense to make it works with arrays (atleast in the FormRequest ?à


Xfig update

Motivation for this change
I found that transfig doesn't build fig2dev on darwin, which is needed to build documentation for coq.  This updates to the latest version of xfig, and splits out fig2dev into its own build. Since I'm not entirely sure whether this supplants the earlier build of transfig (especially because there is no longer a transfig binary as a result), I would like solicit comments on this PR.
Things done

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

[ ] 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 nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

Could you please split https://github.com/NixOS/nixpkgs/pull/33120/commits/26cb78b9e182128fc5e9fbf8941cca60d841461d into two commits (one for each package) and rebase on current master?

@adisbladis Sure.

@adisbladis Done.


Fragment.uri should support .zip files

I was trying to index jdk src.zip using scala.meta.Fragment.uri  and hit on
18:09:17.747 ERROR s.m.l.ctags.Ctags$ - /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/src.zip/javax/tools/JavaCompiler.java (Not a directory)

Fragment.uri is implemented like this
  def uri: URI = {
    val baseuri = base.toURI.normalize
    if (baseuri.toString.endsWith(".jar")) new URI(s"jar:$baseuri!/$name")
    else base.resolve(name).toURI.normalize
  }

We no longer have Fragment in 4.0, so I believe this ticket should now be closed.


#3 implemented basic architecture

all basically required interfaces for the application modules created
added some example test cases

Put also @schleichardt as assignee or mention us, any way works :)

ok

as all changes will be included in another pull request I'll close this one


[json-schema] Incorrect schema generated with responseSchema and oneOf

Issue workflow progress

Progress of the issue based on the Contributor Workflow

[x] 1. The issue provides a reproduction available on Github or CodeSandbox

Make sure to fork this template and run yarn generate in the terminal.
Please make sure Mesh package versions under package.json matches yours.

[ ] 2. A failing test has been provided
[ ] 3. A local solution has been provided
[ ] 4. A pull request is pending review

Describe the bug
@graphql-mesh/json-schema doesn't handle oneOf (and probably allOf & anyOf) JSON Schema's instruction correctly.
For the following instructions:
"shouldBeStringOrNumber": {
  "oneOf": [
    { "type": "number" },
    { "type": "string" }
  ]
}

The generated output will look like:
type MyObject {
  shouldBeStringOrNumber: query_myObject_shouldBeStringOrNumber!
}

union query_myObject_shouldBeStringOrNumber = Float_container | String_container

type Float_container {
  Float: Float
}

type String_container {
  String: String
}

Which is not the desired behavior. shouldBeStringOrNumber should be String | Float while it became an object with either a prop String: String or a prop Float: Float
To Reproduce
Steps to reproduce the behavior:
See this github reproduction or this codebox
Expected behavior
type MyObject {
  shouldBeStringOrNumber: query_myObject_shouldBeStringOrNumber!
}

union query_myObject_shouldBeStringOrNumber = Float | String

Environment:

OS: MacOS
@graphql-mesh/cli: ^0.80.4
@graphql-mesh/graphql: ^0.32.4
@graphql-mesh/json-schema: ^0.35.38

Additional context
None

Unions cannot accept scalars per GraphQL spec. Unions can only take object types so we create a wrapper object types as a workaround.
https://spec.graphql.org/June2018/#sec-Unions
This is not a bug.


How to use?

Hi Mike! I have installed the OOXML Validator in VS Code, and I have opened a DOCX. However, when I right click I don't see the option to Validate OOXML as is shown in the "Usage Details" screen captures for the extension in VS Code. Can you please tell me what I might be missing? Thank you.

Hi @kew-dev , When this happens, click on a different file then right-click on the file you want to validate. The Validate option should show then. This is an issue with VS Code and context menu extensions that I haven't figured out how to fix other than clicking on a different file. FYI, this repo is for the cli validator the extension uses not the extension itself. The repo for the extension is here: OOXML Validator VS Code


how can I encode 100 symbols completely in RMT? (IDFGH-10601)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
I want to use the RMT module to send an infrared sequence with 100 symbols, but it seems to hit RMT_ENCODING_MEM_FULL. So how could I send the whole 100 or more symbols?
I used global variable to record the results(encoded symbols) of each step of encoding. Here is my code of encoding, based on esp-idf example:

static size_t rmt_encode_ir_nec(rmt_encoder_t *encoder, rmt_channel_handle_t channel, const void *primary_data, size_t data_size, rmt_encode_state_t *ret_state)
{
    rmt_ir_nec_encoder_t *nec_encoder = __containerof(encoder, rmt_ir_nec_encoder_t, base);
    rmt_encode_state_t session_state = 0;
    rmt_encode_state_t state = 0;
    size_t encoded_symbols = 0;
    ir_nec_transmit_command_code_t *ir_nec_transmit_command_code = (ir_nec_transmit_command_code_t *)primary_data;
    rmt_encoder_handle_t copy_encoder = nec_encoder->copy_encoder;
    rmt_encoder_handle_t bytes_encoder = nec_encoder->bytes_encoder;
    switch (nec_encoder->state) {
    case 0: // send leading code
        encoded_symbols += copy_encoder->encode(copy_encoder, channel, &nec_encoder->nec_leading_symbol,
                                                sizeof(rmt_symbol_word_t), &session_state);
        g_encoded_symbols_after_leading_code = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 1; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 1: // send command 1
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command1,
                                                 sizeof(uint16_t), &session_state);

        g_encoded_symbols_after_command1 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 2; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 2: // send command 2
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command2,
                                                 sizeof(uint16_t), &session_state);
        g_encoded_symbols_after_command2 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 3; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 3: // send command 3
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command3,
                                                 sizeof(uint16_t), &session_state);

        g_encoded_symbols_after_command3 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 4; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 4: // send middle code 1
        encoded_symbols += copy_encoder->encode(copy_encoder, channel, &nec_encoder->nec_middle_symbol[0],
                                                sizeof(rmt_symbol_word_t), &session_state);
        g_encoded_symbols_after_middle_code1 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 5; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 5: // send middle code 2
        encoded_symbols += copy_encoder->encode(copy_encoder, channel, &nec_encoder->nec_middle_symbol[1],
                                                sizeof(rmt_symbol_word_t), &session_state);
        g_encoded_symbols_after_middle_code2 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 6; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 6: // send command 4
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command4,
                                                 sizeof(uint16_t), &session_state);
        g_encoded_symbols_after_command4 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 7; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 7: // send command 5
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command5,
                                                 sizeof(uint16_t), &session_state);
        g_encoded_symbols_after_command5 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 8; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 8: // send command 6
        encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, &ir_nec_transmit_command_code->command6,
                                                 sizeof(uint16_t), &session_state);
        g_encoded_symbols_after_command6 = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 9; // we can only switch to next state when current encoder finished
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            g_mem_full_flag = 1;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    // fall-through
    case 9: // send ending code
        encoded_symbols += copy_encoder->encode(copy_encoder, channel, &nec_encoder->nec_ending_symbol,
                                                sizeof(rmt_symbol_word_t), &session_state);
        g_encoded_symbols_after_end_code = encoded_symbols;
        if (session_state & RMT_ENCODING_COMPLETE) {
            nec_encoder->state = 0; // back to the initial encoding session
            state |= RMT_ENCODING_COMPLETE;
        }
        if (session_state & RMT_ENCODING_MEM_FULL) {
            state |= RMT_ENCODING_MEM_FULL;
            goto out; // yield if there's no free space to put other encoding artifacts
        }
    }
out:
    *ret_state = state;
    g_encoded_symbols = encoded_symbols;
    return encoded_symbols;
}

And the result output:
g_encoded_symbols_after_leading_code = 1
g_encoded_symbols_after_command1 = 17
g_encoded_symbols_after_command2 = 33
g_encoded_symbols_after_command3 = 49
g_encoded_symbols_after_middle_code1 = 50
g_encoded_symbols_after_middle_code2 = 51
g_encoded_symbols_after_command4 = 67
g_encoded_symbols_after_command5 = 83
g_encoded_symbols_after_command6 = 96
g_encoded_symbols_after_end_code = 0
g_mem_full_flag = 1
It seems that memory was full in command6 encoding.
how can I encode 100 symbols completely?

@lazypikapig  when there's no memory for saving the encoding artifacts, the scheme will yield in the middle (see the goto statements in your encoding function). The encoding scheme can resume when half of the encoded RMT symbols are transmitted.

@suda-morris
thanks for your reply.
the function 'rmt_isr_handle_tx_threshold' is saying 'continue pingpong transmission' indeed, but I just find out that it just only call my encoder again, without something like 'rmt_ll_tx_start' or any other function used to transmit again.
could you remind me some hints?
thanks again!

@lazypikapig No, we don't need to call a "start" function because when we are doing the ping-pong operation, the transmission is still undergoing

@suda-morris


Automate the updating of Tailwind CSS via GitHub Action

Tailwind CSS updates pretty often & it'll be really annoying to manually update the app/assets/stylesheets/tailwind.css file.
This adds a GitHub action which runs at 3am GMT every day which builds the latest version of the tailwind.css file then commits it back to the main branch.
Potentially you could also add a tag or something, then automate the release to RubyGems :D

Ohh! That's really cool.

Ohh! That's really cool.


How to get bufferingHistory, streamHistory & bandwidthHistory info in shaka player?

Have you read the FAQ and checked for duplicate open issues?
Yes
What version of Shaka Player are you using?
v2.5.9-debug
Please ask your question
As per this doc getStats() returns shaka.player.Stats which has bufferingHistory, streamHistory & bandwidthHistory, but when I call getStats() it is not returning those details. Is that doc an outdated one? If so how can I get these details bufferingHistory, streamHistory & bandwidthHistory in latest version of shaka player?

This was changed since 1.6.  Check our our latest documentation for more info.  Specifically, here is the new struct.  The new names are stateHistory and switchHistory.

Thank you @TheModMaker .


Implement CI-CD pipelines for templates

Related Issue: https://github.com/wso2-enterprise/open-healthcare/issues/1200
Purpose

Implement CI-CD pipelines for templates

Goals

Automate ballerina build and running tests on a PR
Automate the release of ballerina artifacts to ballerina central's STAGE, DEV, and PROD environments

Approach

Implement a single CI workflow that triggers on every pull request and extracts the paths of all ballerina templates with changes from the respective pull request. This workflow handles the build process and executes unit tests for each identified template.
Implement individual CD workflows for each Ballerina template, which can be manually triggered. These workflows are responsible for the building and releasing process to a chosen environment within Ballerina Central.

Documentation

https://docs.google.com/document/d/17-j7xDraMf_xO4B5_VziXpbmkgV_dPWypHONfxgkbRA/edit?usp=sharing

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


IP mismatch error thrown intermittently when toggling experiments off / on

Steps to reproduce:

Log into SAFE network.
Toggle experiments API off / on a few times.

Expected behaviour:
Open apps will ask for re-authorisation, browser refreshes.
Actual behaviour:
Intermittently the IP mismatch error message is displayed. User is able to dismiss and continue.

Also attaching browser log from when this occurred.
[Toggle experiments IP message error broweser log]
Toggle experiments IP message error browser log

During regression testing for v0.11.3 RC1, it appears this behaviour is happening consistently for browser instances created from yarn prod-dev:

Closing issue as its irrelevant with the new Pweb browser changes. As the new browser set up connects to the shared/local vault rather than the alpha two network.


ACK runtime update to v0.19.0

Issue #, if available: https://github.com/aws-controllers-k8s/community/issues/1339
Description of changes:

Update ACK runtime to v0.19.0
Ignore tags for Authorizer, Deployment, Integration & Route, because these resources do not support AWS tags

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/test apigatewayv2-kind-e2e

/lgtm


Handle subscriptions where multiple claims posted in short period

The Issue
Currently, the subscriptions process is only able to handle 1 piece of new content that's posted either in the same block, or within the interval the internal that the app checks for new subscriptions (15 minutes).
There are 2 scenarios:

The app is running and these new claims come in
The app was closed while the claims were posted, and then opened.

For scenario 1, I'd expect that the app would try to download each piece of new content, but I could be convinced otherwise if we properly inform the user.
Scenario 2 is a bit trickier since there might be tons of new content since a user last ran the app, which would cause many downloads to start if we went all the way back to the point when the user last ran the app. In this scenario, we may want to download the single latest (or maybe up to some value) and alert the user that there are others posted, but not downloaded (and give an option to download?).
System Configuration

LBRY Daemon version:
LBRY App version:
LBRY Installation ID:
Operating system:

Anything Else

Screenshots

If I can't reliably use subscriptions to see every piece of content from a creator since the time I subscribed, then this is a bug.


Version info and updating

Hi,
I guess at the moment we can not see the version of the software.
It'd be good to be able to see current version.
It is not so clear how to update the software as a user, even it is automatically updated via browser for standalone application, I'm not sure if the software is updated or not.
BR

Is the information of the specific version of interest or rather the information that you have the latest version?
I am just asking as we do not give every change in the main a version number but we collect changes introduced in a period of 2-4 weeks and call that a new release. This procedure allows use to give you the newest changes with little project management overhead. However for sure we could give a hint if the version you are using  does fit to the latest main as a icon in Extentions.
@c-dinkel: what do you think?
Just as an infor: Since a two weeks you should get the newest version without resetting in the Extentions.  Which practically means that you should always be up to date if your machine in online during from time to time.

I think we should add an info dialog with the current version and link to wiki and license.

Obviously every software has a version info when clicked on somewhere.
During the last month I introduced open SCD to some customers and they asked about this.

Decided then. We will add an info page including among other the version


Number of submissions

Hi @kwinkunks considering it's not a traditional format of Machine Learning contests which would be upload the .csv file and it would automatically give the accuracy. I just want to know can we submit 2 or more model(by 1 user) from the time you might have scored their previous model ? Till now I have been building one model waiting for you score to submit my next. I feel like it's one submission per day and a lot of time is left idle in between. Let me know your thoughts.

You can submit as often as you like, but I can't guarantee that I can score more than one a day. Yours are fairly easy to score, since you give me the results in a CSV.
Note that, if we did use the 'traditional' approach, we'd be back to the problem of meta-overtraining we discuss in #2 , so I feel like a bit of time lag is a good thing, in a way.
In future, I'll look for a larger blind dataset so that we can score immediately against a 'pseudo-blind' subset, then score against the entire blind dataset at the end of the contest.

Sure @kwinkunks  👍


Leigh syndrome queries

Hi,
I used to have  quite a number of pombe genes annotated to Leigh syndrome and now we have only 2.
I was annotating SURF1 pombe ortholog and the paper states

This no longer has a Leigh syndrome connection.
https://www.sciencedirect.com/topics/biochemistry-genetics-and-molecular-biology/surf1#:~:text=SURF1 represents a major gene,and COX10 which causes leukodystrophy.
states
SURF1 is the gene responsible for most of the COX-deficient cases of LS.
However I can only see these obsoletions on the tracker which does not seem to account for the decrease:
 (presumably these were  remapped to Leigh syndrome?)
From reading around, there are quite a number of causal genes (summarized thus by GPC chat)
SURF1: The most common nuclear gene associated with Leigh syndrome. Mutations in SURF1 affect complex IV (cytochrome c oxidase) of the mitochondrial respiratory chain.
PDHA1: This gene encodes the E1 alpha subunit of the pyruvate dehydrogenase complex, crucial for linking glycolysis to the TCA cycle.
NDUFS1, NDUFS4, NDUFA10: These genes are part of Complex I (NADH
oxidoreductase) of the mitochondrial respiratory chain.
SDHA, SDHB, SDHC, SDHD: These genes are components of Complex II (succinate dehydrogenase), which is also involved in the respiratory chain.
COX10, COX15: Mutations in these genes affect Complex IV (cytochrome c oxidase) function.
ATP5A1, ATP6, ATP8: These genes are involved in Complex V (ATP synthase), which is responsible for ATP production.
SLC19A3: This gene encodes a thiamine transporter, and mutations here can lead to a thiamine-responsive form of Leigh syndrome.

Mitochondrial DNA (mtDNA) mutations:
MT-ND genes (MT-ND1, MT-ND2, MT-ND3, MT-ND4, MT-ND5, MT-ND6): These genes encode subunits of Complex I of the mitochondrial respiratory chain.
MT-ATP6: This gene is involved in the function of Complex V (ATP synthase).
MT-TL1 (mitochondrial tRNA leucine): Mutations in this gene can affect mitochondrial protein synthesis.
MT-CO genes (MT-CO1, MT-CO2, MT-CO3): These encode subunits of Complex IV (cytochrome c oxidase).
I do see some annotation in Monarch, but these are listed as "associated" rather than "causal"

https://medlineplus.gov/genetics/condition/leigh-syndrome/#causes
says that over 110  genes (it seems most OXPHOS genes can cause Leigh syndrome?)
(I'm not sure if this is a Monarch issue, a Mondo issue or both)

Hi @ValWood - thanks for posting this issue. For Mondo, gene associations are included when there is a single gene that is found to be the cause of the disease. In Monarch however, it includes genes that are both causal and associated with a disease. Most disease defining gene associations in Mondo currently come from OMIM. When I look at the OMIM page for SURF1 it lists two diseases. For 'Mitochondrial complex IV deficiency, nuclear type 1' it's currently a synonym on MONDO:0009068 'cytochrome-c oxidase deficiency disease', although this term is scheduled to be merged with MONDO:0033885 'mitochondrial complex IV deficiency, nuclear-type' (and it should have the SURF1 gene association added).
Searching OMIM for 'leigh syndrome', of the entries I see (OMIM:220111, OMIM:500017, or OMIM:256000) I do not see any with a Phenotype to Gene association with SURF1.

@twhetzel is correct in that we currently take OMIM as an authority.
But I think this is a good example of where we could draw from other sources, particularly mitochondrial diseases; e.g the ClinGen mitochondrial disease expert panel regards SURF1<->Leigh as "definitive"
https://search.clinicalgenome.org/kb/genes/HGNC:11474
Biologically, SURF1 is an assembly factor for complex IV so it's likely to present similarly. I think we need to refactor the mitochondrial complex diseases. Some of this is in progress, see #7438


incorrect import module

in
from azureml.train.automl.automl_explain_utilities import AutoMLExplainerSetupClass, automl_setup_model_explanations
...
'azureml.train.automl.automl_explain_utilities' should be 'azureml.train.automl.runtime.automl_explain_utilities'

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

ID: 8aec7bd5-0f42-7a2b-31bc-331fddc49e7a
Version Independent ID: e851a806-59b5-c716-4e5b-cc7d421104a4
Content: Model interpretability in automated machine learning - Azure Machine Learning
Content Source: articles/machine-learning/how-to-machine-learning-interpretability-automl.md
Service: machine-learning
Sub-service: core
GitHub Login: @mesameki
Microsoft Alias: mesameki

@robert4os Thanks for the question. We are investigating the issue and will update you shortly.

@robert4os PR raised for this, We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Do not override custom themes when installing a update

whenever I update lounge I need to upload my custom theme again, which I feel is unnecessary.  would it be possible to not delete custom themes?

Do you mean in client/themes/ folder or the custom css box?

the themes folder.

npm would be doing that, I'm not sure we can fix it easily. The proper way would be to have a themes/ folder in the users' config folder so that it's outside the installation.

FYI I attempted this in https://github.com/thelounge/lounge/tree/astorije/themes-path but then gave up as it was harder than I thought. I'll probably get back to this someday but until then, you're kinda stuck... (unless there is a way to tell npm to keep unknown files around but I don't think that's possible)

@astorije Can you remember what the issue was with that branch?

Mostly, themes existing in 2 places makes it not obvious to select a theme from the UI. First step is to figure out a correct organization. Does that make sense?
EDIT: Actually, it surely does because I just saw #1228. It's a bit too late for me to get involved in it right now, but I will definitely share my thoughts there (unless we share the same ones, which is not impossible!) and get back to you.

I have edited the name of this to make it more clear how we are going to come out of it. We have a PR up, #1266, for allowing themes via npm, which is nearing completion, and this issue will be closed when that happens.

So how would this play out if your using the provided docker image? @YaManicKill

This is resolved by #1266 🎉


wireframe to Usage scenarios or usage instructions to Api details page

#1387

Feedback from Ilya:
1387, here we can do smth like step by step instructions for developers, or just list all available things to copy with description text
now we have base url to copy, also we can include api key to copy
and give couple code examples for developers
but if you are the developer, there is no need to explain this things
we just need to make sure that they can find this information easily
one last idea
to have button
Test call
that will open a new tab
with base url and api key (if needed)


Removing keys from the smart contract

We don't have any function to update on the smart contract which keys have been used. Since we take the last item and don't erase it, we always get the same key back
I suppose this function should remove element before send it: https://github.com/vacp2p/de-mls/blob/62f15d2381eaf60875753b16c2bba9a6990a5d85/contracts/src/ScKeystore.sol#L52

Don't store key anymore


Throughput Limits of a single node cluster

Environment

VerneMQ Version:1.1.0
OS: Debian Jessie

Hardware
The benchmark was made between 2 AWS instances and our broker was installed on a M4.XLARGE machine.
Expected behavior
We're thinking about using VerneMQ to reach a high number of connected devices publishing data to a MQTT broker. Our goal is to scale more than 10 000 devices and reading your documentation, VerneMQ seems promising and can help us.
In our use case, a device has a throughput of 100 / sec with a payload size of 1.3 KB.
So, we did a little benchmark using mqtt-bench  allowing to simulate a high level of devices publishing data on our broker. We are running this tool like this :
mqtt-bench -action="pub" -qos=1 -topic="foo" -clients=300  -count=10000 -size=1322 -intervaltime=50
We defined a cluster of 1 node with a single consumer. What we expect from the benchmark is to reach a high throughput for a single node and then to define a cluster with a number of nodes matching our expectations.
Actual behaviour
First we run the benchmark with 300 concurrent devices publishing data during few minutes. The reached throughput was 3000 msg / seconds without lost. For us, it represents 30 devices publishing on a single broker.
Using this tool with 600 clients, we met issues  : using the vmq-admin metrics, we  see that we have dropped messages.We change three settings in order to fix dropped message but nothing changed :
max_online_messages=1000000
allow_multiple_sessions = on
queue_deliver_mode = balance
Putting several consumers didn't change the dropped messages.
So we have some interrogations about VerneMQ :

Did we change the good options to reach a better throughput than 3000 msg / sec ?
Is 3000 msg / sec the limit of a cluster composed by one node ?

Please include minimal steps to reproduce the issue, if possible.

Install the vernemq on the same OS and the machine described at top of this messages.
Download mqtt-bench : [https://github.com/takanorig/mqtt-bench]
Run the same line command that in the message.
Check every seconds metrics using vmq-admin.

Many thanks,
Alifirat.

Have you restarted the node after changing the max_online_messages. This should help against the dropped messages.
As you're using qos1 please keep in mind that every message hits our LevelDB backed message store.

Hi @alifirat thanks for your questions!
You will scale to more than 10k connections without any problems. You will not scale to 10k * 100 msg/s = 1M msg/s fan-in on a single M4.XLARGE , and certainly not with QoS 1 (what @dergraf just said)
A single consumer will not sustainably consume this throughput. Also keep in mind that max_online_messages will really use RAM with a lot of clients (do the math!)
You probably need to address 2 things: the 100msg/s (batching?) and the single consumer idea.

Hi guys, thanks for your quick responses !
@dergraf
I changed the configuration in /etc/vernemq/vernemq.conf and then restart the service. To be sure that I have the good value for max_online_messages, I show the value using vmq-admin tool and it's the good one.
@ioolkos
There is two things that I cannot change :

100 msg / sec
Qos : must be 1 because I want to be sure to receive the message at least once. I can have duplicates but not really a problem.

Before to run the benchmarks, I knew that I cannot load 10K publishing data on a single node. It's the benchmark idea : how many msg / second a single node can support.
 But l still have the issue. And my question comes here : how did you decide to drop a message ? I put a high value for the max_online_messages, I' m publishing less than this value but I got dropped messages. How can it be possible ?

This can be because your consumers can't keep up or because the VerneMQ internal process distributing msgs to your consumers can't keep up and therefore the messages pile up and when hitting the configured limit it has to start dropping messages.
In any case you may wanna look into using shared subscriptions as an alternative to allow_multiple_sessions, see http://vernemq.com/docs/configuration/shared_subscriptions.html.

@alifirat's question is this: if I basically set max_online_messages to unlimited, why do I still see dropped messages? shouldn't I run out of memory first (due to the filling of the online queue)?

Yes @ioolkos, I'm expecting a such behaviour in the case I hit memory limits. Without errors or warns, it gives the impression messages must not be dropped.
@larshesel, The thing is that in the 2nd load test, I'm sending exactly 600 000 msg which is less than the max_online_messages (equals to 1 million) so how can I hit this limit in this scenario ? I will have a look to shared subscriptions.

The VMQ queue is a complex state machine, but you are correct that max_online_messages basically define when a session starts dropping messages.
As you test for dropped messages with vmq-admin metrics show, please make sure that the dropped counter actually goes up. If not, you don't have actual messages dropping. It's a counter, not a gauge or average per second or sth similar.

We are sure that the dropped counter goes up.
When we sum the metrics queue_messages_dropped and queue_message_out, it equals to the metric queue_message_in value. So for us, we're receiving all the packets from the benchmark but got the wrong result.

OK, thanks.
I just tried to install mqtt-bench, but weirdly enough it always asks me for a password I don't have. (go get github.com/takanorig/mqtt-bench)

We didn't fetch the project using go get ...  but download the binary to use mqtt-bench.  Can you try like this ?

Quickly tried it. This kinda works for me, although I find testing this way cumbersome.
What client library do you use to subscribe? to what topic do you subscribe? do you always start with a fresh VerneMQ? if not, try starting completely fresh by removing the /var/lib/vernemq/data/*. Caution: this will delete all messages and data from the broker.

In my vernemq version, the data seems to be located in var/lib/vernemq/msgstore/. I should flush this one ?

Jep, sorry. I'd delete or rename 'meta' and 'msgstore' there.

Hi,
I started from a fresh installation of verneMQ and I did not have

Hi,
I tried with a new fresh installation of verneMQ and I think that I found why we saw dropped_messages. We did the following mistake in our benchmark : between two tests, we reset the metrics and it gives us the impression that the queue was empty. But as the command indicated, it reset only the metrics.
Sorry, I closed the issue by mistake.

Thank you guys for the support. I will continue my benchmarks.
Juste a quick question : restarting vernemq is enough to flush data from the queue ?

Glad to hear you got a step further! :)
For persistent session state (like QoS 1 msgs) re-starting is not enough, as the broker will rebuild and re-fill the queues. (it has to, as it has guaranteed the persistency).
So, the best way to have empty queues is to consume them... :)

I think this issue was resolved. Closing.


Are you subject to GDPR/CPRA if you store peer ids?

Hi guys, I am using orbit-db for a little project  and store all peer ids in a public database. I am wondering how do you treat peer ids legally given that they are public and visible in IPFS Desktop already.

I think that this issue must be addressed by the policy maker to some extent for, at the moment, the law is very confusing and unfriendly to distributed apps.
To me it seems that by participating to a public network any user implicitly accepts the idea of sharing his/her peerId with the public network.
Maybe one possible solution is to formalize this implicit agreement into a TOS the end user agrees with when using the appication.

Thank you @LucaPanofsky. Let's keep the discussion open in hope of some official position by Berty as well since they already have their TOS and Privacy policy in place. I think we have to split the topic into two logical sections - one is the public network itself(IPFS) and then the persistence layer(orbit-db). When it comes to the network your advice seems very logical. When it comes to orbit itself I think it's the developer's responsibility to protect the data the best way possible. For now I will take your advice and also store only portions of the peer id encrypted in orbit-db to protect at least what goes through my app.

https://discuss.ipfs.tech/t/ipfs-and-gdpr-cpra-compliance/13978.
Without becoming too political, the problem with these laws is that they quickly become out-dated because they are unable to keep up with technological advances. Hence, the confusion.


Use Docker Hub for testcontainers' Ryuk

quay.io is less reliable. Also, since other images depend on Docker
Hub, using single service for the resource reaper image reduces
dependencies on external world.
Fixes https://github.com/prestosql/presto/issues/2598

ac


Docker Doesn't work and just crashes.

Is there an alternative way to use your randomizer; maybe you could have a nightbot build windows version?

You can use the web generator: https://ootmm.com


*.opus exception: Not seekable

Hello,
thank you for your work.
If i cast my *.opus files i get the exception: exception: Not seekable
Is this normal for opus files or are my files the problem?

Hello, I have probably never streamed an opus file. Can you share one with me? I might try anyway by converting one of my files to opus.
Is the file coming from a library or streamed somehow from some upnp server? Can you describe the scenario?

Actually I reproduced your issue by simply adding an opus file which I created using SoundConverter. I am stream from a Lightweight Music Server instance through the subsonic plugin for upmpdcli, and yes, the opus file is not seekable, while the source flac file is perfectly seekable. I'll try to see what is going on and report back...

@GioF71 thank you very much.
My setup is that i use symfonium with the option "Proxy via Symfonium" enabled.
I have tried to follow these docker compose file: https://github.com/GioF71/audio-tools/blob/main/players/upnp-renderer/upnp-renderer-simple/docker-compose.yaml
My changed setup files:

docker-compose.yaml
---
version: '3.3'

volumes:
  mpd-db:
  upmpdcli-cache:
  upmpdcli-confdir:

services:
  mpd:
    image: ${MPD_IMAGE_REGISTRY:-docker.io}/giof71/mpd-alsa:${MPD_TAG:-vanilla}
    network_mode: host
    devices:
      - /dev/snd:/dev/snd
    environment:
      - MPD_BIND_ADDRESS=${MPD_BIND_ADDRESS:-<IP_ADDRESS>}
      - MPD_PORT=${MPD_PORT:-6600}
      - USER_MODE=${MPD_USER_MODE:-N}
      - PUID=${MPD_PUID:-}
      - PGID=${MPD_PGID:-}
      - AUDIO_GID=${MPD_AUDIO_GID:-}
      - ALSA_OUTPUT_CREATE=yes
      - ALSA_OUTPUT_ENABLED=yes
      - ALSA_OUTPUT_DEVICE=${MPD_ALSA_DEVICE:-default}
      - ALSA_OUTPUT_MIXER_TYPE=${MPD_MIXER_TYPE:-software}
      - ALSA_OUTPUT_FORMAT=${MPD_ALSA_OUTPUT_FORMAT:-}
    volumes:
      - mpd-db:/db
    restart: ${RESTART_MODE:-unless-stopped}

  upmpdcli:
    image: ${UPMPDCLI_IMAGE_REGISTRY:-docker.io}/giof71/upmpdcli:${UPMPDCLI_TAG:-latest-renderer}
    network_mode: host
    environment:
      - PUID=${UPMPDCLI_PUID:-}
      - PGID=${UPMPDCLI_PGID:-}
      - MPD_HOST=${MPD_HOST:-<IP_ADDRESS>}
      - MPD_PORT=${MPD_PORT:-6600}
      - FRIENDLY_NAME=${FRIENDLY_NAME:-UpnpRenderer}
      - RENDERER_MODE=${RENDERER_MODE:-BOTH}
      - CHECK_CONTENT_FORMAT=${CHECK_CONTENT_FORMAT:-yes}
    volumes:
      - upmpdcli-confdir:/uprcl/confdir
      - upmpdcli-cache:/cache
    restart: ${RESTART_MODE:-unless-stopped}

sample.env
COMPOSE_PROJECT_NAME=upnp-renderer-simple

# Restart mode
RESTART_MODE=unless-stopped

# Specify you cache registries for each component
# MPD_IMAGE_REGISTRY=docker.io
# UPMPDCLI_IMAGE_REGISTRY=docker.io

# MPD_TAG=vanilla

# MPD runs app as root by default
# MPD_USER_MODE=N

# Optionally set uid/gid for mpd
# Used if MPD_USER_MODE is set to Y
# Group id for audio is generally 29 on ubuntu/debian distros
# MPD_PUID=1000
# MPD_PGID=1000
# MPD_AUDIO_GID=29

MPD_BIND_ADDRESS=<IP_ADDRESS>

MPD_HOST=<IP_ADDRESS>

MPD_PORT=6600

# MPD_ALSA_DEVICE examples:
#   hw:0
#   hw:1
#   hw:DAC
#   hw:D10
MPD_ALSA_DEVICE=default

MPD_MIXER_TYPE=software

# Uncomment for special settings
# MPD_ALSA_OUTPUT_FORMAT=

# Optionally set uid/gid for upmpdcli
# UPMPDCLI_PUID=1000
# UPMPDCLI_PGID=1000

FRIENDLY_NAME=UpnpRenderer5

# RENDERER_MODE values:
#   BOTH
#   UPNPAV
#   OPENHOME
RENDERER_MODE=BOTH

Which subserver server are you using? Navidrome, Lightweight Music Server... ?

I tried to stream the opus file from a webdav server and there is the same issue, no seeking.
Playing with Elisa (Kde music player) from the local file expose no issue.
I just tried to stream the same opus file using vlc, and I have to say it seeks, but compared to a flac file, it's a lot less accurate. You seek a position in the slider vlc, and the playback starts from some moments before that point on the slider. This does not happen when streaming the flac file from the same webdav server.
There is this issue which seems relevant, but things might be different when using curl input and not local files.
I still have to try with mpd and local files.

Have you created a .env file based on the sample.env file? The sample.env file is there as a reference, it is not loaded by default by the docker-compose file!

Which subsonic server are you using? Navidrome, Lightweight Music Server... ?

I use Webdav and have all the files downloaded to my phone. I think the file gets streamed from my phone not from a server in the logs i can see:
player: played "http://<IP_ADDRESS>:40881/8f4052bd2e92......opus"

exception: Not seekable

(I deleted part of the url as it is a local request i think i gets the file from my smartphone not from a server,)

Have you created a .env file based on the sample.env file?

I have used portainer created a new stack where i pasted docker-compose.yaml and uploaded the sample.env file.

I have found more about opus seeking accuracy issue.
I will try to see if gmrender-resurrect works better, tomorrow if I have a few moments available.
Is Opus mandatory for you? Isn't ogg/vorbis a viable alternative?

I use https://github.com/StefanLobbenmeier/youtube-dl-gui to download the audio from youtube.
I understand it like this opus is the best youtube offers and everything else isn't as good. As i would like to build my library for the future i would like to make it "future proof".
Before that i used https://github.com/sylviiu/ezytdl and downloaded my files as *.m4a but a lot of these files can't be played because they throw an ffmpeg error which can be fixed with ffmpeg -i input.m4a -c copy -movflags +faststart output.m4a as i don't want to write a script which fixes all the old files i would just download them all as opus. Now opus has the seek problem which is better than not playing the *.m4a file that's why i am using opus.

Understood!
I just tried gmrender-resurrect with my docker container here and although it's slower than with other file types, at least if works (seeks!) without errors. I think the sluggishness is due to the opus internal architecture, see here for some considerations.
Let me know if you need help configuring gmrender-resurrect with docker. I don't use it as often as I do with mpd/upmpdcli but it should work in your scenario.

I am a noob with docker and i am lucky it works so help is appreciated.

I misunderstood what gmrender-resurrect-docker is i thought i have to combine it with mpd-alsa-docker but it looks like it just works standalone. I used your example to deploy it.
I can now see the progress of the track in symfonium but not "jump" in the track. (e.g. speed forward 1 min.)
With mpd-alsa-docker i couldn't see the progress of the track and not jump (So it is an improvement).


The explanations of what odd and even in jQuery are ok, but they don't make clear sense according with what is asked of a learner to do in this challenge

The explanations of what odd and even in jQuery are ok, but they don't make clear sense according with what is asked of a learner to do in this challenge. There's something not clear about this whole thing. It's confusing.
Challenge Target Even Numbered Elements Using jQuery has an issue.
User Agent is: Mozilla/5.0 (iPad; CPU OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G34 Safari/601.1.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:

jQuery Playground

#left-well

        <button class="btn btn-default target" id="target1">#target1</button>
        <button class="btn btn-default target" id="target2">#target2</button>
        <button class="btn btn-default target" id="target3">#target3</button>

#right-well

        <button class="btn btn-default target" id="target4">#target4</button>
        <button class="btn btn-default target" id="target5">#target5</button>
        <button class="btn btn-default target" id="target6">#target6</button>

@marienhof thanks for the feedback. The instructions for what to do are

Try selecting all the even-numbered elements and giving them the classes of animated and shake.

Is this instruction unclear in any way? If so, can you let us know how we can reword it or let us know how it is unclear? Thanks!

"You should use the :even function to modify these elements"
But.. Mathematically even is jQuery odd and vice versa, isn't it?

@marienhof ah I see the confusion. The note

Note that jQuery is zero-indexed, meaning that, counter-intuitively, :odd selects the second element, fourth element, and so on.

is included so that if you run the code using :odd, you'll see that the even elements are selected, if you start with a 1-index. So that chuck of text was included to clarify any confusion, if any. But I guess it may have introduced more confusion.
There should be some clarification with the last sentence then so that it could read

Try selecting all the even-numbered elements and giving them the classes of animated and shake. Even-numbered is defined here with a zero-index in mind.

@FreeCodeCamp/issue-moderators

Totally!


JavaScript

JavaScript
User Story
As a bootcamp student,
I want the prework notes to be structured on a webpage,
so that I can easily find and read the information.
Acceptance Criteria
GIVEN a Prework Study Guide website,
WHEN I view the study guide,
THEN I can see the four topics I learned listed along with a suggestion on what I should study first.

Learn from this website
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics

U find this website helpful


[Question] How can I get the body of error response in onError?

I'm trying to use nucleus and retrofit together. But I can't get the body of a http error response. onError callback only expose a Throwable object. Do I have to customize the RxPresenter of nucleus library?

Affter searching, I've found the solution:
new Action2<CategoryDetailFragment, Throwable>() {             @Override             public void call(CategoryDetailFragment categoryDetailFragment, Throwable throwable) {                 if (throwable instanceof HttpException) {                     ResponseBody body = ((HttpException) throwable).response().errorBody();                 }             }         }


Support matching German headers

https://github.com/hellogustav/elixir_email_reply_parser/commit/5b7e15775291f1a3a474007ee0747e92402a6305#commitcomment-21518252
For this step of localization support only for hardcoded German texts

[x] email texts with German strings for tests
[x] tests using email texts with German strings
[x] implementation

Commits:
https://github.com/hellogustav/elixir_email_reply_parser/commit/48cf048a2c4c9bfb8d70a132bc7930e562953e97
https://github.com/hellogustav/elixir_email_reply_parser/commit/4089bde1366e9a1fae83700a415d797cdaf98c5e
https://github.com/hellogustav/elixir_email_reply_parser/commit/edf8342ba60372303871ebdbb9f2986225ecb5c1
etc.

Done.
Closing


How to use

I'm struggling with the README. I don't know how to use this amazing tool. Could you please write me a detailed tutorial?

Hello,
I recommend to take a look to this repo: https://github.com/mmatur/structor-sample

I don't have the time to create a detailed tutorial, but I improved the documentation:

https://github.com/containous/structor#prerequisites
https://github.com/containous/structor#description

Give me some feedback if it's better or not.
As "workaround", you can try and ask questions, and maybe you will write the first detailed tutorial of Structor :smiley:

Thanks for your kind reply. I'll try your example and feedback with a doc if possible. Actually, I'm kinda confusing if this is a software or an environment. I don't know how to install.

It's a software, you can download it from GitHub:

https://github.com/containous/structor/releases

There is a CI integration example here:

https://github.com/containous/structor#download--ci-integration

I downloaded the structor_v1.10.0_darwin_amd64.tar.gz version and unzipped it but my mac reminds me zsh: command not found: structor.

Either you have to add the binary to your PATH or run the binaries "in place" ./structor.

add the binary to your PATH, did you mean this?
sudo curl -sfL https://raw.githubusercontent.com/containous/structor/master/godownloader.sh | bash -s -- -b /usr/local/go/bin v1.10.0
Password:
containous/structor info checking GitHub for tag 'v1.10.0'
containous/structor info found version: 1.10.0 for v1.10.0/darwin/amd64

but still nothing happens
structor help
zsh: command not found: structor

PATH is an environment variables: https://en.wikipedia.org/wiki/Environment_variable#True_environment_variables
The command that you executed require that /usr/local/go/bin  be defined in your PATH


unalias+delete-v2 -- Bash 3 support

The latest commit in this branch shows the difference between the last version that required Bash 4, and the changes that were needed to make it work for Bash 3.

+1


Clarification on Page blobs in GPv2 Access Tiers

While this doc is clear that page blobs cannot be added to a blob storage account, it is not defined what happens if you put a page blob into a General Purpose V2 account with access tiers. In the examples given in this doc, only the word "blob" is used which is ambiguous.
By experience I can confirm that it is possible (the page blob will be stored, with an access tier of "cool -inferred") but I have confusion on whether the page blob is being charged at Cool tier pricing due to it's blob type. I've also seen that you cannot manually modify the access tier on a page blob like you can with a block blob (to put it to archive for example).

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

ID: 06288d35-3c83-c29d-95d8-a56823d910a3
Version Independent ID: 002fb5f5-5e4a-a95a-4564-2c399bcb5e06
Content: Azure Storage account options
Content Source: articles/storage/common/storage-account-options.md
Service: storage
GitHub Login: @hux
Microsoft Alias: hux

@jeffwmiles Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@Adam-Smith-MSFT I suspect you assigned this to the wrong person. I did not write this one.

Sorry, I assigned it to hux@

Hi @jeffwmiles,
Thank you for letting me know that the PageBlob wording is ambiguous. A page blob will infer the AccessTier of the Account but cannot be tiered and does not have separate pricing tiers: Azure Storage Page Blob Pricing.
I will modify the documentation to ensure that this is made clearer.

@Adam-Smith-MSFT resolved


ingress: Delete/recreate ingress client cert on rotate vs update with a feature flag

This GitHub Issue is to introduce a new feature flag, which when enabled, will change the way the Ingress client cert is rotated.
This is needed as a workaround for the following NGINX Ingress Controller bug:  https://github.com/kubernetes/ingress-nginx/issues/5608
The goal to create a new flag in MeshConfig:
spec:
  certificate:
    certKeyBitSize: 2048
    ingressGateway:
      secret:
        name: osm-nginx-client-cert
        namespace: ingress-nginx
        recreateOnRotate: true ############## NEW KEY ##############
      subjectAltNames:
      - ingress-nginx.ingress.cluster.local
      validityDuration: 11m
    serviceCertValidityDuration: 1m

When the key spec.ingressGateway.secret.recreateOnRotate is enabled - OSM Controller should not just Update but Delete and reCreate the k8s secret with the TLS certificate.
Currently the update of the cert on rotate is done here:

On announcements.CertificateRotated event this function updates the cert: https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L188
OSM then issues a new cert: https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L69
Then stores it in the k8s secret: https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L75
This operation is an Update on the existing certificate: https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L101

The goal of this task is to introduce a flag, which when enabled, will change the behavior of https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L101
and will introduce a DELETE above this line: https://github.com/openservicemesh/osm/blob/98aef6dd0e464ae19819210085e6f24f99c5efae/pkg/ingress/gateway.go#L98-L99
So:
        // NEW
        if meshConfig.Spec.Certificate.IngressGateway.Secret.RecreateOnRotate {
                c.kubeClient.CoreV1().Secrets(secret.Namespace).Delete(context.Background(), sec.Name, metav1.DeleteOptions{})
        }

       // EXISTING
	_, err := c.kubeClient.CoreV1().Secrets(secret.Namespace).Create(context.Background(), sec, metav1.CreateOptions{})
	if apierrors.IsAlreadyExists(err) {
		_, err = c.kubeClient.CoreV1().Secrets(secret.Namespace).Update(context.Background(), sec, metav1.UpdateOptions{})
	}

Why is this needed?
While testing OSM with NGINX ingress controller we discovered a case in which NGINX stops refreshing the mTLS certificate issued and saved in a k8s cert by OSM Controller.
How this works
OSM is told to generate a certificate for the mTLS ingress with:
kubectl patch MeshConfig \
  osm-mesh-config \
  --namespace $OSM_NAMESPACE \
  --patch '{"spec":{"certificate":{"ingressGateway":{"subjectAltNames":["ingress-nginx.ingress-nginx.cluster.local"], "validityDuration":"24h", "secret":{"name":"osm-ingress-mtls","namespace":"ingress-nginx"}}}}}' \
  --type=merge

This will cause OSM to create a secret in namespace ingress-nginx called osm-ingress-mtls.
Once NGINX is installed and Ingress is configured with:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: bookstore
  namespace: bookstore
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    # proxy_ssl_name for a service is of the form <service-account>.<namespace>.cluster.local
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_ssl_name "bookstore.bookstore.cluster.local";
    nginx.ingress.kubernetes.io/proxy-ssl-secret: "ingress-nginx/osm-ingress-mtls"
    nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"

NGINX will start reading the cert from ingress-nginx/osm-ingress-mtls
We notice however that NGINX does not always refresh the cert it stores in cache, even though OSM updates the cert with a newly rotated one. This causes "certificate expired" errors on the NGINX Ingress Controller pod and 503 errors on the clients connecting to NGINX.
A consistent way to fix this has been:
FN=osm-nginx-client-cert.temp.crt
kubectl get secrets -n ingress-nginx osm-nginx-client-cert -o yaml > $FN
kubectl delete secrets -n ingress-nginx osm-nginx-client-cert
kubectl apply -f $FN

See related issue filed for Nginx Ingress Controller:  https://github.com/kubernetes/ingress-nginx/issues/5608

Another observation, which may mean that this workaround (described in the GitHub Issue) is not appropriate:
When the secret is deleted and recreated -- NGINX does not deal well with it -- results in 503s:
NGINX Logs:
<IP_ADDRESS> - - [10/Dec/2021:02:14:13 +0000] "HEAD / HTTP/2.0" 200 0 "-" "curl/7.58.0" 31 0.006 [certtest-app07-8080] [] <IP_ADDRESS>:8080 0 0.004 200 854f79ba9c3ff06240f99a5f1a1ab569
I1210 02:14:14.017030       8 store.go:639] "secret was deleted and it is used in ingress annotations. Parsing" secret="ingress-nginx/osm-nginx-client-cert"
W1210 02:14:14.017157       8 backend_ssl.go:46] Error obtaining X.509 certificate: no object matching key "ingress-nginx/osm-nginx-client-cert" in local store
E1210 02:14:14.017192       8 annotations.go:203] "error reading Ingress annotation" err="error obtaining certificate: local SSL certificate ingress-nginx/osm-nginx-client-cert was not found" name="ProxySSL" ingress="certtest/my-ingress"
I1210 02:14:14.017439       8 controller.go:155] "Configuration changes detected, backend reload required"
I1210 02:14:14.095357       8 controller.go:172] "Backend successfully reloaded"
I1210 02:14:14.097670       8 event.go:282] Event(v1.ObjectReference{Kind:"Pod", Namespace:"ingress-nginx", Name:"ingress-nginx-controller-784d6485d6-jwzs9", UID:"d3847f7e-e8ae-40ca-bdda-56f67928ee51", APIVersion:"v1", ResourceVersion:"4298916", FieldPath:""}): type: 'Normal' reason: 'RELOAD' NGINX reload triggered due to a change in configuration
<IP_ADDRESS> - - [10/Dec/2021:02:14:14 +0000] "HEAD / HTTP/2.0" 200 0 "-" "curl/7.58.0" 31 0.015 [certtest-app07-8080] [] <IP_ADDRESS>:8080 0 0.012 200 9eba1c13a16f540d62d9f80c0d2ee463
<IP_ADDRESS> - - [10/Dec/2021:02:14:14 +0000] "HEAD / HTTP/2.0" 503 0 "-" "curl/7.58.0" 31 0.000 [certtest-app07-8080] [] - - - - 830f5fa337ed6e40aa7498d82563dd43
<IP_ADDRESS> - - [10/Dec/2021:02:14:15 +0000] "HEAD / HTTP/2.0" 503 0 "-" "curl/7.58.0" 31 0.000 [certtest-app07-8080] [] - - - - b7e10151d6b9b3ec116d3619280490d1
I1210 02:14:16.165910       8 store.go:566] "Secret was added and it is used in ingress annotations. Parsing" secret="ingress-nginx/osm-nginx-client-cert"
I1210 02:14:16.167867       8 backend_ssl.go:66] "Adding secret to local store" name="ingress-nginx/osm-nginx-client-cert"
<IP_ADDRESS> - - [10/Dec/2021:02:14:16 +0000] "HEAD / HTTP/2.0" 503 0 "-" "curl/7.58.0" 31 0.000 [certtest-app07-8080] [] - - - - 7120606b6823ef40baaab8cb96c15355
<IP_ADDRESS> - - [10/Dec/2021:02:14:16 +0000] "HEAD / HTTP/2.0" 503 0 "-" "curl/7.58.0" 31 0.000 [certtest-app07-8080] [] - - - - 28cdbe8e634431dcf5f96799f7efd3a3
I1210 02:14:17.351203       8 controller.go:155] "Configuration changes detected, backend reload required"
I1210 02:14:17.429302       8 controller.go:172] "Backend successfully reloaded"
I1210 02:14:17.430141       8 event.go:282] Event(v1.ObjectReference{Kind:"Pod", Namespace:"ingress-nginx", Name:"ingress-nginx-controller-784d6485d6-jwzs9", UID:"d3847f7e-e8ae-40ca-bdda-56f67928ee51", APIVersion:"v1", ResourceVersion:"4298916", FieldPath:""}): type: 'Normal' reason: 'RELOAD' NGINX reload triggered due to a change in configuration
<IP_ADDRESS> - - [10/Dec/2021:02:14:17 +0000] "HEAD / HTTP/2.0" 503 0 "-" "curl/7.58.0" 31 0.000 [certtest-app07-8080] [] - - - - 6e5eb6711eea1652a6d5712c3d69f7ae
<IP_ADDRESS> - - [10/Dec/2021:02:14:18 +0000] "HEAD / HTTP/2.0" 200 0 "-" "curl/7.58.0" 31 0.010 [certtest-app07-8080] [] <IP_ADDRESS>:8080 0 0.008 200 f28caec2836411f6eb250e663aba09a2

Updated the NGINX Ingress Controller GitHub Issue with more context on how to quickly repro this bug:  https://github.com/kubernetes/ingress-nginx/issues/5608#issuecomment-990567681

Our team is running into the exact same issue with OSM + nginx right now.  Thanks @draychev for opening this suggestion.  We're monitoring both the upstream nginx response and the OSM response here to see which direction we should go.
cc: @magrande

Is this not resolved now in https://github.com/kubernetes/ingress-nginx/issues/5608 ?

@draychev, @ckittel  Is this not resolved now in https://github.com/kubernetes/ingress-nginx/issues/5608 ?

I assume so, but I haven't tested yet. Maybe someone else has?

I've verified that this is resolved with https://github.com/kubernetes/ingress-nginx/issues/5608


Build on Windows?

Hi,
this Privatebin CLI is exactly what I was looking for, thanks! Is it possible to build a Windows binary? As far as I can see, the Makefile is made for Linux only?
I tried
GOOS=windows GOARCH=amd64 go build -ldflags "-X 'gearno.de/privatebin/internal/version.Version=1.4.0'" -o bin/privatebin.exe cmd/privatebin/main.go
But it fails with
~/privatebin$ GOOS=windows GOARCH=amd64 go build -ldflags "-X 'gearno.de/privatebin/internal/version.Version=1.4.0'" -o bin/privatebin.exe cmd/privatebin/main.go
cmd/privatebin/main.go:29:2: cannot find package "gearno.de/privatebin" in any of:
        /usr/lib/go-1.10/src/gearno.de/privatebin (from $GOROOT)
        /home/markus/go/src/gearno.de/privatebin (from $GOPATH)
cmd/privatebin/main.go:30:2: cannot find package "gearno.de/privatebin/internal/version" in any of:
        /usr/lib/go-1.10/src/gearno.de/privatebin/internal/version (from $GOROOT)
        /home/markus/go/src/gearno.de/privatebin/internal/version (from $GOPATH)

Update:
Probably there is a problem with an outdated certificate when trying to download a dependency?
go get gearno.de/privatebin/internal/version
package gearno.de/privatebin/internal/version: unrecognized import path "gearno.de/privatebin/internal/version" (https fetch: Get https://gearno.de/privatebin/internal/version?go-get=1: x509: certificate has expired or is not yet valid)

Regards,
Markus

Hello,
Go to the \cmd\privatebin sub-directory
Run the command:
go build -o privatebin_1.4.exe main.go
Then you can run the program:
privatebin_1.4.exe --help
The output is
  -attachment
        create the paste as an attachment
  -bin string
        the privatebin name to use
  -burn-after-reading
        delete the paste after reading
  -cfg-file string
        the path of the configuration file (default "~/.config/privatebin/config.json")
  -expire string
        the time to live of the paste
  -filename string
        read filepath instead of stdin
  -formatter string
        the text formatter to use, can be plaintext, markdown or syntaxhighlighting
  -gzip
        gzip the paste data (default true)
  -help
        shows this help message
  -open-discussion
        enable discussion on the paste
  -password string
        the paste password
  -version
        prints the privatebin cli version```

Hi @MetaSeb , thanks a lot and sorry for my lack of knowledge!

Since 2.x series, you can directly download the prebuilt binary.


Non-deterministic results on different platforms

In the generate_hierarchical_codebook_threaded function, an std::unordered_map is used for counting unique training vectors.
https://github.com/BinomialLLC/basis_universal/blob/600232075851c2fa6bd23f7180434aca7814c93a/basisu_enc.h#L1598-L1608
Iteration over the unordered map is implementation-dependent, so this code builds group_quant differently on MSVC and GCC/Clang.
https://github.com/BinomialLLC/basis_universal/blob/600232075851c2fa6bd23f7180434aca7814c93a/basisu_enc.h#L1634-L1638
As a result, the encoder produces different selectors and codebooks on different platforms.
After switching group_hash to be an ordered map, files produced on different platforms are the same (likely with some performance cost):
diff --git a/basisu_enc.h b/basisu_enc.h
index 7d42121..7946c76 100644
--- a/basisu_enc.h
+++ b/basisu_enc.h
@@ -21,7 +21,7 @@
 #include <condition_variable>
 #include <functional>
 #include <thread>
-#include <unordered_map>
+#include <map>

 #ifndef _WIN32
 #include <libgen.h>
@@ -1602,8 +1602,7 @@ namespace basisu
 		uint32_t max_threads, job_pool *pJob_pool)
 	{
 		typedef bit_hasher<typename Quantizer::training_vec_type> training_vec_bit_hasher;
-		typedef std::unordered_map < typename Quantizer::training_vec_type, weighted_block_group,
-			training_vec_bit_hasher> group_hash;
+		typedef std::map < typename Quantizer::training_vec_type, weighted_block_group> group_hash;

 		group_hash unique_vecs;

Maybe, there is a better way to achieve deterministic results.

Based on a quick look you could try this:
Split the loop on line 1634 into two. The first one adds to unique_vec_iters, the second to read from it instead of unique_vecs and adds to group_quant. Then add std::sort of unique_vec_iters between them to make it deterministic. If all Quantizer don't care about order you could do with just one loop and sort after. I don't want to go looking through all the code to establish that.

Is unordered map + sort definitely faster than an ordered map?

Usually, in insert or lookup-heavy loads. In this case? I don't know. Try them and find out.

Okay, this is good work, thank you! I am finishing up the next milestone (ASTC, PVRTC alpha, etc.), and once it is done in 2-3 weeks I will work on this problem. I may just switch to my own fully deterministic containers.

Here, each key is a vector with 6 float components.
In the worst case, comparison
https://github.com/BinomialLLC/basis_universal/blob/600232075851c2fa6bd23f7180434aca7814c93a/basisu_enc.h#L112
and equality
https://github.com/BinomialLLC/basis_universal/blob/600232075851c2fa6bd23f7180434aca7814c93a/basisu_enc.h#L111
operators involve FP operations for all 6 components.
For the unordered map, a simple byte-based hasher is used:
https://github.com/BinomialLLC/basis_universal/blob/600232075851c2fa6bd23f7180434aca7814c93a/basisu_enc.h#L71-L80
Maybe, one more option is to use these hash values as comparison values for the ordered map to avoid FP operations.

Also note that I have not touched the encoder at all for this milestone, just the transcoders, so any work you do will be easily merged in.

I'm still getting non-deterministic results across systems with version 1.13 even though some custom containers have been added. All but one of my tests of ETC1S/BasisLZ encoding that pass on macOS fail on Windows and Linux. (I don't know if the Windows and Linux results are different from each other.) In one example the length of the compressed data is 1 byte less on Windows than macOS (47 vs. 48 bytes). The global dictionaries (selectors, endpoints, & tables) are the same size.
Curiously in the one case that succeeds on all platforms, the input file is a .pgm file. All the other files are .png. Also it only has one component.

even though some custom containers have been added

The root cause seems to be still in place:
https://github.com/BinomialLLC/basis_universal/blob/041ad47c27e0491a6d7cbffc84537461566ad02f/encoder/basisu_enc.h#L1843-L1846

We now have custom contains for vector and hash tables/sets. However, I believe there's still a std hash table in there in one place. Still leaving this up for more investigation.

However, I believe there's still a std hash table in there in one place. Still leaving this up for more investigation.

Yes there must be. I just ran the KTX-Software tests after integrating 1.16.3. ETC1S-encoded images on Windows and Linux are different from those on macOS. There were 2 fewer images different from macOS on Linux than on Windows so likely the Windows and Linux images are different from each other.


[ENH] add details for content of *_beh.json

Add more info and an example concerning for beh.tsv an beh.json
Related to this issue in the BIDS validator:
https://github.com/bids-standard/bids-validator/issues/1364

Thanks for this :+1:


swagger

I am running two spring boot microservices on two port 8081 8082 however when i try to access swagger.ui.html i can only access one

Swagger-ui runs on the same port as the micro service. Would you mind explaining how you're hosting it on 2 different ports?

Basically i have  two webservices running on localhost but on port 8081 and 8082 and in both services i have swaager configuration. However when i try to access http://localhost:8081/swagger-ui.html
Http://localhost:8082/swagher-ui.html
Only one is working .i.e i am able to see only api doc in swagger ui

You will see the API that is being hosted by the service. So there is one swagger ui for 8081 and one for 8082. And just because they are both swagger-ui they will not show all the APIs that are on you machine.