CipherEnvironmentEncryptor doesn't work with complex types on Spring Boot 1.4

Given a config like this:
mine[0].someValue=Foo
mine[0].someKey={cipher}XXXX
mine[1].someValue=Bar
mine[1].someKey={cipher}XXXX

Only the ciphered values get bound to the @ConfigurationProperties. I think that the root cause is the way that CipherEnvironmentEncryptor creates new property sources combined with Spring Boot issue 4313 which is much stricter in the way that it merges properties from different sources.
If I'm reading the code correctly ciphered values are extracted to a new property source that's added above the original source. If CipherEnvironmentEncryptor could create a new source that includes all the old values I believe the problem would go away.

/cc @marcellodesales

/cc @dsyer @spencergibb

I have a working application that I tried to migrate from 1.4.0-RC1 to 1.4.0-RELEASE and all my non-encrypted values are not bound.
Gradle Change
diff --git a/build.gradle b/build.gradle
index daa9f4c..961a96d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,7 @@ description = "Config Service Publisher $version"

 buildscript {
   ext {
-    springBootVersion = '1.4.0.RC1'
+    springBootVersion = '1.4.0.RELEASE'
   }

Application Env
Here's the output of the actuator endpoint from the migrated app...

All the properties from the decrypted object below got properly bound to the array element from a @ConfigrationProperties class
All the properties that does not have the cipher values did NOT get bound.

$ curl localhost:8080/env | jq
{
  "profiles": [
    "publisher"
  ],
  "server.ports": {
    "local.server.port": 8080
  },
  "decrypted": {
    "onboard.apps[0].githubAccessToken": "******",
    "onboard.apps[0].awsAccessKey": "******",
    "onboard.apps[0].awsSecretKey": "******",
    "onboard.apps[1].githubAccessToken": "******",
    "onboard.apps[1].awsAccessKey": "******",
    "onboard.apps[1].awsSecretKey": "******"
  },
  "configService:https://github.company.com/servicesplatform-tools/spring-cloud-config-server-config/application-publisher.properties": {
    "github.host": "github.company.com",
    "build.branch": "${branch}",
    "endpoints.enabled": "true",
    "build.commit": "${commit}",
    "github.cloneBaseDir": "/tmp",
    "build.version": "${version}",
    "build.timestamp": "${timestamp.format('YYYYMMddHHmmss')}",
    "github.token": "******"
  },
  "configService:https://github.company.com/servicesplatform-tools/spring-cloud-config-server-config/application-publisher.yml": {
    "onboard.apps[0].githubOrgRepo": "servicesplatform-tools/spring-cloud-config-publisher-config",
    "onboard.apps[0].githubAccessToken": "******",
    "onboard.apps[0].githubWebhookSecret": "******",
    "onboard.apps[0].awsAccessKey": "******",
    "onboard.apps[0].awsSecretKey": "******",
    "onboard.apps[0].awsS3Bucket": "caas-XYZXYZ-XYZ",
    "onboard.apps[1].githubOrgRepo": "servicesplatform-tools/ctg-config",
    "onboard.apps[1].githubAccessToken": "******",
    "onboard.apps[1].githubWebhookSecret": "******",
    "onboard.apps[1].awsAccessKey": "******",
    "onboard.apps[1].awsSecretKey": "******",
    "onboard.apps[1].awsS3Bucket": "caas-XYZXYZ-XYZ"
  },

Property file
@Component
@ConfigurationProperties(prefix = "onboard")
public class OnboardProperties {

  /**
   * The current spring server URL.
   */
  @Value("${spring.cloud.config.uri:http://localhost:8888}")
  private String configServerUrl;
  /**
   * The applications setup for the
   */
  private Onboard[] apps;

  public String getConfigServerUrl() {
    return configServerUrl;
  }

  public void setConfigServerUrl(String configServerUrl) {
    this.configServerUrl = configServerUrl;
  }

  public void setApps(Onboard[] apps) {
    this.apps = apps;
  }

  public Onboard[] getApps() {
    return this.apps;
  }

}

I've been digging a bit more into this and I'm confident that the root cause is the fact that complex types are split across property sources and that's not supported in Spring Boot 1.4.
Specifically your curl localhost:8080/env | jq output is very revealing in that onboard.apps[0] keys appear in both the decrypted and configService source.
Unfortunately I can't figure out what it adding the decrypted source.

Why does it matter what is adding the extra property source? Surely we ought to be able to support multiple property sources more flexibly? I think this is a bug in Boot if we don't.

See https://github.com/spring-projects/spring-boot/issues/4313 for background on why we wanted to tighten the rules.

That doesn't explain anything. It just shows how bizarre the expected outcome is. Surely we can't be saying this is correct?

I am not able to reproduce the problem.
here is my properties file (in a git repo)
mine.mines[0].someValue=Foo
mine.mines[0].someKey={cipher}AQBjMvbaxkS4l9N3lDfqfy62n0HPrcF7LMQm0hmiOb8dURZH8zZkI6BgLNfosPnInz3h8IFkzcUhoVqunqZVjzQQbbgLWGIR9BvkbJXe/wjbxKyjOHbtEP1Izk0WwBZRM/m3YZSkhr1Lce7UbYAnFwWd1HztUYyga16KvTZ9I2saKcSOhf56sVYjEcfXzFcDxkqR6gaJSz8qmn6ZewRV3jo2KPL+c3HysI/H8yfNLZCdOFI38yWajjP4VQdPTiW/jh4HQcKRKruLlWjIHUkpSTi6wM3oIp+NFe29lt//yuqT8SgjFaYYRx/kSIJzvkUYXmX/5tEu7lqT+LY45cwmZh/69mvP/DlToF5ghRVlZ5KsxWH6R2IyPHAHkU+YxJ8KUhQ=
mine.mines[1].someValue=Bar
mine.mines[1].someKey={cipher}AQBLo/Mwlw4GduX+EiwY7LxUL1MmDV0s452TiJGzNzmTS6gXQa1OeqOwvN7gruIxKwheFotgMe1+i5QyoW5YNHD56OFkgqEDOrIy7c5zwURjkmk/8B1da+5Vb36IOyeJejnQWfg87D1faUOQIFgXNO/gFCzigCyBUS9nFbigtZGLBlUXCdGfkUu3YK9dTmdopnPUEMjWiDxGL3cIGs4eBU1bCRSiGsz9SP2jaMfH57GkbZginx95JFyZBfWvxeRsGshKT7SgFbSH8xU5sLWj1aqwgOJXd3mCpHA3PMGZ8yEfxK8s6sidJDanV1i41xD5y5EEE9Bt7MB2jLh0u/CDC2NYbE9/jFLiMtcSnjlX5seWmFmxMJFQziDP8JRDBPD3BT4=

Here is the output from the /env endpoint on the config client
{
"profiles": [],
"server.ports": {
"local.server.port": 8080
},
"configService:https://github.com/ryanjbaxter/config-repo/cypher.properties": {
"mine[1].someValue": "Bar",
"mine[0].someValue": "Foo",
"mine[0].someKey": "******",
"mine[1].someKey": "******"
},
"configService:https://github.com/ryanjbaxter/config-repo/application.yml": {
"info.description": "Spring Cloud Samples",
"info.url": "https://github.com/spring-cloud-samples",
"eureka.client.serviceUrl.defaultZone": "http://localhost:8761/eureka/"
},
"servletContextInitParams": {},
"systemProperties": {
"java.runtime.name": "Java(TM) SE Runtime Environment",
"spring.output.ansi.enabled": "always",
"sun.boot.library.path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib",
"java.vm.version": "25.91-b14",
"gopherProxySet": "false",
"java.vm.vendor": "Oracle Corporation",
"java.vendor.url": "http://java.oracle.com/",
"path.separator": ":",
"java.vm.name": "Java HotSpot(TM) 64-Bit Server VM",
"file.encoding.pkg": "sun.io",
"user.country": "US",
"sun.java.launcher": "SUN_STANDARD",
"sun.os.patch.level": "unknown",
"PID": "39791",
"java.vm.specification.name": "Java Virtual Machine Specification",
"user.dir": "/Users/ryanjbaxter/git-repos/ryanjbaxter/spring-cloud-samples/springcloudconfigclient",
"java.runtime.version": "1.8.0_91-b14",
"java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment",
"org.jboss.logging.provider": "slf4j",
"java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/endorsed",
"os.arch": "x86_64",
"java.io.tmpdir": "/var/folders/k3/zv8hzdm17vv69j485fv3cf9r0000gn/T/",
"line.separator": "\n",
"java.vm.specification.vendor": "Oracle Corporation",
"os.name": "Mac OS X",
"sun.jnu.encoding": "UTF-8",
"spring.beaninfo.ignore": "true",
"java.library.path": "/Users/ryanjbaxter/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.",
"java.specification.name": "Java Platform API Specification",
"java.class.version": "52.0",
"sun.management.compiler": "HotSpot 64-Bit Tiered Compilers",
"os.version": "10.11.6",
"http.nonProxyHosts": "local|*.local|169.254/16|*.169.254/16",
"user.home": "/Users/ryanjbaxter",
"catalina.useNaming": "false",
"user.timezone": "America/New_York",
"java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob",
"file.encoding": "UTF-8",
"java.specification.version": "1.8",
"catalina.home": "/private/var/folders/k3/zv8hzdm17vv69j485fv3cf9r0000gn/T/tomcat.1501181160120230569.8080",
"java.class.path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/tools.jar:/Users/ryanjbaxter/git-repos/ryanjbaxter/spring-cloud-samples/springcloudconfigclient/target/classes:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/1.4.0.RELEASE/spring-boot-starter-actuator-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-starter/1.4.0.RELEASE/spring-boot-starter-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot/1.4.0.RELEASE/spring-boot-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.4.0.RELEASE/spring-boot-autoconfigure-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.4.0.RELEASE/spring-boot-starter-logging-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/ch/qos/logback/logback-classic/1.1.7/logback-classic-1.1.7.jar:/Users/ryanjbaxter/.m2/repository/ch/qos/logback/logback-core/1.1.7/logback-core-1.1.7.jar:/Users/ryanjbaxter/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.21/jcl-over-slf4j-1.7.21.jar:/Users/ryanjbaxter/.m2/repository/org/slf4j/jul-to-slf4j/1.7.21/jul-to-slf4j-1.7.21.jar:/Users/ryanjbaxter/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.21/log4j-over-slf4j-1.7.21.jar:/Users/ryanjbaxter/.m2/repository/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-actuator/1.4.0.RELEASE/spring-boot-actuator-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-context/4.3.2.RELEASE/spring-context-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/cloud/spring-cloud-starter-config/1.1.2.RELEASE/spring-cloud-starter-config-1.1.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/cloud/spring-cloud-starter/1.1.1.RELEASE/spring-cloud-starter-1.1.1.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/cloud/spring-cloud-context/1.1.1.RELEASE/spring-cloud-context-1.1.1.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/security/spring-security-crypto/4.1.1.RELEASE/spring-security-crypto-4.1.1.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/cloud/spring-cloud-commons/1.1.1.RELEASE/spring-cloud-commons-1.1.1.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/security/spring-security-rsa/1.0.1.RELEASE/spring-security-rsa-1.0.1.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47.jar:/Users/ryanjbaxter/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/cloud/spring-cloud-config-client/1.1.2.RELEASE/spring-cloud-config-client-1.1.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.1/jackson-annotations-2.8.1.jar:/Users/ryanjbaxter/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.1/jackson-databind-2.8.1.jar:/Users/ryanjbaxter/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.1/jackson-core-2.8.1.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.4.0.RELEASE/spring-boot-starter-web-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.4.0.RELEASE/spring-boot-starter-tomcat-1.4.0.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.4/tomcat-embed-core-8.5.4.jar:/Users/ryanjbaxter/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.4/tomcat-embed-el-8.5.4.jar:/Users/ryanjbaxter/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.4/tomcat-embed-websocket-8.5.4.jar:/Users/ryanjbaxter/.m2/repository/org/hibernate/hibernate-validator/5.2.4.Final/hibernate-validator-5.2.4.Final.jar:/Users/ryanjbaxter/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/Users/ryanjbaxter/.m2/repository/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar:/Users/ryanjbaxter/.m2/repository/com/fasterxml/classmate/1.3.1/classmate-1.3.1.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-web/4.3.2.RELEASE/spring-web-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-aop/4.3.2.RELEASE/spring-aop-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-beans/4.3.2.RELEASE/spring-beans-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-webmvc/4.3.2.RELEASE/spring-webmvc-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-expression/4.3.2.RELEASE/spring-expression-4.3.2.RELEASE.jar:/Users/ryanjbaxter/.m2/repository/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar:/Users/ryanjbaxter/.m2/repository/org/springframework/spring-core/4.3.2.RELEASE/spring-core-4.3.2.RELEASE.jar:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar",
"user.name": "ryanjbaxter",
"java.vm.specification.version": "1.8",
"sun.java.command": "com.example.SpringCloudConfigClientApplication",
"java.home": "/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre",
"sun.arch.data.model": "64",
"user.language": "en",
"java.specification.vendor": "Oracle Corporation",
"awt.toolkit": "sun.lwawt.macosx.LWCToolkit",
"java.vm.info": "mixed mode",
"java.version": "1.8.0_91",
"java.ext.dirs": "/Users/ryanjbaxter/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java",
"sun.boot.class.path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/classes",
"java.awt.headless": "true",
"java.vendor": "Oracle Corporation",
"catalina.base": "/private/var/folders/k3/zv8hzdm17vv69j485fv3cf9r0000gn/T/tomcat.1501181160120230569.8080",
"file.separator": "/",
"java.vendor.url.bug": "http://bugreport.sun.com/bugreport/",
"sun.io.unicode.encoding": "UnicodeBig",
"sun.cpu.endian": "little",
"socksNonProxyHosts": "local|*.local|169.254/16|*.169.254/16",
"ftp.nonProxyHosts": "local|*.local|169.254/16|*.169.254/16",
"sun.cpu.isalist": ""
},
"systemEnvironment": {
"PATH": "/usr/bin:/bin:/usr/sbin:/sbin:/Users/ryanjbaxter/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/Users/ryanjbaxter/bin",
"TERM": "xterm-256color",
"LANG": "en_US.UTF-8",
"VIRTUAL_ENV_DISABLE_PROMPT": "1",
"ITERM_SESSION_ID": "w0t4p1:BF45FCCB-CE95-4B49-BAE3-C0C8CA332E11",
"VERSIONER_PYTHON_VERSION": "2.7",
"LOGNAME": "ryanjbaxter",
"PWD": "/Users/ryanjbaxter/git-repos/ryanjbaxter/spring-cloud/gap-config-client",
"XPC_SERVICE_NAME": "com.jetbrains.intellij.140192",
"TERM_PROGRAM_VERSION": "3.0.5",
"_": "/usr/bin/open",
"SHELL": "/bin/zsh",
"TERM_PROGRAM": "iTerm.app",
"PAGER": "less",
"LSCOLORS": "Gxfxcxdxbxegedabagacad",
"OLDPWD": "/Applications/IntelliJ IDEA.app/Contents/bin",
"USER": "ryanjbaxter",
"VERSIONER_PYTHON_PREFER_32_BIT": "no",
"ZSH": "/Users/ryanjbaxter/.oh-my-zsh",
"TMPDIR": "/var/folders/k3/zv8hzdm17vv69j485fv3cf9r0000gn/T/",
"ITERM_PROFILE": "Default",
"SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.KEeummBBFP/Listeners",
"XPC_FLAGS": "0x0",
"TERM_SESSION_ID": "w0t4p1:BF45FCCB-CE95-4B49-BAE3-C0C8CA332E11",
"__CF_USER_TEXT_ENCODING": "0x1F5:0x0:0x0",
"JAVA_MAIN_CLASS_39791": "com.example.SpringCloudConfigClientApplication",
"Apple_PubSub_Socket_Render": "/private/tmp/com.apple.launchd.NNBTee8Xcg/Render",
"LESS": "-R",
"COLORFGBG": "7;0",
"LC_CTYPE": "en_US.UTF-8",
"SHLVL": "2",
"HOME": "/Users/ryanjbaxter"
},
"springCloudClientHostInfo": {
"spring.cloud.client.hostname": "<IP_ADDRESS>",
"spring.cloud.client.ipAddress": "<IP_ADDRESS>"
},
"applicationConfig: [classpath:/bootstrap.properties]": {
"spring.application.name": "cypher"
},
"defaultProperties": {}
}

Here is my class annotated with @ConfigurationProperties
@Configuration
@ConfigurationProperties(prefix = "mine")
public class MineProperties {

    @Value("${spring.cloud.config.uri:http://localhost:8888}")
    private String configServerUrl;

    private Mine[] mines;

    public String getConfigServerUrl() {
        return configServerUrl;
    }

    public void setConfigServerUrl(String configServerUrl) {
        this.configServerUrl = configServerUrl;
    }

    public Mine[] getMines() {
        return mines;
    }

    public void setMines(Mine[] mines) {
        this.mines = mines;
    }

}

And here is what the config client returns when retreiving the properties from the config server
[
{
"someKey": "0someKey",
"someValue": "Foo"
},
{
"someKey": "1someKey",
"someValue": "Bar"
}
]

The values are properly decrypted and the ones without {cypher} are correctly bound.  My sample is using SB 1.4 and SC Brixton.SR4.

I think the problem as described is with client side decryption (not server side). It isn't actually a s-c-config feature anyway, but we might as well diagnose it properly here before we move the discussion.

@dsyer so you are thinking that the values are not being decrypted on the server and instead on the client?  IE the config that is talked about here?  @marcellodesales can you confirm that is the case?

I was able to reproduce the problem.
In addition to what I described above I added the same properties locally to application.properties in the client.  Now my /env endpoint returns
{
"profiles": [],
"server.ports": {
"local.server.port": 8080
},
"decrypted": {
"mine.mines[0].someKey": "******",
"mine.mines[1].someKey": "******"
},
"configService:https://github.com/ryanjbaxter/config-repo/cypher.properties": {
"mine.mines[1].someValue": "Bar",
"mine.mines[0].someValue": "Foo",
"mine.mines[0].someKey": "******",
"mine.mines[1].someKey": "******"
},
"configService:https://github.com/ryanjbaxter/config-repo/application.yml": {
"info.description": "Spring Cloud Samples",
"info.url": "https://github.com/spring-cloud-samples",
"eureka.client.serviceUrl.defaultZone": "http://localhost:8761/eureka/"
},
...
}

Notice the decrypted property source is missing the someValue properties, those are the ones without the {cypher} prefix.
After talking to @philwebb about this we think this is a Boot issue rather than anything to do with the config server.  @philwebb has opened an issue to revisit the problem in SB.

@ryanjbaxter Can you share the project you used to test this, we'll need it to verify the Boot fix.

For the config server I am using https://github.com/spring-cloud-samples/configserver
In the application.yml change config.server.git.uri to point to https://github.com/ryanjbaxter/config-repo.
For the client you can use the app here  https://github.com/ryanjbaxter/config-client-446

@marcellodesales Does that setup match they way you're running things in your app?

@philwebb @ryanjbaxter I think so... As @ryanjbaxter might have figured out, the server setup to NOT decipher secrets. The client has the same jks used to encrypt the values, so the client is decrypting the values.

@marcellodesales makes sense, once I introduced the client side decryption that is when the problem showed up, thanks!

@ryanjbaxter awesome... I will keep following the open issue!

There's not an easy way to fix this in Boot without causing regressions. If EnvironmentDecryptApplicationInitializer could be changed to add both the decrypted values, and any original values as well (i.e. so there's not a split across sources) then I think things will work again.

Awesome! Can't wait for the release!

@spencergibb @ryanjbaxter @dsyer @philwebb We finally verified the patch from #130 ... Worked beautifully! Thank you guys!


volume prune only supported with daemon version >= 1.25

#docker -H tcp://localhost:4000 volume prune
only supported with daemon version >= 1.25

# docker -H tcp://localhost:4000 images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
swarm                                1.2.6               36b1e23becab        4 months ago        15.9 MB
swarm                                latest              36b1e23becab        4 months ago        15.9 MB

# docker -H tcp://localhost:4000 ps -a
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS                    PORTS                                                                                NAMES
 e0cad4150c32        swarm                                     "/swarm --debug ma..."   10 days ago         Up 7 days                 2375/tcp, <IP_ADDRESS>:4000->4000/tcp                                                                                localhost/swarm-manager

Please update Docker Swarm Container

I think it is reasonable to add prune. WDYT? @dongluochen @nishanttotla

I'll have to look up, on which version prune was added to the API. Do you mean we should update the old version container?

Yes I think it reasonable to add prune. We should add image, container, volume prune one by one. And validate Swarm manager's cache is up-to-date after prune operations.

We are going to release 1.2.7 in next few weeks. I think prune operations can come in after that.

Hello.
I have updated swarm to 1.2.8 and tried to do volume prune
#docker -H tcp://localhost:4000 volume prune
only supported with daemon version >= 1.25

Hi， @helli0n
1.2.8 comes to fix a problem of 1.2.7.
I am afraid this will come after 1.2.8. And Actually I am working on this.

ok, I'll wait.
thanks


sqlfluff: 2.0.3 -> 2.0.4

Changelog: https://github.com/sqlfluff/sqlfluff/blob/2.0.4/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 226187 run on x86_64-linux 1

2 packages built:

sqlfluff
sqlfluff.dist


When navigating back and forward from a video list,  SPF randomly scrolls down position on video page (Chrome only)

I can repo this on Chrome but not Firefox.
Browser: Chrome Version 49.0.2612.0 dev-m (64-bit)
OS: Win 7 (64-bit)
Repo:

Open one of the video list, e.g. https://www.youtube.com/channel/UC2bkHVIDjXS7sgrgjFtzOXQ/videos
Open the first video on the third row, "Operation".
Wait the page fully loaded, especially the comment section.
Navigate Back to the list by press backspace or click the back button on the browser.
Click on another video, the second video on the third row, "Analysis".

What happened: when you open the second video page, you will find your scroll position is not at top at very beginning, then it scroll back to top very briefly. But after the comment section is fully loaded, it scrolls down again for no reason.
What should happen: it shouldn't scroll at all.
If I use some way to disable SPF, the problem would be gone.
I made a video to show it better: https://youtu.be/R4bK5WU87oM

@fireattack Thanks for the report.  I can repo the bug, and we're looking into a fix.  At this point, I think the bug is in other YouTube JS, not in SPF's scroll handling.  Either way, I'll close this issue when it's fixed.

Thanks.


Polling does not work when start called from async context

Describe the bug
I was trying to wrap calling the start method in modern concurrency so I can call and get completion in async context and I noticed when doing this the poller fails to fire beyond initial fetch.
Steps to reproduce the bug
I've included a simple example below where the start is called on the UnleashClient, and upon starting changes some text in a view to say started or failed to start. For this I added:

A startAsync which wraps the start completion in a checkedContinuation to allow it to be called from async (called from .task view modifier)
A start which wraps the included start method with a completion block (called form .onAppear view modifier)

For both I print out to console ">>> Unleashed!" when it successfully connects. I also have enabled printing status in the client start method.
In both (1) and (2) I successfully see ">>> Unleashed!" print to console showing it did start up. However I only see subsequent client log messages (e.g. No changes in feature toggles.) when calling via the onAppear and completion block.
Seeing how the timer is constructed to fire further requests I see it is added to the RunLoop. I'm thinking that is causing an issue when trying to adapt for modern concurrency.
Any thoughts on a fix? (The poller may need a main dispatch queue added)
import UnleashProxyClientSwift
import SwiftUI

struct ContentView: View {
    @State var text = "Not started"

    var body: some View {
        Text(text)
            .task {
                let started = await Unleasher.shared.startAsync()
                if started {
                    self.text = "Started"
                } else {
                    self.text = "Failed to start"
                }
            }
//            .onAppear {
//                Unleasher.shared.start { started in
//                    if started {
//                        self.text = "Started"
//                   } else {
//                        self.text = "Failed to start"
//                    }
//                }
//            }
    }
}

class Unleasher {
    static let shared = Unleasher()
    private let client: UnleashClient

    private init() {
        self.client = UnleashClient(
            unleashUrl: "someURL",
            clientKey: "someKey",
            refreshInterval: 3,
            appName: "unleasher-ios-sample"
        )
    }

    func startAsync() async -> Bool {
        await withCheckedContinuation { continuation in
            client.start(true) { error in
                if let error {
                    print(error.localizedDescription)
                    continuation.resume(returning: false)
                } else {
                    print(">>> Unleashed!")
                    continuation.resume(returning: true)
                }
            }
        }
    }

    func start(completion: @escaping (Bool) -> Void) {
        client.start(true) { error in
            if let error {
                print(error.localizedDescription)
                completion(false)
            } else {
                print(">>> Unleashed!")
                completion(true)
            }
        }
    }
}

Expected behavior
UnleashClient should continue to fetch even when wrapped in methods porting for calling in modern concurrency
Logs, error output, etc.
No response
Screenshots
No response
Additional context
No response
Unleash version
1.3.0
Subscription type
Open source
Hosting type
Self-hosted
SDK information (language and version)
Only noticed in iOS client SDK

Found this which I think highlights the issue of Timer usage https://wadetregaskis.com/performing-a-delayed-and-or-repeating-operation-in-a-swift-actor/

The example above looks like it has a workaround I'm still exploring but the below is giving me same behaviour as (2)
class Unleasher {
...
    func startAsync() async -> Bool {
        let task = Task { @MainActor in
            await withCheckedContinuation { continuation in
                client.start(true) { error in
                    if let error {
                        print(error.localizedDescription)
                        continuation.resume(returning: false)
                    } else {
                        print(">>> Unleashed!")
                        continuation.resume(returning: true)
                    }
                }
            }
        }

        return await task.value
    }
}

A similar issue is seen in the UnleashClient().updateContext(...) since it calls start within it.

@benjamin-es-hall
Hey Benjamin. I just wanted to let you know we're looking into this. From what I can tell, it sounds like it makes sense to change the Timer implementation to something that would work concurrently. If you have a solution that can solve the problem and be backwards compatible (also with the supported iOS versions), then I'm happy to review and merge that.
Otherwise we'll need to do some further investigation and prioritise this on our end.
The implementation of the poller is pluggable, so you can provide your own poller implementation that uses a different mechanism than Timer. That could perhaps be a way to go forward?

Hi @FredrikOseberg ! Thanks for the update. Unfortunately I don't have a solution yet, I've been thinking about it but nothing specific come to mind yet.
I looked into a custom Poller but I think the UnleashClient(Base) takes a concrete Poller in its init rather than an interface/protocol so it's not as simple to override existing behaviour.

Hi @FredrikOseberg ! Thanks for the update. Unfortunately I don't have a solution yet, I've been thinking about it but nothing specific come to mind yet.
I looked into a custom Poller but I think the UnleashClient(Base) takes a concrete Poller in its init rather than an interface/protocol so it's not as simple to override existing behaviour.

Ah yes, you're right. I've put this onto our next sprint, so I'll come back to you when we have a solution.

If you need me to test anything send me a message and happy to give it a go :)

