Failing to compile with Kotlin and Gradle KTS

Hi,
Thanks for creating this library. I was trying to test it locally and I am finding an issue when downloading the dependency. If you could please point me in the right direction it would be great. From what I understood Gradle is not finding the "jvm" variant of the lib.
Here is the error from Gradle:
Execution failed for task ':compileKotlin'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not resolve com.github.davidepianca98.KMQTT:KMQTT-linuxarm32hfp:0.2.3.
     Required by:
         project : > com.github.davidepianca98:KMQTT:0.2.3
      > No matching variant of com.github.davidepianca98.KMQTT:KMQTT-linuxarm32hfp:0.2.3 was found. The consumer was configured to find an API of a library compatible with Java 8, preferably in the form of class files, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
          - Variant 'linuxArm32Hfp-api' capability com.github.davidepianca98.KMQTT:KMQTT-linuxarm32hfp:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-api' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'native' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
          - Variant 'metadata-api' capability com.github.davidepianca98.KMQTT:KMQTT-linuxarm32hfp:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-metadata' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
          - Variant 'metadata-commonMainMetadataElements' capability com.github.davidepianca98.KMQTT:KMQTT-linuxarm32hfp:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-api' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
   > Could not resolve com.github.davidepianca98.KMQTT:KMQTT-linuxx64:0.2.3.
     Required by:
         project : > com.github.davidepianca98:KMQTT:0.2.3
      > No matching variant of com.github.davidepianca98.KMQTT:KMQTT-linuxx64:0.2.3 was found. The consumer was configured to find an API of a library compatible with Java 8, preferably in the form of class files, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
          - Variant 'linuxX64-api' capability com.github.davidepianca98.KMQTT:KMQTT-linuxx64:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-api' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'native' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
          - Variant 'metadata-api' capability com.github.davidepianca98.KMQTT:KMQTT-linuxx64:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-metadata' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
          - Variant 'metadata-commonMainMetadataElements' capability com.github.davidepianca98.KMQTT:KMQTT-linuxx64:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-api' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
   > Could not resolve com.github.davidepianca98.KMQTT:KMQTT-metadata:0.2.3.
     Required by:
         project : > com.github.davidepianca98:KMQTT:0.2.3
      > No matching variant of com.github.davidepianca98.KMQTT:KMQTT-metadata:0.2.3 was found. The consumer was configured to find an API of a library compatible with Java 8, preferably in the form of class files, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
          - Variant 'metadata-api' capability com.github.davidepianca98.KMQTT:KMQTT-metadata:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-metadata' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)
          - Variant 'metadata-commonMainMetadataElements' capability com.github.davidepianca98.KMQTT:KMQTT-metadata:0.2.3:
              - Incompatible because this component declares a usage of 'kotlin-api' of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'common' and the consumer needed an API of a component, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm'
              - Other compatible attributes:
                  - Doesn't say anything about its component category (required a library)
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them preferably in the form of class files)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

And here is the build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.4.31"
}

group = "com.myorg"
version = "1.0"

repositories {
    mavenCentral()
    jcenter()
    maven(url = "https://jitpack.io")
}

