sql worker on Ubuntu 18: libprocname.so failing, and failing JVM vendor check

Describe the bug
On Ubuntu 18.04, using the pulsar 2.4.1 binary distribution, the sql worker doesn't start.
After fixing python/python3 (#5369), an error is returned about the ELF format of libprocname.so.  file and nm say that the file is corrupt.
To Reproduce
$ bin/pulsar sql-worker run
ERROR: ld.so: object '/home/ubuntu/apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/libprocname.so' from LD_PRELOAD cannot be preloaded (ELF file's phentsize not the expected size): ignored.
Presto requires an Oracle or OpenJDK JVM (found Private Build)
$ file lib/presto/bin/procname/Linux-x86_64/libprocname.so
lib/presto/bin/procname/Linux-x86_64/libprocname.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), corrupted program header size, corrupted section header size
$ nm -D --defined-only lib/presto/bin/procname/Linux-x86_64/libprocname.so
nm: lib/presto/bin/procname/Linux-x86_64/libprocname.so: File format not recognized
$ ls -l lib/presto/bin/procname/Linux-x86_64/libprocname.so
-rw-r--r-- 1 ubuntu ubuntu 4700 Aug 28 09:06 lib/presto/bin/procname/Linux-x86_64/libprocname.so
$ shasum lib/presto/bin/procname/Linux-x86_64/libprocname.so
5849887050c21d07eb87b4cd513e9135de20942f  lib/presto/bin/procname/Linux-x86_64/libprocname.so

Desktop (please complete the following information):

OS: Ubuntu 18.04, openjdk-8-jre-headless:amd64 8u222-b10-1ubuntu1~18.04.1

Additional context
I have checked that the extracted file I have matches the one in the tarball:
$ tar -tvzf apache-pulsar-2.4.1-bin.tar.gz | grep procname
drwxr-xr-x jia/staff         0 2019-08-28 09:06 apache-pulsar-2.4.1/lib/presto/bin/procname/
drwxr-xr-x jia/staff         0 2019-08-28 09:06 apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/
drwxr-xr-x jia/staff         0 2019-08-28 09:06 apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-ppc64le/
-rw-r--r-- jia/staff      4700 2019-08-28 09:06 apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/libprocname.so
-rw-r--r-- jia/staff     70397 2019-08-28 09:06 apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-ppc64le/libprocname.so

4700 bytes does seem rather small for an .so, but not impossibly so.  Indeed, if I separately download presto-server-3.2.0.tar.gz (895MB!) it contains a smaller file:
$ tar -tvzf presto-server-320.tar.gz | grep \\.so
-rw-r--r--  0 0      0        4144  6 Oct 20:27 presto-server-320/bin/procname/Linux-x86_64/libprocname.so
-rw-r--r--  0 0      0       69576  6 Oct 20:27 presto-server-320/bin/procname/Linux-ppc64le/libprocname.so

If I examine this file, it is not considered corrupt by Ubuntu:
$ file libprocname.so
libprocname.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
$ nm -D --defined-only libprocname.so
0000000000200838 A __bss_start
0000000000200838 A _edata
0000000000200848 A _end
00000000000005c8 T _fini
0000000000000428 T _init
$

If I use this to replace the one supplied by pulsar, the original ELF message goes away, but the sql worker still won't start, continuing to complain about JVM version.
$ bin/pulsar sql-worker run
Presto requires an Oracle or OpenJDK JVM (found Private Build)

However, I am using OpenJDK:
$ dpkg-query -l | grep openjdk
ii  openjdk-8-jre-headless:amd64   8u222-b10-1ubuntu1~18.04.1         amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

That error message appears in older versions of Presto source, but was removed in this commit in Aug 2018.  Could it simply be that pulsar is bundling an obsolete version of presto?
I believe the source of the "Private Build" text is here:
$ java -XshowSettings 2>&1 | grep vendor
    java.specification.vendor = Oracle Corporation
    java.vendor = Private Build
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    java.vm.specification.vendor = Oracle Corporation
    java.vm.vendor = Private Build

Could it simply be that pulsar is bundling an obsolete version of presto?

I think that's it:
-rw-r--r-- jia/staff   6858764 2018-09-12 09:54 apache-pulsar-2.4.1/lib/presto/lib/presto-main-0.206.jar

Presto 0.206 was tagged on Jul 17 2018.  Current version is 0.226 (Sep 22 2019).

@candlerb the presto version was just updated recently in master.

the presto version was just updated recently in master.

Thanks!
I can't see the commit which does this, and pulsar-sql/presto-distribution/pom.xml still says <presto.version>0.206</presto.version>, but I'll test again when the next pulsar release comes out.

@candlerb ah sorry. the pull request is not merged yet. https://github.com/apache/pulsar/pull/5386

does it fixed?  i download the binary file pulsar 2.4.1 from offical page: https://pulsar.apache.org/download/   and i checked the presto version is still 0.206???

@dramaPainter:  pulsar 2.4.1 includes presto 0.206.
Note that #5386 was closed without merging, and git head https://github.com/apache/pulsar/blob/master/pulsar-sql/presto-distribution/pom.xml still fetches presto 0.206.
Therefore, unless this changes, the problem will still be in 2.4.2/2.5.0 when they are released.

didn't realize #5386 was closed. we will pick it up again.

I got it working with OpenJDK 8 by running
./bin/pulsar sql-worker run -D "java.vendor"="Oracle Corporation"
Also tested same with OpenJDK 11 but it failed with unrelated nullpointer exception.

Closed as stale. Please open a new issue if it's still relevant in maintained versions.


Update Timeline “2022-06-16t15-40-38-831z-campaign”

Automatically generated by Netlify CMS

👷 Deploy Preview for dynamic-cheesecake-5fbd8b processing.

Name
Link

🔨 Latest commit
2504573e5d6de129bddc868be15c154af7623163

🔍 Latest deploy log
https://app.netlify.com/sites/dynamic-cheesecake-5fbd8b/deploys/62eb21f12f34c20008ab66ea


I want to add c program file

/assign

/assign

@Karinakhambe are you done with the issue? You haven't shown any response in 5 days. Kindly create a PR within 2 days or the issue will be closed.


Codegen before optimizing

Based on #1389
Fixes #1368

Looks good but I found that I got the slightly different output from codegen.call_lhist when building with clang (use LLVM 10):

@@ -74,7 +74,7 @@
   store i64 %2, i64* %6
   store i64 %3, i64* %5
-  %14 = load i64, i64* %7
-  %15 = load i64, i64* %8
-  %16 = icmp slt i64 %15, %14
+  %14 = load i64, i64* %8
+  %15 = load i64, i64* %7
+  %16 = icmp slt i64 %14, %15
   br i1 %16, label %lhist.lt_min, label %lhist.ge_min

@@ -83,15 +83,15 @@

 lhist.ge_min:                                     ; preds = %entry
-  %17 = load i64, i64* %6
-  %18 = load i64, i64* %8
-  %19 = icmp sgt i64 %18, %17
+  %17 = load i64, i64* %8
+  %18 = load i64, i64* %6
+  %19 = icmp sgt i64 %17, %18
   br i1 %19, label %lhist.gt_max, label %lhist.le_max

 lhist.le_max:                                     ; preds = %lhist.ge_min
-  %20 = load i64, i64* %5
+  %20 = load i64, i64* %8
   %21 = load i64, i64* %7
-  %22 = load i64, i64* %8
-  %23 = sub i64 %22, %21
-  %24 = udiv i64 %23, %20
+  %22 = sub i64 %20, %21
+  %23 = load i64, i64* %5
+  %24 = udiv i64 %22, %23
   %25 = add i64 %24, 1
   store i64 %25, i64* %4

@@ -100,9 +100,9 @@
 lhist.gt_max:                                     ; preds = %lhist.ge_min
-  %27 = load i64, i64* %5
+  %27 = load i64, i64* %6
   %28 = load i64, i64* %7
-  %29 = load i64, i64* %6
-  %30 = sub i64 %29, %28
-  %31 = udiv i64 %30, %27
+  %29 = sub i64 %27, %28
+  %30 = load i64, i64* %5
+  %31 = udiv i64 %29, %30
   %32 = add i64 %31, 1
   store i64 %32, i64* %4

When building with gcc, the test passes. I'm not sure what is a cause.

This is the result of CI with clang: https://github.com/mmisono/bpftrace/runs/806809132

It seems the problem is the order of evaluation of function arguments. For example,
https://github.com/iovisor/bpftrace/blob/f2a6bdeac94e2dbef9a6190de54d5f01802c54ab/src/ast/codegen_llvm.cpp#L2265
then IR differs depending on which load is evaluated first.

Any reason we need to version freeze this? This seems pretty safe from a end user perspective. It's only our test infra that's changed.

Any reason we need to version freeze this? This seems pretty safe from a end user perspective. It's only our test infra that's changed.

It should be safe, I just don't want to complicate the PRs that we want to land for 0.11. Once 0.11 is released this can go in

rebasing this on #1425 (if we decide to merge that) should work around the llvm build issue for now

The reordering was quite annoying but I think i've fixed it :)

ugh, seems like we have some more typing issues to fix. I've excluded those for now to avoid bloating this PR futher. I will fix those as part of #1091


Wrong test mock on readme

I faced an error when i mocked with :
jest.mock('react-native-text-input-mask', () => ({     default: jest.fn(), }))
so i switch to this:
jest.mock('react-native-text-input-mask', () => 'TextInputMask');
as I saw in this issue https://github.com/react-native-text-input-mask/react-native-text-input-mask/issues/234#issuecomment-1072625753

https://github.com/react-native-text-input-mask/react-native-text-input-mask/pull/270


Can this library be used under linux

Can this library be used under linux
Hello. Can I use rsrc under linux? How to use it? I generated the syso file, but the executable icon didn't change. thanks.

@hanxiaohuivc as I understand it, this tool is to change the Windows manifest and icon. You can use Go on linux to make an exe, and rsrc on linux to give it an icon and change its manifest, but rsrc is for Windows exe's and not linux ones.
On linux, you typically have a .desktop file, which is independent of your actual program, and that is how you add an icon to your program.

@servusdei2018 Hi, I know the Go automatically embeded *.syso files when I build an app, but why this does not happens when I build app for Windows on Linux?

@ChugunovRoman as far as I know, *.syso files are embedded too when you build for Windows on Linux. Probably your *.syso file is misconfigured though, you might have better luck with the syso utility. If that still doesn't work, I recommend asking on the Golang discord: https://discord.com/invite/golang


Redis connect failed just show NOAUTH Authentication required

Welcome!

[X] Yes, I've searched similar issues on GitHub and didn't find any.
[X] Yes, I've searched similar issues on the Traefik community forum and didn't find any.

What did you do?
I run new release version v2.9.1 Latest
It still has problem that can't login Redis with specified username & password
https://github.com/traefik/traefik/issues/9304
https://github.com/kvtools/redis/issues/3
What did you see instead?
It does have to have an account and password,
but whether to provide a password or not, it always show
"KV connection error: KV store connection error: NOAUTH Authentication required..."
I write java test code, it login success, but Traefik failed

https://lettuce.io/

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.codec.StringCodec;

class TestRedisClient {
    private static final Logger log = LoggerFactory.getLogger(TestRedisClient.class);

    @Test
    void test() {
        log.debug("Begin...");
        CountDownLatch latch = new CountDownLatch(1);
        try {
            String username = URLEncoder.encode("traefik-user", StandardCharsets.UTF_8);
            String password = URLEncoder.encode("~treafik-Test-109!", StandardCharsets.UTF_8);
            String connectionString = "redis://" + username + ":" + password
                    + "@redis-14654.c289.us-west-1-2.ec2.cloud.redislabs.com:14654/0";

            RedisURI redisURI = RedisURI.create(connectionString);

            RedisClient client = RedisClient.create();
            client.connectAsync(StringCodec.UTF8, redisURI)
                    .thenAccept(conn -> {
                        log.debug("onSuccess, conn: {}", conn);
                        conn.close();
                        latch.countDown();
                    })
                    .exceptionally(err -> {
                        log.error("onFailure", err);
                        latch.countDown();
                        return null;
                    });

            log.debug("Before await");
            latch.await();

            client.close();
            log.debug("After await");
        } catch (Exception e) {
            log.error(e.toString());
        } finally {
            log.debug("End.");

Here is test Account
providers:
  redis:
    rootKey: "traefik"
    username: "traefik-user"
    password: "~treafik-Test-109!"
    endpoints:
      - "redis-14654.c289.us-west-1-2.ec2.cloud.redislabs.com:14654"

If applicable, please paste the log output in DEBUG level
time="2022-10-05T21:20:47+08:00" level=info msg="Traefik version 2.9.1 built on 2022-10-03T14:22:13Z"
time="2022-10-05T21:20:47+08:00" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-10-05T21:20:47+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=http
time="2022-10-05T21:20:47+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=https
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider *file.Provider"
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider *traefik.Provider"
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider *consulcatalog.Provider"
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-10-05T21:20:47+08:00" level=info msg="Starting provider *redis.Provider"
time="2022-10-05T21:20:48+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 525.860654ms" providerName=redis
time="2022-10-05T21:20:48+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 922.623964ms" providerName=redis
time="2022-10-05T21:20:49+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 1.542543566s" providerName=redis
time="2022-10-05T21:20:51+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 1.281710557s" providerName=redis
time="2022-10-05T21:20:52+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 2.089869192s" providerName=redis
time="2022-10-05T21:20:55+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 5.110286725s" providerName=redis

Same here. I can confirm that in v2.8.8 the problem is not present.

in v2.8.8 the username was not supported -> #9304.

I'm looking for a redis.conf to reproduce the problem.

Here is a sample config file (My MacOS)
traefik.yml
log:
  level: info
  filePath: "./log/traefik.log"

accessLog:
  filePath: "./log/access.log"
  bufferingSize: 100
  filters:
    statusCodes:
      - "200"
      - "300-302"
    retryAttempts: true
    minDuration: "10ms"
  fields:
    defaultMode: keep
    names:
      ClientUsername: drop
    headers:
      defaultMode: keep
      names:
        User-Agent: redact
        Authorization: drop
        Content-Type: keep

providers:
  file:
    watch: true
    directory: "./conf"
    debugLogGeneratedTemplate: true

  redis:
    rootKey: "traefik:"
    username: "emojiwe.io"
    password: "Powerk6~"
    endpoints:
      - "redis-16561.c289.us-west-1-2.ec2.cloud.redislabs.com:16561"

entryPoints:
  http: # web
    address: ":8181"
    forwardedHeaders:
      insecure: true
    proxyProtocol:
      insecure: true
    transport:
      respondingTimeouts:
        readTimeout: 60s
    http:
      redirections:
        entryPoint:
          to: https
          scheme: https

  https:
    address: ":8443"
    proxyProtocol:
      insecure: true
    transport:
      respondingTimeouts:
        readTimeout: 60s

  traefik:
    address: ":8282"

api:
  insecure: true
  debug: true
  dashboard: true

traefik.log
time="2022-10-12T22:04:58+08:00" level=info msg="Traefik version 2.9.1 built on 2022-10-03T14:22:13Z"
time="2022-10-12T22:04:58+08:00" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-10-12T22:04:58+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=http
time="2022-10-12T22:04:58+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=https
time="2022-10-12T22:08:50+08:00" level=info msg="Traefik version 2.9.1 built on 2022-10-03T14:22:13Z"
time="2022-10-12T22:08:50+08:00" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-10-12T22:08:50+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=http
time="2022-10-12T22:08:50+08:00" level=info msg="Enabling ProxyProtocol without trusted IPs: Insecure" entryPointName=https
time="2022-10-12T22:08:50+08:00" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2022-10-12T22:08:50+08:00" level=info msg="Starting provider *file.Provider"
time="2022-10-12T22:08:50+08:00" level=info msg="Starting provider *traefik.Provider"
time="2022-10-12T22:08:50+08:00" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-10-12T22:08:50+08:00" level=info msg="Starting provider *redis.Provider"
time="2022-10-12T22:08:50+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 619.568247ms" providerName=redis
time="2022-10-12T22:08:51+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 809.331073ms" providerName=redis
time="2022-10-12T22:08:52+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 1.098028431s" providerName=redis
time="2022-10-12T22:08:53+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 1.559602842s" providerName=redis
time="2022-10-12T22:08:55+08:00" level=error msg="KV connection error: KV store connection error: NOAUTH Authentication required, retrying in 3.066236807s" providerName=redis

Redis GUI tool login screenshot

https://redis.com/redis-enterprise/redis-insight/

I don't have Redis Enterprise, I just have the open-source version, so I'm looking for a redis.conf file.

redis.conf
#protected-mode no
requirepass "_default_pwd~"

user traefik-user on >~treafik-Test-109! ~* +@all

Step by step
sudo mkdir /opt/redis-test
sudo chown -R $(whoami) /opt/redis-test
sudo chmod +wr /opt/redis-test

cd /opt/redis-test
cp -r $HOME/.../redis.conf /opt/redis-test

docker run -v /opt/redis-test:/usr/local/etc/redis -d --name redis-test -p 14654:6379 --restart always redis:6 /usr/local/etc/redis/redis.conf

traefik.yml
...
providers:
  file:
    watch: true
    directory: "./conf"
    debugLogGeneratedTemplate: true

  redis:
    rootKey: "traefik"
    username: "traefik-user"
    password: "~treafik-Test-109!"
    endpoints:
      #- "redis-14654.c289.us-west-1-2.ec2.cloud.redislabs.com:14654"
      - "<IP_ADDRESS>:14654"
...

GUI Tool  login default user success, traefik login failed
providers:
  ...
  redis:
    rootKey: "traefik"
    #username: "traefik-user"
    #password: "~treafik-Test-109!"
    username: "default"
    password: "_default_pwd~"
    endpoints:
      - "<IP_ADDRESS>:14654"
  ...

@leotu thank you for the configuration, I was able to reproduce the problem, and I fixed it.


Visual design style guide: The way the color tables are laid out currently the screen reader only reads the table header when it arrives on the color rows.

See Accessibility Review document

I would not use table at all. Lets use normal normal columns layout with color chips as div containers (that will be ignored by screen readers) and the color values text that will be normally read by screen readers.

@kmbrlygl please confirm this issue is as expected https://1-0-2-a11y-design.pr.designsystem.webstandards.ca.gov/style/design/

@jaredwyee Yes, good to go! Thanks for checking.


nuspec file reference incorrectly lists minClientVersion as an element rather than attribute

https://docs.microsoft.com/en-us/nuget/schema/nuspec
On this page, minClientVersion is listed as an optional element to appear under the <metadata> element. This is incorrect - minClientVersion should actually be an attribute on <metadata>.
This caused us problems in https://github.com/nunit/nunit/pull/2595
/cc @phillipsj

Done, https://github.com/NuGet/docs.microsoft.com-nuget/pull/617.

Great - thanks! 😄


method to push files to machine running the Application

I needed to know if there is a method(or a programmatic way) which I can use to transfer files from my machine running the tests to the machine running the Application.

Something like TFS Release Management or Jenkins? Or an even simpler PowerShell remote command? I guess without knowing the use case, it's hard to say what would be a good route to go. Can you describe the situation where you need to do this?

Recommend SimpleRemote for transferring files.  https://github.com/Microsoft/SimpleRemote

@jewilder this is brilliant 👍


[Bug] The pane does not refresh

Using the last (0.5.0) version, the tag navigator pane does not refresh when I interact with it. Only my first action (for instance, enabling the display of a certain tag category) is followed by a plugin refresh, but then on, any other action is not correctly rendered and I have to close and re-open the Tag pane for my actions being visible (plugin refreshed).
I’m using the 1.0.3 version of Obsidian, and below is the is the list of my activated plugins :

Citations
BRAT
Pandoc
Status bar pomodoro timer
Text snippets
Update time on edit
Tag wrangler
Frontmatter tag suggest

I tried to install the plugin with BRAT : same result. I also tried to disable all the plugins but the tag navigator and BRAT : same result.
Thanks for your work !
EDIT : same phenomenon with the 0.4.0 (cross-navigation plugin) version.

I'm seeing the same issue. Poking at this in the debugger, the TagMenuStore.selectTags function runs correctly but the store's subscribers don't update. I'm not familiar enough with Svelte to get much further than that right now.

Hey,
I had the same problem. I was able to fix it by rebuilding the plugin from the source code. Here's a quick fix:

Go to the plugin folder and open main.js on your favorite code editor.
Cmd/Ctrl + F to find this line this.app.workspace.requestSave()
Replace it with "this.app.workspace.requestSaveLayout()"

Et voilà, enjoy !

Oh, interesting. Ref https://github.com/alexobenauer/obsidian-tag-navigator/issues/3 for some more details on what's going on there. That's fixed by accident in my PR because it's removed entirely.

Yes, the whole snippet was removed from what I see.
I did some bug tracking by starting from the developer console error message and going back to the source (breaking down this problematic line) then looking for the closest entries to it in the Obsidian developer documentation. Some narrowing down: Typescript API references -> Class -> Properties enabled me to find the "requestSaveLayout" property that had the same function as "requestSaveHistory".
Now it's working flawlessly


Allow focusing query search field via accesskey

Conveniently focus the search field via alt+shift+q (e.g. in FF); the particular key is opinionated of course, but i remember "q" (for "query") being fairly standard some years ago.

accesskey seems to be quite tricky to use based on MDN. Not sure it's the right way to do it...

also, it seems like the concerns are mostly around accessibility, and issues with using multiple keys.


klaviyo API Key

Hey there, thanks for this component library! I currently have a Sanity x Shopify project for a client and am working with the klaviyo Subscribe component. It works very well, but I am wondering if the correct ID is the Public API Key (Account > Settings > API Keys) or if its the newsletter List ID Key (Lists & Segments > Newsletter > Settings). Oddly enough I tested it out and both work seem to work.. However it may be that there is a delay in the time the newsletter signup email reaches the client so perhaps I am just using the wrong api key at the wrong times during development.
I just want to confirm which API key/id should be used. Thanks!

Hey @rylanharper! It is the List ID (https://www.klaviyo.com/list/:id/settings) List > Settings.
The "Klaviyo delay" is really annoying, I have run into the same issue more times than I want to admit. Hope that helps and let me know if you run into anything else!


MESH term incorrectly having Biolink category "named thing"

This issue report is from Will Byrd of Team Unsecret Agent.
Will notes that in KG2 (confirmed by me in KG2.7.2), the node with id value MESH:D014839 ("vomiting") has a Biolink category of biolink:NamedThing. Based on that MESH term's UMLS semantic type annotation (T184) one would think its category should be biolink:PhenotypicFeature.
How to reproduce this issue: log into the Neo4j endpoint for KG2.7.2 and enter this Cypher query:
match (n {id: 'MESH:D014839'}) return n.id, n.name, n.category;

which returns:
n.id | n.name | n.category
-- | -- | --
"MESH:D014839" | "Vomiting" | "biolink:NamedThing"

The commit that I think will fix this issue is e22f39e1. Doing more thorough testing (with all of umls-msh.ttl) now...

OK, with patch e22f9e1 to multi_ont_to_json_kg.py, the relevant block of kg2-ont.json reads:
        {
            "category": "biolink:PhenotypicFeature",
            "category_label": "phenotypic_feature",
            "creation_date": null,
            "deprecated": true,
            "description": "The forcible expulsion of the contents of the STOMACH through the MOUTH.; UMLS Seman
tic Type: UMLSSC:T184",
            "full_name": null,
            "has_biological_sequence": null,
            "id": "MESH:D014839",
            "iri": "http://purl.bioontology.org/ontology/MESH/D014839",
            "name": "Vomiting",
            "provided_by": "umls_source:MSH",
            "publications": [],
            "replaced_by": null,
            "synonym": [
                "Emesis"
            ],
            "update_date": "2015"
        },

Confirmed fixed in KG2.7.3


docs: example of kg+vector index

Description
Part of #1318

example of a custom retriever combining vector and kg, it's an example to load docs from a new page in Wikipedia created after the 2021 Sept, where 1. how to best leverage kg + vector store backed custom index was demonstrated, 2. the extra cost, performance was evaluated. See rendered notebook here.

polishing kg store/index

now get_networkx_graph() will sample 100 starting nodes only(can be specified), as larger graph makes no sense to be rendered all
now the predicate of a triplet will be shown in the get_networkx_graph(), too
in some LLM models(i.e. azure oai gpt-3.5-turbo), the prompts extraction of knowledge won't ensure pure triplets being returned, extra logic to avoid invalid data was introduced
some optimization on the NebulaGraph graph store was introduced

Fixes #1318
PS, I am writing a blog post(and will record a video, too) together with this change's work.
Type of Change
Please delete options that are not relevant.

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

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

[ ] Added new unit/integration tests
[ ] Added new notebook (that tests end-to-end)
[x] I stared at the code and made sure it makes sense

Suggested Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

Thanks for contributing this notebook and analysis, as well as a few fixes in the KG index! 💪🏻
Because of your notebook, I actually noticed a small bug with include_text in keyword retriever mode. I attached the fix to this PR :)

wey:
Dear @logan-markewich,
Many thanks for the optimization, review, great fix(sorry for introducing them), and supportive comments 🚀!

Overall I think the analysis is pretty interesting. Was cool to see only ~150 tokens could be used, and llama-index still gives a good (but short) answer.

wey:
Yeah, if we combine some existing/general-kg, maybe in some use cases, LLM could even be considered to be decoupled, (or in a custom retriever, query KG first, and when it exceeds some threshold, to short-circuit other retrievers to reduce the context size)? XD

Dear @jerryjliu

@wey-gu i see, this makes sense. could you point me to the place where this doubles calls to the LLM for keyword extraction?

This line calls LLM to extract keywords from nodes( self._get_keywords(), in line 154 after this comment. By default, it's not called as self.use_global_node_triplets is off by default. :)
I can optimize this in the next PR.
                        extended_subjs = self._get_keywords(
                            self._docstore.get_node(node_id).get_text()
                        )

Dear Sarah,
It’s strange I cannot find this thread from github, thus I am replying it via email.
It seems the text2cypher llm call returned abnormal output, may I know which model are you using as the LLM predictor, please?
From: Sarah Johnson @.>
Date: Tuesday, July 25, 2023 at 11:17
To: jerryjliu/llama_index @.>
Cc: Siwei Gu @.>, Mention @.>
Subject: Re: [jerryjliu/llama_index] docs: example of kg+vector index (PR #6497)
hello，When I used this example：https://gptindex.readthedocs.io/en/latest/examples/query_engine/knowledge_graph_query_engine.html
I encountered this error, all of which are as follows：
AttributeError: 'NoneType' object has no attribute 'CALL'
[image]https://user-images.githubusercontent.com/65516153/255777833-21c898bf-103f-4b39-81c3-43148471a616.png
And the complete error is as follows：
Generate NebulaGraph query from natural language.
Use only the provided relationship types and properties in the schema.
Do not use any other relationship types or properties that are not provided.
Schema:
Node properties: [{'tag': 'entity', 'properties': [('name', 'string')]}]
Edge properties: [{'edge': 'relationship', 'properties': [('relationship', 'string')]}]
Relationships: []

Note: NebulaGraph speaks a dialect of Cypher, comparing to standard Cypher:

it uses double equals sign for comparison: == rather than =
it needs explicit label specification when referring to node properties, i.e.
v is a variable of a node, and we know its label is Foo, v.foo.name is correct
while v.name is not.

For example, see this diff between standard and NebulaGraph Cypher dialect:
< MATCH (p:person)-[:directed]->(m:movie) WHERE m.name = 'The Godfather'
< RETURN p.name;

MATCH (p:person)-[:directed]->(m:movie) WHERE m.movie.name == 'The Godfather'

RETURN p.person.name;

Question: Tell me about Peter Quill?
NebulaGraph Cypher dialect query:
Graph Store Query: ```css
MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE m.name = 'The Godfather'
RETURN p.name;
This query will retrieve the name of the person who acted in the movie named 'The Godfather'.
Traceback (most recent call last):
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/tenacity/init.py", line 382, in call
result = fn(*args, **kwargs)

File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/graph_stores/nebulagraph.py", line 210, in execute
raise e

File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/graph_stores/nebulagraph.py", line 186, in execute
raise ValueError(

ValueError: Query failed. Query: ```css
MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE m.name = 'The Godfather'
RETURN p.name;
This query will retrieve the name of the person who acted in the movie named 'The Godfather'., Param: {}Error message: SyntaxError: syntax error near ```css
MA'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/root/api_model/a_demotest/test/knowledgegraph_engine.py", line 102, in
response = query_engine.query("Tell me about Peter Quill?")
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/indices/query/base.py", line 23, in query
response = self._query(str_or_query_bundle)
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/query_engine/knowledge_graph_query_engine.py", line 182, in _query
graph_store_response = self.graph_store.query(query=graph_store_query)
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/graph_stores/nebulagraph.py", line 526, in query
result = self.execute(query, param_map)
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/tenacity/init.py", line 289, in wrapped_f
return self(f, *args, **kw)
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/tenacity/init.py", line 379, in call
do = self.iter(retry_state=retry_state)
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/tenacity/init.py", line 326, in iter
raise retry_exc from fut.exception()
tenacity.RetryError: RetryError[<Future at 0x7fe8a75d0a90 state=finished raised ValueError>]
Exception ignored in: <function NebulaGraphStore.del at 0x7fe8a7847700>
Traceback (most recent call last):
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/llama_index/graph_stores/nebulagraph.py", line 162, in del
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/nebula3/gclient/net/SessionPool.py", line 273, in close
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/nebula3/gclient/net/Session.py", line 288, in _sign_out
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/nebula3/gclient/net/Connection.py", line 197, in signout
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/nebula3/graph/GraphService.py", line 1603, in signout
File "/root/miniconda3/envs/llm-test/lib/python3.9/site-packages/nebula3/graph/GraphService.py", line 1606, in send_signout
AttributeError: 'NoneType' object has no attribute 'CALL'
—
Reply to this email directly, view it on GitHubhttps://github.com/jerryjliu/llama_index/pull/6497#issuecomment-1648983412, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAMTITQQ2ZOIPCD5WSMZMU3XR43D5ANCNFSM6AAAAAAZKYAGXA.
You are receiving this because you were mentioned.Message ID: @.***>


Added test for generate.py

Added a test for generate.py.
Tested 4 cases:

creating new notebook
adding frontmatter to blank notebook
adding frontmatter to non empty notebook
repeatedly calling frontmatter.

Also there was a slight error in generate.py for empty notebooks. Although a cell does exist in an empty notebook but since it has nothing the 'cell' list is empty initially. Added a check for that too.

@vfdev-5 I have made it in such a way that dummy notebooks (both empty and with content) are created inside the functions and deleted when function ends. This way git history should remain clean, even after running tests multiple times. Please have a look again, thanks!

@trsvchn how to enable GH actions on this PR ?

Oh, I missed that, @Ishan-Kumar2 you have to add also a workflow to run in with GH actions

I have added the workflow file, but I think for it to run tests folder has to be merged into main first. Have a look here

Seems like your tests are failng. I'll close-reopen the PR to restart the GHA here.

@vfdev-5 they work now! it was an issue of paths from current location, now that we are calling tests from root folder, paths needed to be modified.

Sounds good! In general we have to setup path without any prior on from where it should be called, but ok for this case.


libpod removal from main (phase 2)

this is phase 2 for the removal of libpod from main.
Signed-off-by: baude<EMAIL_ADDRESS>

Do you have a gomod/vendor issue?
[21:27:22] END - [+0048s] total duration since START
cd ${GOSRC} && ./hack/tree_status.sh |& ${TIMESTAMP}
[21:27:22] START - All [+xxxx] lines that follow are relative to right now.
[+0000s] tree is dirty, please sync the vendor.conf and commit all changes.
[+0000s]

Changes in general LGTM if you can clean up the vendor/lint fun.

Assuming vendoring is fixed.
/lgtm
/hold

@vrothberg what do i need to do here?

Why is container.go growing log functions? Those either belong in
container_api.go or libpod/log.go. Ideally the latter, there are some
runtime functions mixed in there.
On Wed, Jun 26, 2019, 20:11 Brent Baude<EMAIL_ADDRESS>wrote:

@vrothberg https://github.com/vrothberg what do i need to do here?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/containers/libpod/pull/3442?email_source=notifications&email_token=AB3AOCB2B7V56MR7S2CR2TTP4QAUNA5CNFSM4H3WATZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYVE46Q#issuecomment-506089082,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB3AOCAMXT65VQX67H3LNX3P4QAUNANCNFSM4H3WATZA
.

Why is container.go growing log functions? Those either belong in container_api.go or libpod/log.go. Ideally the latter, there are some runtime functions mixed in there.

@mheon Im happy to make that change.  thanks

@vrothberg what do i need to do here?

cd ${GOSRC} && ./hack/tree_status.sh |& ${TIMESTAMP}
[21:27:22] START - All [+xxxx] lines that follow are relative to right now.
[+0000s] tree is dirty, please sync the vendor.conf and commit all changes.
[+0000s]
[+0000s]  M vendor/modules.txt

./hack/tree_status.sh is just a git status. The important part is M vendor/modules.txt indicating that this file is modified by make vendor but not committed.
You can fix it with make vendor, git add ./vendor/modules.txt and then commit/push.

LGTM

/hold /lgtm

/hold
/lgtm

/hold cancel


all devices are away !

Hi, very nice integration, I have installed through HACS on Hassio. Everything seems fine but alle the devices are set as away, not even one is at home...  suggestions ?

I have seen this issue come up when the user you are logging in with is not the "Owner" of the Google Wifi system in Google's system. If you are just a system manager it will not pull up correctly.

What should I do ? Create in Hassio a user with the same name than Google User ?
Edoardo
Il 9 dic 2020, 16:48 +0100, djtimca<EMAIL_ADDRESS>ha scritto:

I have seen this issue come up when the user you are logging in with is not the "Owner" of the Google Wifi system in Google's system. If you are just a system manager it will not pull up correctly.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

It is actually related to the user/config in the Google Wifi/Home app. There is a system owner and system managers. For some reason there have been some folks who's Google Home app lists them as a manager rather than the owner and this is the type of thing that seems to show up in that case.
You need to be set up as the owner in Google Wifi/Home in order to make this work.
Unfortunately it seems that if you are listed as manager it looks like the only way to fix is to do a factory reset of the network and configure it again.

I just checked and I am owner but I have same problem.

I just checked and I am owner but I have same problem.

If you uninstall and reinstall the integration do you have any different behaviour?

If you uninstall and reinstall the integration do you have any different behaviour?

I will try.
Edo
Il 4 gen 2021, 01:29 +0100, djtimca<EMAIL_ADDRESS>ha scritto:

If you uninstall and reinstall the integration do you have any different behaviour?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I will try.
Edo
Il 4 gen 2021, 01:29 +0100, djtimca<EMAIL_ADDRESS>ha scritto:

If you uninstall and reinstall the integration do you have any different behaviour?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

no way, it is the same.
regards,
Edoardo
On 5 Jan 2021, 07:57 +0100, Edoardo Gorini<EMAIL_ADDRESS>wrote:

I will try.
Edo
Il 4 gen 2021, 01:29 +0100, djtimca<EMAIL_ADDRESS>ha scritto:

If you uninstall and reinstall the integration do you have any different behaviour?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

no way, it is the same.
regards,
Edoardo
On 5 Jan 2021, 07:57 +0100, Edoardo Gorini<EMAIL_ADDRESS>wrote:

I will try.
Edo
Il 4 gen 2021, 01:29 +0100, djtimca<EMAIL_ADDRESS>ha scritto:

If you uninstall and reinstall the integration do you have any different behaviour?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Same here. Owner of the account and seeing all devices as away.

Same here. Owner of the account and seeing all devices as away.

Same here. Owner of the account and seeing all devices as away.

Same here. Owner of the account and seeing all devices as away.

Try getting a new API key and reinstalling the integration.

Try getting a new API key and reinstalling the integration.


Experimental to Main

Preparing for merging experimental to main. The old experimental might spin out to a node.js-only branch. @Sid220 Could you highlight the non-PHP changes so I can prepare a nodejs branch?

The only real non-PHP change is the detection of non hardware that doesn't exist. i.e if you don't have a mic it won't let you turn it on. These changes are in meeting.php and index.php. Also, we shouldn't merge this until the hackathon is over.


Include expected compute time in the acquisition function

When optimizing a function over a large parameter space, certain parameter combinations might strongly increase computing time (for example, decreasing tol, or decreasing the amount of regularization).
This could be improved by estimating and accounting for changes in computing time as a function of parameters, and including this as a cost in the acquisition function.

Undecided if this needs code to support it or is "simply" something users need to take care of in their objective function.

If users take care of it in their objective function, then there is no way to separate objective function score and time it takes to compute a function.

Would that not lead to a situation for which the next candidate point is the one that optimizes the acquisition function that includes the time as a cost but the intention was just to minimize the original function without considering the time factor?
However, I'm interested in the approach in general. Would you be having a reference? :-)

Sorry, this seems to be a quite common approach that is followed.
Page 6 of https://arxiv.org/pdf/1206.2944.pdf
and https://www.mathworks.com/help/stats/bayesian-optimization-algorithm.html?requestedDomain=www.mathworks.com#bva8tie-1
We can introduce another acquisition function that computes this expected objective / expected time.

I've started having a detailed look at this. Will issue a PR soon.

Being worked on in #369

Is there a good rule of thumb how to weight time and other score? I'm imagining a model where you reduce the number of layers/max_depth of trees which will lead to faster training times but potentially worse performance. Trying to understand how this is taken into account in EI per second.

Here goes my a bit verbose opinion on this.
Let p denote parameters vector being optimized with BO, f(p) objective being minimized, t(p) be the time necessary to evaluate an objective at point p.
The two cases need to be distinguished:

One is interested in finding global optimum of f, but wants to evaluate p with small t(p) first to arrive at “good enough” solutions fast.

One is interested in solving a multiobjective optimization problem with vector valued objective given by v(p) := (f(p), t(p)) .

Case 1.
In this case the variance function should be modified to encourage evaluation of “fast” points first, but not the estimate of f, in order to ensure that when variance function becomes close to zero, the estimate becomes arbitrary close to f.
One way to achieve this would be to construct surrogates for f and t (f’, f’’ for mean and deviation, same for t’, t’’), and use acquisition function for example of the form (a variant of LCB)
A(p) = f’(p) - f’’(p) / (t’(p) + epsilon)
As eventually f’’(p) becomes something close to zero, the time term affect on the acquisition function diminishes.
Conclusion: In case of 1, indeed a dedicated acquisition function is necessary.
Case 2.
In order to proceed with optimization in the first place, one needs to specify somehow an order on the points in space P where the optimization takes place, in order to be able to select between points, something like
p_0 <= p_1 <= p_2 … <= p_n
for all p_i in P, i = 1,2,3, ... . Note that given such order of points in the first place, one can construct a function f: P -> R for which this order will hold wrt input points:
f*(p_0) <= f*(p_1) <= f*(p_2) … <= f*(p_n)
Such function is explicitly given for single objective function. However for multi - objective optimization, one still needs to define how the vector objective values are compared, that is, to establish an order of the form
v(p_0) <= v(p_1) <= v(p_2) … <= v(p_n)
Similar to above, given such order one can construct a function f: P -> R for which this order will hold:
f*(v(p_0)) <= f*(v(p_1)) <= f*(v(p_2)) … <= f*(v(p_n))
Conclusion: Having a function that maps objective vector to a single value is fairly general and can be used to solve multi - objective optimization. I could see it as an extra parameter that is used to transform the objective value into single score that is used to compare different objective vectors. There could be a few predefined such vector to single value mapping (eg weighted sum, maximum of values, hypervolume etc).
Generalization of case 1 and 2.
In the case of PR as it is right now #369, the objective is a mix of both cases - a special acquisition function, which combines both mapping of v(p_i) to a single value and taking the variance into account. I think enabling user to provide a custom acquisition function generalizes both this and the cases above. It would be nice if users can easily define their own acquisition functions, for example based on existing ones and that can include mapping of objective vector into a single score.
I see an acquisition function as an estimator of its own, which takes a bunch of hyperparameters and surrogate for construction, is “fit” to the data by training (possibly multiple) surrogates on set of points and objectives, and makes “prediction” of how “interesting” some point is.
For such generalization, I would suggest to have a number of BaseEstimator - like classes defined, which represent different acquisition functions, and use them instead of current approach. Something like a pipeline can be used to include objective vector transformation. In my view, this should lead to least boilerplate code and most generic approach.
Ok Iaroslav, this is great but what is your view on what in particular needs to be done in relevant PR?

We want to get soon to 0.4 milestone: implementation in PR as it is right now should be fine. There should be an issue on custom user acquisitions then though.

It is ok if it takes a bit more time: use something inheriting from BaseEstimator for acquisitions which is quite general - could probably simplify the code also in few parts.

I am glad that you made it to the end of this comment. Feel free to let me know what you think of this :D

The acquisition function that you have mentioned in case 1 seems interesting.
For case 2: the user is still free to do a complex modeling inside the black-box function , the downside being that you cannot easily interpret the predictions obtained from the surrogate model.
Look at https://github.com/scikit-optimize/scikit-optimize/issues/148 to provide custom acquisition functions.
Not sure why you would want acquisition functions to be an estimator. For me it is a function that takes a fitted model and a number of other parameters as arguments and returns acquisition values at a number of data points. Anyway it seems unrelated to this issue :P

Yeah, just some thoughts on how to have stuff generic. But we can think about this later (maybe also when someone shows need in something more generic).
#148 - nice!
Yeah maybe this is a different issue :)


Create siri-shortcuts-print-text

There were a couple of steps here that weren't super obvious when trying to implement this the first time. Hopefully this will help other people start using the the Computer Vision APIs on the Siri Shortcuts platform.
I can add some screenshots if there is overall interest in adding this file

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

@armando-leal : Thanks for your contribution! The author, @, has been notified to review your proposed change.

@PatrickFarley please review and advise

Closed/reopened for fresh build post migration.

nudging this old PR. can this be updated or closed? thanks.

The author @armando-leal hasn't responded, so we can close this.


Add a no-javascript target

There are a few potential uses for wasm that aren't related to the web at all, but could still benefit from the features of wasm-bindgen, such as universal binaries, WASI, and as an IR to replace scripting languages. This project is almost perfect for those tasks, but there's currently no option to prevent it from generating all .js and .ts files in its output directory. In practice this is only a mild annoyance, but it would be nice if non-js workflows were supported too.
Proposed Solution
Add a "no-js" target to the existing roster of web, bundler, nodejs, no-modules.
Alternatives
People could just use cargo --target wasm32-unknown-unknown, but this entirely loses the useful size optimisations that wasm-bindgen performs. rustc outputs 70kb of wasm for simple code, while wasm-bindgen turns that same 70kb into 150 bytes.
Another alternative is an entirely separate generic wasm optimising tool, but I can't think of one that would work as well as wasm-bindgen.

Note: This might not be as needed as I thought, I've found that wabt's wasm-strip is the exact optimisation tool that I needed. Turns out rustc just likes loading wasm output with a ton of debug info, even in release mode.

such as universal binaries, WASI, and as an IR to replace scripting languages

Could you clarify what you mean by that?

I don't know how wasm-bindgen is related to "universal binaries".

Rust has native wasm32-wasi support, you don't need wasm-bindgen for that.

What IR are you referring to?

but there's currently no option to prevent it from generating all .js and .ts files in its output directory.

Well, that's because wasm-bindgen currently requires JS in order to work.

Another alternative is an entirely separate generic wasm optimising tool, but I can't think of one that would work as well as wasm-bindgen.

As you found, there are already a lot of generic wasm optimization tools.


Fix test_utf8 fails at AppVeyor.  (dirty workaround)

This problem is occured by 'feedkeys() with GUI.
Investigated by Yukihiro Nakadaira in 2013 Jul.
https://github.com/vim-jp/issues/issues/429#issuecomment-20932913 (Sorry in Japanese)
I tried to translate to rough.

Proccess flow is getcmdline () -> setmouse () -> update_mouseshape () -> char_avail ().
On GUI, Called char_avail() by cursor update in the last of getcmdline().
So ':' of the next line is read into the type-ahead-buffer before execution of feedkeys().

My solution:

The next line of the 'call feedkeys()' is empty.  (Only ':')
Without '$put=' in the feedkeys(), once I put in a string variable.
When the first character equivalent to ':', skip this character.

It's dirty...  :-)
How about this?
Best regards,
Hirohito Higashi (a.k.a h_east)

Hirohito Higashi wrote:

This problem is occured by 'feedkeys() with GUI.
Investigated by Yukihiro Nakadaira in 2013 Jul.
https://github.com/vim-jp/issues/issues/429#issuecomment-20932913 (Sorry in Japanese)
I tried to translate to rough.

Proccess flow is getcmdline () -> setmouse () -> update_mouseshape () -> char_avail ().
On GUI, Called char_avail() by cursor update in the last of getcmdline().
So ':' of the next line is read into the type-ahead-buffer before execution of feedkeys().

My solution:

The next line of the 'call feedkeys()' is empty.  (Only ':')
Without '$put=' in the feedkeys(), once I put in a string variable.
When the first character equivalent to ':', skip this character.

It's dirty...  :-)
How about this?

Thanks for figuring out what causes the problem.  So the line that has
the call to feedkeys() gets read, but then getcmdline() causes the first
character of the next line to be put in the typeahead buffer.  Then the
feedkeys() call puts its string after that character.
So the simple solution is to tell feedkeys() to insert, using the "i"
flag.  I tried it and it fixes the problem for me.
--
hundred-and-one symptoms of being an internet addict:
124. You begin conversations with, "Who is your internet service provider?"
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Hi, Bram
2015-11-22(Sun) 23:09:50 UTC+9 Bram Moolenaar:

Hirohito Higashi wrote:

This problem is occured by 'feedkeys() with GUI.

Investigated by Yukihiro Nakadaira in 2013 Jul.

https://github.com/vim-jp/issues/issues/429#issuecomment-20932913 (Sorry in Japanese)

I tried to translate to rough.

Proccess flow is getcmdline () -> setmouse () -> update_mouseshape () -> char_avail ().

On GUI, Called char_avail() by cursor update in the last of getcmdline().

So ':' of the next line is read into the type-ahead-buffer before execution of feedkeys().

My solution:

The next line of the 'call feedkeys()' is empty.  (Only ':')

Without '$put=' in the feedkeys(), once I put in a string variable.

When the first character equivalent to ':', skip this character.

It's dirty...  :-)

How about this?

Thanks for figuring out what causes the problem.  So the line that has
the call to feedkeys() gets read, but then getcmdline() causes the first
character of the next line to be put in the typeahead buffer.  Then the
feedkeys() call puts its string after that character.
So the simple solution is to tell feedkeys() to insert, using the "i"
flag.  I tried it and it fixes the problem for me.

I see! It is great solution!
I think it should be documented for the people to write the test.
Like one:
When you write a test script, Do not use feedkeys() without mode 'i'.  Because test runs from mapping.
--
Best regards,
Hirohito Higashi (a.k.a h_east)

AppVeyor was PASS by the correct fix. so I close this PR. Thank you.


add another time window interpretation?

Currently time windows in jsprit are specified with earliest START and latest START of activity, e.g. if there is an activity that takes 30min and has the following time window: [10:00,12:00], then the latest START is 12:00. If one starts at 12:00, activity ends at 12:30.
However, in some cases, it would be better to specify time windows with earliest START and latest END. In the example above, 12:00 would be the latest end, i.e. latest START would be 11:30. This shows also that as long as service times/activity durations are static, refining time windows is easy. However, if service times are dependent on vehicles, this redefinition would not be so easy anymore. This must be done then on state and constraint level.
Would this be a reasonable feature?

Hmm. I can't say that the current definition of time windows has ever been a problem. Maybe I'm not understanding something here, but I'd say this change isn't worth it.

Do you mean that with the new time window definition it would be easier to enforce them where the time window duration is not known up front? Do you have an example when this would be the case?

Thanks, @PGWelch, @karussell. I do not plan to change the current time window definition. I only thought loud whether it might be good additional feature to add another specification, i.e. to add an option to change definition from [earliest_start,latest_start] to [earliest_start,latest_end].

time window duration is not known up front?

This should be always known. However, duration might be dependent on the driver/vehicle. Driver A can make it in 1h, driver B only takes 30min.

The difference between [earliest_start,latest_start] and [earliest_start,latest_end] is that in the first case act_start <= latest_start and in the latter case act_start + act_duration <= latest_end

However, duration might be dependent on the driver/vehicle.
Driver A can make it in 1h, driver B only takes 30min.

Ah, ok. Then this newer definition would make indeed more sense.

Hello Has this feature been put up in the current version of Jsprit ?

No, it has not been merge into the master.


php syntax header is not detected while other's work

Description of the problem or steps to reproduce
I've got some php script without extension (needed)
As i can see for javascript syntax, there is no way to filename pattern to matching without ext.
And the header is sufficient to ensure we are inside js. Then it's able to load the right syntax config
filename: "(\\.js$|\\.es[5678]?$|\\.mjs$)"
header: "^#!.*/(env +)?node( |$)"

However, i fixed the php header syntax with same pattern, but... unfortunately it's not working.
filename: "\\.php[2345s~]?$"
header: "^#!.*/(env +)?php( |$)"

Tested all unix rights.
Specifications

Version: 2.0.6
Commit hash: 60846f54
Compiled on July 16, 2020
OS: Archlinux and Gentoo
Terminal: xfce4-terminal

What is the first line in your php script? The first line of the file is matched against the header expression, and if they match, the filetype is assigned.

The first line of my scripts all begins by shebang env pointing my current php interpreter.
#!/bin/env php
I found having the same issue with python files. #!/bin/env python3
Even if i specifiy the python or php binary path directly #!/bin/python3


Mapped entity rendering methods/classes & options screens

Adjusted entity model rendering method naming as well as mapped new intermediary classes for entity models.
Also Mapped GameOptionsScreen and put all extending classes in the ...screen.options package.

I didn't mean to remove yarn-triage 🤔

Please change target branch to 19w42a.


test miq 19684

test https://github.com/ManageIQ/manageiq/pull/19684

I had a bug in there - assuming this will fail :(

not sure how to test core with this. since we run core tests in the miq PR, , I'll just leave it out of here.

kicking


primary key

cant u make it without increments ? so we can make our primary key

@riokurnia
For sure you can change what ever you want manually, just before migrations, go to entity migration file and change primary key. then press the  migration button.

already change it but foreign key not working , "foreign key constraint is incorrectly formed" , sorry im new with laravel

@riokurnia
Check CHANGELOG release notes for v1.4.25.
You can change foreignKeys manually in migration file, then go to entity model file and override foreignKey convention.
Example:
	public function customer()
	{
		return $this->belongsTo('App\Customer','customer_id');
	}

Cheers!!


Firebase Analytics does not work in Broadcast Upload Extension

How to use Firebase Analytics in iOS 11 Broadcast Upload Extension ( ReplayKit 2, Screen Broadcasting) ?
I just setup everything, but see nothing in DebugView, anyone met same situation ?

By DebugView do you mean the console in Xcode's bottom panel?
If so, try setting the logging level programmatically in your extension, since extensions may not respect the -FIRAnalyticsDebugEnabled launch option. You can do so via
[[FIRConfiguration sharedInstance] setLoggerLevel:FIRLoggerLevelDebug];

It's possible analytics events are being correctly logged and just not appearing in Xcode. If you don't see any events in Firebase console after a few hours, then you're likely running into a different issue.
繁體中文也OK。

Note that extensions won't accept the launch arguments so you won't be able to turn on debug mode on Analytics. Therefore, you won't see debug events on DebugView in real-time. Also, extensions won't allow much background task so it's best effort to upload data as soon as possible when extensions go to the background. Since Analytics uploads data every hour and when app/extensions go to the background, it's possible that some events won't make it right away if an extension's life is too short (a few seconds). You may want to wait for 2-3 hours to see normal events on Analytics dashboard.

Lets say user usually uses broadcast upload extension in 10-20 mins,
Does Firebase Analytics works in this scenario?

Given 10-20 mins, it should work since it may have enough time to upload. Please give it a try and let us know whether you see any events on the dashboard after a few hours. Thanks

I don't think it's functional in iOS11 Screen Broadcasting Extension, I have check big query.

Thanks for the update. Do you have any sample project that I can replicate the issue? It would be nice to know the steps to debug such problem. Thanks

For the time being, this is going to continue being unsupported.


Failing 'known_context_patterns'

Unable to extract the actual lyrics content:
url = 'https://genius.com/Queen-bohemian-rhapsody-lyrics'
with Goose({'strict': False}) as goose:
    goose.config.known_context_patterns = {'attr': 'class', 'value': 'lyrics'}
    article = goose.extract(url=url)

EDIT: Fails by returning an unrelated hyperlink text.

It seems like the post_cleanup action from the ContentExtractor is the culprit. This function - after the scraping happened - removes nodes based on certain properties (i.e. they contain many links, are tables or no paragraphs exist in the node, or a certain nodescore threshold is met).
Note that this also happens on other genius pages - but often to a lesser extend. Bohemiam Rapsody has a lot of links inside its lyrics, which causes the post_cleanup actions to trigger. Other lyrics often have less links, which means that post cleanup actions not to trigger.
For now, I think your best way to go forward is to create your own ContentExtractor (inherit from ours) and adapt the post_cleanup method to your liking. @barrust we could adapt the config to include/exclude certain post_cleanup actions - but that seems like a pretty advanced config option that regular users won't use.

I like the idea to provide a method to supply one's own ContentExtractor; how would you recommend implementing something like that?

The Configuration object is handed over all the way to the Crawler object. The Crawler object defines an extractor by using the get_schema_extractor() classmethod. We could define those methods on the Configuration object, which means they'll be overridable by users (they can inherit the Configuration object and override the methods).
The existing code base should change to something like this:
class Configuration(object):
    def __init__(self):
        ...

    def get_extractor(self):
        ''' This method can be overriden when the Configuration object is inherited and provided to the Goose object/ '''
        return StandardContentExtractor(self.config, self.article)

class Crawler(object):
    def __init__(self, config: Configuration, fetcher=None):
        # config
        self.config = config
        # parser
        self.parser = self.config.get_parser()

        # article
        self.article = Article()

        # init the extractor
        self.extractor = config.get_extractor()  # currently: self.get_extractor()

A user could then do something like:
from goose3 import Goose, Configuration

class CustomConfig(Configuration):
    def get_extractor(self):
        return CustomExtractor()

config = CustomConfig()
g = Goose(config=config)
article = g.extract(raw_html=html)


feature/observability

adds tracing support through open telemetry
spec https://github.com/microsoftgraph/msgraph-sdk-design/blob/dm/logging/Observability.md
related https://github.com/microsoft/kiota/issues/618
Had to be put on pause due to other priorities, but I finally got to wrap it up :)

I recommend reviewers to check the "hide whitespace changes" option.
This is what a trace looks like in zipkin

if you want to try it out (in a node app)
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
      const resource =
      Resource.default().merge(
        new Resource({
          [SemanticResourceAttributes.SERVICE_NAME]: "service-name-here",
          [SemanticResourceAttributes.SERVICE_VERSION]: "0.1.0",
        })
      );

    const provider = new NodeTracerProvider({
        resource: resource,
    });
    const exporter = new ZipkinExporter({
    });
    provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
    provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
    provider.register();

    await trace.getTracer(
      'service-name-here'
    ).startActiveSpan('my-span', async (span) => {
       // do things with the client here
      span.end();
 });


[Feature Request]:  Addition of scroll to top button

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
Addition of scroll to top button, to smoothly auto scroll to the top of page
Use Case
Addition of scroll to top button will help users eg on intenrship page to quickly go to the top of page.
Benefits
No response
Add ScreenShots

Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Refer the main link of website


Added test coverage for VmScan#check_policy_complete, #call_snapshot_create

This PR:

remove all calls to allow_any_instance_of
adds test coverage to VmScan#check_policy_complete, VMScan#call_snapshot_create.

Added test coverage does not fully cover all possible use cases. Goal for added coverage is to capture 'typo-like' bugs.
@miq-bot add-label test, smart state
\cc @jerryk55

@jerryk55 @roliveri pease review
This PR is already pretty big, and I want to add more coverage for VmScan (method i did typo in is still not covered). Would you prefer for me to create another PR  or make this one bigger ?

@yrudman I've been reviewing as your changes get added.  My biggest concern is that the test for this class seems to be provider specific - setting VixDisk to be true is a VMware attribute.  But then later on there are tests for Openstack and Microsoft added.  So maybe the VixDisk value should be set only for those tests for VMware?  If you want to address my concern (either with a reply or a change) and then add a separate PR to fix the tests for the method you mentioned I have no problem with that.

@jerryk55 yeaa, it does look inconsistent. Thank you for pointing it out.
I have changed slightly top context to reflect that all settings are for VMware and move tests for other providers out of Vmware specific context.
Could you take a second look.

@yrudman yup that's better.  Thanks.  If you want to merge this and then add the other spec for the other method as a separate PR that's fine with me.

@jerryk55 yeaa, it does not look consistent (even if  I am creating doublecreating

👍

@roliveri could you review. This PR as well as https://github.com/ManageIQ/manageiq/pull/14588  will cover changes in https://github.com/ManageIQ/manageiq/pull/14030 to use jobs.miq_server_id instead of jobs.agent_id
\cc @jrafanie


Convert XML to CSV

Description
Write a script that takes an XML file as input and converts it into a CSV file.
Type of issue

[x] Feature (New Script)

Checklist:

[x] I have read the project guidelines.
[x] I have checked all the existing projects, before submitting a new project issue.
[x] I have checked previous issues to avoid duplicates.
[x] This issue will be meaningful for the project.

Hi @chavarera, I won't be able to contribute towards this task. I apologize for the inconvenience. Thanks.

I would love to work on this issue too please assigned it to me

Awesome, could you help me too with #17


Evernote integration

We are heavy users of Evernote and we really need integration between Zulip and Evernote.

Howdy @edermachado! Can you talk about what you'd want that integration to do?
Evernote does seem to have a webhook API: https://dev.evernote.com/doc/articles/polling_notification.php#webhooks
So it is likely not very complex to post basic notifications into Zulip triggered by Evernote, but I can also imagine some fairly complex ideas one might have for how to integrate with that type of product that might not be possible without the collaboration of the Evernote developers.


how to use with my own voices?

how to use with my own voices?
with what script do I extract the components of my voices?

Can you make the right demo.pkl file?

I am also interested in this
How can I train a model from single wav or multiple wav files and then apply trained model to another speech (wav file)?
@auspicious3000

I am also interested in this
How can I train a model from single wav or multiple wav files and then apply trained model to another speech (wav file)?
@auspicious3000


Add node affinity to deploy on amd64 nodes only

Prevents crash loop on ARMs
Closes #34

from my point of view, you may offer a parameter to add affinities using Values, as all the rest of helm charts, and then add your desired affinities, instead of forcing fixed affinities.

This is just sample yaml files unrelated to Helm.  @agilob, can you just use a simple nodeSelector with kubernetes.io/arch: amd64 for this?

Ok, I looked into it and technically this change isn't required, as there is node_selector in the values.yaml for helm-chart, but I think the default value in the helm-chart should be changed to contain kubernetes.io/arch: amd64 otherwise it will automatically try to deploy dp, labeller and healthcheck on ARM too

I updated this branch with the new suggested default value


Maintaining slide menu icons when view controllers are linked together

Hi, first off thanks so much for taking the time to write out a thorough example. This has really helped me get started with IOS development.
My question comes as a result of me linking one of the pages to another page via a 'show' segue. Upon doing so, the top bar appears to turn into a navigation bar, and it overrides the left/right slider icons. I'm wondering how I could keep them on-screen for the initial page before I click into a nested page.

Never mind, it was included in the examples. In the controller we just need to include the viewWillAppear() method.


Linked List

SolidState needs libraries for working with singly and doubly linked lists.

Consider using a linked list for the ERC1155Enumerable features.

Differentiate between linked list of unique values and linked list of repeatable values.  The former includes constant-time lookups by default, but is not as widely applicable as a standard linked list.

Implementation here: https://github.com/vittominacori/solidity-linked-list
If possible, the SolidState implementation should support multiple underlying data types and expose an interface for each, like with EnumerableSet.


LIMIT should always be partnered with ORDER BY

Our docs include uses of LIMIT that aren't paired with ORDER BY. This is an anti-pattern, and shouldn't be present, but it seems to be widespread.
In cases that lack an ORDER BY, we don't guarantee ordering of results, even by primary key, and when using LIMIT, subsequent identical queries could return different results even in the absence of writes. While each leaseholder should return results ordered by the primary key, the gateway wouldn't necessarily run a merge sort on the results it gets from each node unless explicitly told to.
A really clear example is in our docs on pagination of results, where we recommend using a trick called the "seek method" to paginate results by using a combination of ORDER BY on an indexed field, plus a LIMIT clause, in order to avoid using  the less efficient OFFSET clause, but neither example uses ORDER BY.
You can see that the example, SELECT * FROM employees WHERE emp_no > 10000 LIMIT 25; doesn't use ORDER BY at all.
A possible (and relatively simple) solution just for this section for would be to add ORDER BY emp_no to each query that uses this data set. Other queries in the page, such as SELECT id, name FROM accounts LIMIT 5, should ORDER BY the primary key if nothing else is available.
I looked in docs/v19.2 to find other potential cases of a LIMIT without an ORDER BY on the same line:
docs/v19.2/ $ grep -Ir LIMIT . | grep -v 'ORDER BY' | sed 's/:.*$//' | uniq | sort | sed 's/^\.\///'
build-a-java-app-with-cockroachdb-hibernate.md
build-a-java-app-with-cockroachdb.md
common-table-expressions.md
create-index.md
delete.md
import.md
learn-cockroachdb-sql.md
limit-offset.md
migrate-from-oracle.md
performance-best-practices-overview.md
performance-tuning-insecure.md
performance-tuning.md
query-order.md
select-clause.md
selection-queries.md
sql-faqs.md
sql-feature-support.md
subqueries.md
training/backup-and-restore.md
training/data-import.md
training/locality-and-replication-zones.md
update.md
window-functions.md
$

Each of these has at least one use of LIMIT without a corresponding ORDER BY in that line, though it might miss an ORDER BY in a previous line for multi-line SQL statements.

Good find, @thatnerd!
@ericharmeling, @rmloveland, for consideration.

I think this somehow got fixed on the Selection queries page:
SELECT * FROM employees AS OF SYSTEM TIME '-1m' WHERE emp_no > 10000 ORDER BY emp_no LIMIT 25;

But I have not looked into the other pages mentioned.

I think this somehow got fixed on the Selection queries page:
SELECT * FROM employees AS OF SYSTEM TIME '-1m' WHERE emp_no > 10000 ORDER BY emp_no LIMIT 25;

But I have not looked into the other pages mentioned.


Added types to services.ts.

Refactored after discussion with @sjmiles

This is a really messy PR. Going to close and clean up.


ARROW-17722: [C++][Gandiva] Add token and grammar rules for literals and fields

Add parsing ability of "leaf" nodes, i.e. literal nodes and field nodes. Literal nodes may be untyped.

This PR adds build dependencies of Flex and Bison, I am adding them to the CI pipeline.


Can't send from legacy to checking W10

We delete Electra desktop folder, restart wallet, same issue
after, uninstall properly the wallet, fresh install, wait for full synch.
Try to send all (-fees), still the same.

You were trying to send  the full amount available in your Legacy Account ?

yes, it's a duplicate, answered on the #121

Close as duplicate of #121.


can I turnoff autocomplete in VS Code but still keep chat?

please complete the following information:

OS version: [e.g. Win 10, Mac Catalina]
Editor version [e.g. 1.45.0-insider]:
Programming language: [e.g. js, ts, c++]
TabNine extension version:

If the issue is related to TabNine failure, please provide log files:
Type TabNine::config in your editor, the logs are located at the bottom of the page
Editor console logs:
Help -> Toggle Developer Tools
Issue Details:
gz#36055(related to Zendesk ticket #36055)

Hi, you can use the snooze button - https://docs.tabnine.com/main/getting-started/getting-the-most-from-tabnines-code-completion/pause-snooze


Limit online users on list?

Hello, I have a problem with the number of online users, there are only 12 randomly displayed online. When I add another new one, the list changes, but it always shows that there is only 12 online (green color). In openvpn-status.log all users are connected. Any ideas?

i just checked in one of out cluster  and can see 19 online users

According to the logs, clients who parse incorrectly (12 clients) in the GUI display correctly, while the rest are not in the logs and there is no information about the connection in the GUI (in openvpn-status.log they are connected)
Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Thu Jan 13 09:35:14 2022" as "2006-01-02 15:04:05": cannot parse "Thu Jan 13 09:35:14 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Tue Jan 11 18:10:30 2022" as "2006-01-02 15:04:05": cannot parse "Tue Jan 11 18:10:30 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Fri Jan 14 16:58:33 2022" as "2006-01-02 15:04:05": cannot parse "Fri Jan 14 16:58:33 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Sun Jan  9 14:47:41 2022" as "2006-01-02 15:04:05": cannot parse "Sun Jan  9 14:47:41 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Mon Jan 17 09:25:01 2022" as "2006-01-02 15:04:05": cannot parse "Mon Jan 17 09:25:01 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Fri Jan  7 08:03:53 2022" as "2006-01-02 15:04:05": cannot parse "Fri Jan  7 08:03:53 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Thu Jan 13 15:31:05 2022" as "2006-01-02 15:04:05": cannot parse "Thu Jan 13 15:31:05 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Wed Dec  8 01:33:41 2021" as "2006-01-02 15:04:05": cannot parse "Wed Dec  8 01:33:41 2021" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Fri Dec 17 10:24:36 2021" as "2006-01-02 15:04:05": cannot parse "Fri Dec 17 10:24:36 2021" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Mon Jan 17 11:48:12 2022" as "2006-01-02 15:04:05": cannot parse "Mon Jan 17 11:48:12 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Thu Jan 13 13:32:05 2022" as "2006-01-02 15:04:05": cannot parse "Thu Jan 13 13:32:05 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 parsing time "Wed Jan 12 10:59:29 2022" as "2006-01-02 15:04:05": cannot parse "Wed Jan 12 10:59:29 2022" as "2006" Jan 17 12:52:08 openvpn ovpn-admin[29359]: 2022/01/17 12:52:08 openssl x509 -in /etc/openvpn/easyrsa/pki/ca.crt -noout -enddate | awk -F "=" {'print $2'}

@aetbx  which locale do you use?
can you please provide output of locale command?

@aetbx which locale do you use? can you please provide output of locale command?

root@openvpn:~# locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=

@aetbx sorry for the late response
which version of the openvpn server are you using?

@aetbx sorry for the late response which version of the openvpn server are you using?

Im using 2.4.7-1+deb10u1. I compiled source with different time formatting but still only shows 12/13 users online. Ofc errors have disappeared, so that's not the problem.

i think this is related to https://github.com/flant/ovpn-admin/issues/114


Feature Request: Simulated Standard Deviation Device Type (that get's updated like the Avg type currently does)

First, Thanks for this.  It always amazes me when my brain comes up with a wacky idea like averaging together temp sensors to determine when to run the AC/heat and someone else has already coded it.
In addition to heat/cool, I run the thermostat fan 15 minutes of every hour to even out hot/cool spots in the house.  Instead of running the fan on this schedule, I was thinking it would be nice to have a device that measured the STD of all temp sensors and kick off the thermostat fan when the STD gets too high and run it until the STD returns to normal levels.
It's a theory at the moment but I'm guessing that this model would run the fan less than the scheduled 15/60 minutes (which is the lowest fan schedule you can set with the Nest).
Unfortunately, I'm no coder.  Any interesting in creating an STD device type?  Hoping it's an easy mod of your existing Average device type. That would at least allow me to examine my baseline and test my theory using CoRE.

Update your app an try now. Make sure you are on version 1.0.2
I also updated it to allow multiple automations in a single parent app. BTW, don't try to automate both your thermostat temperature and thermostat fan in the same automation, do two if that is what you want.
BTW - I have not tested this. I just saw your message and spent 30 minutes updating the code. Let me know if it works.

In addition to not being a coder, I'm also not an HVAC guy so my understanding of how/when to use the fan (as opposed to actively heating/cooling) could be WAY off.  For heating/cooling, using an AVG measurement makes absolute sense because it will kick in at a certain temp and run until a threshold is met. BUT here's the reason I was suggesting controlling the fan with a STDEV measurement vs an AVG measurement:
Say your averaging together the temps in the LR, BR, and Office. The way the app is now,  you have the fan set to go off at 80 and off at 78 (it's summer so we're hoping for a cooling effect).  Only the fan isn't actively cooling so you wouldn't expect the average temperature to change.  The other consideration is the following scenario where all rooms are the same temperature, but the threshold has been reached so the fan kicks in.  In this case, it would just be moving 80 degree air from one room to another not accomplishing anything.
LR - 80
BR - 80
Office - 80
Average = 80 / STDEV = 0
The reason I was thinking it would be nice to control the fan by STDEV is it would kick in when the temperature variation between rooms rises above a certain threshold (works for heating or cooling) and turn back off again when the temperature variation has subsided to a preset level. This would normalize any hot/cool spots in the home without running the heat/cool, which should be cheaper as I understand it.
Consider the same three rooms:
LR - 78
BR - 82
Office - 85
Average = 81.667 / STDEV = 3.511
If we set the fan to turn on when the STDEV is above 3.5 and turn off when the STDEV is below 2, then you could possibly achieve the following measurements:
LR - 79
BR - 82
Office - 82.5
Average = 81.667 (unchanged) / STDEV = 1.89
The average temp hasn't changed because the fan doesn't heat/cool but the temperature in the rooms is more even than before.
Seems like this could be accomplished with another device type for STDEV, and a toggle in the app to "Set virtual device based on temp standard deviation".
Anyway, that was just my proposal and thanks for hearing me out.  You're the one doing all the work so feel free to tell me to pound sand ;)

Ok, I couldn't leave it alone.  I think I have it working with the following variation to your app code.  Testing now.  All credit goes to you.
 *  Average Temperature Trigger
 *
 *  Version 1.0.2 - 08/04/14
 *   -- Added the ability to just control an HVAC fan based on average temperature.
 *   -- Now a parent child app for multiple automations.
 *  Version 1.0.1 - 07/24/16
 *   -- Added proper logging to make the app less verbose.
 *   -- Added the active setting.
 *   -- Renamed to Average Temperature Trigger
 *
 *  Version 1.0.0 - 07/05/16
 *   -- Initial Build
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 *  You can find this SmartApp @ https://github.com/ericvitale/ST-Average-Temperature-Trigger
 *  Don't forget the Settable Temperature Measurement virtual device in the same repository as the SmartApp.
 *  You can find my other device handlers & SmartApps @ https://github.com/ericvitale
 *
 */

definition(
    name: "${appName()}",
    namespace: "ericvitale",
    author: "Eric Vitale",
    description: "Control a thermostat or update a virtual temperature reporting device based on the average temperature of temperature sensors.",
    category: "",
    iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
    iconX2Url<EMAIL_ADDRESS>    iconX3Url<EMAIL_ADDRESS>

preferences {
    page(name: "startPage")
    page(name: "parentPage")
    page(name: "childStartPage")
}

def startPage() {
    if (parent) {
        childStartPage()
    } else {
        parentPage()
    }
}

def parentPage() {
	return dynamicPage(name: "parentPage", title: "", nextPage: "", install: false, uninstall: true) {
        section("Create a new child app.") {
            app(name: "childApps", appName: appName(), namespace: "ericvitale", title: "New Temperature Automation", multiple: true)
        }
    }
}

def childStartPage() {
	return dynamicPage(name: "childStartPage", title: "", install: true, uninstall: true) {
        section("Settable Sensor") {
            input "settableSensor", "capability.temperatureMeasurement", title: "Virtual Settable Temperature Sensor", multiple: false, required: false
            input "setVirtualTemp", "bool", title: "Set virtual temp based on average temp?", required: true, defaultValue: false
        }

        section("Settable STDEV Sensor") {
            input "setSTDSensor", "capability.temperatureMeasurement", title: "Virtual STDEV Temperature Sensor", multiple: false, required: false
            input "setSTDTemp", "bool", title: "Set virtual STDEV temp device based on temperature variation?", required: true, defaultValue: false
        }

        section("Select your thermostat.") {
            input "thermostat", "capability.thermostat", multiple:false, title: "Thermostat", required: false
            input "setThermostat", "bool", title: "Set your thermostate temperature based on average temperature?", required: true, defaultValue: false
            input "controlFan", "bool", title: "Turn on your HVAC fan based on an average temperature?", required: true, defaultValue: false
        }

        section("Select your temperature sensors.") {
            input "temperatureSensors", "capability.temperatureMeasurement", multiple: true
        }

        section("Select the temperature at which you want to begin active cooling.") {
            input "maxTemp", "decimal", title: "Max Temperature", range: "*", required: false
        }

        section("Select the temperature at which you want to cool to.") {
            input "coolingSetpoint", "decimal", title: "Cooling Setpoint", range: "*", required: false
        }

        section("Select the temperature at which you want to begin active heating.") {
            input "minTemp", "decimal", title: "Min Temperature", range: "*", required: false
        }

        section("Select the temperature at which you want to heat to.") {
            input "heatingSetpoint", "decimal", title: "Heating Setpoint", range: "*", required: false
        }

        section("Select the temp variation (STDEV) at which you want to use the fan to circulate air.") {
            input "fanActivate", "decimal", title: "Activate Fan", range: "*", required: false
        }

        section("Stop running the fan when the temp variation (STDEV) reaches this value.") {
            input "fanDeactivate", "decimal", title: "Deactivate Fan", range: "*", required: false
        }

        section("Setting") {
        	label(title: "Assign a name", required: false)
            input "active", "bool", title: "Rules Active?", required: true, defaultValue: true
            input "logging", "enum", title: "Log Level", required: true, defaultValue: "DEBUG", options: ["TRACE", "DEBUG", "INFO", "WARN", "ERROR"]
        }
    }
}

private def appName() { return "${parent ? "Temperature Automation" : "Average Temperature Trigger"}" }

private determineLogLevel(data) {
    switch (data?.toUpperCase()) {
        case "TRACE":
            return 0
            break
        case "DEBUG":
            return 1
            break
        case "INFO":
            return 2
            break
        case "WARN":
            return 3
            break
        case "ERROR":
        	return 4
            break
        default:
            return 1
    }
}

def log(data, type) {
    data = "ATT -- ${data ?: ''}"

    if (determineLogLevel(type) >= determineLogLevel(settings?.logging ?: "INFO")) {
        switch (type?.toUpperCase()) {
            case "TRACE":
                log.trace "${data}"
                break
            case "DEBUG":
                log.debug "${data}"
                break
            case "INFO":
                log.info "${data}"
                break
            case "WARN":
                log.warn "${data}"
                break
            case "ERROR":
                log.error "${data}"
                break
            default:
                log.error "ATT -- Invalid Log Setting"
        }
    }
}

def installed() {
	log("Installed with settings: ${settings}", "INFO")
	initialization()
}

def updated() {
	log("Updated with settings: ${settings}", "INFO")
	unsubscribe()
	initialization()
}

def initialization() {
	log.debug "Begin initialization()."

    if(parent) {
    	initChild()
    } else {
    	initParent()
    }

    log.debug "End initialization()."
}

def initParent() {
	log.debug "initParent()"
}

def initChild() {
	if(active) {
		log("App is active.", "INFO")
        subscribe(temperatureSensors, "temperature", temperatureHandler)

        if(controlFan && setThermostat) {
        	log("You cannot control a thermostat and an HVAC fan with the same automation. Install another. Defaulting to thermostat.", "WARN")
            controlFan = false
        }

	    updateTemp()
    } else {
    	log("App is not active.", "INFO")
    }

    log("Initialization complete.", "INFO")
}

def temperatureHandler(evt) {
	log("Temperature event ${evt.descriptionText} and value: ${evt.doubleValue}.", "INFO")
    updateTemp()
}

def updateTemp() {
    def averageTemp = 0.0
    def tempstdTemp = 0.0
    def stdTemp = 0.0
    def currentState

    temperatureSensors.each() {
    	log("${it.displayName} Temp: ${it.currentValue("temperature")}.", "TRACE")

        currentState = it.currentState("temperature")

        log("currentState.integerValue: ${currentState.integerValue}.", "TRACE")

        try {
            averageTemp += currentState.integerValue
        } catch(e) {
        	log("ERROR -- ${e}", "ERROR")
        }
    }

    try {
    	averageTemp = averageTemp / temperatureSensors.size()
    } catch(e) {
    	log("ERROR -- ${e}", "ERROR")
    }

    temperatureSensors.each() {
        log("${it.displayName} Temp: ${it.currentValue("temperature")}.", "TRACE")

        currentState = it.currentState("temperature")

        log("currentState.integerValue: ${currentState.integerValue}.", "TRACE")

        try {
            tempstdTemp += (averageTemp - currentState.integerValue) * (averageTemp - currentState.integerValue)
        } catch(e) {
            log("ERROR -- ${e}", "ERROR")
        }
    }

    try {
        tempstdTemp = tempstdTemp / temperatureSensors.size()
    } catch(e) {
        log("ERROR -- ${e}", "ERROR")
    }

    try {
        stdTemp = Math.sqrt(tempstdTemp)
    } catch(e) {
        log("ERROR -- ${e}", "ERROR")
    }

    if(setThermostat) {
    	log("Evaluating thermostat rules...", "INFO")
        if(averageTemp > maxTemp) {
        	log("Begin cooling to ${coolingSetpoint}.", "INFO")
            beginCooling(coolingSetpoint)
        } else if(averageTemp < minTemp) {
	        log("Begin heating to ${heatingSetpoint}.", "INFO")
            beginHeating(heatingSetpoint)
        } else {
            log("Temperature is just right.", "INFO")
        }
    }

    if(controlFan){
    	log("Evaluating fan rules...", "INFO")

        if(thermostat.thermostatMode == "auto" || thermostat.thermostatMode == "off") {

            if(stdTemp > fanActivate) {
                log("Turning on fan in order to reduce temp variation to: +/- ${fanDeactivate}.", "INFO")
                turnFanOn()
            } else {
                if(thermostat.thermostatFanMode == "on") {
                    turnFanAuto()
                    log("Turning fan to auto.", "INFO")
                }

                log("Temperature variation between rooms has been reduced.", "INFO")
            }

    	} else {
        	log("You are already in a running mode of ${thermostat.thermostatMode}, ignoring your fan control request.", "INFO")
        }
    }

    if(setVirtualTemp) {
        log("Updating ${settableSensor.label} to ${Math.round(averageTemp * 100) / 100}.", "INFO")
    	settableSensor.setTemperature((Math.round(averageTemp * 100) / 100).toString())
    }

    if(setSTDTemp) {
        log("Updating ${setSTDSensor.label} to ${Math.round(stdTemp * 100) / 100}.", "INFO")
        setSTDSensor.setTemperature((Math.round(stdTemp * 100) / 100).toString())
    }
}

def beginCooling(val) {
	log("Setting coolingSetpoint to: ${val}.", "DEBUG")
    thermostat.setCoolingSetpoint(val)
}

def beginHeating(val) {
	log("Setting heatingSetpoint to: ${val}.", "DEBUG")
	thermostat.setHeatingSetpoint(val)
}

def turnFanOn() {
	thermostat.fanOn()
}

def turnFanAuto() {
	thermostat.fanAuto()
}```

How is it going? Your image is a dead link... http://imagebucket.net/s54rkgvg50f0/2016-08-05_17-18-29.png

Oops, sorry, here's an updated one.  I left it alone over the weekend to let it capture some data. Next step is to run the fan and see how low I can get the STDEV.  That will help determine the lower threshold to turn off the fan after it's been triggered.

where and how are you logging that data? I didn't see anything in the code.

www.initialstate.com - create a free account and link it to smartthings


Task/update chart alt text for headline charts  /cdd 2167

Description
This PR includes the following:

Improves the chart alt text generation so that the plot description extends to headline data types

Fixes #CDD-2167

Type of change
Please select the options that are relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Tech debt item (this is focused solely on addressing any relevant technical debt)

Checklist:

[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests at the right levels to prove my change is effective
[ ] I have added screenshots or screen grabs where appropriate
[ ] I have added docstrings in the correct style (google)


v0.3 - Fix appFrame.html copy outside of repo

Motivations

Build is failing for usage of the CDK construct outside of the repo

https://github.com/pwrdrvr/microapps-pwrdrvr/actions/runs/3410992007/jobs/5674861391

To-Do

[x] Fix appFrame.html copy
[ ] Add test to microapps-core repo that will catch this failure?
[x] Publish v0.3.2-alpha.1
[x] Test in private repo
[ ] Publish v0.3.2

Original issue resolved, new issue uncovered:
2022-12-30T20:05:54.013Z	fba15f33-863c-4c34-b9ac-103b1d764081	ERROR
{
    "_logLevel": "error",
    "msg": "unexpected exception - returning 599",
    "statusCode": 599,
    "error": {
        "name": "ValidationException",
        "message": "1 validation error detected: Value '${Token[TOKEN.397]}' at 'tableName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9_.-]+",
        "stack": "ValidationException: 1 validation error detected: Value '${Token[TOKEN.397]}' at 'tableName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9_.-]+\n    at Jre (/node_modules/@aws-sdk/client-dynamodb/dist-cjs/protocols/Aws_json1_0.js:2074:24)\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at /node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24\n    at /node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:11:20\n    at CT.retry (/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)\n    at /node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:6:22\n    at /node_modules/@aws-sdk/lib-dynamodb/dist-cjs/commands/QueryCommand.js:34:26\n    at Function.LoadVersions (/microapps-datalib/src/models/version.ts:112:23)\n    at async Promise.all (index 0)\n    at Function.GetVersionsAndRules (/microapps-datalib/src/models/application.ts:54:5)",
        "$fault": "client",
        "$metadata": {
            "httpStatusCode": 400,
            "requestId": "27BRIB58SBD2VUF85CLGFCHUN3VV4KQNSO5AEMVJF66Q9ASUAAJG",
            "attempts": 1,
            "totalRetryDelay": 0
        },
        "__type": "com.amazon.coral.validate#ValidationException"
    },
    "_tags": []
}

Fixed by #275


Fix miswrite

jenkins, test this please

jenkins, test this please

jenkins, test this please

Thank you