Oh, well I think I found the issue with updateContext and why my workaround for start() was not working there. Turns out updateContext calling start() with its default arguments, which includes setting printToConsole as false, which gives impression it is no longer fetching 🤦
So in all, you can expose start, and update to concurrency as is by doing the following:
class Unleasher {
...
    func startAsync() async -> Bool {
        return Task { @MainActor in
            await withCheckedContinuation { continuation in
                client.start(true) { error in
                    if let error {
                        print(error.localizedDescription)
                        continuation.resume(returning: false)
                    } else {
                        print(">>> Unleashed!")
                        continuation.resume(returning: true)
                    }
                }
            }
        }.value
    }

    func updateContextAsync(context: [String: String], properties: [String: String]? = nil) async -> Bool {
        return Task { @MainActor in
            await withCheckedContinuation { continuation in
                client.updateContext(context: context, properties: properties) { error in
                    if let error {
                        print(error.localizedDescription)
                        continuation.resume(returning: false)
                    } else {
                        print(">>> Context updated!")
                        continuation.resume(returning: true)
                    }
                }
            }
        }.value
    }
}


Feat: collect cluster resources without caching pods

Overview
Collecting member cluster resources is required for resource-based scheduling plugins, such as ClusterResourcesFit, ClusterResourcesBalancedAllocation, etc.
Currently, we collect the available and allocatable member cluster resources by maintaining a Node and Pod informer for each member cluster. The number of schedulable nodes and the total allocatable resources is obtained from the Node informer. The total requested resources (which is subtracted from the total allocatable resources to get the total available resources) is obtained from the Pod informer.
This naturally does not scale well as informers maintain a copy of each object in memory.
This PR introduces a new mechanism for collecting cluster resources that does not require the caching of pod objects. With this new mechanism, we no longer require the use of a pod informer to collect the total requested resources in a cluster.
This new mechanism works based on the premise that:

Pod resource requests cannot be changed
List pagination is consistent and returns a single list resource version

How the new mechanism works

We start with a paginated list and process each page immediately after we get it. We simply sum up the resources requested by each pod (excluding completed pods) to get a set of resource quantities.
Once we are done listing, we start a watch request based on the resource version obtained from the list request above. Because pod resource requests cannot change, we only need to care about when a pod is created, completed, or deleted. When a pod is created, we add its requested resources, and when a pod is completed/deleted, we subtract its requested resources (the requested resources can be obtained from the object in the watch event).
To avoid double counting when a completed pod gets deleted, we maintain the set of uids for completed pods that we have accounted for but are not yet deleted.
When a watch connection drops, we freeze the current set of resource quantities, and start a (paginated) relist where we add up the requested resources again from 0 to obtain a new set of resource quantities. Once the list is complete, we simply replace the old set with the new set and continue from step 2.

Memory improvements
(In relation to collecting total requested resources)
Previously, a copy of every pod in each member cluster was stored in memory. During relists, where we have to deserialize a complete list of pods again, the memory might even double.
With this new mechanism, the amount of memory used would be O(number of member clusters * page size). The amount of memory used for maintaining the set of completed-but-not-terminated-pods' uids should be insignificant.
Results
I ran two versions of the KubeAdmiral controller-manager against test clusters where I simulated the creation and deletion of 10000 pods at regular intervals. The first version is the main branch, while the second version uses the new cacheless collector. Periodic relists were triggered by pausing the apiservers to ensure that relists do not affect memory usage and correctness
I also hooked up some temporary metrics for evaluating the memory usage and correctness. Below are the results:
Heap alloc of the 2 versions:

Reported CPU available (both correspond)

Reported memory available (both correspond)

https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-watch Looks like we might not need to list