dependencies {
    implementation("com.github.davidepianca98:KMQTT:0.2.3")
    testImplementation(kotlin("test-junit5"))
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.0")
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile>() {
    kotlinOptions.jvmTarget = "1.8"
}

Hello, thank you for reporting the problem, I'm going to look into it as soon as possible

Hello, apparently JitPack changed the way they publish Kotlin Multiplatform libraries. So for now as I assume you want to use the JVM version you can use implementation("com.github.davidepianca98.KMQTT:KMQTT-jvm:0.2.5") to get it. But I will investigate further why the automatic multiplatform download doesn't work and how to fix it.

Thanks for the quick reply! It seems to work now!
Thanks for creating the lib as well.

The readme now has the updated info regarding downloading the library for a single platform as a Gradle dependency


Using classnames-loader

Hi, I'm trying to use classnames-loader as a webpack config but it doesn't seem to be working and I'm not sure why.
config.module.rules.push({ 			test: /\.scss$/, 			use: [ 				'classnames-loader', 				'style-loader', 				'css-loader?modules=1&sourceMap&importLoaders=1', 				'postcss-loader', 				'sass-loader?outputStyle=expanded' 			] 		});
Does anyone have any insight on this? Huge thanks!

Hey @guntherkoo
Any chance you came up with a fix at the end?

Hi @jeremybarbet , yes I have. This snippet of code solved the issue I was running into and am able to use classnames-loader properly.
const sass = {   cssModules: true,   cssLoaderOptions: {     importLoaders: 1,     localIdentName: '[name]-[local]-[hash:base64:5]',   },   webpack: config => {     config.module.rules.unshift({       test: /\.scss$/,       use: ['classnames-loader'],     });     return config;   }, };
Let me know if this works for you.

I have one issue: Cannot find module '!../../../../../node_modules/classnames/bind.js'
We have the pages folder that is just importing pages from src/pages and inside this, I have a components folder. So basically src/pages/home/components/header/Header.tsx it pops up this error with classnames/bind. I wish your solution would fix this too

@jeremybarbet
Do you have "classnames" and "classnames-loader node_modules installed? Also, I forgot to mention.. be sure to include that snippet in your next.config.js file.

Yeah I have unfortunately all this elements, but still not working: https://github.com/jeremybarbet/next-classnames-test/blob/master/next.config.js#L64-L78

Where is I have one issue: Cannot find module '!../../../../../node_modules/classnames/bind.js' snippet coming from?

If you clone the repository and do yarn build/yarn start and go to the about page

FYI, we have been able to fix this issue by doing: https://github.com/ueno-llc/ueno-next-starter/blob/master/next.config.js#L30-L37 and using our own classnames-loader https://github.com/ueno-llc/next-classnames-loader#readme
(Also, you should close your issue if it's fixed for you)

Hi, thanks for creating an issue. We currently recommend using https://nextjs.org/docs/basic-features/built-in-css-support as the plugins have been deprecated in favor of the built-in support.


Allow comments to be deleted

Closes https://github.com/forem/cfp-app/issues/28
Gives users the ability to delete their own comments on proposals and reviews. Note that a user is only allowed to delete their own comments. Comments aren't really deleted from the database: instead we display a notice that the comment was deleted to all views.
Example display of a speaker's comments on the proposal page when logged in as the speaker/proposal creator:

Example display of a reviewer's comments on the proposal page when logged in as the speaker/proposal creator:

No funny business: we check server side to make sure a user can only delete their own comments:

I'm unclear on this from what's above, and I just went back to my original issue and realized I was unclear from the start: is this for internal or public comments? I initially meant it to be for internal, but realized when you gave an example of what a Speaker would see, that you may be talking about public comments?

I'm unclear on this from what's above, and I just went back to my original issue and realized I was unclear from the start: is this for internal or public comments? I initially meant it to be for internal, but realized when you gave an example of what a Speaker would see, that you may be talking about public comments?

OH! I actually did it for both comments, whoops! I can change it to be just internal comments if we don't want to expose this functionality to the public on the proposals page!

I'm actually unsure if we'll use the public comments much -- usually, the use of them is precipitated by the reviewers, and I figured I'd see if our particular set of reviewers wanted to use it much. I decided to keep public comments in because we will be offering that space (after declines go out) for declined speakers to use to request feedback on how to improve their proposals. Thinking about it now, I don't see a reason why we can't leave the functionality there for both types of comments. Just wanted to make sure that this does apply for the internal ones though, since that was where it was originally requested!

Hi all! Just checking on the status of this -- am I okay to merge it, or are we waiting on more approvals? Not sure what the process here usually is. :)

Oops, totally my fault for dropping the ball on this @abbyphoenix. Merging now!

Awesome! So I should start seeing that little trash can in the CFP App next
to my comments immediately? Or do I need to log out and back in, or
something else? Thanks!!
On Thu, Jul 1, 2021 at 10:29 AM Josh Puetz @.***> wrote:

Merged #29 https://github.com/forem/cfp-app/pull/29 into
main-codenewbie.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/forem/cfp-app/pull/29#event-4967336245, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABF6Y37LP6WOGEDRRCRX3RDTVSQY5ANCNFSM47TH2EIA
.

--
Abigail Phoenix
Special Projects Manager
Forem
@.***

I see it and it works! WHOO! 🎉
On Thu, Jul 1, 2021 at 10:39 AM Abigail Phoenix @.***> wrote:

Awesome! So I should start seeing that little trash can in the CFP App
next to my comments immediately? Or do I need to log out and back in, or
something else? Thanks!!
On Thu, Jul 1, 2021 at 10:29 AM Josh Puetz @.***>
wrote:

Merged #29 https://github.com/forem/cfp-app/pull/29 into
main-codenewbie.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/forem/cfp-app/pull/29#event-4967336245, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABF6Y37LP6WOGEDRRCRX3RDTVSQY5ANCNFSM47TH2EIA
.

--
Abigail Phoenix
Special Projects Manager
Forem
@.***

--
Abigail Phoenix
Special Projects Manager
Forem
@.***


Decoder and ContentLength plugin

Decoder plugin allows to decode gzip, deflate, compress or chunked body from the response
ContentLengthPlugin "sanitize" the content length header, by setting its value if possible, and if not, (like we are streaming from a process), decorate the body with a chunkstream (so it's compliant with the RFC where no content length header is set)

this is really cool! do clients like guzzle re-implement all that inside their code? on the other hand, what will guzzle do itself in the end? not much?

Guzzle doesn't implement this, but i think curl does (only for the transfer encoding header if my memory is good)

Will work on hhvm implementation,  aside from this, any other remarks ? or is this good to merge ?

I haven't really followed this thread, so ask @dbu for any remarks. :+1: from me, awesome work @joelwurtz as usual.

looks good to me. i suggest that you simply add something to the tests to skip. if it would be phpunit, it would be
public function setUp()
{
 if (defined('HHVM_VERSION')) {
    $this->markTestSkipped();
}
}

IIRC Akeneo has a SkipExtension for PHPSpec.

if its too much hassle, i can add a conditional rm of the tests in the
.travis.yml files to simply remove the tests when running with hhvm.

if its too much hassle

AFAIK it uses the same logic/annotations as phpunit does. How is it too much hassle?
However I checked it and it can only check existing classes/interfaces, not the PHP env.

However I checked it and it can only check existing classes/interfaces, not the PHP env.

thats what i meant with too much hassle. if we need to find some phpspec plugins and whatnot, we can just as well do it that way. as we agree hhvm is not top priority, we should have a simple way to skip those tests.

I would still stick to the setUp/let method instead of some weird rm logic. :stuck_out_tongue_winking_eye:

use PhpSpec\Exception\Example\SkippingException;
//...
function let()
{
    if(defined('HHVM_VERSION')) {
        throw new SkippingException();
    }
}

ah, if that works then sure lets do that. why is that namespace "Example"?

Because tests are called "examples" in phpspec terminology:

There are Suites which are collections of tests (for example you have one spec/ directory)
There are Specifications which are collections of examples (one class, several test methods)
There are Examples which are the actual test methods (eg. it_does_something)

Ok on hhvm, ready to merge ?

great. can you please move hhvm out of the allowed to fail tests again? then we are good to merge.
we have to remember to mention in the plugin doc that the encoding plugin does not support hhvm.

actually, maybe you can mark the stream library as conflicting with hhvm? we have no hard dependencies on the libraries used by the plugins, so people trying to run this will notice there is a problem even if they don't read the documentation.

Conflict means uninstallable, right?

it means composer require / install will fail when running under hhvm, yes.
i am not suggesting to make plugin conflict with hhvm, only the stream
library joel wrote

test will failed then on hhvm for this, as we require this lib in dev packages, any way of avoiding that ?

oh well. i guess that won't work. lets leave it like this then. just move hhvm out of allowed failures and then we merge this.
we could remove it from require-dev and have travis run composer require if not on hhvm, but that is complicated. i guess hhvm users are used to having to check whether libraries work on hhvm...

Encoding library can work on hhvm, just requiring implementing many filters from the php world :/

:+1:


Add benchmarks against linearmodels and fastreg

Context
It would be great to add benchmarks against the following two python packages:

linearmodels
fastreg

@apoorvalal has benchmarks against fastreg here, showing equal performance to pyfixest.
To Do

Adjust the pyfixest benchmarks  by including benchmarks for linearmodels and fastreg. For linearmodels, add benchmarks for OLS, for fastreg for OLS and Poisson (linearmodels does not support Poisson afaik).
Update the benchmark figures by adjusting and running the visualize_benchmarks.ipynb notebook.

@rafimikail would you be interested in picking this up?

Yes, exactly! Maybe best to start with one of the two packages and divide this into two PRs?

Certainly @s3alfisc , you can allocate this to me 👍

Hi @s3alfisc , wanted to confirm, to run_benchmarks.ipynb, i think i need to retrieve some data first that will be used in the notebook, do i need to run data_generation.r first before running the notebook or i could just get it from https://github.com/lrberge/fixest/tree/master/_BENCHMARK?
Thanks!

Oh I completely overlooked this - you would have to run the data generation r script first. I can also do so quickly and send you the data as a csv?

Hey @s3alfisc , i tried to run the data generation r file but experiencing an error, need to find out why
But if you have the data/csv already, that would be helpful
Thanks

Will send it in a moment :)

I have been looking into running the benchmark with linearmodels. It's PanelOLS function, which does the efficient treatment of fixed-effects, only fits into the benchmark scenario with 2 fixed effects (dum1 + dum2).

It turns out its PanelOLS function supports at most 2 fixed effects (reference).

Another issue is that the provided indices must be unique, so you cannot have a single fixed effect with values 1, 1, 2, 2 for example.

Hi @marcandre259 , super cool that you're looking at this! As far as I understand it, linearmodels has an AbsorbingOLS  function that runs pyhdfe under the hood, which should allow for multiple fixed effects and non-panel data.


database query error

I have an error when connecting to the database and making a query I get the following error, could you help me with this. in what way should it be done thanks.

How can I make queries to the database, it seems that it generates an error, I do not know if it does not connect to the database, how can I check this or fix it, I appreciate your help

I already managed to solve it, thank you very much


Extr0py/add commands for plugins

Add ability for plugins to add commands

Need to hook up filter, so that the right plugin is targetted for sending a command.


Add parameter validation for AES module

Description
Finish adding parameter validation to the AES module (some functions where done in #1643 as a demo).
This PR is based on #1643, please only review new commits, starting from "Add parameter validation XTS setkey functions".
Status
READY
Requires Backporting
NO
Migrations
None in the default config.

@hanno-arm Thanks for catching the missing iv_off check! I've added that, and addressed the rest of your feedback as well.
@sbutcher-arm Thanks for your feedback. I've addressed most of it, except:

I'd rather not touch the error codes at this point: unlike the other modules, here we already had the 3 of them so it's different from adding a new one. IMO there are at least two differences: we're not adding any new code, so not making things worse in terms of error code space usage. And also, changing the error code would mean changing existing behaviour that people might be relying upon.
I agree about allowing NULL if length is 0, but as it's extra work for adding the tests, I'd rather leave it untouched for now and introduce it as a further enhancement later.

@hanno-arm @sbutcher-arm Please review again.

Just pushed a new commit to fix unused parameter warnings in test-ref-config. @hanno-arm @sbutcher-arm Please review again.

Jenkins CI fails only with the BSD timing test, which is as good as a pass. Promoting to 'ready for merge'.

About deprecating MBEDTLS_ERR_AES_INVALID_KEY_LENGTH:

I'd rather not touch the error codes at this point: unlike the other modules, here we already had the 3 of them so it's different from adding a new one. IMO there are at least two differences: we're not adding any new code, so not making things worse in terms of error code space usage. And also, changing the error code would mean changing existing behaviour that people might be relying upon.

We only have the three error codes, because I created one in the proof of concept PR!
I think we're creating an inconsistency across the interfaces here, as Blowfish, Camellia, ARIA will all now behave differently from AES. When writing or designing code for these, you want the interfaces and error codes to be the same, and differences are confusing.
We deprecated MBEDTLS_ERR_xxxx_INVALID_KEY_LENGTH to save error codes, and because we don't want multiple error codes for what is essentially the same error - invalid parameters.
Semantically, we should have the same errors on each module for consistency. It should be uniform.
That doesn't mean we have to do it in this PR, (which I've promoted to 'ready to merge'), but we should either raise a bug or another PR to fix it.
In that PR we should probably make MBEDTLS_ERR_AES_BAD_INPUT_DATA the same value as MBEDTLS_ERR_AES_INVALID_KEY_LENGTH too.
@mpg / @hanno-arm - please say if you take a different view.

No, MBEDTLS_ERR_AES_BAD_INPUT_DATA was already present in development. It was introduced in #1178.

My mistake. I remember creating one, but that must have been an unnecessary fourth, which might have been removed by @k-stachowiak or me at an earlier point.

@sbutcher-arm Good point about checking whether the 3rd error code was already in development, and thanks @hanno-arm for confirming it was, I totally forgot to check and it would indeed have nullified my argument. Phew!


ESP32 HTTPS + mDNS server (IDFGH-7678)

I'm using ESP32 HTTPS server (internal component) and its working fine when I go to https://<IP ADDRESS>/
When I added the mDNS server code I expected the following to work: https://<HOSTNAME>/
here is my mDNS configuration:
static void _start_mdns_server(void)
{
  esp_err_t s32RetVal;
  mdns_txt_item_t tstMdnsTxItems[2] =
  {
    {"device name", "esp32-c3"         },
    {"mac address", "00:00:00:00:00:00"},
  };

  s32RetVal = mdns_init();
  if(ESP_OK == s32RetVal)
  {
    s32RetVal =  mdns_hostname_set("esp32server");
    if(ESP_OK == s32RetVal)
    {
      s32RetVal =  mdns_instance_name_set("mDNS service");
      if(ESP_OK == s32RetVal)
      {
        s32RetVal = mdns_service_add(NULL, "_http", "_tcp", 80, tstMdnsTxItems, 2);
        if(ESP_OK == s32RetVal)
        {
          ESP_LOGI(TAG, "mDNS server started successfully");
        }
        else
        {
          ESP_LOGE(TAG, "Failed to add mDNS service (%d)", s32RetVal);
        }
      }
      else
      {
        ESP_LOGE(TAG, "Failed to set mDNS instance name (%d)", s32RetVal);
      }
    }
    else
    {
      ESP_LOGE(TAG, "Failed to set mDNS hostname (%d)", s32RetVal);
    }
  }
  else
  {
    ESP_LOGE(TAG, "Failed to initialize mDNS server (%d)", s32RetVal);
  }
}

My question is: is there something wrong in my config like for example the port 80 needs to change to 443...

@kaizoku-oh
I think it simply works with:
static void _start_mdns_server(void)
{
  ESP_ERROR_CHECK( mdns_init() );
  ESP_ERROR_CHECK( mdns_hostname_set("esp32server") );
}

It still doesn't work here is my code for starting HTTPS server:
static void _start_https_server(void)
{
  esp_err_t s32RetVal;
  httpd_handle_t pvServer;
  httpd_ssl_config_t stConf = HTTPD_SSL_CONFIG_DEFAULT();

  stConf.cacert_pem = ca_cert_pem_start;
  stConf.cacert_len = ca_cert_pem_end - ca_cert_pem_start;
  stConf.prvtkey_pem = prvtkey_pem_start;
  stConf.prvtkey_len = prvtkey_pem_end - prvtkey_pem_start;
#ifndef USE_HTTPS
  stConf.transport_mode = HTTPD_SSL_TRANSPORT_INSECURE;
#endif /* USE_HTTPS */
  s32RetVal = httpd_ssl_start(&pvServer, &stConf);
  if(ESP_OK == s32RetVal)
  {
    s32RetVal = httpd_register_uri_handler(pvServer, &stRootEndpoint);
    if(ESP_OK == s32RetVal)
    {
      ESP_LOGI(TAG, "HTTPS server started successfully");
    }
    else
    {
      ESP_LOGE(TAG, "Failed to register web server URI handler");
    }
  }
  else
  {
    ESP_LOGE(TAG, "Failed to start web server");
  }
}

I don't think the reason it doesn't work has anything to do with mDNS.
Will it work correctly if you specify an IP address?


Text aligned to top instead of center when changing LineHeight on TextBlock.

Describe the bug
When changing the LineHeight or Height properties of a TextBlock, the text stays at a fixed distance from the top of the control, rather than being centered.
This causes both vertical text alignment problems as well as text clipping problems at lower line heights.

This is to avoid alignment issues as well as potential clipping issues at lower LineHeight values (e.g. 120%)
This is how the line-height behaves for normal CSS, and how I would expect Avalonia to work as well:

Environment

OS: Windows
Avalonia-Version: 11.0.5

What can I do to help with this ticket? It's a pretty glaring issue in our application and I'd rather not do some sort of hack (like manual offsets of the text)

LineHeight should be distributed evenly now. Are you sure this is still an issue?

@Gillibald When was this fixed? I don't see a PR attached to this ticket and I wasn't able to find anything in the changelog about it. We're using the latest version of Avalonia and haven't seen any change to the line height

This is still broken on 11.1.0-beta and 11.0.10

Thanks for the fix! Really appreciate it!


Add indexes to messages and transfers

Description

Type of change

[ ] Docs change / dependency upgrade
[ ] Configuration / tooling changes
[ ] Refactoring
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Requires changes in customer code

High-level change(s) description - from the user's perspective

Related Issue(s)
Fixes
Related pull request(s)

Created missing indexes for selects within packages/agents/cartographer/poller/src/adapters/database/client.ts so that there is no full-table scan once the the tables reach a certain size. This occurred on a best effort basis and will require monitoring and potential adjustments as the tables and traffic grow.


Where is  the source code  of the  console and dory-engine ?

hi,
I heard that dory-engine is open-source project.
But there are seems to  only dory-cli project in the github.
I wonder where is  the source code  of the  console and dory-engine .

dory-engine and dory-console not open source now, but it will later. You can install it by dorycli and use it for free now.


Cleanup activation and deactivation scripts

The package does not install anything in <install_prefix>/share/gazebo, so it does not make sense to populate the Gazebo-related environment variable with those directories. Probably it was just a leftover.
Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender


How to add fonts to this image?

I saw this comment about adding new fonts to the base docker image, and I was wondering how I'd go about that? The font I need doesn't seem to be on https://pkgs.org/.
For reference, I'd like to add this font. Any help is appreciated!

Hi, do you know the full implementation process on how to build image and push image to the ECR?

Hey,
I found a solution. Put your ttf files into a fonts/ directory in your repository and use the following Dockerfile:
Dockerfile
FROM public.ecr.aws/shelf/lambda-libreoffice-base:7.4-node16-x86_64
COPY ./ ${LAMBDA_TASK_ROOT}/
COPY ./fonts ${HOME}/.fonts
# dependency not supplied by lambda-libreoffice-base image
# https://github.com/shelfio/aws-lambda-libreoffice/issues/211
RUN fc-cache && yum install java-1.8.0-openjdk-devel -y
RUN npm install
CMD [ "app.handler" ]

What it does is it puts the fonts into the $HOME folder and installs them using fc-cache.
package.json
{
  "dependencies": {
    "@shelf/aws-lambda-libreoffice": "^5.0.0"
  }
}

`serverless.yml
service: pdfgen-lambda
frameworkVersion: '3'
provider:
  name: aws
  ecr:
    images:
      appimage:
        path: ./
functions:
  libreoffice:
    url: true
    image:
      name: appimage

And then
sls deploy
sls invoke --function libreoffice

Thanks for the help !

In the end it does not work with otf fonts. Would someone have a solution for it?

In the end it does not work with otf fonts. Would someone have a solution for it?

Ok, the same approach worked but targeting another directory !
FROM --platform=linux/amd64 public.ecr.aws/shelf/lambda-libreoffice-base:7.4-node16-x86_64

COPY ./ ${LAMBDA_TASK_ROOT}/

RUN mkdir -p /usr/share/fonts/opentype

COPY ./fonts/marinanne  /usr/share/fonts/opentype

# dependency not supplied by lambda-libreoffice-base image
RUN fc-cache -f -v
RUN yum install java-1.8.0-openjdk-devel -y
RUN npm install --only=production

CMD [ "handler.handler" ]


[Bug] Github Actions can't use secrets for forked repos

Description of the Bug
Github Actions can't use secrets for forked repos.
Reproduction Steps

Fork a repo and make a PR.
Run GitHub Actions and it fails to build the dockerfile due to missing environment secrets.

Expected Behaviour
It shouldn't fail building the dockerfile.
OS
macOS
Browser
No response
Device
No response
Additional Notes
Would probably have to hardcode the placeholder environment variables in ci-dev-pr.yml to fix this issue.

I'm not a huge fan of hard coding environment variables. Are there other methods of enabling the use of environment variables and secrets for PRs made from forked repos?


Systematic support for "warnings"

From @sdboyer on July 26, 2016 18:25
We need a system of warnings when things occur that aren't necessarily grounds to stop the solver, but aren't exactly optimal either.
Much of this system will necessarily be about how to report the information - clearly, it has to emerge from somewhere other than the TraceLogger. That means two separate reporting paths, though, which is...well, super fun.
In any case, for now, this issue is useful as a place to keep a running list of conditions under which we should issue warnings:

[ ] A None constraint is explicitly given by a manifest
[ ] A malformed ProjectIdentifier - root or net name - is returned from a Manifest method.
[ ] If any of the required VCS binaries can't be found on the $PATH. (This is obviously escalated to an error if the vcs turns out to be needed by an actual dependency)
[ ] If a project being prefetched does not exist upstream. (Prefetching doesn't necessarily guarantee that the project will be required - e.g., it's coming from an old lock).
[ ] If a project in the result set does not exist upstream. (Can happen if it was originally in the lock...I guess?)
[ ] If an upstream repository has a different type than what's in the cache (so, presumably, upstream changed) - e.g., git -> hg
[ ] If a tag moves. That is, something else suggests the tag should point to rev X, but it's now at rev Y. This could happen either with a lock, or with the central cache. The essential problem is the same, but the point where we're handling it is vastly different.
[ ] If a source type without immutability properties comes into use, at all. (I'm lookin' at you, Subversion.)
[ ] If a project-local package name is given in the ignore list, but does not exist in the PackageTree
[ ] If the import graph proceeds through a package that is marked as 'ignored' by a dependency's manifest
[ ] If a solve with targeted updates completes successfully, but fails to advance the version of a project targeted for update
[ ] If ListPackages() encounters a directory which it lacks the permissions to enter
[ ] If a (bare) revision in a Lock does not exist in the corresponding source, forcing it to be discarded
[ ] If a local repo was determined to be corrupt (#596) and was automatically cleared and recreated

Copied from original issue: sdboyer/gps#77

need a warning if the source cache lock file is busy.

So I can see there's a Ctx passed around that has an Out and Err var, but this Ctx isn't exposed to lower level stuff like the NewSourceManager() func.
NewSourceManger() doesn't return anything, and we don't pass anything to it.
We could make a struct in gps and assign the Out and Err to that, and then use that Ctx in parts of gps that need to provide warning output. Warnings should always be STDERR. I'm unsure as I don't know how people feel about package-wide vars.
Not sure if that's appropriate but thats my initial naive suggestion.
Might be useful to have a quiet mode? Not sure.

If someone in the next week or so wants to discuss this in more detail and wants a hand playing with this, I'll be happy to assist. I think this is important to progress as I've come across a few cases where some output would've helped me understand what went wrong.

@bradleyfalzon ack, i'm sorry, i totally missed your comment on this :/ i'd be happy to chat about what's involved with this.

Sorry, @sdboyer should've pinged again. I had a couple weeks off of work to work on projects, but back soon so just want to finish off my other work. I did have a quick look based on @matjam's comments, and it looks OK but requires threading throughout and I don't quite have the time to do that from start to finish this week.


New outcome for EVW countries (work< 6mth)

Outcome based on outcome_work_m.govspeak.erb
Changes based on:
https://govuk.zendesk.com/agent/tickets/1239005
https://www.pivotaltracker.com/story/show/112416855
2i-ed by Al

This PR is superseded by #2281


Final design Adjustments

final tweaks per design QA (last style update I promise)

/domain @Betterment/test_track_core

couple questions that mostly have to do with style closet convention. << domain tafn

bump

domain lgtm


Questionnaire population with another resource

This is related to the draft stage suggestion in #227.
One of the things about SDC in FHIR is that a submission will not just create a questionnaire reponse but also potentially create corresponding resources.   We will need to figure out the logic to revert / cancel resources if a questionnaire is edited or potentially deleted.

Thanks @mberg for creating this. I want to break this down a little bit more. The workflow currently is as follows

You have a Questionnaire from somewhere (loaded from db, downloaded from a server, hardcoded in app, wherever you get it from)
You call the sdc lib to draw the form from the Questionnaire
The user fills out the form
You call the sdc lib or the user clicks some button to generate a QuestionnaireResponse
You call the sdc lib to create a (as an example) Patient

So what does reverting mean here technically for the sdc lib?
If it's about deleting either the QuestionnaireResponse, or the Patient, then it's totally outside the remit of the sdc lib. The app is free to do whatever they want.
So what does editing mean here technically for the sdc lib?
That means we'll need to populate the Questionnaire with either the QuestionnaireResponse or the Patient.

It sounds like the SDK appropriate task here is populating a Questionnaire resources with another resource. Related to that is defining how the other resource maps to the Questionnaire resource.
@jingtang10 what do you think? does it makes sense to update/replace this issue with one more focused on that task?

#377

@jingtang10 the proposed strategy is to use Expression-based Population as defined in the SDC spec. We shall be using FHIR path to set the initial value of a Questionnaire item an example of which is given on this article
Steps

Add a function populate in the ResourceMapper which takes a Questionnaire and Resource and returns a QuestionnaireResponse
For each item in the questionnaire use FHIRPathEngine to evaluate the questionnaire-initialExpression valueExpression.expression and retrieve the value from the resource
Create an item in the QuestionnaireResponse for the Questionnaire item in step 2 and populate the item.answer with the retrieved value.

@jingtang10 how can we set an answer after retrieving the value using Fhir Path. To give you an idea, I have a hashMap containing all the answers. Following is the code
answer =
mutableListOf(
QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent().apply {
value = retrievedAnswer as Type?
}
)
          where retrievedAnswer can be a String or boolean depending upon the question. I have to cast the answer as Type as value can be set with Type only. So how can I cast the answer to Type then? thanks.

You need to try to figure out what the type is and set the right value. Do not use value = , use something like booleanValue =  etc.
Can you try to do something like this: https://github.com/google/android-fhir/blob/master/datacapture/src/main/java/com/google/android/fhir/datacapture/mapping/ResourceMapper.kt#L203
or this: https://github.com/google/android-fhir/blob/master/datacapture/src/main/java/com/google/android/fhir/datacapture/MoreQuestionnaireItemTypes.kt?

okay, thanks @jingtang10

The approach to achieve population of Related Person would be as follow:

We will pass populate function two parameters, first is questionnaire and the second parameter would be a list of Resources
For each Resource present in the Resource List, we will populate Initial Values for each Resource using FhirPathEngine.evaluate
Then We will create a Questionnaire Response, that will contain responses for all Resources, in our case it would be for Patient and Related Person
@jingtang10 please review the solution and advise, thanks.

also @jingtang10, we have gender values as Radio buttons in Fhir Core, if we pass Patient.gender.value, it returns gender value as StringType, and if we pass Patient.gender, it returns gender value as Enumeration, whereas to set value for Radio buttons, it requires value in terms of Coding. Can you please suggest how can we get gender value as Coding from fhirPathEngine.Evaluate because Patient.gender.value and Patient.gender both doesn't serve our purpose, thanks

@jingtang10 if we add the following code in the sdk, gender value would be in coding then in QuestionnaireResponse:
if (answerExtracted is Enumeration<*>) {
answerExtracted = if (answerExtracted.valueAsString == "male") {
Coding("", "male", "Male")
} else {
Coding("", "female", "Female")
}
}

@jingtang10 if we add the following code in the sdk, gender value would be in coding then in QuestionnaireResponse:
if (answerExtracted is Enumeration<*>) {
answerExtracted = if (answerExtracted.valueAsString == "male") {
Coding("", "male", "Male")
} else {
Coding("", "female", "Female")
}
}

You code won't work with enums with other values -- this is not generic enough. You need to find comon logic to deal with this.

@santosh-pingle

This case is being handled in the PR https://github.com/google/android-fhir/pull/646 given sdc-questionnaire-initialExpression -> "expression" is "Patient.gender"

okay, thanks @aditya-07


Use implicit instead of explicit wait in tests

In our tests, there are a lot of waits for async elements to load.
Selenium allows to set up ImplicitlyWait. It causes every FindElement instruction to synchronously stop for X seconds before executing.

Benefit: this reduces the amount of test code, makes easier to write tests without errors
Drawback: this extends the test execution time

I will post a PR for the team to review

Implemented in https://github.com/StarcounterSamples/KitchenSink/pull/71

Done one develop branch.


What's the license for this plugin?

No License file exists in this repo. What's the License for this plugin?

package.json lists MIT license.
https://github.com/11ty/eleventy-navigation/blob/fccb334e0d7cad363bda691178cb53e35ee79981/package.json#L34


chore: relicans and nerdlog team updates

Description
updating nerdlog and relicans page with new teammates and removing others

@laurenelee This PR should take care of these changes https://github.com/newrelic/developer-website/pull/1581
Is there something different here?

Closing for #1581


URL decode path for files

We currently don't support paths that have URL encoded spaces, for example:
file:///foo/bar%20baz/sqlite.db

Let's decode the URL before passing using it for path lookup.

Hi! I would like to work on this issue as my first contribution. Can I go ahead?

@gh-adithya Go for it!

If I'm not wrong, this issue must have been resolved already. The relevant lines of code are:
 url_parsed = urllib.parse.urlparse(url)
 scheme = url_parsed.scheme
 authority = url_parsed.netloc
 path = url_parsed.path

This is from lines 21-24 in config.py


Add Environment Command (#2152)

Signed-off-by: Keith Chong<EMAIL_ADDRESS>What type of PR is this?
/kind enhancement
What does this PR do / why we need it:
Add Environment Command
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes #2152
How to test changes / Special notes to the reviewer:

Build kam.  Run kam env and kam env add

Notes:

The command env will replace the current environment command (The old one).
We still have to refactor the packages when we replace the original version of kam

Hey !
When we run the kam env add it starts a interactive prompt without asking for default values.
If user wants to add --output flag we cannot do it.


Disabling single logout fails when SSO is configured.

Description:
Disabling single logout fails when SSO is configured.
Steps to reproduce:
Configure SSO with IS 5.10 and disable single logout

We do not allow to disable SLO, 3.2.0 onwards


One screen keeps repeating, skipping the clock

Here's what is going on:

Only the clock is showing.  No other screens rotating through.
HA adds a single screen showing an alert:

service: esphome.ulanzi_add_screen
data:
  alarm: false
  icon_name: doorbell
  lifetime: 1
  screen_time: 10
  text: Doorbell

The major settings from my ehmtx section are:
clock_time: 5            # duration to display the clock after this time the date is displayed until next "show_screen"
clock_interval: 60       # show the clock at least each x seconds (default=60)
screen_time: 10          # duration to display a screen or a clock/date sequence (default=10)
scroll_count: 2          # minimum number of times to scroll large text

However, the alert screen plays many times before the clock comes back.  Every 10 seconds I can see it reset and start over.  Eventually the clock comes back.

It's my understanding that it should rotate: clock (10s)->doorbell screen (10s)->clock (10s)->doorbell screen (10s)->etc. until the 1 minute life of the doorbell screen expires.  Then back to only the clock.  Is my understanding correct?  This is not what's happening.  Instead, it just keeps showing the doorbell screen over and over until it expires.
Here's my entire setup for reference:
substitutions:
  devicename: ulanzi
  matrix_pin: GPIO32
  buzzer_pin: GPIO15
  left_button_pin: GPIO26
  mid_button_pin: GPIO27
  right_button_pin: GPIO14
  ldr_pin: GPIO35

# Github source files for EsphoMaTrix
external_components:
  - source:
      type: git
      url: https://github.com/lubeda/EsphoMaTrix
    components: [ ehmtx ]

esphome:
  comment: Ulanzi TC001 LED Clock
  name: $devicename
  friendly_name: Clock
  on_boot:
    then:
      - ds1307.read_time:

esp32:
  board: esp32dev

ota:
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Fonts and characters
font:
  - file: Calcium.ttf
    id: ehmtx_font
    size: 16
    glyphs:  |
      !?"%‰()+*=,-_.:°µ²³0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnÖÄÜöäüopqrstuvwxyz€$@<>/

# EsphoMaTrix Display Interface: https://github.com/lubeda/EsphoMaTrix
ehmtx:
  id: rgb8x32
  time_component: ehmtx_time
  matrix_component: ehmtx_display
  clock_time: 5            # duration to display the clock after this time the date is displayed until next "show_screen"
  clock_interval: 60       # show the clock at least each x seconds (default=60)
  screen_time: 10          # duration to display a screen or a clock/date sequence (default=10)
  scroll_count: 2          # minimum number of times to scroll large text
  date_format: "%m/%d"     # defaults "%d.%m" (use "%m.%d" for the US)
  time_format: "%I:%M"     # defaults "%H:%M" (use "%I:%M%p" for the US)
  show_dow: false          # draw the day indicator on the bottom of the screen, defaults to true
  show_date: false         # show the date for show_screen - show_clock seconds otherwise only shows the clock for show_screen seconds, defaults to true
  week_start_monday: false # default monday is first day of week, false = sunday
  yoffset: 8               # the text is aligned BASELINE_LEFT, the baseline defaults to 6
  xoffset: 1               # the text is aligned BASELINE_LEFT, the left defaults to 1
  scroll_interval: 80      # the interval in ms to scroll the text (default=80), should be a multiple of the update_interval from the display (default= 16ms)
  frame_interval: 192      # the interval in ms to display the next anim frame (default=192), should be a multiple of the update_interval from the display (default= 16ms)
  font_id: ehmtx_font
  icons:
    - id: bitcoin
      file: bitcoin.png
    - id: door
      file: door.gif
    - id: doorbell
      file: doorbell.gif
    - id: garage
      file: garage.gif
    - id: girl
      file: girl.gif

# Connection status and buttons exposed to HA
binary_sensor:
  - platform: status
    name: "Clock Connection Status"
    id: clock_connection_status
  - platform: gpio
    name: "$devicename left button"
    icon: "mdi:menu-left-outline"
    pin:
      number: $left_button_pin
      inverted: true
    on_press:
      then:
        - number.decrement: screen_brightness
  - platform: gpio
    name: "$devicename middle button"
    icon: "mdi:circle-outline"
    pin:
      number: $mid_button_pin
      inverted: true
      mode: INPUT_PULLUP
    on_press:
      then:
        - switch.toggle: displaycontrol
  - platform: gpio
    name: "$devicename right button"
    icon: "mdi:menu-right-outline"
    pin:
      number: $right_button_pin
      inverted: true
    on_press:
      then:
        - number.increment: screen_brightness

logger:
  level: INFO

# Services exposed to HA
api:
  services:
    - service: alarm
      variables:
        icon_name: string
        text: string
      then:
        lambda: |-
          id(rgb8x32)->add_screen(icon_name,text,7,20,true);
          id(rgb8x32)->force_screen(icon_name);
    - service: brightness
      variables:
        brightness: int
      then:
        lambda: |-
          id(rgb8x32)->set_brightness(brightness);
    - service: icons
      then:
        lambda: |-
          id(rgb8x32)->show_all_icons();
    - service: skip_screen
      then:
        lambda: |-
          id(rgb8x32)->skip_screen();
    - service: tuneplay
      variables:
        tune: string
      then:
        - rtttl.play:
            rtttl: !lambda 'return tune;'

# Gets/sets the brightness (0-255)
number:
  - platform: template
    name: "$devicename brightness"
    id: screen_brightness
    icon: "mdi:brightness-5"
    min_value: 0
    max_value: 255
    update_interval: 1s
    step: 25
    lambda: |-
      return id(rgb8x32)->get_brightness();
    set_action:
      lambda: |-
        id(rgb8x32)->set_brightness(x);

# Turns display on/off
switch:
  - platform: template
    name: "$devicename Display"
    id: displaycontrol
    icon: "mdi:power"
    restore_mode: ALWAYS_ON
    lambda: |-
      return id(rgb8x32)->show_display;
    turn_on_action:
      lambda: |-
        id(rgb8x32)->set_display_on();
    turn_off_action:
      lambda: |-
        id(rgb8x32)->set_display_off();

sensor:
  - platform: adc
    id: light_sensor
    name: "$devicename Illuminance"
    pin: $ldr_pin
    update_interval: 10s
    attenuation: auto
    device_class: illuminance
    unit_of_measurement: lx
    accuracy_decimals: 0
    filters:
      - lambda: |-
          return (x / 10000.0) * 2000000.0 - 15 ;

# Speaker: works together with rtttl
output:
  - platform: ledc
    pin: $buzzer_pin
    id: rtttl_out

# Tone generator: works together with output
rtttl:
  output: rtttl_out

# I2C Comms: works together with time
i2c:
  sda: 21
  scl: 22
  scan: true
  id: bus_a

# Clock sync: works together with i2c
time:
  - platform: homeassistant
    on_time_sync:
      then:
        ds1307.write_time:
  - platform: ds1307
    update_interval: never
    id: ehmtx_time

# Light Comms: works together with display
light:
  - platform: neopixelbus
    id: ehmtx_light
    internal: true #Hide from HA
    type: GRB
    variant: WS2812
    pin: $matrix_pin
    num_leds: 256
    color_correct: [30%, 30%, 30%]
    name: "$devicename Light"
    restore_mode: ALWAYS_OFF
    on_turn_on:
      lambda: |-
         id(ehmtx_display)->set_enabled(false);
    on_turn_off:
       lambda: |-
         id(ehmtx_display)->set_enabled(true);

# Display Matrix: works together with light
display:
  - platform: addressable_light
    id: ehmtx_display
    addressable_light_id: ehmtx_light
    width: 32
    height: 8
    pixel_mapper: |-
      if (y % 2 == 0) {
        return (y * 32) + x;
      }
      return (y * 32) + (31 - x);
    rotation: 0°
    update_interval: 16ms
    auto_clear_enabled: true
    lambda: |-
      id(rgb8x32)->tick();
      id(rgb8x32)->draw();

For now I'm getting around this by calling the following actions after I call "add_screen".  It waits for the screen I just added to be displayed and immediately deletes it.  It times out and aborts if it doesn't see the screen after 1 minute.
wait_for_trigger:
  - platform: event
    event_data:
      iconname: doorbell
    event_type: esphome.next_screen
timeout:
  hours: 0
  minutes: 1
  seconds: 0
  milliseconds: 0
continue_on_timeout: false
service: esphome.ulanzi_del_screen
data:
  icon_name: doorbell

This is not what's happening. Instead, it just keeps showing the doorbell screen over and over until it expires.
This is right, thats by design!  In the upcoming version EspHoMaTriXv2 you will have more control, so you can add blank screens in the loop. The old version will stay as it is now, perhaps some bugfixes. The new version is not stable enough for "production" yet.

The graphic on the readme is confusing then.  It shows each screen being displayed one time and then going to the clock/date before showing the added screens again.  So it seems like a full rotation includes the clock every time.

Hi, the new version gives away to better control the clock/date display. I will not fix this in this version!


Refactoring utils

Codecov Report

Merging #10 into master will increase coverage by 2.07%.
The diff coverage is 83.56%.

@@            Coverage Diff             @@
##           master      #10      +/-   ##
==========================================
+ Coverage   69.01%   71.09%   +2.07%
==========================================
  Files          22       24       +2
  Lines        1078     1107      +29
  Branches       74       65       -9
==========================================
+ Hits          744      787      +43
+ Misses        296      283      -13
+ Partials       38       37       -1

Impacted Files
Coverage Δ

ansq/http/base.py
0.00% <0.00%> (ø)

ansq/http/writer.py
0.00% <0.00%> (ø)

ansq/utils.py
85.41% <82.50%> (+37.68%)
:arrow_up:

ansq/tcp/connection.py
60.95% <83.33%> (+0.13%)
:arrow_up:

ansq/tcp/protocol.py
89.33% <100.00%> (ø)

tests/test_convert_to_bytes.py
100.00% <100.00%> (ø)

tests/test_validation_topic_channel_name.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Not working on kernel 4.4.59+

Could you build it for linux kernel 4.4.59+ x86_64?

Once I have such NAS model I will build package for it. When that will be I can't say.


MPD stoped working

Which addon?

MPD
Describe the bug

Not playing, tested with TTS
To Reproduce

Go to 'Dev tools'
Call service 'tts.cloud_say'
Go to MDP logs
See error

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[07:59:37] INFO: Setup folders and settings
[07:59:38] INFO: Start MPD
exception: bind to '<IP_ADDRESS>:6600' failed (continuing anyway, because binding to '[::]:6600' succeeded): Failed to bind socket: Address in use
exception: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted
[07:59:41] INFO: Start ympd
MPD Connecting to <IP_ADDRESS>:6600
MPD connected.
client: [0] opened from <IP_ADDRESS>:36348
exception: Failed to read mixer for 'Hassio Audio': no such mixer control: PCM
client: [1] opened from <IP_ADDRESS>:60366
exception: OutputThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
alsa_output: Decoder is too slow; playing silence to avoid xrun
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_a9c18110b0_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
alsa_output: Decoder is too slow; playing silence to avoid xrun
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_a9c18110b0_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
alsa_output: Decoder is too slow; playing silence to avoid xrun
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_a9c18110b0_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_a9c18110b0_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
alsa_output: Decoder is too slow; playing silence to avoid xrun
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_a9c18110b0_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_d0e960f7b0_google_cloud.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/7b502c3a1f48c8609ae212cdfb639dee39673f5e_en-us_d0e960f7b0_google_cloud.mp3"

Expected behavior

Screenshots

System

Supervisor version: 229
Host system version: HassOS 4.11

arch: aarch64

Does the playback via ympd work?
I have it running on your supervisor and HassOS version and its working in combination with tts.google_translate_say.
Unfortunately I'm seeing the same exceptions but its still working. I'm can remember a strange behavior on updating to the new supervisor audio system, but that solved itself after a restart.

Uploaded some mp3 and tried with ympd but doesn't worked.
I did a full reboot and still silent.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[21:32:52] INFO: Setup folders and settings
[21:32:52] INFO: Start MPD
exception: bind to '<IP_ADDRESS>:6600' failed (continuing anyway, because binding to '[::]:6600' succeeded): Failed to bind socket: Address in use
exception: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted
[21:32:55] INFO: Start ympd
MPD Connecting to <IP_ADDRESS>:6600
client: [0] opened from <IP_ADDRESS>:35654
MPD connected.
exception: Failed to read mixer for 'Hassio Audio': no such mixer control: PCM
client: [1] opened from <IP_ADDRESS>:38810
exception: All audio outputs are disabled
player: problems opening audio device while playing "juntos.mp3"
exception: OutputThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
player: played "done-for-you.mp3"
exception: All audio outputs are disabled
player: problems opening audio device while playing "pristine.mp3"
exception: All audio outputs are disabled
player: played "done-for-you.mp3"
exception: Failed to open mixer for 'Hassio Audio': no such mixer control: PCM
player: played "pristine.mp3"

audio logs:
D: [pulseaudio] module-stream-restore.c: Not restoring device for stream sink-input-by-application-name:ALSA plug-in [mpd], because already set to 'alsa_output.usb-1130_USB_AUDIO-00.analog-stereo'.
D: [pulseaudio] sink-input.c: Negotiated format: pcm, format.sample_format = "\"s24-32le\""  format.rate = "44100"  format.channels = "1"  format.channel_map = "\"mono\""
I: [pulseaudio] sink-input.c: Trying to change sample spec
D: [pulseaudio] sink.c: Default and alternate sample rates are the same, so there is no point in switching.
D: [pulseaudio] resampler.c: Resampler:
D: [pulseaudio] resampler.c:   rate 44100 -> 48000 (method speex-float-1)
D: [pulseaudio] resampler.c:   format s24-32le -> s16le (intermediate float32le)
D: [pulseaudio] resampler.c:   channels 1 -> 2 (resampling 1)
D: [pulseaudio] resampler.c: Channel matrix:
D: [pulseaudio] resampler.c:        I00
D: [pulseaudio] resampler.c:     +------
D: [pulseaudio] resampler.c: O00 | 1.000
D: [pulseaudio] resampler.c: O01 | 1.000
I: [pulseaudio] remap.c: Using mono to stereo remapping
I: [pulseaudio] speex.c: Choosing speex quality setting 1.
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 15 "ALSA Playback" on alsa_output.usb-1130_USB_AUDIO-00.analog-stereo with sample spec s24-32le 1ch 44100Hz and channel map mono
I: [pulseaudio] sink-input.c:     media.name = "ALSA Playback"
I: [pulseaudio] sink-input.c:     application.name = "ALSA plug-in [mpd]"
I: [pulseaudio] sink-input.c:     native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c:     native-protocol.version = "33"
I: [pulseaudio] sink-input.c:     application.process.id = "204"
I: [pulseaudio] sink-input.c:     application.process.user = "root"
I: [pulseaudio] sink-input.c:     application.process.host = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     application.process.binary = "mpd"
I: [pulseaudio] sink-input.c:     application.language = "C"
I: [pulseaudio] sink-input.c:     application.process.machine_id = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     module-stream-restore.id = "sink-input-by-application-name:ALSA plug-in [mpd]"
I: [pulseaudio] protocol-native.c: Requested tlength=500.00 ms, minreq=124.99 ms
D: [pulseaudio] protocol-native.c: Early requests mode enabled, configuring sink latency to minreq.
D: [pulseaudio] protocol-native.c: Could not configure a sufficiently low latency. Early requests might not be satisfied.
D: [pulseaudio] protocol-native.c: Requested latency=124.99 ms, Received latency=99.94 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=88200, base=4, prebuf=22048, minreq=22048 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=88200, base=4, prebuf=22048, minreq=22048 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 599.94 ms = 250.02 ms + 2*124.99 ms + 99.94 ms
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: IDLE -> RUNNING
I: [pulseaudio] client.c: Created 36 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
I: [pulseaudio] client.c: Freed 36 "ALSA plug-in [mpd]"
I: [pulseaudio] protocol-native.c: Connection died.
D: [alsa-sink-USB Audio] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 18932 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 4675
D: [alsa-sink-USB Audio] sink-input.c: Have to rewind 18932 bytes on render memblockq.
D: [alsa-sink-USB Audio] source.c: Processing rewind...

D: [alsa-sink-USB Audio] alsa-sink.c: Mhmm, actually there is nothing to rewind.
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: RUNNING -> IDLE
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 18932 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 2701
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 15 "ALSA Playback"
I: [pulseaudio] client.c: Freed 35 "ALSA plug-in [mpd]"
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] client.c: Created 37 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
I: [pulseaudio] client.c: Freed 37 "ALSA plug-in [mpd]"
I: [pulseaudio] protocol-native.c: Connection died.

I am using speakers only with USB connection.

Will look into it, but no eta ;)

Can you check this issue against the latest version of the mpd addon?
I switched the audio output to the recommended Pulseaudio output.

Sorry, no sound
decoder_thread: probing plugin mad
decoder: audio_format=24000:24:1, seekable=false
exception: OutputThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted
client: [2] process command "status"
output: opened "Home Assistant Pulseaudio" (pulse) audio_format=24000:24:1
client: [2] command returned 0
client: [2] process command "currentsong"
client: [2] command returned 0
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_d0e960f7b0_google_cloud.mp3"
playlist: stop
output: closed "Home Assistant Pulseaudio" (pulse)
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [2] process command "status"
client: [2] command returned 0
client: [2] process command "currentsong"
client: [2] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [2] process command "status"
client: [2] command returned 0
client: [2] process command "currentsong"
client: [2] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [2] process command "clear"
client: [2] command returned 0
client: [2] process command "add "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_d0e960f7b0_google_cloud.mp3""
client: [2] command returned 0
client: [2] process command "play"
playlist: play 0:"http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_d0e960f7b0_google_cloud.mp3"
client: [2] command returned 0
decoder_thread: probing plugin mad
decoder: audio_format=24000:24:1, seekable=false
output: opened "Home Assistant Pulseaudio" (pulse) audio_format=24000:24:1
client: [2] process command "status"
client: [2] command returned 0
client: [2] process command "currentsong"
client: [2] command returned 0
player: played "http://<IP_ADDRESS>:8123/api/tts_proxy/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_en-us_d0e960f7b0_google_cloud.mp3"
playlist: stop
output: closed "Home Assistant Pulseaudio" (pulse)
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0
client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "outputs"
client: [1] command returned 0

I'm sorry to hear that. I see the mpd activates the pulseaudio system, maybe its sending the stream in a way the audio system doesn't understand.
Could you also share the audio system logs (From the supervisor log tab)?

Maybe a volume problem? (I can't hear anything.)
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] client.c: Created 47 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
I: [pulseaudio] client.c: Freed 47 "supervisor"
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] client.c: Created 48 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
I: [pulseaudio] client.c: Freed 48 "supervisor"
I: [pulseaudio] protocol-native.c: Connection died.
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC1 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.usb-1130_USB_AUDIO-00.
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC1 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.usb-1130_USB_AUDIO-00.
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.0.
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: [pulseaudio] module-udev-detect.c: Resuming all sinks and sources of card alsa_card.0.
I: [pulseaudio] client.c: Created 49 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
I: [pulseaudio] client.c: Freed 49 "supervisor"
I: [pulseaudio] protocol-native.c: Connection died.
D: [pulseaudio] module-stream-restore.c: Not restoring device for stream sink-input-by-media-role:music, because already set to 'alsa_output.usb-1130_USB_AUDIO-00.analog-stereo'.
D: [pulseaudio] sink-input.c: Negotiated format: pcm, format.sample_format = "\"s24-32le\""  format.rate = "24000"  format.channels = "1"  format.channel_map = "\"mono\""
I: [pulseaudio] sink-input.c: Trying to change sample spec
D: [pulseaudio] sink.c: Default and alternate sample rates are the same, so there is no point in switching.
D: [pulseaudio] resampler.c: Resampler:
D: [pulseaudio] resampler.c:   rate 24000 -> 48000 (method speex-float-1)
D: [pulseaudio] resampler.c:   format s24-32le -> s16le (intermediate float32le)
D: [pulseaudio] resampler.c:   channels 1 -> 2 (resampling 1)
D: [pulseaudio] resampler.c: Channel matrix:
D: [pulseaudio] resampler.c:        I00
D: [pulseaudio] resampler.c:     +------
D: [pulseaudio] resampler.c: O00 | 1.000
D: [pulseaudio] resampler.c: O01 | 1.000
I: [pulseaudio] remap.c: Using mono to stereo remapping
I: [pulseaudio] speex.c: Choosing speex quality setting 1.
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 8 "Home Assistant Pulseaudio" on alsa_output.usb-1130_USB_AUDIO-00.analog-stereo with sample spec s24-32le 1ch 24000Hz and channel map mono
I: [pulseaudio] sink-input.c:     media.name = "Home Assistant Pulseaudio"
I: [pulseaudio] sink-input.c:     application.name = "Music Player Daemon"
I: [pulseaudio] sink-input.c:     native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c:     native-protocol.version = "33"
I: [pulseaudio] sink-input.c:     media.role = "music"
I: [pulseaudio] sink-input.c:     application.icon_name = "mpd"
I: [pulseaudio] sink-input.c:     application.process.id = "290"
I: [pulseaudio] sink-input.c:     application.process.user = "root"
I: [pulseaudio] sink-input.c:     application.process.host = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     application.process.binary = "mpd"
I: [pulseaudio] sink-input.c:     application.language = "C"
I: [pulseaudio] sink-input.c:     application.process.machine_id = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     module-stream-restore.id = "sink-input-by-media-role:music"
I: [pulseaudio] protocol-native.c: Requested tlength=250.00 ms, minreq=20.00 ms
D: [pulseaudio] protocol-native.c: Traditional mode enabled, modifying sink usec only for compat with minreq.
D: [pulseaudio] protocol-native.c: Requested latency=210.00 ms, Received latency=99.94 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=24000, base=4, prebuf=22084, minreq=1920 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=24000, base=4, prebuf=22084, minreq=1920 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 349.94 ms = 210.00 ms + 2*20.00 ms + 99.94 ms
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: IDLE -> RUNNING
D: [alsa-sink-USB Audio] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 18932 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 3458
D: [alsa-sink-USB Audio] sink-input.c: Have to rewind 18932 bytes on render memblockq.
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 17972 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4493
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4493
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 17972 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 7143
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: RUNNING -> IDLE
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 8 "Home Assistant Pulseaudio"

anoter try
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 5120
D: [alsa-sink-USB Audio] sink-input.c: Have to rewind 18932 bytes on render memblockq.
D: [alsa-sink-USB Audio] sink-input.c: Have to rewind 17396 bytes on implementor.
D: [alsa-sink-USB Audio] source.c: Processing rewind...
I: [pulseaudio] module-stream-restore.c: Storing volume/mute/device for stream sink-input-by-media-role:music.
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 17972 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4493
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4493
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 17972 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 6920
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: RUNNING -> IDLE
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 38 "Home Assistant Pulseaudio"
I: [pulseaudio] module-stream-restore.c: Synced.
I: [pulseaudio] client.c: Freed 19 "Music Player Daemon"
I: [pulseaudio] protocol-native.c: Connection died.
I: [pulseaudio] client.c: Created 50 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
D: [pulseaudio] protocol-native.c: Protocol version: remote 33, local 33
D: [pulseaudio] protocol-native.c: SHM possible: no
D: [pulseaudio] protocol-native.c: Negotiated SHM: no
D: [pulseaudio] protocol-native.c: Disabling srbchannel, reason: No SHM support
D: [pulseaudio] module-stream-restore.c: Not restoring device for stream sink-input-by-media-role:music, because already set to 'alsa_output.usb-1130_USB_AUDIO-00.analog-stereo'.
D: [pulseaudio] sink-input.c: Negotiated format: pcm, format.sample_format = "\"s24-32le\""  format.rate = "44100"  format.channels = "1"  format.channel_map = "\"mono\""
I: [pulseaudio] sink-input.c: Trying to change sample spec
D: [pulseaudio] sink.c: Default and alternate sample rates are the same, so there is no point in switching.
I: [pulseaudio] module-stream-restore.c: Restoring volume for sink input sink-input-by-media-role:music.
D: [pulseaudio] resampler.c: Resampler:
D: [pulseaudio] resampler.c:   rate 44100 -> 48000 (method speex-float-1)
D: [pulseaudio] resampler.c:   format s24-32le -> s16le (intermediate float32le)
D: [pulseaudio] resampler.c:   channels 1 -> 2 (resampling 1)
D: [pulseaudio] resampler.c: Channel matrix:
D: [pulseaudio] resampler.c:        I00
D: [pulseaudio] resampler.c:     +------
D: [pulseaudio] resampler.c: O00 | 1.000
D: [pulseaudio] resampler.c: O01 | 1.000
I: [pulseaudio] remap.c: Using mono to stereo remapping
I: [pulseaudio] speex.c: Choosing speex quality setting 1.
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 39 "Home Assistant Pulseaudio" on alsa_output.usb-1130_USB_AUDIO-00.analog-stereo with sample spec s24-32le 1ch 44100Hz and channel map mono
I: [pulseaudio] sink-input.c:     media.name = "Home Assistant Pulseaudio"
I: [pulseaudio] sink-input.c:     application.name = "Music Player Daemon"
I: [pulseaudio] sink-input.c:     native-protocol.peer = "UNIX socket client"
I: [pulseaudio] sink-input.c:     native-protocol.version = "33"
I: [pulseaudio] sink-input.c:     media.role = "music"
I: [pulseaudio] sink-input.c:     application.icon_name = "mpd"
I: [pulseaudio] sink-input.c:     application.process.id = "288"
I: [pulseaudio] sink-input.c:     application.process.user = "root"
I: [pulseaudio] sink-input.c:     application.process.host = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     application.process.binary = "mpd"
I: [pulseaudio] sink-input.c:     application.language = "C"
I: [pulseaudio] sink-input.c:     application.process.machine_id = "243ffc37-mpd"
I: [pulseaudio] sink-input.c:     module-stream-restore.id = "sink-input-by-media-role:music"
I: [pulseaudio] protocol-native.c: Requested tlength=250.00 ms, minreq=20.00 ms
D: [pulseaudio] protocol-native.c: Traditional mode enabled, modifying sink usec only for compat with minreq.
D: [pulseaudio] protocol-native.c: Requested latency=210.00 ms, Received latency=99.94 ms
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=4194304, tlength=44100, base=4, prebuf=40576, minreq=3528 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=4194304, tlength=44100, base=4, prebuf=40576, minreq=3528 maxrewind=0
I: [pulseaudio] protocol-native.c: Final latency 349.94 ms = 210.00 ms + 2*20.00 ms + 99.94 ms
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: IDLE -> RUNNING
D: [alsa-sink-USB Audio] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 18932 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 5050
D: [alsa-sink-USB Audio] sink-input.c: Have to rewind 18932 bytes on render memblockq.
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [alsa-sink-USB Audio] alsa-sink.c: Requested volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Got hardware volume: front-left: 5010 /   8% / -67.00 dB,   front-right: 5010 /   8% / -67.00 dB
D: [alsa-sink-USB Audio] alsa-sink.c: Calculated software volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB (accurate-enough=yes)
D: [alsa-sink-USB Audio] sink.c: Volume not changing
D: [alsa-sink-USB Audio] alsa-sink.c: Requested to rewind 19188 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: Limited to 18932 bytes.
D: [alsa-sink-USB Audio] alsa-sink.c: before: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: after: 4733
D: [alsa-sink-USB Audio] alsa-sink.c: Rewound 18932 bytes.
D: [alsa-sink-USB Audio] sink.c: Processing rewind...
D: [alsa-sink-USB Audio] sink.c: latency = 3370
D: [alsa-sink-USB Audio] source.c: Processing rewind...
D: [pulseaudio] sink.c: alsa_output.usb-1130_USB_AUDIO-00.analog-stereo: state: RUNNING -> IDLE
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
I: [pulseaudio] sink-input.c: Freeing input 39 "Home Assistant Pulseaudio"

Phuu, the supervisor logs shows at least that the audio system ist receiving the sound data of the addon. Can you verify that usb audio works with other addons on your setup? Maybe VLC or something?

I will


[tw] Add content/zh-tw/cluster.md

Origin content from https://glossary.cncf.io/cluster/
Describe your changes
Add new translations term - cluster
Related issue number or link (ex: resolves #issue-number)
resolves #2019
Checklist before opening this PR (put x in the checkboxes)

[x] This PR does not contain plagiarism

don’t copy other people’s work unless you are quoting and contributing it to them.

[x] I have signed off on all commits

signing off (ex: git commit -s) is to affirm that commits comply DCO. If you are working locally, you could add an alias to your gitconfig by running git config --global alias.ci "commit -s".

Will do squash 1 commit before merge PR

It appears that additional approvers are required in order to approve this PR successfully.

Hi @seokho-son Aa there are currently only 2 zh-tw approvers, and I' unable to approve my own PR, could you please assist in approving this PR?

LGTM,Thanks @seokho-son.

@pichuang Sure! :)
(please find a nice candidate for the new approver !)


Make withContext argument Partial

I am not sure if I am overlooking something obvious, but it feels odd I would need to specify full context shape whenever I need a machine with one value changed.

It currently requires the entire context, but in V5 it will be partial. So we'll hold off on this one until then. Thank you, though!

Hm :/ But how far is the V5? I don't like the idea of adding hacks to my code while it can be fixed easily on XState side.

This PR doesn't necessarily fix it, though, because it's not partial - it will replace the entire context with only the partial context that you gave it.
However, I can add an updater function that is backwards- and forwards-compatible:
const newMachine = machine.withContext(ctx => ({
  ...ctx,
  foo: 'bar'
});

How would that sound? cc. @Andarist

Oh, I don't know why I thought it accepts partial, it was some logical assumption I guess 😊 That updater function sounds like a great addition for sure, but if it's too complicated don't worry about it. I don't want to delay your other work considering nobody else seems to be concerned by this.

@FredyC There was another similar concern raised in another PR, so it's definitely shared.


log4net 2.0.10/11 support

Hello there
Is there planned support for log4net 2.0.10 and/or 2.0.11?
thank you

log4net 2.0.12 is out. This needs to be updated.

I prepared a PR: #187
However, I'm not sure how to run the CI, publish the NuGet package, etc. I'm not one of the maintainers.

Hi all,  @tompazourek  any news on this one?

@CrazedBear No, I'm not a maintainer of this repo, and nobody has looked at my PR contribution yet. There's not much more I can do.
For the project where I needed it, I ended up just copying the relevant code and I'm not using the library part Common.Logging.Log4NetXXXX anymore.


Fix multiple Windows tar issues

When on the server side handling files, use filepath
When loading files into the tarball, use path
When on the clientside use filepath
Use our own tar logic to avoid tarx and bugs with path/filepath
Use splat on Windows as we do for linux. TODO (not on this PR): avoid reading entire tar into memory, for large runs that will cause an issue I'm pretty sure. Tarballs can get very big when you have 100 nodes and run tests for hours.

Use splat on Windows as we do for linux. TODO (not on this PR): avoid reading entire tar into memory, for large runs that will cause an issue I'm pretty sure. Tarballs can get very big when you have 100 nodes and run tests for hours.

Good catch, I did that without too much thought because I wanted to get distroless out before another CVE report comes in 😅

One failure and it is for a symlink issue; can someone else take a look and confirm I resolved it and this is now a false negative? I added an ultra-conservative fix but I think the codeQL logic just doesn't pick it up. Their suggested logic doesn't fix because the symlink path doesn't actually exist so evalSymlink fails. We are testing a hypothetical link and so I just prevent any path traversal.

One more suggestion
Maybe do a relative import from within the test package to point to the location of TarDir?
Anyway, we can get this in now and think of a better/simpler way of solving this later.

After this PR I'll immediately put up another to reference it. Your description of it as another project entirely made the flow much more clear to me; if we depend on XYZ and want a change we just have to order those changes as needed.


Labels hidden or overlapping on big datasets

Hello,
It seems that if there are a lot of labels, they do overlap. I tried to play with svg height and height() but the results are either hidden or overlapping.

If there is not enough total height then the labels will end up overlapping. You can increase the height of the viz (see http://bl.ocks.org/NPashaP/aeef4383faf3a5885d95799e4cfdd220) to have enough room.

I gave it
svg.attr("height", vars.canvasHeight);
var g = svg.append("g").attr("transform", "translate(150,30)");
.height(vars.canvasHeight-30)
where canvasHeight is even 4000 with the same results

viz.bP() has its own height function.


Add option for selecting node image for a node pool in GKE

This requires an API endpoint in order to display options to the user.
Took this one issue out of https://github.com/rancher/rancher/issues/14299

The enhancement is validated on rancher: master 2/13
Rancher HA setup
Steps:

add  two GKE cluster
choose different OS image for those two clusters

Result:
Two GKE clusters using different OS images are provisioned successfully.


Bug in prices for AWS previous generations prices

Prices doesn't get prices for instance types of previous generations, making reports to fail miserably if there are instances of these types.

Fixes as of #51


Strange behavior when adding migrations

Hi,
After adding reference to EFCore.BulkExtensions nuget package, adding migration adds code as if the system is using Postgresql database even though we are using SQL Server. The example below is taken
b.Property<int>("Id").ValueGeneratedOnAdd().HasColumnType("int").HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)

I'm having the same issue. My project doesn't have any reference for Postgresql and checked the provider name on the DbContext  it is "Microsoft.EntityFrameworkCore.SqlServer"

Same for me, there is a bunch of Npgsql references in the migration files.  Running dotnet ef dbcontext info verifies I am using SqlServer.

Take per provider package, EFCore.BulkExtensions.SqlServer


Extension build process never finishes

VS Code Version: 1.55
OS Version: windows 10 20H2

Steps to Reproduce:
in terminal:

yo code
enter extension name and other info...
cd EXTENSION_NAME
code .

in vscode:

press F5

then this building process never finishes and also extension host window never appears.

Does this issue occur when all extensions are disabled?: YES
this issue occurs when creating the project as a typescript project
here is a full screenshot:

I think the issue is with some of configurations to run it.
as I can run it by code --extensionDevelopmentPath="path/to/project and everything works fine. but pressing F5 doesn't work at all :/

the problem is with prelaunch task. the watch task doesn't seem to work in background.
// task.json

// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "npm",
            "script": "watch",
            "problemMatcher": "$tsc-watch",
            "isBackground": true,
            "presentation": {
                "reveal": "never"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

// launch.json

// A launch configuration that compiles the extension and then opens it inside a new window
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Run Extension",
            "type": "extensionHost",
            "request": "launch",
            "args": [
                "--extensionDevelopmentPath=${workspaceFolder}"
            ],
            "outFiles": [
                "${workspaceFolder}/out/**/*.js"
            ],
            "preLaunchTask": "${defaultBuildTask}"
        },
        {
            "name": "Extension Tests",
            "type": "extensionHost",
            "request": "launch",
            "args": [
                "--extensionDevelopmentPath=${workspaceFolder}",
                "--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
            ],
            "outFiles": [
                "${workspaceFolder}/out/test/**/*.js"
            ],
            "preLaunchTask": "${defaultBuildTask}"
        }
    ]
}

finally I found the real problem.
$tsc-watch problem matcher is not localized.
my date/time format was Persian so it couldn't recognize it.
after changing to English/United States the problem solved.

#121672