@gary-lgy This does not work because watch with rv=0 does not tell you when the added synthetic event stops (giving us a consistent snapshot). This means that we will not know when to "replace" the current resource state.
It would be great if it does though. It would remove all the overhead of listing and we would also not have to tinker with the rather confusing list semantics :(

Could you be more specific about what edge cases we need to handle? We could port the error-handling logic over as well.
We could simply not do a paginated list, but still only maintain a resource vector. This will still reduce the long-term memory usage but we will expect to see bursts during the initial list and relists.

Nonetheless, we could close this pr if the risks are too large, it is just an optimization after all.

Alternative idea: Our concern was mainly that number of clusters (m) multiplied by number of pods (n) is too high. The memory required for the pods on a single cluster O(n) is expected to be bounded under an acceptable threshold, because that is exactly how other pod-watching components for a single cluster work (kube-scheduler, controller-manager, etc), so our actual requirement is just to keep the memory in O(n) instead of O(mn). We could more trivially solve this problem by using reflector to watch a single cluster, and using a semaphore to ensure that no more than k clusters are listed at the same time (and ensure the memory can be garbage collected before releasing the semaphore), then the memory complexity because O(kn) instead, which would be more acceptable.

Could you be more specific about what edge cases we need to handle? We could port the error-handling logic over as well.

I'm not sure which edge cases we need to handle, and that's the problem. Rather than porting Reflector to our own rewrite, I think it's would be more maintainable in the long run to just copy Reflector, make minimal changes and document exactly which lines are changed. An even better approach is to use Reflector and pass in custom ListerWatcher and cache.Store implementations that do what we want.

We could simply not do a paginated list, but still only maintain a resource vector. This will still reduce the long-term memory usage but we will expect to see bursts during the initial list and relists.

I think @SOF3's response hits the hail on the head. Reducing the memory usage to O(n) would be sufficient, and it can be done by using Reflector directly with a custom ListerWatcher and cache.Store.


Implement arrayLike predicate

There should be a predicate for checking whether something is an array-like object. As well as being exposed as a predicate in its own right, it should also be utilised by map, apply and of so that they work sanely with array-like objects.

I would recommend
check.iterable()

for the name of this predicate.  I learned about the term iterable in a pluralsight.com course I am learning from called Javascript Fundamentals for ECMAScript 6.  According to the professor, who seems very trustworthy, iterables and iterators are being standardized in ES6.  So by choosing this name now, you will remain consistent with programmers as they switch over to ES6.

Yep, good shout. I'll definitely do that.

Fyi, this is now implemented. I'll release as soon as issues #28 and #41 are resolved.

Published as 3.2.0.

check.iterable() is working for me.


Different colors for icon and text

Hi,
Is there any way to get different colors for the icon and the text? I have a button that has both icon and text, and I would like to use different colors for the two parts. However, button.setFATitleColor() sets the color fot both icon and text.

@ocwendel I have developed SwiftIcons.
You can check UIButton example for this purpose.

@ocwendel I have created SwiftIcons based on this library.
You can check UIButton for this purpose.

Hello, thanks for the enhancement tip. However, you can achieve this effect by having multiple labels in one line.

While it is true you can create the effect by having multiple labels, it really defeats the (really cool, IMHO) feature of setFAText all being in one place (with pre and post text).
So, as in the example given in the docs, a scenario where I would like to have a Twitter log be blue (to better match their coloring), while I have pre and post text that I want to have in black (for example), I would then have to have THREE labels..........
And, then, the spacing between the text and icon might not be the same - or, even difficult to set, etc......
I.e., I am a big fan of the idea to have ONE line to do this!  (my particular example at this moment is to show a rating number and FAStar next to it - I will do multiple labels {no other choice!}, though it would be great not to have to do this...)
BTW, a suggestion on settings:
field.setFAIconColor()
field.setFATextColor()
or (if you really wanted to get 'fancy' and give ultimate control...):
field.setFAPrefixTextColor()
field.setFAPostfixTextColor()

Opened a PR for this issue.


freifunk-common: use micrond to trigger olsr_watchdog

Maintaining the cronjobs in separate files seems much more simple than in a global crontab file.
This is esp. relevant for updating or removing the cronjob.

The micrond-package appears in the OpenWrt-19.07 branch of the packages-feed

merged in f6f61274e


feat: support count min sketch data structure and most commands

references issue: #2425
The commands, IncrBy, Info, InitByDim, InitByProb, and Query have been made.
The merge command will still need working on, and go integration tests will be added for the future. I will also probably add a cache similar to the hyperloglog for in-memory operations.

Was there a change to GetOptions recently? After the merge, it seems to be behaving different

Was there a change made to GetOptions recently? There seems to be a problem after the merge.

Was there a change made to GetOptions recently? There seems to be a problem after the merge.

Yes, the operations to db requires an options here.

I believe this pr should be good

Nice, I'll take a round tonight

@mapleFU do the changes seem right? sorry for the bother.

@PragmaTwice Is the workflow able to run again?

do the changes seem right? sorry for the bother.

Sorry for delaying, I'll take a pass

@jonathanc-n would you mind fix the lint?

I'm outing these days, so maybe late reply

@git-hulk @PragmaTwice I think a workflow can be run again with the changes

@PragmaTwice Would you be able to review this pr?

@mapleFU something seems to be a little odd here, I ran clang-format on all changed files and its running into formatting issues

@mapleFU test cases are implemented!

@mapleFU Does this seem fine to move forward?

@mapleFU Alright, thanks for the reviews, I put the changes in for it.

@mapleFU Srorry about that, fixed the lint.

No problem, we're almost their

I'm a bit tired today and will revisit this tomorrow

I just reach home and have some minor updates, would continue tomorrow. Sorry for delaying

@mapleFU Were you gonna make your own changes to the code?

Yes I'm back from holiday and working, would continue.


Test fails for a trivial circuit

Tests fail for the following simple circuit:

type testCircuit struct {
	N frontend.Variable `gnark:",public"`
}

func (c *testCircuit) Define(api frontend.API) error {
	bits.ToBinary(api, c.N, bits.WithNbDigits(3))
	return nil
}

func TestTest(t *testing.T) {
	assert := test.NewAssert(t)

	assert.ProverSucceeded(&testCircuit{}, &testCircuit{N: 3})
}

=== RUN   TestTest/fuzz/bn254/groth16
    assert.go:80: errVars [assertIsEqual] 4 ==<PHONE_NUMBER>9867638993849239390888276500196600227666715437247040087537991462988
        bits.toBinary
        	conversion_binary.go:93
        bits.ToBase
        	conversion.go:25
        bits.ToBinary
        	conversion_binary.go:18
        bits_test.(*testCircuit).Define
        	compare_test.go:15

    assert.go:80: errConsts <nil>

looks like it's a feature, rather than a bug;
also the comment in the PR #522 doesn't capture the whole picture ;
decomposition and WithUnconstrainedOutputs option is not used,
 // then a proof can not be generated. If WithNbDigits

Technically, a proof can be generated, if the variable is in the correct range. So say if you have inputs to your circuit that you know are uint8 (ie smaller than 256); then bits.WithNbDigits(8) makes sense.
If the goal is to get "parts" of the bits, the circuit developer is better off getting the full bit decomposition and re-slicing the result (to ensure the bit decomposition matches the variable), maybe doc should mention that..
What use case are you interested in with NbDigits options exactly?

looks like it's a feature, rather than a bug;

This happens just because I'm not using the result of the function. For example, this does NOT fail:

type testCircuit struct {
	N frontend.Variable `gnark:",public"`
}

func (c *testCircuit) Define(api frontend.API) error {
	out := bits.ToBinary(api, c.N, bits.WithNbDigits(3))
	api.AssertIsEqual(api.Add(out[0], out[1], out[2]), 2)
	return nil
}

func TestTest(t *testing.T) {
	assert := test.NewAssert(t)

	assert.ProverSucceeded(&testCircuit{}, &testCircuit{N: 3})
}

Technically, a proof can be generated, if the variable is in the correct range. So say if you have inputs to your circuit that you know are uint8 (ie smaller than 256); then bits.WithNbDigits(8) makes sense.

You are correct. You are actually saying what I'm trying to say. The old comment was this:

If nbDigits is lower than the length of full decomposition, then nbDigits least significant digits are returned.

In the PR I've changed it to this:

If nbDigits is lower than the length of full decomposition and WithUnconstrainedOutputs option is not used, then a proof can not be generated.

The first comment is not correct cause it won't give you least significant digits when for example you set nbDigits to 3 for a number which is 5 bits.

Should we say it like this?

If nbDigits is lower than the length of the full decomposition and WithUnconstrainedOutputs option is not being used, then a proof can not be generated.

Visited this failing test; first I thought it was a fuzzing issue; but actually, the fuzzer pointed out a difference of behavior of the bit decomposition when we decompose a variable vs when we decompose a constant.
When we decompose a variable, we do ensure by default that the decomposed bits match times the powers of 2 coeff match the input. We do not do that with constants, will fix.


feat(exporter): export records to a remote Hazelcast instance

Set the environment variable ZEEBE_HAZELCAST_REMOTE_ADDRESS or the exporter argument remoteAddress to connect to a remote Hazelcast instance/cluster.
Example configuration from docker-compose:
version: "2"

networks:
  zeebe_network:
    driver: bridge

services:
  zeebe:
    container_name: zeebe_broker
    image: camunda/zeebe:0.23.0
    environment:
      - ZEEBE_LOG_LEVEL=debug
      - ZEEBE_HAZELCAST_REMOTE_ADDRESS=hazelcast:5701
    ports:
      - "26500:26500"
      - "9600:9600"
    volumes:
      - ../exporter/target/zeebe-hazelcast-exporter-${EXPORTER_VERSION}-jar-with-dependencies.jar:/usr/local/zeebe/exporters/zeebe-hazelcast-exporter.jar
      - ./application.yaml:/usr/local/zeebe/config/application.yaml
    networks:
      - zeebe_network
    depends_on:
      - hazelcast

  hazelcast:
    container_name: hazelcast
    image: hazelcast/hazelcast:3.12.6
    ports:
      - "5701:5701"
    environment:
      - JAVA_OPTS="-Dhazelcast.local.publicAddress=hazelcast:5701"
    networks:
      - zeebe_network

closes #42

Hi all,
I am using zeebe with simple monitor and hazelcast exporter in a kubernetes env.
I have noticed that each node of the cluster start a different hazelcast server, so I am trying to use an external hazelcast and send data to it using remote address.
I thing there is a bug, I am not able to set remote address variable.
Can I have some help?

@kratosmat, sure!
The environment variable should be called ZEEBE_HAZELCAST_REMOTE_ADDRESS.
Please make sure that you're using the version 0.9.0 of the Hazelcast exporter. Let's create a new issue and provide all information that helps to analyze the behavior.

@saig0 thanks, it seems work, but there is something of strange.
I have installed an hazelcast external and a hazelcast management GUI:
version: "2"

networks:
    zeebe_network:
        driver: bridge

services:
    zeebe-0:
        container_name: zeebe_broker_0
        image: zeebe:0.23.1-hazelcast
        environment:
            - ZEEBE_LOG_LEVEL=debug
            - ZEEBE_NODE_ID=0
            - ZEEBE_PARTITIONS_COUNT=2
            - ZEEBE_REPLICATION_FACTOR=3
            - ZEEBE_CLUSTER_SIZE=3
            - ZEEBE_CONTACT_POINTS=zeebe-0:26502
            - ZEEBE_HAZELCAST_REMOTE_ADDRESS=hazelcast-server:5701
        volumes:
            - ./application.yaml:/usr/local/zeebe/config/application.yaml
        networks:
            - zeebe_network
        depends_on:
            - hazelcast-server
    zeebe-1:
        container_name: zeebe_broker_1
        image: zeebe:0.23.1-hazelcast
        environment:
            - ZEEBE_LOG_LEVEL=debug
            - ZEEBE_NODE_ID=1
            - ZEEBE_PARTITIONS_COUNT=2
            - ZEEBE_REPLICATION_FACTOR=3
            - ZEEBE_CLUSTER_SIZE=3
            - ZEEBE_CONTACT_POINTS=zeebe-0:26502
            - ZEEBE_HAZELCAST_REMOTE_ADDRESS=hazelcast-server:5701
        volumes:
            - ./application.yaml:/usr/local/zeebe/config/application.yaml
        networks:
            - zeebe_network
        depends_on:
            - hazelcast-server
    zeebe-2:
        container_name: zeebe_broker_2
        image: zeebe:0.23.1-hazelcast
        environment:
            - ZEEBE_LOG_LEVEL=debug
            - ZEEBE_NODE_ID=2
            - ZEEBE_PARTITIONS_COUNT=2
            - ZEEBE_REPLICATION_FACTOR=3
            - ZEEBE_CLUSTER_SIZE=3
            - ZEEBE_CONTACT_POINTS=zeebe-0:26502
            - ZEEBE_HAZELCAST_REMOTE_ADDRESS=hazelcast-server:5701
        volumes:
            - ./application.yaml:/usr/local/zeebe/config/application.yaml
        networks:
            - zeebe_network
        depends_on:
            - hazelcast-server
    hazelcast-server:
        container_name: hazelcast-server
        image: hazelcast/hazelcast:4.0.1
        environment:
            - JAVA_OPTS="-Dhazelcast.local.publicAddress=hazelcast-server:5701"
        networks:
            - zeebe_network
    hazelcast-management:
        container_name: hazelcast-management
        image: hazelcast/management-center:4.0.1
        ports:
            - "8083:8080"
        networks:
            - zeebe_network
        depends_on:
            - hazelcast-server
    monitor:
        container_name: zeebe_monitor
        image: camunda/zeebe-simple-monitor:0.19.0
        volumes:
            - ./simple-monitor-application.yaml:/app/resources/application.yaml
        ports:
            - "8082:8082"
        networks:
            - zeebe_network
        depends_on:
            - hazelcast-server

But as you can see it seems that only 2 node are attaching the hazelcast server.
Is it normal?

Looking at the docker-compose, this is expected. You configured the Zeebe cluster to have 2 partitions (ZEEBE_PARTITIONS_COUNT=2).
So, only 2 partitions are processing the workflows and exporting data to Hazelcast. The exporters are only active on the leaders of the partitions. On the followers, the exporters are not active.

@saig0 thanks a lot. If you think this docker compose could be useful for others please I will contribute to the project.
I would like to ask about other issue regarding simple monitor.
I notice a strange behaviour as you can see on image below.

The number of active instance on the image is 3 while they are 5 on the list.
Is it a bug of simplemonitor UI or there is a misconfiguration?

Interesting. Please open an issue in the simple monitor repository. If possible, please add the steps to reproduce this issue.
I updated the docker-compose.yml on the README page based on yours :+1:


CMakeLists.txt does not honour CMAKE_INSTALL_PREFIX

As part of my project, I want to use ExternalProject_add() and specify the install location. So in my project, I do something like (untested):
################################################################
# Pull source and build
ExternalProject_Add(
    msft_mimalloc
    GIT_REPOSITORY https://github.com/microsoft/mimalloc.git
    GIT_TAG 114d05cd76cdf6b959e8a9ff842d0f0cf20a6071# Release 1.1.0
    TIMEOUT 60
    CMAKE_ARGS -DCMAKE_BUILD_TYPE=RELWITHDEBINFO -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION}
)

#### Copy from install prefix to final location
#### THIS FAILS because INSTALL_PREFIX is not honoured above.
ExternalProject_Add_Step(
    msft_mimalloc CopyToBin
    COMMAND ${CMAKE_COMMAND} -E copy ${EXTERNAL_INSTALL_LOCATION}/lib/libmimalloc-relwithdebinfo.so ${CMAKE_BINARY_DIR}/bin
    DEPENDEES install
)

The problem is that the project does not seem to honour $CMAKE_INSTALL_PREFIX. I'm not a CMake expert but the other 10+ CMake project that I build in source work as I expect.
Environment:

Linux Ubuntu 18.04.3
CMake v15
gcc v8.3.0

Little suggestion, what happens if you change the main CMakeLists.txt, the line from
set(mi_install_dir "lib/mimalloc-${mi_version}")
to
set(mi_install_dir "${CMAKE_INSTALL_PREFIX}/lib/mimalloc-${mi_version}")
?

Fixed. Opened pull request. Please note that change is untested on anything other than Linux. I do not have access to a Windows dev environment.

On another note, it would be nice to do away with the -relwithdebinfo part of libmimalloc-relwithdebinfo.so filename.

Now the name of mimalloc shows the difference in builds, like mimalloc, mimalloc-debug or mimalloc-secure. I guess we could use mimalloc too for relwithdebinfo as it should not matter ... ?

Good question. My current install step for mimalloc looks like:
ExternalProject_Add_Step(
    msft_mm CopyToBin
    COMMAND ${CMAKE_COMMAND} -E copy ${EXTERNAL_INSTALL_LOCATION}/lib/mimalloc-1.1/libmimalloc-relwithdebinfo.so ${CMAKE_BINARY_DIR}/bin/libmimalloc.so
    DEPENDEES install
)

...but I would ordinarily expect something like:
ExternalProject_Add_Step(
    msft_mm CopyToBin
    COMMAND ${CMAKE_COMMAND} -E copy ${EXTERNAL_INSTALL_LOCATION}/lib/libmimalloc.so ${CMAKE_BINARY_DIR}/bin/libmimalloc.so
    DEPENDEES install
)

which would mean doing away with the folder name mimalloc-1.1 and the build-type version of libmimalloc-relwithdebinfo.so so just libmimalloc.so

Any further thoughts?

Ah I see. I think leaving out the relwithdebinfo from the mimalloc name is ok, but I like to keep the version in the folder  -- both to make it apparent but also to allow  multiple versions to coexist.

Should I open a pull request?

Sure -- thanks!  Hmmm, I just looked in the CMakeFiles and it seems to already do this??
See https://github.com/microsoft/mimalloc/blob/e946d56ba0c1aa795ffb00f862fd32046a62da8e/CMakeLists.txt#L105

Ah yes, that has caught me out before. The problem is that CMAKE_BUILD_TYPE must be treated in a case-insensitive way. I'm using CMAKE_BUILD_TYPE=RELWITHDEBINFO (as you can see in the original post above).
I'll open up a PR.

Fixed (#173 )


Google Analytics Error - GraphQLError: Cannot query field "allMarkdownRemark" on type "Query".

Hi,
I'm currently using your theme to build my personal blog.
But somehow I need to add Google Analytics into my blog, but, it gives me an error :
GraphQLError: Cannot query field "allMarkdownRemark" on type "Query".. Could you please provide me about what's wrong with it?
Here's the error log when trying to deploy on netlify :
9:39:16 PM: Build ready to start
9:39:18 PM: build-image version: 84aca9ba39e0ee86ba194760fbfc51a808f62543
9:39:18 PM: buildbot version: 1ac64ca11e029436ed45ac81a38b9839778ec314
9:39:18 PM: Fetching cached dependencies
9:39:18 PM: Starting to download cache of 127.3MB
9:39:19 PM: Finished downloading cache in 765.933731ms
9:39:19 PM: Starting to extract cache
9:39:24 PM: Finished extracting cache in 5.296768279s
9:39:25 PM: Finished fetching cache in 6.358262733s
9:39:25 PM: Starting to prepare the repo for build
9:39:25 PM: Preparing Git Reference refs/heads/master
9:39:26 PM: Starting build script
9:39:26 PM: Installing dependencies
9:39:27 PM: Started restoring cached node version
9:39:30 PM: Finished restoring cached node version
9:39:31 PM: v8.15.0 is already installed.
9:39:32 PM: Now using node v8.15.0 (npm v6.4.1)
9:39:32 PM: Attempting ruby version 2.3.6, read from environment
9:39:34 PM: Using ruby version 2.3.6
9:39:34 PM: Using PHP version 5.6
9:39:34 PM: Started restoring cached node modules
9:39:34 PM: Finished restoring cached node modules
9:39:34 PM: Started restoring cached yarn cache
9:39:34 PM: Finished restoring cached yarn cache
9:39:36 PM: Installing NPM modules using Yarn version 1.3.2
9:39:37 PM: yarn install v1.3.2
9:39:37 PM: [1/4] Resolving packages...
9:39:39 PM: [2/4] Fetching packages...
9:39:56 PM: info<EMAIL_ADDRESS>The platform "linux" is incompatible with this module.
9:39:56 PM: info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
9:39:56 PM: [3/4] Linking dependencies...
9:39:56 PM: warning "gatsby > mini-css-extract-plugin > schema-utils ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>9:39:56 PM: warning "gatsby-plugin-less ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>|| ^3.0.0 || ^4.0.0".
9:40:05 PM: [4/4] Building fresh packages...
9:40:09 PM: success Saved lockfile.
9:40:09 PM: Done in 32.21s.
9:40:09 PM: NPM modules installed using Yarn
9:40:10 PM: Started restoring cached go cache
9:40:10 PM: Finished restoring cached go cache
9:40:10 PM: unset GOOS;
9:40:10 PM: unset GOARCH;
9:40:10 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.10.linux.amd64';
9:40:10 PM: export PATH="/opt/buildhome/.gimme/versions/go1.10.linux.amd64/bin:${PATH}";
9:40:10 PM: go version >&2;
9:40:10 PM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.10.linux.amd64.env';
9:40:10 PM: go version go1.10 linux/amd64
9:40:10 PM: Installing missing commands
9:40:10 PM: Verify run directory
9:40:10 PM: Executing user command: gatsby build
9:40:13 PM: success open and validate gatsby-configs — 0.011 s
9:40:13 PM: success load plugins — 0.191 s
9:40:13 PM: success onPreInit — 0.044 s
9:40:13 PM: success delete html and css files from previous builds — 0.008 s
9:40:13 PM: success initialize cache — 0.008 s
9:40:13 PM: success copy gatsby files — 0.035 s
9:40:13 PM: success onPreBootstrap — 0.013 s
9:40:14 PM: success source and transform nodes — 0.026 s
9:40:14 PM: success building schema — 0.196 s
9:40:14 PM: error gatsby-node.js returned an error
9:40:14 PM:
9:40:14 PM:   GraphQLError: Cannot query field "allMarkdownRemark" on type "Query".
9:40:14 PM:
9:40:14 PM:   - debuggability.js:313 Promise._execute
9:40:14 PM:     [repo]/[bluebird]/js/release/debuggability.js:313:9
9:40:14 PM:
9:40:14 PM:   - promise.js:483 Promise._resolveFromExecutor
9:40:14 PM:     [repo]/[bluebird]/js/release/promise.js:483:18
9:40:14 PM:
9:40:14 PM:   - promise.js:79 new Promise
9:40:14 PM:     [repo]/[bluebird]/js/release/promise.js:79:10
9:40:14 PM:
9:40:14 PM:   - index.js:372 graphqlRunner
9:40:14 PM:     [repo]/[gatsby]/dist/bootstrap/index.js:372:14
9:40:14 PM:
9:40:14 PM:   - gatsby-node.js:11 Object.exports.createPages
9:40:14 PM:     /opt/build/repo/gatsby-node.js:11:10
9:40:14 PM:
9:40:14 PM:   - api-runner-node.js:154 runAPI
9:40:14 PM:     [repo]/[gatsby]/dist/utils/api-runner-node.js:154:37
9:40:14 PM:
9:40:14 PM:   - api-runner-node.js:258 resolve
9:40:14 PM:     [repo]/[gatsby]/dist/utils/api-runner-node.js:258:19
9:40:14 PM:
9:40:14 PM:
9:40:14 PM: Caching artifacts
9:40:14 PM: Started saving node modules
9:40:14 PM: Finished saving node modules
9:40:14 PM: Started saving yarn cache
9:40:14 PM: Finished saving yarn cache
9:40:14 PM: Started saving pip cache
9:40:14 PM: failed during stage 'building site': Build script returned non-zero exit code: 1
9:40:14 PM: Finished saving pip cache
9:40:14 PM: Started saving emacs cask dependencies
9:40:14 PM: Finished saving emacs cask dependencies
9:40:14 PM: Shutting down logging, 9 messages pending

I was trying to figure it out referring to this issue #2212 & this #2150 but still, it doesn't work in my case...
As you can see here at my gatsby-config.js :
const config = require('./config');
const plugins = require('./gatsby-config.plugins');

module.exports = {
  pathPrefix: config.pathPrefix,
  siteMetadata: {
    // Data used by some gatsby plugins
    siteUrl: config.siteUrl,
    title: config.siteTitle,
    description: config.siteDescription
  },

  plugins:   [
    {
      resolve: 'gatsby-plugin-google-analytics',
      options: {
      // replace "UA-XXXXXXXXX-X" with your own Tracking ID
        trackingId: "UA-965XXXX23-3",
        head: true,
    },
      resolve: 'gatsby-plugin-facebook-analytics',
      options: {
        appId: "25617665XXXXX",
        // Include facebook analytics in development.
        // Defaults to false meaning the library will only be loaded in production.
        includeInDevelopment: false,
        // Include debug version of sdk
        // Defaults to false meaning the library will load sdk.js
        debug: false,
        head: true,
        // Can select your language, default will load english
        language: "en_US",
      },
  },]
}

Hi and thanks for trying out my starter!
It seems that you've forgotten some brackets within plugins array. Replace it with this:
plugins:  [
    {
      resolve: 'gatsby-plugin-google-analytics',
      options: {
      // replace "UA-XXXXXXXXX-X" with your own Tracking ID
        trackingId: "UA-965XXXX23-3",
        head: true
      }
    },
    {
      resolve: 'gatsby-plugin-facebook-analytics',
      options: {
        appId: "25617665XXXXX",
        // Include facebook analytics in development.
        // Defaults to false meaning the library will only be loaded in production.
        includeInDevelopment: false,
        // Include debug version of sdk
        // Defaults to false meaning the library will load sdk.js
        debug: false,
        head: true,
        // Can select your language, default will load english
        language: "en_US"
      }
    }
]

Thank's for ur suggestion, but I've tried it out and still getting the same error.
I think that causes the error is from "query" in the gatsby-node.js file, as you can see above.
When I trying to deploy it to netlify. but I'm not sure why this error is showing up only when I added the plugins in gatsby-config.js file.
Also, I've tried adding this config to my gatsby-config.js without installing the plugin.
The deployment becomes successfully, but it won't trigger the analytics.

Before to go in deep in the issue:

Does the error happen also when you build your project locally or only when you deploy on Netifly?
Does the error happen only with gatsby-plugin-google-analytics plugin or also with gatsby-plugin-facebook-analytics?
From your first snippet

As you can see here at my gatsby-config.js :
const config = require('./config');
const plugins = require('./gatsby-config.plugins');

module.exports = {
  pathPrefix: config.pathPrefix,
  siteMetadata: {
    // Data used by some gatsby plugins
    siteUrl: config.siteUrl,
    title: config.siteTitle,
    description: config.siteDescription
  },

  plugins:   [
    {
      resolve: 'gatsby-plugin-google-analytics',
      options: {
      // replace "UA-XXXXXXXXX-X" with your own Tracking ID
        trackingId: "UA-965XXXX23-3",
        head: true,
    },
      resolve: 'gatsby-plugin-facebook-analytics',
      options: {
        appId: "25617665XXXXX",
        // Include facebook analytics in development.
        // Defaults to false meaning the library will only be loaded in production.
        includeInDevelopment: false,
        // Include debug version of sdk
        // Defaults to false meaning the library will load sdk.js
        debug: false,
        head: true,
        // Can select your language, default will load english
        language: "en_US",
      },
  },]
}

I note that you've imported const plugins = require('./gatsby-config.plugins'); but you didn't use it in the plugins array. If you don't import gatsby-source-filesystem and gatsby-transformer-remark plugins, no MarkdownRemark node will be created and the GraphQL query will fail as above.

Is gatsby-source-filesystem plugin properly configured? Does it point to a folder with .md files?
If you want add analytics.js directly in your website, you should place it in gatsby-browser.js. If you place it in any other files as header.js, it will not be evaluated in browser's console but in Gatsby's build script. Another way to run JS code directly in the browser at runtime is using the React's lifecycle events or synthetic events (but imho you should not use them for this case for a matter of design).

Free to reopen the issue if you have new informations about it.


Added delegates for modifying the JUnit testcase classname and name

Just checking in on this PR. Any chance of getting this in?

Hmm, I'm not sure what comments you are referring to. Where were they made?

I tried to use the GitHub pull request review feature, which maybe I didn't utilize correctly... it looks like it might have just posted the comments now, because I never pressed a "submit" button or something in the past. In case it didn't show up for you, I've attached a picture of the comments here too.


[bug]Latest kha throws g2.begin "throw "End before you begin"

As title says.
Happens in Zui.hx line 190:
	function bakeElements() {
		if (checkSelectImage != null) {
			checkSelectImage.unload();
		}
		checkSelectImage = kha.Image.createRenderTarget(Std.int(CHECK_SELECT_SIZE()), Std.int(CHECK_SELECT_SIZE()), null, NoDepthAndStencil, 1, ops.khaWindowId);
		var g = checkSelectImage.g2;
		g.begin(true, 0x00000000); //<--------here
....
	}

I pushed some fixes, maybe that helps. If not, do you get any other errors before it falls into the "End before you begin" loop?

I guess it happens because I assumed that zui doesn't actually need a g2.begin call. But I realise that in the readme you close any g2 call before calling zui.
My bad.


Pass all commandline arguments through

Because the second invocation of the shim doesn't have the containerd pipe passed to it, a shim that wants to communicate over the pipe needs to parse the arguments its own.  This makes it so the library pass all the arguments, which has already parsed the arguments allowing shims to use the containerd address.
This came up in runwasi: https://github.com/containerd/runwasi/pull/147#pullrequestreview-1495745320

@jsturtevant could you pls resolve conflicts?

@mxpv updated, sorry for the delay was away from the computer for awhile!


Investigate the need for explicit import of boot's RabbitAutoConfiguration in RabbitServiceAutoConfiguration

Basically because we have an explicit import of  RabbitAutoConfiguration in RabbitServiceAutoConfiguration
        /**
	 * Configuration to be used when the cloud profile is not set. Defer to Spring Boot
	 * auto-configuration.
	 */
	@Configuration
	@Profile("!cloud")
	@Import(RabbitAutoConfiguration.class)
	protected static class NoCloudProfile {

	}

. . . explicit exclusion such as @SpringBootApplication(exclude = RabbitAutoConfiguration.class) becomes meaningless.
@garyrussell for any relevant input you may have on this would be nice

Interesting; I have no idea why that's there; seems unnecessary to me.

Is this a duplicate of #187?

Duplicates #187


Tidy dual VPN protocol install

remove refs to /etc/pivpn/setupVars in selfcheck and debug scripts
tidy indenting
on install, check if symlink already exists before making one to avoid error
uninstall indicates which vpns are available for uninstall
selfcheck checks both protocols if both present
install - additional text in reconfigure saying 2nd protocol can be added
change to use pivpn ovpn insteed of pivpn opv when dual protocols exist
change to README.md, since dual protocols not a major feature

Why do you run the self check for both protocols at once?

Because if both are installed, why not - its possible that an error in one might have an effect on another; also part of the diagnostics should be to see what is currently installed.

I find it to be confusing and not consistent to have both in the same place.

OK I can change that.  However, if you install both openvpn and wireguard listening on the same port; and if you set up different DNS providers for each of them they might interfere.  Should I just put out a statement that the other one is also installed - I would prefer to do that.

However, if you install both openvpn and wireguard listening on the same port;

Well, this should be checked at install time against any port a user might be using, not just when using two VPNs, but maybe this is a different pull request.

and if you set up different DNS providers for each of them they might interfere.

Mind explaining how? They can be different or be the same, what's the issue? It's just an outgoing connection to a server.

Should I just put out a statement that the other one is also installed - I would prefer to do that.

The fact that pivpn something runs the help telling the user to use protocol specific syntax should be enough.

I will make a change to do only the single protocol from the pivpn xxx command.


CSV import: multiple budgets

The CSV import currently doesn't allow for multiple budget lines per activity. However, it is recommended to split a project budget per year or per quarter, so it should be possible to upload multiple budget lines per activity.

Hi - I'm working with organisations that need this feature too.

@rolfkleef Budgets can now be added multiple times per activity. Thanks for the feedback.


improve durability of [nexus] service test

Same thing here as #3910
the search snapshot version valid snapshot artifact service test for nexus is a regular timeout failure. this switches the target package (and nexus instance) used for the test. Admittedly anecdotal, but in my local env the original target timedout after 15 seconds on most runs, this new target is running in < 500 ms
https://circleci.com/build-insights/gh/badges/daily-tests/master

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @calebcartwright!

  Generated by :no_entry_sign: dangerJS against b5e0c453cfa83604654dcfe5659e80de2a82fb19


Add webaudio shim and fail condition to mic test

I thought it would make sense to check if web audio is present in the specific test in order to use reportFatal to disable the test.

Thanks!


Option for "Unlimited" data plan

Currently there is no way to select that there is no data limit for plans that have no data limit. I could do the math and calculate how many gigabytes/month a plan is based on its speed, but that seems confusing for users. Is there no way to put unlimited? (If there is a requirement that you put in gigabytes/month, I suggest that an "unlimited" dropdown simply do the calculations for you.)

I see now that removing the data allotment now makes it unlimited, this is confusing, primarily because a number is prefilled and putting in "0" does not do the same as clearing the field. In some software putting in "0" means unlimited.


New feature: r-apt

Set up R to install R packages via apt (with bspm).
ToDo: I don't know if bspm will work on arm64.

ToDo: I don't know if bspm will work on arm64.

It seems to make sense to support only amd64, since the latest R version cannot be installed on arm64 at this time.


Restore presence on AMO

IPFS Companion got temporarily hidden from addons.mozilla.org due to manual review.
We are working on complying with requests and suggestions from AMO reviewers.
Updates will be published below.
cc  https://github.com/ipfs-shipyard/ipfs-companion/issues/306
Timeline (continued in comments)
2019-01-31
Manual review triggered due to build issue, we replied on the same day providing build steps:

[ Click to expand conversation ]

This version contains obfuscated, minified, concatenated or otherwise machine-generated code. Please provide the original sources, together with instructions on how to generate the final XPI. Source code must be provided as an archive and uploaded using the source code upload field, which can be done during submission or on the version page in the developer hub.
Please read through the instructions at https://developer.mozilla.org/en-US/Add-ons/Source_Code_Submission.

Are you able to provide more details? Which specific part (files, paths) of extension triggered this action?
We had similar request in past (for v2.4.2) and since then we always attach .zip with sources for every release and did the same for this one. The file included README with reproducible build instructions (copy below).
Reproducible build (requires Docker): npm run release-build
Regular build (no Docker): npm run dev-build
"release-build" is an alias for running build script inside of an immutable Docker image with specific version of Node, yarn and crypto toolkit, which guarantees the same node version and minified output on all platforms.
Related docs:
https://github.com/ipfs-shipyard/ipfs-companion#development
https://github.com/ipfs-shipyard/ipfs-companion#reproducible-build-in-docker
https://github.com/ipfs/ipfs-companion/issues/306 (reproducible build issue – please comment if we do something wrong or could do better in this area)

2019-01-01
Reply from Reviewer suggesting the issue is resolved

Thank you for the prompt response. It seems I was looking at an older version. The source code for this one was provided correctly.

2019-01-01
Reply from Reviewer suggesting the webui is still missing
Replied on the same day:

[ Click to expand conversation ]

I've built your add-on on Ubuntu 18.04 using npm i, npm run release-build, but webui folder is missing from the build.

Interesting! Current build pipeline downloads prebuilt  webui (sources at https://github.com/ipfs-shipyard/ipfs-webui) from IPFS instead of NPM. I assume your VM did not have IPFS installed, but it should fallback to  fetching dependency from public HTTP gateway. Did your VM block HTTP GET from: https://ipfs.io/api/v0/get?arg=QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ&archive=true&compress=true ? Are you able to retry?

2019-02-08
Reply from Reviewer being unable to reproduce:

I tried it again but it got stuck at:
$ ./ci/update-manifest.sh ; npx<EMAIL_ADDRESS>build ; chmod -R ugo+rwX build/ add-on/
fatal: Not a git repository (or any of the parent directories): .git

Mentioned error should not break the build and in the following two days we were trying to reproduce issues with the build locally without any success.
2019-02-10
Extension hidden due to reproducibility issues:

This version didn't pass review because of the following problems:
1) We couldn't reproduce the build.
Please submit a new version and provide all requested information at your convenience.

Due to the lack of better ideas I tracked down the issue with missing ".git" in .zip file and added a fix to make 'npm run release-build' work again without that error message.
Uploaded new version (v2.7.2) - ready for review again.
2019-02-11
Reviewer is still unable to reproduce and sends build log:

I tried it again on Ubuntu 18.04 and ran npm run release-build, but I'm getting some errors. I'm pasting here the build log:

[ Click to expand build log ]
npm run release-build

> ipfs-companion@ release-build /home/ralli/Downloads/ipfs-companion-2.7.2-src/ipfs-companion-2.7.2

> docker build -t ipfs-companion . && docker run -it -e RELEASE_CHANNEL=stable -v $(pwd)/build:/usr/src/app/build ipfs-companion yarn ci:build

Sending build context to Docker daemon  2.593MB

Step 1/9 : FROM node:10.11.0

 ---> 8672b25e842c

Step 2/9 : RUN mkdir -p /usr/src/app

 ---> Using cache

 ---> 4786f66115c5

Step 3/9 : WORKDIR /usr/src/app

 ---> Using cache

 ---> cd7705735ebc

Step 4/9 : ENV PATH="/usr/src/app/node_modules/.bin:${PATH}"

 ---> Using cache

 ---> bec1a88c69a7

Step 5/9 : RUN curl -s https://ipfs.io/ipfs/QmbukYcmtyU6ZEKt6fepnvrTNa9F6VqsUPMUgNxQjEmphH > /usr/local/bin/jq && chmod +x /usr/local/bin/jq

 ---> Using cache

 ---> 008ebd78a635

Step 6/9 : COPY package.json /usr/src/app/package.json

 ---> b15bbf53362c

Step 7/9 : COPY yarn.lock /usr/src/app/yarn.lock

 ---> 6cc27c19c99a

Step 8/9 : RUN npm run ci:install

 ---> Running in ed0d901155c0

> ipfs-companion@ ci:install /usr/src/app

> npx<EMAIL_ADDRESS>install --frozen-lockfile || npx<EMAIL_ADDRESS>install --frozen-lockfile

npx: installed 1 in 4.532s

yarn install v1.12.3

[1/4] Resolving packages...

warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
warning Resolution field<EMAIL_ADDRESS>is incompatible with requested version<EMAIL_ADDRESS>
[2/4] Fetching packages...

Removing intermediate container ed0d901155c0

 ---> dea203892a52

Step 9/9 : COPY . /usr/src/app

 ---> 4ad5bec12418

Successfully built 4ad5bec12418

Successfully tagged ipfs-companion:latest

yarn run v1.9.4

$ ./ci/update-manifest.sh ; npx<EMAIL_ADDRESS>build ; chmod -R ugo+rwX build/ add-on/

Skipping manifest modification (RELEASE_CHANNEL=stable)

npx: installed 1 in 2.014s

$ run-s clean build:*

/bin/sh: 1: run-s: not found

error Command failed with exit code 127.

Please test your build steps on a virtual machine with a clean setup and update the instructions for us.

Turns out the build process was trying to fetch packages from registry.js.ipfs.io and failed silently because server was down.   It worked on our end because we had cached docker image built when server was online.
I reported issue to our internal infra team but to save time switched to registry.yarnpkg.com (https://github.com/ipfs-shipyard/ipfs-companion/commit/bf9a69ed9dbc36d56e165c2dfaa83e833cd462ec) and made a new release (v2.7.3) and asked for a fresh look.

(continued in comments)

2019-02-12
Review of (v2.7.3) starts.
The build issue seems to be resolved on Reviewer's machine (:tada:), but Web UI itself becomes an issue:

From what I'm see the webui code is downloaded from https://ipfs.io/api and appended to the build. Please provide the original source code for it and attach it to this version on AMO.

Our reply:

Web UI is just a dependency, like NPM ones.
The only difference is that instead of fetching it from NPM servers it is fetched from IPFS.
Sources of used webui can be found at: https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.3.3
Let us know if that is enough to move forward, or what are required steps to restore extension's availability in AMO.
There are multiple dependencies fetched from NPM and we are not being asked to attach sources of them.  How can we improve things for dependencies fetched from IPFS to be equally "valid"?

(waiting)

2019-02-13
Reached out on #addon-reviewers @ irc.mozilla.org to clarify any issues around what our extension does. Around the same time got review feedback regarding webui:

To answer your question: if you have private packages you can upload them along with the rest of the source code, so we can review them.

I've built webui branch https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.3.3 using node 8.12.0 and npm 6.4.1, but the resulting code is different from the webui folder in the xpi. Please see the attached build https://drive.google.com/open?id=1Ba9kvMhSUZM0KMQMhP7ebYmGX8CCAUAh
Please test your build steps on a virtual machine with a clean setup and update the instructions for us.

I compared

build_webui provided by reviewer
and one from QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ (ipfs-webui/releases/tag/v2.3.3)

Indeed, minified content differs:
$ diff --brief -r build_webui webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ
Files build_webui/asset-manifest.json and webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/asset-manifest.json differ
Files build_webui/index.html and webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/index.html differ
Only in build_webui: manifest.json
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ: _previous-versions
Files build_webui/service-worker.js and webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/service-worker.js differ
Only in build_webui/static/css: main.ace3c083.css.map
Only in build_webui/static/js: 0.45d2ea26.chunk.js
Only in build_webui/static/js: 0.45d2ea26.chunk.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 0.f150ccdd.chunk.js
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 1.61c650c3.chunk.js
Only in build_webui/static/js: 1.6bbfba19.chunk.js
Only in build_webui/static/js: 1.6bbfba19.chunk.js.map
Only in build_webui/static/js: 2.bc355859.chunk.js
Only in build_webui/static/js: 2.bc355859.chunk.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 2.d164b02b.chunk.js
Only in build_webui/static/js: 3.52556504.chunk.js
Only in build_webui/static/js: 3.52556504.chunk.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 3.c371693f.chunk.js
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 4.2f4edf06.chunk.js
Only in build_webui/static/js: 4.cdb20f5c.chunk.js
Only in build_webui/static/js: 4.cdb20f5c.chunk.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 5.5fd1145b.chunk.js
Only in build_webui/static/js: 5.e171992c.chunk.js
Only in build_webui/static/js: 5.e171992c.chunk.js.map
Only in build_webui/static/js: 6.6b80439c.chunk.js
Only in build_webui/static/js: 6.6b80439c.chunk.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 6.e9a35513.chunk.js
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: 7.9c60492f.chunk.js
Only in build_webui/static/js: 7.ee081174.chunk.js
Only in build_webui/static/js: 7.ee081174.chunk.js.map
Only in build_webui/static/js: main.2b881fc1.js
Only in build_webui/static/js: main.2b881fc1.js.map
Only in webui_QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ/static/js: main.bf82967b.js

(will create issue in webui repo to resolve it upstream)

2019-02-13
Spent a lot of time debugging differences between Firefox and Chrome, namely  handling CORS in webRequest API.  In the end, managed to get it work in both browsers and removed webui in #680.
Companion is now able to load Web UI from IPFS (it's a feature!)  and ensure it can access API set in Companion's Preferences screen without any additional configuration of go-ipfs  (seamless user experience) :ok_hand:
2019-02-14
Submitted v2.7.4 to http://addons.mozilla.org, waiting for review.

2019-02-15
We are back to business!

IPFS Companion got restored at: https://addons.mozilla.org/en-US/firefox/addon/ipfs-companion/

AMO asked us to provide Privacy Policy. I published a draft here and will track it in  #681.


Remove explicit dco check

Description
This is already incorporated at organization level
for all repositories.
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

This depends on #125


Added wps-unique functionality.

Signed-off-by: sivakom<EMAIL_ADDRESS>

Committed as 7d6ffbbd949a070ba7111c1f6ddbc052a6166592


Problem replacing ctrl-r with hh with bash

Hi,
I'm trying to replace the built-in ctrl-r search with hh in bash on OSX but I get the following error using the bash vi keymap example.
This is the entry in my bash_profile:
if [[ $- =~ .*i.* ]]; then bind '"\C-r": "\C-ahh -- \C-j"' ; fi

$ ^Ahh --
-bash: hh: command not found

hh is on the path and I can get it running by removing the \C-a but that leaves the hh command in the history.
I'm using iterm2 with the following
SHELL = /bin/bash
TERM = xterm-256color
keymap = vi-insert
editing-mode = vi

Any suggestions as to what I've borked here?
Thanks.

I've tried installing on a fresh linux instance and the default bash config works without any issue.
Will close this as the problem appears to be on my side.
Cool tool, thanks !!!

I have the same problem on OSX, did you find what it was?

Found it need to be bind '"\C-r": "hh -- \C-j"'

@gertcuykens Thanks!


call demo/pool.cpp compiled executable program in valgrind memory leak problem

My Run platform： Linux redhat6.4 64bit、g++ 4.4.6、valgrind  3.2.1
valgrind log info:
log.txt

Hi,
Duplicate issue with #26.
OCI is known for not releasing all allocated memory.
When looking at your valgrind ouput, it is memory allocated by OCI (that call OCILIB memory allocation callbacks). All memory or OCI handle allocated by OCILIB is released.
Thus, there is nothing I can do about.
You can google "Oracle OCI leak valgrind" and you will see that is an Orace Client issue.
Regards,
Vincent


Change SQL parameters style to qmark style to named style

Change SQL parameters style to qmark style to named style because it makes easy to understand logs.

This issue will be resolved with #1 Add where conditions other than equal.

Users can choose qmark or named style


[bug] multiInjectedProviderDiscovery option not working after switching from Wallet Connect to Reown

Link to minimal reproducible example
https://codesandbox.io/p/github/ErwanDecoster/Reown-multiInjectedProviderDiscovery-not-working-bug-reproduction/main
Summary
Title: multiInjectedProviderDiscovery option not working after switching from Wallet Connect to Reown

Description
After switching from Wallet Connect to Reown, the multiInjectedProviderDiscovery option in the WagmiAdapter is no longer taken into account.
Here’s the updated setup:
import { WagmiAdapter } from '@reown/appkit-adapter-wagmi';
import { createAppKit } from '@reown/appkit/react';

export const projectId = ""

const bellecour = {
  id: 0x86,
  name: 'iExec Sidechain',
  nativeCurrency: {
    decimals: 18,
    name: 'xRLC',
    symbol: 'xRLC',
  },
  rpcUrls: {
    public: { http: ['https://bellecour.iex.ec'] },
    default: { http: ['https://bellecour.iex.ec'] },
  },
  blockExplorers: {
    etherscan: {
      name: 'Blockscout',
      url: 'https://blockscout-bellecour.iex.ec',
    },
    default: { name: 'Blockscout', url: 'https://blockscout-bellecour.iex.ec' },
  },
};

export const wagmiAdapter = new WagmiAdapter({
  networks: [bellecour],
  multiInjectedProviderDiscovery: false,
  projectId,
});

createAppKit({
  adapters: [wagmiAdapter],
  networks: [bellecour],
  projectId,
  defaultNetwork: bellecour,
});

When using Wallet Connect, the multiInjectedProviderDiscovery option worked as expected. However, after transitioning to Reown, it seems to be ignored.

Expected Behavior

The multiInjectedProviderDiscovery option should work as it did previously with Wallet Connect.

Actual Behavior

The option is no longer taken into account after switching to Reown.

Environment

@reown/appkit: 1.5.0
@reown/appkit-adapter-wagmi: 1.5.0

Steps to Reproduce

Set up the WagmiAdapter as shown in the code above.
Transition from Wallet Connect to Reown.
Observe that the multiInjectedProviderDiscovery option no longer functions as expected.

Additional Context

The issue arose specifically after switching from Wallet Connect to Reown.
Downgrading to Wallet Connect resolves the issue.

Suggested Labels

Bug
Needs Investigation

Thank You
Thank you for your assistance! Please let me know if additional information is needed.
List of related npm package versions
@reown/appkit
@reown/appkit-adapter-wagmi

@ErwanDecoster mind checking if this is still an issue on 1.6.0?


Issue: Bug - (timestamp-last-hit.fast = 0) not matching disabled rules

Hi
Describe the bug
As you may recall from this discussion...
https://github.com/PaloAltoNetworks/pan-os-php/discussions/681
... you had fixed an issue with timestamp-last-hit not including never hit rules (Rule Usage shows Unused or, I assume, '-').
While doing some unused tagging, I noticed that, as best I can determine, (timestamp-last-hit.fast = 0) does not match disabled rules.  I say as best as I can determine as that I'm seeing is that only disabled rules didn't get the tag I was adding.
Expected behavior
Any rule that is Unused (per the filter (timestamp-last-hit.fast = 0)) should match.
Current behavior
All enabled rules with Unused for the Rule Usage match and the tag is added, but disabled rules do not match and don't have the tag added.
Possible solution
Maybe it's by design?  If so, then please either include disabled rules or include a switch/parameter that makes it happen.
Steps to reproduce
php -r "require_once 'C:/tools/pan/pan-os-php/utils/pan-os-php.php';" type=rule in=api://panorama.domain.com location=FW1 ruletype=security actions=tag-Add:Unused-Never 'filter=(timestamp-last-hit.fast = 0) and !(tag has Unused-Never)'
The same thing happens if I don't filter out rules that already have the tag.
Context
Tagging rules in preparation for future unused rule deletion.
Your Environment

Version used: 10.1.12
Environment name and version: PowerShell 5.1, latest PAN-OS-PHP (v2.1.22), PHP v8.3.4
Operating System and version (desktop or mobile): Windows 10

same information as on the other opened issue:
this feature is relaying on Palo Alto Networks PAN-OS XML API.
Based on your shared information, it looks like Palo Alto Networks does not response disabled rules for this timestamp-last-hist-fast XML API request pan-os-php is sending to Panorama.
for your use-case please use:
php -r "require_once 'C:/tools/pan/pan-os-php/utils/pan-os-php.php';" type=rule in=api://panorama.domain.com location=FW1 ruletype=security actions=tag-Add:Unused-Never 'filter=(rule is.unused.fast) and !(tag has Unused-Never)'
with this filter:
PAN-OS-PHP is using old implementation and using Panorama as a "Proxy" to reach out to each FW attached to this DeviceGroup an request separate information if a rule is unused from a Panorama perspective.

Oh, sorry - I misunderstood.  I thought you were saying that only unused.fast was going through Panorama as a proxy and not timestamp-last-hit.  I didn't realize they operated the same way in that regard.
Well, I have a workaround of sorts for never hit ("unused") - just enable the rules (we also tag them Disabled and To-Be-Deleted) and then check them in Panorama for the last hit.
I suppose going forward we shouldn't disable rules (maybe put an expired schedule on them) so that they retain the last hit (assuming there is a last hit and not marked "unused") on the firewalls so that PAN-OS-PHP will pick it up.
Is it possible in the api to query the last hit from Panorama and if so any plans to update PAN-OS-PHP to use that method?


There should be a history of my filled orders on the market page

https://bitsharestalk.org/index.php/topic,19417.msg249466.html#msg249466

This is available now, closing


[PkgEval] AmplNLWriter may have a testing issue on Julia 0.3 (2015-05-17)

PackageEvaluator.jl is a script that runs nightly. It attempts to load all Julia packages and run their tests (if available) on both the stable version of Julia (0.3) and the nightly build of the unstable version (0.4). The results of this script are used to generate a package listing enhanced with testing results.
On Julia 0.3

On 2015-05-17 the testing status was N/A - new package.
On 2015-05-17 the testing status changed to Package doesn't load.

Package doesn't load. means that PackageEvaluator did not find tests for your package. Additionally, trying to load your package with using failed.
This issue was filed because your testing status became worse. No additional issues will be filed if your package remains in this state, and no issue will be filed if it improves. If you'd like to opt-out of these status-change messages, reply to this message saying you'd like to and @IainNZ will add an exception. If you'd like to discuss PackageEvaluator.jl please file an issue at the repository. For example, your package may be untestable on the test machine due to a dependency - an exception can be added.
Test log:
>>> 'Pkg.add("AmplNLWriter")' log
INFO: Cloning cache of AmplNLWriter from git://github.com/JackDunnNZ/AmplNLWriter.jl.git
INFO: Cloning cache of MathProgBase from git://github.com/JuliaOpt/MathProgBase.jl.git
INFO: Installing AmplNLWriter v0.0.1
INFO: Installing Compat v0.4.4
INFO: Installing MathProgBase v0.3.11
INFO: Package database updated

>>> 'using AmplNLWriter' log
Julia Version 0.3.6
Commit 0c24dca (2015-02-17 22:12 UTC)
Platform Info:
  System: Linux (x86_64-unknown-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Nehalem)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3
/home/vagrant/testpkg/v0.3/AmplNLWriter

ERROR: AmplNLWriter not found
 in require at loading.jl:47
 in include at ./boot.jl:245
 in include_from_node1 at loading.jl:128
 in process_options at ./client.jl:285
 in _start at ./client.jl:354
while loading /vagrant/releaseAL/PKGEVAL_AmplNLWriter_using.jl, in expression starting on line 4

>>> test log
no tests to run
>>> end of log

Is this because the filename for the main src file has a lower-case l?

Looks like it. It wouldn't be caught on OS X because it's case insensitive.

Setting up Travis probably a good idea before JuliaOpt-ing it

Whoops should be fixed now

I'll write a julia-users post about this later, but I figured out how to use the Docker workers on Travis (sudo: false) to cache dependencies, which cut down my build times from 15 minutes to 2 minutes for CoinOptServices. You might want to borrow my yml: https://github.com/JuliaOpt/CoinOptServices.jl/blob/8d7e2495d948fd8623a6a6c3d6d17ac9069a9a2e/.travis.yml

Travis is up now


Inconsistency between data in table and what is seen in download

I downloaded all the protein families from E. coli  K12 MG1655.  On the protein family page it says that there are 4407 families (PLFams) found:

But when I download it, the excel file has 4549 protein families.  Why is there discrepancy?

There are two different  excel file downloads available from protein family toolbar.

Excel file: which lists protein families and their summary as shown in the family list table.
I downloaded the file and it contains exactly the same number of rows as displayed in the
table, 4407.

Family details excel file: which contains list of protein families and each of their member proteins,
hence, it has more rows than what is displayed in the summary table…i.e. case of MG1655, there are
4549 rows.

I do not see any descripancy here.
-Maulik

On Nov 28, 2015, at 9:04 PM, ARWattam<EMAIL_ADDRESS>wrote:
I downloaded all the protein families from E. coli K12 MG1655. On the protein family page it says that there are 4407 families (PLFams) found:
https://cloud.githubusercontent.com/assets/11475316/11455133/b5313e24-961b-11e5-9893-bba3473a4bed.png
But when I download it, the excel file has 4549 protein families. Why is there discrepancy?
—
Reply to this email directly or view it on GitHub https://github.com/PATRIC3/patric3_website/issues/551.


Add Zeioth/none-ls-autoload

Repo URL:
https://github.com/Zeioth/none-ls-autoload.nvim
Checklist:

[x] The plugin is specifically built for Neovim, or if it's a colorscheme, it supports treesitter syntax.
[x] The lines end with a .. This is to conform to awesome-list linting and requirements.
[x] The title of the pull request is Add/Update/Remove `username/repo`  (notice the backticks around `username/repo`) when adding a new plugin.
[x] The description doesn't mention that it's a Neovim plugin, it's obvious from the rest of the document. No mentions of the word plugin unless it's related to something else. No .. for Neovim.
[x] The description doesn't contain emojis.
[x] Neovim is spelled as Neovim (not nvim, NeoVim or neovim), Vim is spelled as Vim (capitalized), Lua is spelled as Lua (capitalized), Tree-sitter is spelled as Tree-sitter.
[x] Acronyms should be fully capitalized, for example LSP, TS, YAML, etc.

Thanks for the PR!