Windows: Unable to run myprog.exe: astilectron does not unzip

I've inherited an old project from a developer (that no longer works with us) and need to fix a bug, but I am unable to run the (unmodified) program from any of my builds.
Symptoms (seen on both Windows 10 and Windows Server 2019):

I use astilectron-bundler.exe to build myprog.exe
I double click on myprog.exe:  "nothing" happens

If I look in my user's ...\AppData\MyProg\vendor directory, I see astilectron-v0.48.0.zip and status.json (which is empty: {}).
If I run the last version of the program the original developer delivered, then in the ...\AppData\MyProg\vendor directory, I see

astilectron/
astilectron-v0.32.0.zip
electron-windows-386/
electron-windows-386-v4.0.1.zip
status.json

status.json has {"astilectron":{"version":"0.32.0"},"electron":{"windows-386":{"version":"4.0.1"}}}
It looks like something breaks trying to unzip the astilectron zip file, but I can't seem to find any error messages or system events that indicate why.
I tried pinning the astilectron version to 0.32.0 by setting version_astilectron in bundler.json, but that seems to be ignored and we get 0.48.0 instead.
Is there some way to turn on more logging or debugging output?  I added logging to my part of the app, but I only see the log entries up until the time that bootstrap.Run(...)  is called.

I see 2 ways to get more info:

Bundle your app with the show_windows_console set to true in your bundler.json
Run your binary in the terminal

Let me know

Hi,
Thanks for the quick reply, I appreciate it.
I added "show_windows_console": true, to bundler.json, rebuilt and ran from the terminal.   I got no output in the terminal, and the results were the same.
One new thing I noticed.  I've set version_astilectron to 0.32.0 in bundler.json but even though the file in the user's ...\AppData\MyProg\vendor directory is astilectrion-v0.48.0, if I look inside the zip file, I see  an astilectron-v0.32.0 folder inside the zip.  Not sure if the name mismatch is causing problems or not.

I added "show_windows_console": true, to bundler.json, rebuilt and ran from the terminal. I got no output in the terminal, and the results were the same.

Is the Logger set in your bootstrap.Options?

Not sure if the name mismatch is causing problems or not.

This is clearly a problem. I'd be you, I'd try removing ...\AppData\MyProg and try running the binary from scratch.

Good news: I think I have something running, but I also think there is a bug in passing version_astilectron from bundler.json into the rest of the astilectron code.
Details

Is the Logger set in your bootstrap.Options?

Sorry, I missed that option.  I set the logger, cleared my ...\AppData\* and re-ran.  Here is the output (the first line is a logger output from my main() func:
$ MyProg\ Setup\ v2.5.exe
2021/06/08 15:35:25 === registration-main.go: Starting...
2021/06/08 15:35:25 astikit: starting worker...
2021/06/08 15:35:25 Resources folder doesn't exist, restoring resources...
2021/06/08 15:35:25 Removing C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\resources
2021/06/08 15:35:25 Restoring resources in C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\resources
2021/06/08 15:35:25 Starting...
2021/06/08 15:35:25 Provisioning...
2021/06/08 15:35:25 Provisioning Astilectron...
2021/06/08 15:35:25 Removing directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 15:35:25 Disembedding vendor_astilectron_bundler\astilectron.zip into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip...
2021/06/08 15:35:25 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor
2021/06/08 15:35:25 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip
2021/06/08 15:35:25 Disembedding vendor_astilectron_bundler\astilectron.zip
2021/06/08 15:35:25 Copying disembedded data to C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip
2021/06/08 15:35:25 Creating directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 15:35:25 Unzipping C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip\astilectron-0.41.0 into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 15:35:25 Removing C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron...
2021/06/08 15:35:25 Closing...
2021/06/08 15:35:25 astikit: stopping worker...

After running this, I still see only two items in the vendor directory:

astilectron-v0.41.0.zip
status.json

So it seems the unzip is not working, but no error logged, and then bundler simply exits at that point (before disembedding and unzipping electron).  I looked inside the zip file and saw the name mismatch (the contents of the zip file were astilectron-v0.32.0, not v0.41.0).  So I tried these experiments:

removed version_astilectrion from bundler.json: This time there was still the name mismatch, but the contents of the zip file were v0.48.0 while the name of the zip file was v0.41.0
I put "version_astilectron": "0.41.0", in the bundler.json file, and this time the whole thing ran fine (log output below).  So this case the zip file name and the zip contents aligned.

$ MyProg\ User\ Setup\ v2.5.exe
2021/06/08 16:01:06 === registration-main.go: Starting...
2021/06/08 16:01:06 astikit: starting worker...
2021/06/08 16:01:06 Resources folder doesn't exist, restoring resources...
2021/06/08 16:01:06 Removing C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\resources
2021/06/08 16:01:06 Restoring resources in C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\resources
2021/06/08 16:01:07 Starting...
2021/06/08 16:01:07 Provisioning...
2021/06/08 16:01:07 Provisioning Astilectron...
2021/06/08 16:01:07 Removing directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 16:01:07 Disembedding vendor_astilectron_bundler\astilectron.zip into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip...
2021/06/08 16:01:07 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor
2021/06/08 16:01:07 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip
2021/06/08 16:01:07 Disembedding vendor_astilectron_bundler\astilectron.zip
2021/06/08 16:01:07 Copying disembedded data to C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip
2021/06/08 16:01:07 Creating directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 16:01:07 Unzipping C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron-v0.41.0.zip\astilectron-0.41.0 into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron
2021/06/08 16:01:07 Provisioning Electron...
2021/06/08 16:01:07 Removing directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386
2021/06/08 16:01:07 Disembedding vendor_astilectron_bundler\electron.zip into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386-v7.1.10.zip...
2021/06/08 16:01:07 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor
2021/06/08 16:01:07 Creating C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386-v7.1.10.zip
2021/06/08 16:01:07 Disembedding vendor_astilectron_bundler\electron.zip
2021/06/08 16:01:07 Copying disembedded data to C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386-v7.1.10.zip
2021/06/08 16:01:07 Creating directory C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386
2021/06/08 16:01:07 Unzipping C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386-v7.1.10.zip into C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386
2021/06/08 16:01:10 System doesn't require finshing provisioning electron, moving on...
2021/06/08 16:01:10 Listening...
2021/06/08 16:01:10 Executing...
2021/06/08 16:01:10 Starting cmd C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\electron-windows-386\electron.exe C:\Users\Administrator\AppData\Roaming\MyProg Setup v2.5\vendor\astilectron\main.js <IP_ADDRESS>:65238 false
2021/06/08 16:01:13 Stdout says:
2021/06/08 16:01:13 Astilectron says: {"name":"app.event.ready","targetID":"app","displays":{"all":[{"id":2528732444,"bounds":{"x":0,"y":0,"width":1440,"height":900},"workArea":{"x":0,"y":0,"width":1440,"height":860},"size":{"width":1440,"height":900},"workAreaSize":{"width":1440,"height":860},"scaleFactor":1,"rotation":0,"touchSupport":"unknown"}],"primary":{"id":2528732444,"bounds":{"x":0,"y":0,"width":1440,"height":900},"workArea":{"x":0,"y":0,"width":1440,"height":860},"size":{"width":1440,"height":900},"workAreaSize":{"width":1440,"height":860},"scaleFactor":1,"rotation":0,"touchSupport":"unknown"}},"supported":{"notification":true}}
2021/06/08 16:01:13 Sending to Astilectron: {"name":"window.cmd.create","targetID":"1","sessionId":"2","url":"c:\\Users\\Administrator\\AppData\\Roaming\\MyProg Setup v2.5\\resources\\app\\index.html","windowOptions":{"center":true,"height":600,"icon":"C:\\Users\\Administrator\\AppData\\Roaming\\MyProg Setup v2.5\\resources\\icon.png","title":"MyProg Setup v2.5","width":600}}
2021/06/08 16:01:14 Astilectron says: {"name":"window.event.focus","targetID":"1"}
2021/06/08 16:01:16 Astilectron says: {"name":"window.event.did.finish.load","targetID":"1"}
2021/06/08 16:01:16 Sending to Astilectron: {"name":"menu.cmd.create","targetID":"3","menu":{"id":"3","items":[{"id":"4","options":{},"rootId":"app","submenu":{"id":"5","items":[{"id":"6","options":{"accelerator":"Control+d","label":"Debug","type":"checkbox"},"rootId":"app"}],"rootId":"app"}}],"rootId":"app"}}
2021/06/08 16:01:16 Astilectron says: {"name":"menu.event.created","targetID":"3"}
2021/06/08 16:01:16 astikit: worker is now waiting...
2021/06/08 16:01:16 Astilectron says: {"name":"window.event.message","targetID":"1","message":{"name":"event.setToken","payload":{}},"callbackId":"1"}
2021/06/08 16:01:16 Sending to Astilectron: {"name":"window.cmd.message.callback","targetID":"1","callbackId":"1","message":{"name":"event.setToken.callback","payload":"empty"}}
2021/06/08 16:05:27 Astilectron says: {"name":"window.event.blur","targetID":"1"}

(Note: My program was still running when I captured this log file, so we don't see it exit).
Thanks for your help, I really appreciate it.  If you need any help on tracking down the version mismatch bug, let me know.

One more update.  I checked my ...\AppData directory, and even though I had "version_electron": "4.0.1", in the bundler.json, the actual version unpacked into the vendor dir was Electron 7.1.10.

Final comment: Looking back to the root cause:  I think that with all defaults (i.e., no version_astilectron and no version_electron in the bundler.json), the zip file ended up with mismatched contents (as shown in experiment 2 above: astilectron-v0.41.0.zip but with contents of astilectron-v0.48.0 inside the zipfile).  So when I did my first build, and "nothing happened", I think it was due to this mismatch.  I only started playing with the versions in bundler.json while trying to fix the original problem.

First off, thanks for taking the time to investigate all this. What you're experiencing is really weird. Can you tell me which version you're using for astilectron and astilectron-bundler?

Also, if you don't see any error in logs, my guess is that it's because your program doesn't process the error of bootstrap.Run and doesn't log it. It's not logged automatically.


Command: focus_neighbouring_group

Reopening old Issue in relevant Repo
https://github.com/limetext/lime/issues/55

Ugh, old commit references limetext/lime/#38 not this one.


postcss-pxtorem didn't work as envisaged

Describe the bug
config like this
css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          rootValue({ file }) {
            return file.indexOf("vant") !== -1 ? 37.5 : 75;
          },
          propList: ["*"],
        }),
      ],
    },
},
server: {}

main.js
import { createApp } from 'vue'
import vant from 'vant'
import 'vant/lib/index.css'
import 'amfe-flexible'
import App from './App.vue'

createApp(App).use(vant).mount('#app')

Reproduction
https://stackblitz.com/edit/vitejs-vite-jbu2zx?file=vite.config.js,package.json,index.html,public%2Fvite.svg,src%2FApp.vue&terminal=dev
Steps to reproduce
No response
System Info
System:
    OS: Windows 11 10.0.22631
    CPU: (20) x64 13th Gen Intel(R) Core(TM) i9-13900H
    Memory: 16.48 GB / 31.73 GB
  Binaries:
    Node: 18.19.0 - D:\Program Files\nodejs\node.EXE
    Yarn: 1.22.21 - D:\Program Files\nodejs\yarn.CMD
    npm: 10.2.5 - D:\Program Files\nodejs\npm.CMD
    pnpm: 8.14.0 - D:\Program Files\nodejs\pnpm.CMD
  Browsers:
    Edge: Chromium (121.0.2277.128)
    Internet Explorer: 11.0.22621.1

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Can you explain what is not working? It seems to transform for me:
.logo[data-v-7a7a37b1] {
  width: 2.66667rem;
  height: 2.66667rem;
}

Can you explain what is not working? It seems to transform for me:
.logo[data-v-7a7a37b1] {
  width: 2.66667rem;
  height: 2.66667rem;
}

vant's style is wrong
--van-font-size-md: 0.18667rem;

It should be
--van-font-size-md: 0.37333rem;

This is a bug in postcss-pxtorem (https://github.com/cuth/postcss-pxtorem/issues/103).
I got the following log by adding some console.log in the plugin.
once /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/node_modules/vant/lib/index.css
once /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/src/App.vue?vue&type=style&index=0&scoped=7a7a37b1&lang.css
decl /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/src/App.vue?vue&type=style&index=0&scoped=7a7a37b1&lang.css
decl /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/src/App.vue?vue&type=style&index=0&scoped=7a7a37b1&lang.css
decl /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/node_modules/vant/lib/index.css
decl /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/node_modules/vant/lib/index.css
decl /mnt/c/Users/green/Downloads/vitejs-vite-jbu2zx/node_modules/vant/lib/index.css


All previously configured channels, stream providers, and settings disappeared after updating to the latest docker image

All my settings that I had configured are gone along with the stream providers etc... this appears to have happened right after updating to the latest docker image (as of this issue's creation) from January 29th
Previously I had manually updated with the web ui but I think maybe the latest changes with the docker image preventing updates within the web ui might have something to do with it.
I still have backups of the configurations in the backups directory, so is there a way to fix this?
Solved by mounting data/ and plugins_ext/ instead of the deprecated mounting of app/ as mentioned by @Generator in https://github.com/cabernetwork/cabernet/issues/134#issuecomment-1918058612

Can you provide some settings that you changed previously?
Did you check the new instructions for docker? https://github.com/cabernetwork/cabernet?tab=readme-ov-file#4-docker
You no longer add app/ to volume, instead only data and plugins_ext

Previously I had manually updated with the web ui but I think maybe the latest changes with the docker image preventing updates within the web ui might have something to do with it.

That causes issues with docker and shouldn't be done, that's why is blocked now.

I am going to try switching the mounted directories to just data and plugins_ext and see if that helps. I also did read over the instructions but it's a bit confusing as it doesn't really indicate what is new, so that's why I asked here. I will report back with the result.

copy your previous files from data/ to new -v data path of simply use the same data directory as volume and should work with your previous settings, do the same do plugins_ext

a bit confusing as it doesn't really indicate what is new

Check the PR #124
PS: Also there's a new pull request with more options for docker, where you can set some settings for the container for easier as faster deployment, not merged yet, maybe in the future.

Mounting data/ and plugins_ext/ instead of app/ seems to do the trick and it is working once again.
Is there anything I should be doing regarding app/secret/ because I never had that file to begin with and don't know how to get it if it is needed.

Is there anything I should be doing regarding app/secret/ because I never had that file to begin with and don't know how to get it if it is needed.

Only if you enable encryption

Is it necessary for future updates to work, and is there a downside to not enabling it? I usually just take a tar backup of the entire cabernet directory and upload somewhere.
Additionally the web UI itself is not currently password protected so until that happens I really don't see the point to enable encryption. Web UI access being password protected would honestly be a welcomed addition to the software (it can be achieved via nginx tunneling I believe externally but it would be nice to have it natively in cabernet).

Is there anything I should be doing regarding app/secret/ because I never had that file to begin with and don't know how to get it if it is needed.

Only if you enable encryption

Is there anything I should be doing regarding app/secret/ because I never had that file to begin with and don't know how to get it if it is needed.

Only if you enable encryption

Is it necessary for future updates to work, and is there a downside to not enabling it? I usually just take a tar backup of the entire cabernet directory and upload somewhere.
Additionally the web UI itself is not currently password protected so until that happens I really don't see the point to enable encryption. Web UI access being password protected would honestly be a welcomed addition to the software (it can be achieved via nginx tunneling I believe externally but it would be nice to have it natively in cabernet).
Also thanks for the help in solving my problem, I closed the issue since it has been resolved even though we are still discussing other stuff (I think it will let us keep talking while it's closed).

Only if you enable encryption

@Generator
Is encryption necessary for future updates to work, and is there a downside to not enabling it? I usually just take a tar backup of the entire cabernet directory and upload somewhere.
Additionally the web UI itself is not currently password protected so until that happens I really don't see the point to enable encryption. Web UI access being password protected would honestly be a welcomed addition to the software (it can be achieved via nginx tunneling I believe externally but it would be nice to have it natively in cabernet).
Also thanks for the help in solving my problem, I closed the issue since it has been resolved even though we are still discussing other stuff (I think it will let us keep talking while it's closed).


Garbage output?  ������

Operating System and Hardware: Rasberry Pi 3
NodeJS Version: v0.10.29
Serialport version: 3.1.1
Python Version (if you're having trouble building serialport): n/a
(Run node -v && npm -v && python --version to get the version numbers.)
Expected behavior
Hopefully I'm missing something very simple here.  I am using a USB->RS485 cable.  (If the cable matters, this is what I'm using: EZSync FTDi.)
When I capture the serial port from the command line it works correctly:

pi@raspberrypi:~/ $ od -x < /dev/ttyUSB0
0000000 b200 0000 0000 0000 ff00 ffff ffff ffff
0000020 00ff a5ff 0f0a 0210 161d 000f 0040 0000
0000040 0000 0300 4000 5004 2050 3c00 0039 0400
0000060 0000 597a 0d00 b203 00ff a5ff 6000 0410
0000100 ff01 1902 00ff a5ff 1000 0460 ff01 1902
0000120 00ff a5ff 6000 0610 0a01 2601 00ff a5ff
0000140 1000 0660 0a01 2601 00ff a5ff 6000 0110
0000160 0204 04c4 02e2 ffc6 ff00 00a5 6010 0201
0000200 e204 fe01 00ff a5ff 6100 0410 ff01 1a02
0000220 00ff a5ff 1000 0461 ff01 1a02 00ff a5ff
0000240 6100 0610 0401 2101 00ff a5ff 1000 0661

Actual behavior
With a simple program:
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyUSB0", {
    baudrate:9600,
    databits: 8,
    parity: 'none',
    stopBits: 1,
    flowControl: false,
    parser: serialport.parsers.raw,
});

sp.on('open', function() {
    console.log('open');
    sp.on('data', function(data) {
        console.log('data received: ' + data);
    });
});

I get the output

pi@raspberrypi:~/ $ node test.js
open
data received: �
data received: �
data received: �
data received: �
data received: ��
data received: �
data received: ��
data received:
data received: �
data received: �
data received:
data received:
data received:
data received:
data received:
data received: @
data received:
data received:
data received:
data received:
Etc etc.

If I change to the readline('\n') parser it's not any better (much weirder in fact):
pi@raspberrypi:~/ $ node test3.js

open
data received: �����������
�����������ed: "@@PP <9zY
�����������ed: "@@PP <9zY
�����������ed: "@@PP <9zY
�����������ed: "@@PP <9zY
���������������@@PP <9zY ���������������@@PP <9zY
�����������ed: "@@PP <9zY
����a����a����a!���a!����������

Steps and/or code to reproduce the issue
Nothing earth shattering here.

node test.js

I have disabled shell access on the port, and the port is configured as:

pi@raspberrypi:~/ $ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

Any help is appreciated!

Thank you!  Just to add to your comment (for others beginners in my position), the data.toJSON() actually represents an object so it displayed

data received: [object Object]

I added
JSON.stringify(data.toJSON()));
and then saw data like

data received: {"type":"Buffer","data":[255,255,255,0,255,165,10,15,16,2,29,8,58,0]}
(Note the output is in hex->decimal implicit conversion.)

To see the raw HEX output, I realized I could just put in
data.toString('hex'))
and see

data received: 00ffa5

thanks again!

Ah!  Yes, I clearly missed that the first time.  Very nice.  TYVM.  Is there a way to output hex in the data.toJSON()?  The .toString method concatenates the buffer and it would be easier to work with the JSON object than convert back and forth.


Release 4.2 reorg

My thoughts with the top level folders is to embrace GitBook's folder structure approach. When creating subtitles, pages, etc in GitBook that's how it handles them. I like sticking with that where possible because GitBook will automatically update all the files whenever paths have to change. The only reason I pulled the other ones out is to not break existing links. I do see your point in being consistent though. But I'd vote for categorized folders per GitBook's organization method for consistency, then add in a ton of redirects to go from 4.1 unorganized to 4.2 organized. Thoughts here?
Totally agreed on the adding info part. My goal so far has been to get what we have organized. Then next week we can edit existing content and add new pages, etc. To me, that's easier and won't come with breaking changes like moving things around.
For the Custom Functions pages, I wasn't sure if they should stay or go. In this repo I deleted them, because I didn't have that context. Would they fall under the Fastify routes pages? They're good content, I just wasn't sure if they were still current, so if we see use for them, we should certainly keep them.

For the Custom Functions pages, I had set up redirects (they are still there) for the pages I thought could go to the new components pages. Moving the remaining content into the fastify routes page sounds good to me, I think. And then we just need to add redirects for those remaining CF pages (to the fastify routes page, presumably).

Awesome, thanks for updating that. I think we're in good shape then. As long as SUMMARY.md is correct, they will still render in GitBook, so we're good there. It makes sense to me that people are working out of their IDEs, so in that case I think everything is fine.
I'm going to continue updating things today, but those are more minor changes. I'll work in the release_4.2 branch for those, since it'll be mostly spelling fixes, small rewording, etc. If I find I need larger changes I'll make a new branch. Thanks again!


Check outgoing links: whether they work (no 404), whether the destination uses SSL, whether no bad reputation sites are linked

Can be fixed with httpx.
github.com/projectdiscovery/httpx

This solves only a part of the task - downloading the content. How would you e.g. solve the reputation problem?

cant we use something like this ?

I think a good first step would be to collect a couple of sites that provide reputation information (and check what they consider bad websites) and only then compare and choose the best one


Test against the current hhvm version

You are currently testing on an old EOL version of HHVM 3.6.6 (a limitation of precise on Travis)
This PR provides the current HHVM version (3.15.3 as of this PR) and will track with each release (i.e. will be 3.16 when 3.16 is released).
If testing against HHVM LST versions is desired follow this guide. https://docs.travis-ci.com/user/languages/php#HHVM-versions
Should be able to change to container based Trusty after Q1-17 https://blog.travis-ci.com/2016-11-08-trusty-container-public-beta/
Additionally adds php 7.1 and switches most tests to the faster Travis-CI Container Infrastructure

:+1:

Thanks!

You are welcome @shadowhand


Imager creating empty images sometimes

Don't think this is a problem anymore. It should be allowed to create empty images, if the parameters ask for this. Feel free to reopen.


Add beta-5 entry under channels in Fuel book

Add a new page under Channels chapter to cover beta-5 testnet.

Thanks for the issue @Samped!


“Using Dumpling” Guide

While using the Using Dumpling guide, I came across a problem where the web app would consistently crash unless I launched it with the SD card inserted. This was in contrast with the guide specifically saying to have the SD card inserted. When I launched it with the SD card removed, it launched correctly and I was able to then insert my SD card, refresh the detected drives, and dump my account data.
Also, I was told that the homebrew app version of Dumpling would have also fixed this problem. Perhaps both of these solutions would be worth noting in the guide.

This sounds like an issue with your SD card or the dumpling app, rather than the guide. On my console it works perfectly fine with an SD card inserted. If the issue still persists with a freshly FAT32 formatted SD card, I'd recommend reporting it here.


[suggestion] Make key pair generation infallible

          I don't think this operation should be fallible. Let's open a ticket to handle it

Originally posted by @mversic in https://github.com/hyperledger/iroha/pull/4239#discussion_r1486019856

Closed by #4283.


-bash: ./code-server: Permission denied

I don't have the root permission. when I run : ./code-server, it comes the error message blow。
-bash: ./code-server: Permission denied
So can I use code-server without root permission?

Try chmod +x code-server first.

@zhengduoru you forgot to set your binary's mode. Use chmod -R 755 code-server and it should work.

@davea @sr229 thank you! The error message changed after I try chmod.
My system is Centos 7.  And I use code-server1.696-vsc1.33.0-linux-x64. And I don't have the root permission of the system. When I tried again, it came the error below.
$ ./code-server .
Segmentation fault

@zhengduoru Can you make a new issue about the segmentation fault with the info about what version you are running and the OS?


Remove wallet id argument

Closes #807

Commits applied in https://github.com/iov-one/iov-core/pull/839


Unable to link supnp functions (undefined reference)

Unable to link against supnp functions defined in supnp.h from sample. Within the library, the calls are fine. The issue arises with ./configure --enable-supnp && make.
cmake -DENABLE_SUPNP . && make works fine and no issue with it. Maybe somewhat related to Issue #1?
Example - calling supnp_dummy from registration_authority.c:
make[3]: Entering directory 'supnp/upnp/sample'
  CC       common/tv_ctrlpt-sample_util.o
  CC       common/tv_ctrlpt-tv_ctrlpt.o
  CC       linux/tv_ctrlpt-tv_ctrlpt_main.o
  CCLD     tv_ctrlpt
  CC       common/tv_combo-sample_util.o
  CC       common/tv_combo-tv_ctrlpt.o
  CC       common/tv_combo-tv_device.o
  CC       linux/tv_combo-tv_combo_main.o
  CCLD     tv_combo
  CC       common/tv_device-sample_util.o
  CC       common/tv_device-tv_device.o
  CC       linux/tv_device-tv_device_main.o
  CCLD     tv_device
  CC       common/registration_authority-sample_util.o
  CC       common/registration_authority-registration_authority.o
  CC       linux/registration_authority-registration_authority_main.o
  CCLD     registration_authority
/usr/bin/ld: common/registration_authority-registration_authority.o: in function `TvDeviceStart':
supnp/upnp/sample/common/registration_authority.c:1425:(.text+0x1980): undefined reference to `supnp_dummy'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:503: registration_authority] Error 1
make[3]: Leaving directory 'supnp/upnp/sample'
make[2]: *** [Makefile:1805: all-recursive] Error 1
make[2]: Leaving directory 'supnp/upnp'
make[1]: *** [Makefile:549: all-recursive] Error 1
make[1]: Leaving directory 'supnp'
make: *** [Makefile:442: all] Error 2

Only functions that starts with Upnp are exported?

See commit #429bc21
See [discussion] (https://github.com/pupnp/pupnp/pull/210#issuecomment-748243540)

Only functions that starts with Upnp are exported?

See commit #429bc21
See [discussion] (Build only one lib for debug and release pupnp/pupnp#210 (comment))

Yup.


Use a more k8s/release friendly PR template.

What type of PR is this?
/kind documentation
What this PR does / why we need it:
Modifying the PR template will will enable easier parsing kubernetes release-notes tool (tracked in #965). The tool makes some assumptions about PR bodies so limiting drift between those assumptions and the PR template should make release note generation more reliable.
Which issue(s) this PR fixes:
Partially addresses #965
Special notes for your reviewer:
Tried to keep the spirit of the original template but I've made some sections "Required" if they are important to release notes generation. Also I assume the list of "allowed" labels has been updated (or will be) based on the labels in this template.

@lynncyrin All yours!

I'm going to edit the PR description very slightly, since this PR shouldn't close #965 just yet 🙂

Also I assume the list of "allowed" labels has been updated (or will be) based on the labels in this template.

Done! ✅

Not sure why tests are failing? Someone please investigate 🙏

Ah, master is failing 🙁 https://github.com/urfave/cli/pull/1037

This should pass once the master is merged with this branch.

Looks like this is good to go!


Remove version: DominikReichl.KeePass version 2.53.0

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: Package still available.;


Rethinking AccumulateNode

I'd like to propose a fairly major shift in the AccumulateNode for a few reasons.  This relates to the old topic of https://github.com/rbrush/clara-rules/issues/127, but there is more to the overall story now.
I apologize for this being long-winded, but I would like to get some feedback on these points.  I have toyed with a few implemenation ideas of this at this point, but I don't want to go to deep in that without discussing it some more first.

The AccumulateWithJoinFilterNode has very different operational semantics from AccumulateNode.  This can cause some interesting and surprising performance characteristics between the two, among other issues we may have around propagating nil, retracting the correct bindings, etc.  On the binding retraction part, the comment made @ https://github.com/rbrush/clara-rules/issues/188#issuecomment-218630419is of interest, because it is actually not possible (?) to know if we have retracted the "last item" from an AccumulateNode.  We can detect this in an AccumulateWithJoinFilterNode however.
So my basic proposal here is this:
(1) Implement the default :retract-fn logic directly in the engine.
(2) Make the :combine-fn an optional feature of accumulators.  If the caller does not want to provide a :combine-fn and they do not even want their :reduce-fn to be a combiner, either because it cannot be one, or they don't want that sort of semantics, they should be able to opt out of it.  Actually, I'd prefer that the caller opt in to combine function logic at this point, which I'm going to get into a bit.
Firstly, why do I think that (1) is a good idea?
Performance
(a)
The wrapper implementation for :retract-fn that Clara uses with the built-in accumulators, and consumers may choose to use as well, can have very bad performance characteristics.  A large factor in Clara's efficiency is in the fact that the engine perform batched propagation and batched retractions of facts.  The wrapper implementation of :retract-fn only has visibility to a single fact being retracted at a time.  However, the engine is aware of some N number of facts to be retracted at any given time.  Our default :retract-fn does an eager, reduce over the items left after removing a single fact at a time.  This ends up needing to do N^2 operations to remove N batched retractions within the engine.  This can quickly degrade performance in heavy data, large rete network scenarios where retraction can be much more common due to truth maintenance changes.  Overall, we want the engine to be robust to these types of situations.
We could try to gloss over this issue again, by making our retraction wrapper "smarter".  It could batch up the facts being retracted itself.  Then "lazily" figure out the reduced value, only when it is needed later - when the next :reduce-fn is called or when the :convert-return-fn is called.

This complicates the wrapper more and causes operations to happen at weird times from a consumer perspective.
I consider this sort of a bandaid anyways.  I also have more reasons for my (1) proposal.

(b)
This part of the discussion somewhat leaks into my discussion of my point (2) above, but it does apply here.  A goal of our accumulator logic, in our most typical use-cases at least, should be to be as lazy as possibly about evaluating the accumulator.  Under the current implementation of AccumulateWithJoinFilterNode, the accumulation is not done until the left-activate or left-retract of tokens.  This is a good thing.  This means the accumulator will not perform accumulation on elements when there are not any, and may never be any, matching tokens upstream of it anyways.  This adds a slight edge of "laziness" to the AccumulateWithJoinFilterFn.
In the AccumulateNode however, the situation is quite different.  The AccumulateNode has no real reason to need to wait to accumulate since all tokens given in left-activate and left-retract will always match all elements given in right-activate and right-retract.  So the AccumulateNode immediately starts accumulating (and maybe combining to previous accumulations) when right activations are happening.
The result of this is the AccumulateNode is more eager than it needs to be.  There may be some cases where it'd make sense to attempt to reduce early if there was some reason for this information to have to be stored in some slower access memory, however, I'm not even sure this is the case.  Also, I think we need to tailor to the predominant pattern now and offer this sort of option later.
Correct semantics
There are some edge cases we had some discussion around lately on different semantics between retracting the last item and arriving back at the :initial-value vs retracting an item and getting nil.  I also think there are some issues with understanding what the bindings should be when propragating when we aren't sure if we have "came back" to the :initial-value or not.  This issue is due to the AccumulateNode not retaining memory of the items it has seen so far.
Overall
I know the AccumulateNode is setup to be capable of doing some sort of "streaming" operation, but I think anyone who would rely on this pattern right now would be relying on immplementation details of the engine that also are not checked very well.  If I had a rule that could effectively be streamed and I needed to be sure to never retain all elements in memory at a time (like on a storm cluster node or something), I could have a rule like:
(defrule my-rule
  [?f <- FactA]
  [?streaming-result <- find-streaming-result :from [FactB (= v (:v ?f))]]
  =>
  <etc>)

This would be "streamable", with the caveat taht you may not be able to rely on truth maintanence unless you could make a streaming style :retract-fn that didn't need to remember all items ever seen before.  However, if you relied on this, and later you couldn't use = anymore because the criteria became more complex, you'd have:
(defrule my-rule
  [?f <- FactA]
  [?streaming-result <- find-streaming-result :from [FactB (some-test-fn v (:v ?f))]]
  =>
  <etc>)

Now, your streaming would be lost.  The node would be AccumulateWithJoinFilterNode now and you'd run out of memory or whatever you were trying to avoid.  The engine would not make this clear at all what caused it.
My proposal to support a streaming mode like this (future), would be to be sure we don't corner ourselves to not be able to do it, but instead make this a first-class feature of an accumulate node.  Also, probably even mark accumulators as "streamable" when they can support this feature.  Then fail in the engine if we are in "streaming mode" and accumluators that are "streamable" are used in places with join filters where streaming won't work at.
It is hard to tailor to both this "streaming" case and our typical case in a way that makes sense for both.  However, I'm thinking now, why do we need to?  More options to mk-session or something seem completely reasonable to me for when the caller has different sorts of use-cases.
So why make the :combine-fn optional i.e. (2)?
Lazy evaluation
(a)
If the accumulator becomes more lazy in that it only attempts to accumulate when there are left activations/retractions, then it doesn't necessarily make sense to use the :combine-fn as currently used.
(b)
If we wanted to use parallelism via something like clojure.core.reducers in the future, again I think this is similar to "streaming" mode.  This could be explicitly turned on for accumulators that desired it.
Performance
I've seen some real-world examples now where it may be more difficult and inefficient to write a :combine-fn than if we could just only use :reduce-fn calls instead.  Even if we reduce at some point previously, then new facts come, we could just keep reducing into our current reduction.
An example of this is if the :reduce-fn is building a more complex data structure, like a map with nested maps etc.  It can be fairly difficult to make a performant :combine-fn in these cases sometimes, when it would be cheaper to just keep adding onto the accumulating map with :reduce-fn calls.  This also comes up with the use of transient data structures as the return value of the :reduce-fn.  The transients may not be easy to combine, without persisting on of them and dumping it into the other.  This is wasteful to need to copy from one to another.
Overall
:combine-fn can be a good and useful thing.  I just think there should be a way to opt out of it if it isn't needed.  The :reduce-fn can just be used in a way that doesn't need to combine two independently reduced values.  This may go against some of the "streaming" mode semantics, but I think that should probably just be its own mode as discussed elsewhere.

A shift to a lazy AccumulateNode and making combine optional makes sense. I think we should still offer the option of a user-defined :retract-fn because in some cases it can be significantly more efficient than a re-reduce (e.g., sums and averages have a trivial arithmetic retract.). I'm not sure how this impacts your thoughts on making :retract-fn internal to the node. I suppose AccumulateNode could check for the presence of a user-defined :retract-fn and behave appropriately?
In any case, making the default behavior of an accumulator just a lazy reduce seems reasonable...I'd just like to preserve the option of a :retract-fn and :combine-fn for accumulators and workloads that may benefit from it.
As for the streaming characteristics, I agree this hasn't gained as much traction in practice as I thought it would have and surprising performance differences between the two AccumulateNode implementations could cause problems. So I'm fine with dropping that behavior and perhaps looking at adding deeper guarantee in the future, perhaps some sort of "streaming accumulator" declared by the user.

Yes, sorry if my proposal didn't make that part clear.  This idea still accepts a caller-given :retract-fn and/or :combine-fn with the presumption there being that the caller-given one can do a better job of retraction and/or the caller has an efficient way to combine reduced values together.
If you are on board with this, I will try to investigate this a little more and see where I get.  I'll post back here when I get something working.

Gotcha. This strategy sounds good to me. Feel free to take a stab at it if
you're interested, and I'm happy to help in any way.
On Fri, May 13, 2016 at 3:28 PM Mike Rodriguez<EMAIL_ADDRESS>wrote:

Yes, sorry if my proposal didn't make that part clear. This idea still
accepts a caller-given :retract-fn and/or :combine-fn with the
presumption there being that the caller-given one can do a better job of
retraction and/or the caller has an efficient way to combine reduced values
together.
If you are on board with this, I will try to investigate this a little
more and see where I get. I'll post back here when I get something working.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/rbrush/clara-rules/issues/190#issuecomment-219151084

FYI, I don't currently plan to do anything in the engine accumulator implementation in the immediate future apart from any fixes that may arise from discussion on https://github.com/rbrush/clara-rules/pull/191 .  I'm planning on focusing on https://github.com/rbrush/clara-rules/issues/192 and other ways to increase consistency.
@mrrodriguez , are you planning to address https://github.com/rbrush/clara-rules/issues/188 and/or https://github.com/rbrush/clara-rules/issues/189 with these changes?

@WilliamParker I'll consider them when doing this.  If they are obvious/in the way of making these changes have clear semantics then they may be involved.  However, I wouldn't want to go out-of-the-way with this work to fix them if they are able to be done separately.

I've been looking into this a bit more and I think these changes will end up encompassing a few of these issues.  I haven't laid out exactly which ones will be covered.
I'm thinking

https://github.com/rbrush/clara-rules/issues/188
https://github.com/rbrush/clara-rules/issues/189

May naturally need to be done with these changes.
https://github.com/rbrush/clara-rules/issues/102 will be out of scope though.

@mrrodriguez , is one of the goals here to make rules like
(defrule possibly-blocked-rule
       [:not [BlockerFact]]
       [?result <- (really-expensive-accumulator)]
       =>
       ;; the RHS doesn't matter here)

(defrule possibly-blocked-rule-2
       [RequiredFact]
       [?result <- (really-expensive-accumulator)]
       =>
       ;; the RHS doesn't matter here)

not take much time if there is a BlockerFact present or there is no RequiredFact present (depending on which rule)?  I believe we have cases like these where we end up preventing the rule from firing.  Perhaps in some of these cases we could add some sort of functionality to not pass these rules to Clara, but it would be nicer if rules like this were more performant (and in some cases we might not know at session compilation time that the rule won't be used.)  The description above and your branch at https://github.com/mrrodriguez/clara-rules/tree/issue190 suggest the answer is yes, but I'd like to be sure I understand correctly.
If this is correct, have you considered whether the compiler will consistently place the AccumulateNode in such a way that it can benefit?  I haven't traced through all of this (yet, anyway), but I'm wondering if we need to worry about a scenario like:

The AccumulateNode is left-activated by the empty-token.
The AccumulateNode performs an expensive accumulation.
The AccumulateNode propagates tokens to a node from a "blocker" condition which never gets satisfied, so the rule doesn't fire.

Right now when I tried these two rules:
(defrule accum-order-rule
                    [?c <- [Cold]]
                    [?h <- (acc/all :from [Hot])]
                    =>
                    (println "Hello world"))

(defrule accum-order-rule-reversed
                    [?h <- (acc/all :from [Hot])]
                    [?c <- [Cold]]
                    =>
                    (println "Hello world"))

and made a session from each:
(-> (mk-session [accum-order-rule-reversed]) .rulebase :beta-roots first)
(-> (mk-session [accum-order-rule]) .rulebase :beta-roots first)
;; I also checked that each rulebase had only a single beta root

which type (Cold vs Hot) was the beta root, and would thus be left-activated by the empty-token [1]
depended on which came first in the rule.
It might be reasonable to establish an expectation that where possible, conditions will be ordered sequentially, but has anyone thought through the implications of that? @rbrush , has any expectation around such ordering been established previously? Alternatively, is it possible for the compiler to autodetect the best ordering somehow?
Sorry if I'm rambling a bit here, but I just wanted to start this conversation now since I may not have time to respond here for a few days.

https://github.com/rbrush/clara-rules/blob/0.11.1/src/main/clojure/clara/rules/engine.cljc#L1216

@WilliamParker the work I'm doing on this would like to make the AccumulateNode (no big work on AccumulateWithJoinFilterNode in this one) lazier than it currently is and yes, it would benefit in cases where it was downstream of other nodes and they didn't have tokens to propagate yet.
This isn't the main goal of this though and it only enables the laziness from the perspective of the AccumulateNode.  The order in which the compiler chooses to put the nodes is an orthogonal concern and I think that'd be the work of a separate issue.
The main reason I'm working on these changes right now are

to provide an efficient :retract-fn default
to not require a :combine-fn when it is not helpful and actually can be hard to implement one that is better than just continually reducing onto a single reduced (transient maybe) value
to enable the lazier behavior discussed above - this is only a minor added benefit of this work

Along with that, I've been able to make some better choices in the semantics of :initial-value propagation and retraction that solves the issues https://github.com/rbrush/clara-rules/issues/188 and https://github.com/rbrush/clara-rules/issues/189 for the AccumulateNode.
I think the same solution will likely work in AccumulateWithJoinFilterNode, but I'll probably make that a separate issue since the changes will already be heavy enough with this pass.
Any work on the condition ordering for performance issue seems to me to be closely related to what we do in clara.rules.compiler/sort-conditions [1] which is outside the scope of what I'm doing here.  I do think this is an important topic to consider though.
[1] https://github.com/rbrush/clara-rules/blob/0.11.1/src/main/clojure/clara/rules/compiler.clj#L693-L759

https://github.com/rbrush/clara-rules/pull/202 is out for the changes I have related to this issue.
For the AccumulateNode case, it also fixes #188 and #189.  It also deals with the issue faced in #200 .
The changes are a pretty big overhaul for AccumulateNode.  I'm not sure how easy it will be to compare the diff.  It may be one of those things to look at non-diff'ed mostly to get the most value.
I believe this issues main description discusses enough detail still to describe the goals of these changes.  If there are more questions, ask away.
I haven't seen any regression in behavior with these changes in our tests or some production cases.  I have seen some performance improvements now though, and it is fairly easy to demonstrate more drastic performance improvements setting up a bad case of retractions against our old retract-fn-wrapper.

I am working on fixing the issues from #188 and #189 for AccumulateWithJoinFilterNode now.  I won't be working on #102 as of yet though. @WilliamParker said he may be looking at that one some.

Similar to #188 and #189. Is it safe to close this one out now?

I concur with @rbrush ; I think this can be closed.   Do you have any objections to closing this @mrrodriguez ?

+1 to closing

Closing for 0.12 release


Support for dynamic creation and compilation of GF files

New L4 file -> new GF files with relevant wordnet words as lexicon.

i like commenting on issues.

I wish I'd commented on #1 and #2.


QL-820NWBc - Exact tap length

Hello, I'm trying to use the API v4 for QL-820NWBc and using the roll that comes with the printer which is a "62mmRB" the problem is whatever I try I cannot set the length of the label? I've noticed on the Brother iOS app that you can set the "exact tape length" but I have not found any option to do on the SDK.

Hi @diogoAntunes
The length of the printed label is determined by the content being printed.


(MODULES-3491) Describe version strategy in README

This commit documents the version strategy used to determine a version number
when releasing the module.  This commit also removes trailing whitespace.

👍


Remove concept of explosions on players

They were a part of the first implementation of the tournaments and it does not make sense to still have them in the codebase.

#108 will solve this


viper

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.
[X] I have thoroughly looked through the available Wiki articles and could not find a solution to my problem.
[X] I am using the latest version of Bloxstrap.
[X] I did not answer truthfully to all the above checkboxes.

Bloxstrap Version
v.2.8.1
What problem did you encounter?
hy,i have a problem with my outline from blade ball i remove the outline and dosent work the ball dont have outlin but my charachter dont have a red line
Bloxstrap Log
N/A

GIF


Image upload not appearing in AWS console

When my users upload images through this gem, the image appears on the website via Cloudfront CDN delivery but when I look at the AWS console, it's not there in the bucket. Does it have to do with my initializer settings? I'm new to AWS and any help will be appreciated!
CarrierWave.configure do |config|
  config.storage    = :aws
  config.aws_bucket = ENV.fetch('S3_BUCKET_NAME')
  config.aws_acl    = 'public-read'

  config.asset_host = 'https://example.cloudfront.net'

  config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7

  config.aws_attributes = {
    expires: 1.week.from_now.httpdate,
    cache_control: 'max-age=604800'
  }
end

Also, can someone explain what aws_authenticated_url_expiration means? The comment isn't making sense to me.

There isn't enough information here to determine where the file is being stored. That would depend on the store_dir and filename within each of your uploaders.
The aws_authenticated_url_expiration is what determines how long an authorized URL is valid. It only applies to private objects, and you have your aws_acl configured to public-read, so it doesn't apply to you.


Is there any substitute for numpy to use TensorFlowSharp?

If it exist, Please let me know :D

For some tasks:
https://numerics.mathdotnet.com/

Thanks !


Consumer commiting offsets but not getting listed through /v2/kafka/(cluster)/consumer

I set up a burrow install and pointed to my Kafka server.(1 Broker and 1 zookeeper).When I call /v2/kafka/kafka1/consumer , I get the response, no consumers. i.e {"error": false,"message": "consumer list returned","consumers": [],"request": {"url": "/v2/kafka/local/consumer/","host": "", "cluster": "local","group": "","topic": ""}}
My offset.storage = kafka.
I know that  cluster  is connected to a consumer and in processing messages.All other endpoints, not at the consumer level, appear to work fine.

It appears from #80 that there is a bug with non-chroot Zookeeper environments. I haven't had a chance to look at it to create a PR for it, however.

OK, #80 isn't actually a problem at all in current versions of Burrow. However, it doesn't look like you've enabled Zookeeper offset checking for your cluster. You need to add the config zookeeper-enable=true to the [kafka "local"] section of your config to do this.

@toddpalino I am getting the following error while adding zookeeper-enable= true in my burrow.cfg
Error:Failed to parse gcfg data: invalid variable: section "kafka" subsection "local" variable "zookeeper-enable"
burrow.cfg
[general]
logdir=burrowlogs
logconfig=config/logging.cfg
pidfile=burrow.pid
client-id=burrow-lagchecker
group-blacklist=^(console-consumer-|python-kafka-consumer-).*$
[zookeeper]
hostname=<IP_ADDRESS>
port=2181
timeout=6
lock-path=/burrow/notifier
[kafka "local"]
broker=<IP_ADDRESS>
broker-port=9092
zookeeper=<IP_ADDRESS>
zookeeper-port=2181
zookeeper-path=/
offsets-topic=__consumer_offsets
zookeeper-enable = true
[storm "local"]
#zookeeper=zkhost01.example.com
#zookeeper=zkhost02.example.com
#zookeeper=zkhost03.example.com
#zookeeper-port=2181
#zookeeper-path=/kafka-cluster/stormconsumers
[tickers]
broker-offsets=60
[lagcheck]
intervals=10
expire-group=604800
[httpserver]
server=on
port=8080
[smtp]
server=mailserver.example.com
port=25
<EMAIL_ADDRESS>template=config/default-email.tmpl
[email<EMAIL_ADDRESS>group=local,critical-consumer-group
group=local,other-consumer-group
interval=60
[httpnotifier]
url=http://notification.server.example.com:9000/v1/alert
interval=60
extra=app=burrow
extra=tier=STG
template-post=config/default-http-post.tmpl
template-delete=config/default-http-delete.tmpl
timeout=5
keepalive=30

Sorry, my mistake. I wrote the config and I keep mistyping it. It's zookeeper-offsets

Thanks @toddpalino issue is resolved. I am having one more query that is it possible through burrow that I can get information containing "ConsumerId","offset","Lag","Topic","PartitionId".

By using the /lag endpoint for the consumer group, you can get a full listing of the partitions consumed by the group with the start and end committed offsets that Burrow has.


rtl_ais TCP server example doesn't work

Using rtl_ais tcp listener, the connection sends a burst of accumulated data, and then no more. In other words, it doesn't stream forever. The effect is ships appear for a minute or so, then vanish.
This is either a bug with rtl_ais, or I'm misunderstanding on how the TCP server is meant to work.
Once resolved, document/update recommended instructions: https://github.com/mik3y/airdash/wiki/Running-RTL-AIS-on-Raspberry-Pi

Working patch/fork here: https://github.com/mik3y/rtl-ais
I prepared an upstream PR, although it's currently stymied by broken windows support.


yarn installation failed

Description
When my project is installed using yarn, the download dependencies are completed, but it fails when bob builds, prompting that there is no tsconfig file, but my project does not use ts。

Version
0.61.4
Output of npx react-native info
System:
OS: Windows 10 10.0.19042
CPU: (12) x64 Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
Memory: 6.96 GB / 15.83 GB
Binaries:
Node: 12.20.0 - C:\Software\nodejs\node.EXE
Yarn: 1.22.17 - ~\AppData\Roaming\npm\yarn.CMD
npm: 6.14.8 - C:\Software\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK: Not Found
Windows SDK: Not Found
IDEs:
Android Studio: Not Found
Visual Studio: Not Found
Languages:
Java: 1.8.0_311
npmPackages:
@react-native-community/cli: Not Found
react: Not Found
react-native: Not Found
react-native-windows: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
use yarn
Snack, code example, screenshot, or link to a repository
What should I do to solve this problem

create a tsconfig.ts file in your root level of project  and paste below code then try once.
// tsconfig.ts
{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "jsx": "react-native",
    "lib": [
      "dom",
      "esnext"
    ],
    "moduleResolution": "node",
    "noEmit": true,
    "skipLibCheck": true,
    "resolveJsonModule": true,
    "strict": true
  },
  "extends": "expo/tsconfig.base"
}

Closing as the RN version you're reporting this for is too old. Please update to 0.68 and try again


feat(api): Add forceTenantPrefix option to Tenant spec

This PR adds the option to require the tenant name prefix to it's namespace names, at the tenant level (opposed to setting globally in capsule configuration). With this users do not need to define forceTenantPrefix in capsule configuration if wanting to apply to certain Tenants only.
This allows admins to fine grain which Tenants should be prefixed (i.e. consumer developer teams), whilst giving flexibility on other Tenants like platform team namespaces.
forceTenantPrefix has been added in the Tenant Spec
Requires users to set the capsule.clastix.io/tenant label for Tenants with forceTenantPrefix set to true if more than 1 Tenant matches the owner as well as prefixing the Tenant name in the namespace, or just prefix the namespace with tenant name if matching to a single Tenant with forceTenantPrefix set to true.

@oliverbaehler what are your thoughts on this?

I am okay with it, for a new minor release (v0.8.0)
What happens when a tenant has capsule.clastix.io/tenant set to another tenant in both cases. If the option is on tenant basis true or false?

I am okay with it, for a new minor release (v0.8.0)
What happens when a tenant has capsule.clastix.io/tenant set to another tenant in both cases. If the option is on tenant basis true or false?

If I am an owner of the Tenant tenant-a with forceTenantPrefix: true, when I create a namespace with label capsule.clastix.io/tenant: tenant-a and use a invalid prefix, it will be denied as label take presedence and includes the check to see if the labelled Tenant (tenant-a) needs the prefix by looking at the spec.
If tenant-a does not have forceTenantPrefix: true then it would allow the namespace

The test failed for k8s 1.30.0, but unsure why? Can we re-trigger? @oliverbaehler

#1168 Observed error again https://github.com/projectcapsule/capsule/actions/runs/11666475797/job/32522968722?pr=1244

Thanks @oliverbaehler
Are we happy to merge?


No hint path defined for [webed-theme].

error same tip. please help me

What theme did you use?

tks. my issue was resolved


Debug failure: Found typedef tag attached to node which it should not be! at nameForNamelessJSDocTypedef

TypeScript Version: 3.0.3
Repro

git clone https://github.com/SVG-Edit/svgedit.git
tsc --init to create a project file
Set allowJs and checkJs in tsconfig.json
tsc

Error: Debug Failure. Found typedef tag attached to node which it should not be!
    at nameForNamelessJSDocTypedef (tsc.js:10163:26)
    at getNameOfJSDocTypedef (tsc.js:10171:36)
    at Object.getNameOfDeclaration (tsc.js:10214:24)
    at Object.hasDynamicName (tsc.js:8395:23)
    at declareSymbol (tsc.js:17648:33)
    at declareModuleMember (tsc.js:17728:33)
    at bindBlockScopedDeclaration (tsc.js:18750:25)
    at delayedBindJSDocTypedefTag (tsc.js:18783:21)
    at bindSourceFile (tsc.js:17539:17)
    at Object.bindSourceFile (tsc.js:17489:9)

The problem is that parsing of a typedef's type fails, causing the parser to treat jsdoc as the name. Later, the binder assumes that the parser never gets confused and has an assert to prove it.
The assert is over-optimistic and should be removed until we can parse every possible thing that people might put in a JSDoc type position. Which will never happen. For one thing, the unicode committee keeps adding new emoji all the time!
Here's an example:
/** @typedef {GenericArray.<module:locale.LocaleStrings>} module:locale.LocaleArray */

We don't parse module:locale.LocaleStrings as a valid type. The resulting typedef has
{
  type: "GenericArray<module>",
  name: undefined,
  comment: ":locale.LocaleStrings>} module:locale.LocaleArray"
}


Bibliography pipeline publication dates

Is it possible to get some more details on how publications are assigned dates in the literature pipeline (https://github.com/opentargets/platform-etl-literature)?
I noticed in gs://open-targets-data-releases/21.11/output/literature that these datasets nearly always have publication years (approx. 1 in a million don't).  I was expecting that number to be substantially lower, so it makes me wonder if some publications are being lost when they don't have associated dates.  Is there a strategy behind this process like:

Use an electronic publication date if available
Fall back on print publication date
Fall back on journal publication date, if no individual publication date is available but the publication -> journal association is
Default to appropriate MEDLINE/PubMed/PMC acceptance and/or creation dates

We've found that something like this is necessary to get good coverage, especially for publications that are 10+ years old.  Is there something similar happening in the EPMC pipeline?

@saha-shyamasree you can probably help us explain how the dates are assigned

@d0choa @eric-czech : We have a number of strategy to find the publication date. For medline abstracts, their are several publication dates available. I have added a snippet from the XML of an abstract at the bottom of this comment. I have highlighted the sections used by our pipeline. We have a lookup file generated from Europe PMC database (it contains pubmed id, PMC ID, publication date etc., I am not sure how the database entries are created.). I initially look for the pubmed id in the lookup file, if the PMID is found and the PUB_DATE is not empty, I insert that value in the JSON file (JSON file submitted as part of the data submission process.). Otherwise, our pipeline tries to find the publication date from the XML, the priority of tags are as follows, PubMedPubDate, DateCompleted and then PubDate. If none of these tags are found, then the abstract's publication is set to empty but they are not excluded.
PMID     FT_ID   PUBYEAR         PUB_DATE        RESEARCH_ARTICLE_YES_NO         AVAILABILITY_STATUS     FIRST_PUBLISH_DATE
14772364         PMC2007713      1950    01/06/1950      Y       O       1950-06-01 00:00:00
14284775         PMC2195428      1965    01/01/1965      Y       O       1965-01-01 00:00:00
4158436          PMC2138079      1965    01/09/1965      Y       O       1965-09-01 00:00:00
5839251          PMC2106676      1965    01/06/1965      Y       O       1965-06-01 00:00:00

**1986
5
1**

**1986
5
1**
0
1

1986
5
1
0
0

-------------------------

1986
May

**1986
08
18**

2019
08
24

For full-text, we look for the publication date from the lookup file as mentioned above, if not found, we set it to '1900-01-01'. Again they are not excluded based on the publication date availibility.

Thanks @saha-shyamasree, that's very helpful.  And to confirm, this logic isn't in an Open Targets repository on github correct? https://github.com/opentargets/platform-etl-backend maybe?  I wanted to make sure I wasn't missing that somewhere.

Awesome, thanks again @saha-shyamasree.


Null-safety support

Please, add null-safety support.

Hey, can you elaborate on what you're meaning?

Hey, can you elaborate on what you're meaning?

Fixed in #38


[region-isolation] Refactor code so that I can more easily add additional error kinds

This is a part of a larger commit that I am splitting off from a larger commit since it can stand alone as a refactor.

This PR modifies the way region isolation moves error information to make it easier to add additional types of errors. Specifically perviously, for each error kind, there was a CRTP entry point on PartitionOpEvaluator. The actual handling of the entry point in the CRTP subclass would involve doing some post-processing to create some kind of error object (or suppress the error). This error object would be appended to a specific array in the DiagnosticEmitter. This array would need to be threaded throughout the implementation.
As one can tell from the above there is a bunch of boilerplate:

Adding a CRTP entry point for every type of error means that /all/ PartitionOpEvaluators had to be updated whenever a new interesting CRTP was added. This isn't necessary.
By having the state passed from the DiagnosticEvaluator to the rest of the diagnostic infrastructure be created on the other side and without that having a homogeneous representation, we are forced to add tons of references to various arrays and propagate those around as reference fields and parameters.

 I realized this when I was working on a forthcoming patch that this is chopped off of when I started to try and cram new error kinds into the handlers for other similarish errors to avoid having to write the boilerplate. When one recognizes this impulse in one's self, it is /always/ a sign that one should refactor the given code.
With all of that said, what this PR does is that it adds a new Swift-style C++ enum struct called PartitionOpError. This is effectively an AnyError that abstracts over the various error kinds (I will go into its implementation in a second). Using this abstract form of error, we can create an interface in between the emitters and the error kinds by just calling a single CRTP entry point called handleError. This then lets us just phrase all of the middle level boilerplate in terms of these AnyErrors. For example, the diagnostic emitter can just stash these errors into an any error. And we can just loop over them in the diagnostic emitter and invoke specific code for each one. To avoid the need to create a bunch of additional C++ boilerplate, I added a .def file to macro-out some of the boiler plate for individual error kinds. Using this, to add a new error kind, one:

Creates a new error kind in the .def.
Defines the error struct itself.
In PartitionOpEvaluator::apply, one just creates the error type and passes it to handleError.
In TransferNonSendable.cpp, update the covered switch as the entry point to define behavior. Generally this means creating a functor object that one uses to perform the diagnostic computation upon the error.

@swift-ci smoke test


New term proposal: site_type

New term details
For us to assess a new term request we require the following details:
Term name - Site type
Structured comment name - site_type
Definition - The type of site the sediment cores where taken. E.g. ocean, marine, freshwater, brackish, ice caves, caves.
Expected value - text
Value syntax - {termLabel} {[termID]}|{text}
Example - ice cave
Preferred unit - NA
Package(s) - ancient

Additional context
This term is applied to sedimentary ancient DNA samples.

This term is also proposed under the MInAS project's proposed ancient extension


qfit_protein crashes on writing multiconformer_model

I tried to run qFit on my favourite protein (PDB:2BIJ) last night, but it crashed while writing multiconformer_model.pdb.
Not sure why this is yet. It managed to get out the first 100 or so residues, but then died without writing the remaining 200 of them.
Traceback (most recent call last):
  File "/home/briley/.pyenv/versions/miniconda3-4.3.30/envs/qfit3.1.0_dev+parallelrefactor/bin/qfit_protein", line 11, in <module>
    load_entry_point('qfit', 'console_scripts', 'qfit_protein')()
  File "/home/briley/qfit-3.1/src/qfit/qfit_protein.py", line 485, in main
    multiconformer = qfit.run()
  File "/home/briley/qfit-3.1/src/qfit/qfit_protein.py", line 194, in run
    multiconformer = self._run_qfit_residue_parallel()
  File "/home/briley/qfit-3.1/src/qfit/qfit_protein.py", line 299, in _run_qfit_residue_parallel
    multiconformer.tofile(fname)
  File "/home/briley/qfit-3.1/src/qfit/structure/base_structure.py", line 192, in tofile
    PDBFile.write(fname, self)
  File "/home/briley/qfit-3.1/src/qfit/structure/pdbfile.py", line 99, in write
    f.write(CoorRecord.line1.format(*field))
TypeError: unsupported format string passed to NoneType.__format__

Will be looking into CoorRecord.line1 and why it's NoneType, and not a string.

Digging backwards, the field appears as
['ATOM', 3367, 'OE2', 'A', 'GLU', 'A', 390, '', -2227.82, nan, nan, None, None, '', '']
x,y,z are ... plainly wrong.

This should be fixed as a result of #72 and #82 .


Update troubleshooting-procedures.md

Remove extra spaces
Remove ByVal (Contributes to #13912).
Use PascalCase for method name.
Markdown improvements.

Thanks for making the additional change, @Youssef1313. I'll merge your PR now.


AnimatedContainer unexpected behaviour

I wannt animate container height, my problem is:
buttons can not be shrink height
I dont' know if this is a bug or my false usage.
Picture say a thousand words:
I have a AnimatedContainer and a Row inside it, serveral widgets in a Row:

When shrink down, you will see, all widgets can shrink down. except button:

any body knows why?

@jinfagang
can you provide a minimal reproducible code sample

@iapicca  I solve by replace IconButton with a Text widget, icons can not be hide, while text and others can, I don't know why.
I need using hide feature, so that AnimatedContainer can help me hide also with a nice animation. I dont need scroll here.

Hi @jinfagang
Can you please provide your flutter doctor -v and a minimal complete reproducible code sample?
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Mismatch when loading swin pretrained weights

Hi, @zyxu1996 . I met a problem that the model and loaded state dict do not match exactly.
Do you know why this happened? Thank you very much.

Your application is correct, missing keys displayed will not affect the experiment results.

I see. Thank you very much.


What about external/public load balancers?

My web VMs have a public LB. However, I can't seem to configure the LB in the failover/test failover settings. I have created the LB, set up the FE IP config and BE pool, but still it doesn't show.
This doc refers explicitly to internal LBs and doesn't mention public LBs. Does this mean public LBs aren't supported (and I will have to set up manually?) The doc should cover both the internal and public LB cases, for completeness.

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

ID: 509c70bc-a19b-69e1-470d-f9806f2c8065
Version Independent ID: 9bd8794a-1959-0f2f-ca35-e832ea4b88c0
Content: Customize networking configurations for a failover VM - Azure Site Recovery
Content Source: articles/site-recovery/azure-to-azure-customize-networking.md
Service: site-recovery
GitHub Login: @Rajani-Janaki-Ram
Microsoft Alias: rajanaki

@jtuliani Thank you for your query, our team will look into it and get back to you at the earliest.

@Rajani-Janaki-Ram  - kindly confirm if external/public LBs are supported and should be updated in the content.

We don't support attaching to public load balancers yet.

Thanks for the update, @mayurigupta13. Do we have an eta on when/if external LB will be supported?
@jtuliani
We will now close this issue. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.

It is not in plans yet. We will watch out for more of such customer requests.

Thanks @mayurigupta13.
@jtuliani  - I recommend sharing this as a feature request on Uservoice so others can review and upvote based on business need.


fix: connect to a tls-secured jaeger server

Issue
https://gravitee.atlassian.net/browse/APIM-1477
Additional context

Gravitee.io Automatic Deployment
🚀 A prerelease version of this package has been published on Gravitee's private artifactory, you can:

use it directly by updating your project with version: 1.2.1-apim1477-SNAPSHOT
download it from Artifactory here

:tada: This PR is included in version 1.2.1 :tada:
The release is available on:

1.2.1
GitHub release

Your semantic-release bot :package::rocket:


The test from this repo does not pass

$ dune build ./test/test.bc.js
$ node _build/default/test/test.bc.js
UInt8

x_64, y_64, z, z_64, M.of_int64, Done
Checking::: 254 = 254? 254 = 254? 0

x_64, y_64, z, z_64, M.of_int64, Done
Checking::: 254 = 254? 254 = 254? 0

[...]

x_64, y_64, z, z_64, M.of_int64, Done
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
Checking::: 510 = 510? 510 = 510? 0
Checking::: 131070 = 131070? 131070 = 131070? 0
Checking::: 33554430 = 33554430? 33554430 = 33554430? 0
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
UInt64

x_64, y_64, z, z_64, M.of_int64, Done
Checking:::<PHONE_NUMBER>854775803 = -4?<PHONE_NUMBER>854775803 =<PHONE_NUMBER>3709551612? 1
Fatal error: exception Failure("File "test/test.ml", line 55, characters 7-14")
/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:6772
      if(err.js_error) throw err.js_error;
                       ^

Error: Js exception containing backtrace
    at caml_exn_with_js_backtrace (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:283:21)
    at caml_maybe_attach_backtrace (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:288:15)
    at failwith (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:10940:11)
    at caml_call1 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25502:15)
    at check (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25643:19)
    at caml_call1 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:12773:15)
    at iter (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:12981:6)
    at caml_call2 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25507:15)
    at test_module (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25645:5)
    at /home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25709:4

Node.js v20.11.0

The failure apparently happens when running the check function on -1L, -1L:
https://github.com/o1-labs/integers_stubs_js/blob/141e0bc03a20b251edd97f4b320cc76db7fac291/test/test.ml#L55

$ dune build ./test/test.bc.js
$ node _build/default/test/test.bc.js
UInt8

x_64, y_64, z, z_64, M.of_int64, Done
Checking::: 254 = 254? 254 = 254? 0

x_64, y_64, z, z_64, M.of_int64, Done
Checking::: 254 = 254? 254 = 254? 0

[...]

x_64, y_64, z, z_64, M.of_int64, Done
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
Checking::: 510 = 510? 510 = 510? 0
Checking::: 131070 = 131070? 131070 = 131070? 0
Checking::: 33554430 = 33554430? 33554430 = 33554430? 0
Checking:::<PHONE_NUMBER> =<PHONE_NUMBER>?<PHONE_NUMBER> =<PHONE_NUMBER>? 0
UInt64

x_64, y_64, z, z_64, M.of_int64, Done
Checking:::<PHONE_NUMBER>854775803 = -4?<PHONE_NUMBER>854775803 =<PHONE_NUMBER>3709551612? 1
Fatal error: exception Failure("File "test/test.ml", line 55, characters 7-14")
/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:6772
      if(err.js_error) throw err.js_error;
                       ^

Error: Js exception containing backtrace
    at caml_exn_with_js_backtrace (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:283:21)
    at caml_maybe_attach_backtrace (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:288:15)
    at failwith (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:10940:11)
    at caml_call1 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25502:15)
    at check (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25643:19)
    at caml_call1 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:12773:15)
    at iter (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:12981:6)
    at caml_call2 (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25507:15)
    at test_module (/home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25645:5)
    at /home/olivier/ocaml_package_repos/integers_stubs_js/_build/default/test/test.bc.js:25709:4

Node.js v20.11.0

The failure apparently happens when running the check function on -1L, -1L and comparing against the Int64 module:
https://github.com/o1-labs/integers_stubs_js/blob/141e0bc03a20b251edd97f4b320cc76db7fac291/test/test.ml#L55


Using FaceNet for food classification

I have a food dataset that I want to train with triplet loss. In the dataset, each image corresponds to one dish and it is set up according to the data structure in the wiki page. The dataset contains about 20.000 images in total and the images per class vary from 20 to 900.
I already managed to train a classifier and classify images. However, I want the parameters to be optimal so that the classifier's accuracy becomes better. In particular, I was wondering how to choose:

people_per_batch (default: 45)
images_per_person (default: 40)

Can someone explain what they mean or if they are even relevant if there is ever only one class per image and it's not faces? And how should I set them? For the rest of the arguments I basically went with those from the wiki page except that I did not use the LFW validation dataset.

They are used for calculating triplets(A,P,N) from samples for training on triplet loss.(see sample function in traintripletloss.py line 313).
-What triplet_loss does is that it doesn't go through each and every image in dataset to calculate triplet batches as it will be computationally expensive  to make triplet combinations for large datasets . (  from facenet paper it is  infeasible  to  compute  the argmin and argmax across the whole training set.   Additionally,  it might lead to  poor  training,  as  mislabelled  and  poorly  imaged  faces would dominate the hard positives and negatives).
-nrof_images = people_per_batch * images_per_person (line 314)
-so first they select class and image_paths list from samples by randomizing (line 330) the class list and image paths
-Now using these classes and image path list they make triplet combinations
-And then find good triplets which satisfy the triplet condition by finding embedding.(so people_per_batch and images_per_person are used in this child batch to compute their embedding (line 224))
And finally train by triplet loss in the Main batch(line 254).
-It should work fine for just one image per class as it is based on one shot learning but I believe it will take more time to converge.Will be good if you use classes with atleast 10 images.
-Its totally applicable even if there are no faces
-please read facenet paper for more info (section 3.2 triplet selection)
-facenet paper link - https://arxiv.org/pdf/1503.03832.pdf

Thanks a lot for the clarification! Closing this ...

I have a food dataset that I want to train with triplet loss. In the dataset, each image corresponds to one dish and it is set up according to the data structure in the wiki page. The dataset contains about 20.000 images in total and the images per class vary from 20 to 900.
I already managed to train a classifier and classify images. However, I want the parameters to be optimal so that the classifier's accuracy becomes better. In particular, I was wondering how to choose:

people_per_batch (default: 45)
images_per_person (default: 40)

Can someone explain what they mean or if they are even relevant if there is ever only one class per image and it's not faces? And how should I set them? For the rest of the arguments I basically went with those from the wiki page except that I did not use the LFW validation dataset.

Hi Tim,
I found your work quite interesting. I am trying to something similar with dataset of pets. I am very much  at initial stage. I would be very to know that what were the challenges that you faced while training from scratch?
I look forward to hear from you.


subiquity/Install/install/postinstall/install_build-essentials returned non-zero exit status 100

Not sure how to get to the local filesystem when the installer fails on a VMware Fusion build. The crash log is written to /var/crash/nnnnn.nnnnn.install_fail.crash

This http/user-data got me around the above crash/error, I commented out the build-essential package
#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: vagrant
    password: '$6$iCc.WH.j$EuCSsvXtnIX2UnrunKZHApB3uvKuxplkAL1UBtBkab047y/jyn9WnpVAkc57jtqSv.hsLGje.milvneydC.Cw/'
    username: vagrant
  network:
    version: 2
    ethernets:
      enp0s3:
        dhcp4: true
        dhcp-identifier: mac
  ssh:
    install-server: true
  packages:
  #  - build-essential
    - perl
  late-commands:
    - 'echo "vagrant        ALL=(ALL)       NOPASSWD: ALL" > /target/etc/sudoers.d/vagrant'
    - chmod 440 /target/etc/sudoers.d/vagrant
    - apt-get -y install linux-headers-$(uname -r)
  locale: en_US
  keyboard:
    layout: us
    variant: ''

The problem now is Ethernet interface ens32 does not get assigned an IP address.


fedimint client rpc

hopefully we will get a fedimint typescript bindings out of this

@dpc thoughts, this is similar to cli commands in modules

I wanted more typed api and more fine grain control to integrator of rpc, eventually I want to use this rpc in fedi app.
the typed api means we can generates typescript definitions automatically.
@dpc

I wanted more typed api and more fine grain control to integrator of rpc, eventually I want to use this rpc in fedi app.
the typed api means we can generates typescript definitions automatically.
@dpc

You can still have a types with #[derive(Deserialize)], make them public in some xyz-module-rpc and use them to generate bindings, and deserialize the body of the request using them so you know it stays correct, etc. The reason we use Dyn* magic in other places is so that we can have bunch of other methods on them, have a consensus binary encoding etc. With RPC, we know we are basically going to be sending json back and forth - serde_json::Value seems just right for the task.
Rpc and cli are fundamentally very much alike, so why would rpc needs all this extra machinery? In particular rpc not being must a method on the module instance (like cli handler is) seems to introduce a lot of extra complexity.
@maan2003

updated @dpc

For the record. We had a call with @maan2003 about this one. He punched me over the camera for being annoying. Just kidding, just kidding! We're going to make some tweaks, but nothing big and we seem to agree on everything.

Now this PR is much simpler, only containing rpc changes.
wasm will be a separate PR.


Need documentation for enabling HTTPS on Linux / OS X

The docs at http://docs.asp.net/en/latest/publishing/linuxproduction.html describe how to set up a reverse-proxy from nginx, and they hint that you can do this to enable HTTPS. However, they don't provide any explicit instructions.
If you just add the minimal nginx config to enable SSL, i.e.,
server {
    listen       443;
    ssl                  on;
    ssl_certificate      ssl/nginx.crt;
    ssl_certificate_key  ssl/nginx.key;
    ... other stuff ...
}

... then it will appear to work, but there's a subtle problem. ASP.NET won't know the requests are being served over HTTPS, and so it won't know to do anything that it normally does over HTTPS (such as mark auth cookies as SSL-only).
I understand there's some sort of ASP.NET Core middleware you're supposed to enable, or HTTP headers you're meant to configure in nginx. This should be made clear in docs.

having similar problem as well. There is Kestrel.https package but it lacks documentation.

migrated to #1251

@Rick-Anderson Hmm. I haven't verified this. I'm reopening the bug for now. I'll close after I'm able to verify this is no longer needed.

@shirhatti  actually I just migrated it to #1251 but we'll keep it open.

Issue is dated, however looking at what we have now documented for nginx and Apache is well documented for what is needed in the reverse proxy.  For ASP.NET Core to know that the request are SSL and/or to listen on 443. The following must be added.
NuGet package Microsoft.AspNetCore.Kestrel.Https
and in WebHostBuilder add
    var host = new WebHostBuilder()
    .UseKestrel(options =>
     {
          options.UseHttps("MyCert.pfx", "MyPassword");
     })
    .UseUrls("http://localhost:5000", "https://localhost:5001");

cc:\ @blowdart

@spboyer I'm not sure adding that code addresses the issue, which is that if you're reverse-proxying from HTTPS to HTTP, then ASP.NET is taking requests on HTTP, and hence won't flag cookies to the browser as HTTPS-only.
Isn't there a way to tell ASP.NET that even though a certain request is coming in on HTTP, that it should be treated as a secure connection, since it is secure beyond the reverse-proxy?

@SteveSandersonMS I believe that by adding the XForwardedProto option on UseForwardedHeaders middleware will solve this.
app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

See: https://github.com/aspnet/Docs/issues/2384#issuecomment-270195458 from @Tratcher

Excellent - that's exactly the functionality I was hoping for. And I see it's mentioned at https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction now too!
Closing because I think all the points here are now addressed, but please reopen if you disagree!


Benchmarking Runs Forever [Question]

I ran YCSB with both parameters - operationcounts & maxexecutiontime. Now according to the documentation, the benchmarking should stop whichever occurs earlier. However my benchmarking never stops and I receive this on my prompt periodically - "Still waiting for thread Thread 1 to complete. Workload status: true". I see the code of the TerminatorThread which tries to Join the benchmarking threads after waiting for maxexecutiontime period. However if it is unable to join it in first go, then it keeps on retrying after every 2 second. Which is why my benchmarking runs forever.
I am creating a Step Benchmarking and hence I need to run one workload for strictly 10 minutes and then start another workload. Is there any way I can make sure the benchmarking stops withing say 10 minutes + 30 second (padded stopping time.) ? Any request that doesn't respond within this time can be safely considered a fail.

Which workload is this happening in? Which JVM are you using? Which OS?
The biggest problem I've had when trying to use time bound is the lag when waiting for workload d to handle its set up.

Workload: Core Workload - I have customized this to benchmark Web Services but have not touched the part that deals with any threads (Worker, Client or Terminator).
Java: Java HotSpot  64 Bit Server VM - 1.8.0_72
OS: Mac OS X El Captain 10.11.3

Customized the code or customized the workload configuration file?

Customized the CoreWorkload.java file since YCSB doesn't support benchmarking of Web Services and I needed many other runtime configurable parameters. I have that code uploaded on GitHub here: https://github.com/shivam-maharshi/YCSB4WebServices/blob/master/src/main/java/com/yahoo/ycsb/workloads/CoreWorkload.java. This is not a clean code and was only required for my specific benchmarking purpose.

Just to set expectations: it's going o be difficult to figure out if the issue is in YCSB or your changes (more so because it looks like you started with the base YCSB+some changes rather than forking the repo).
Could you explain what the fundamental issue is with i.e. writing a datastore binding for your web service? That would make it easier to isolate issues in the core framework from the changes specific to your use case.
I'll try to get a sense of the code this evening.

Yes you are right. I had a conversation with Andy Kruth and I've already forked YCSB and started to create a Rest Client binding module. That work is under progress.
The reason I started to not write a binding previously was because writing it cleanly was gonna take a little more time, which I unfortunately did not have. Hence I decided to go with this approach, even when I knew it was wrong. Long story short, if you can get sense of the code, it would be great. However I feel that this is not introduced due to changes in CoreWorkload, since it does not manipulate threads in any way. I am hoping to create a pull request for the REST client I am working on this week. If we run into the same issue with that module as well, then it would be easier to deal with it.
Thanks for your response!

@shivam-maharshi - Can you attach the command you are running, the workload configuration file you are using and also the output? These might help figure out context of the issue you are seeing.

@shivam-maharshi - did you solve your issue?

@kruthar - I resolved this issue for myself by setting a maximum timeout for individual requests, in CRUD operations, in the client. (Implementation was simply running a timer thread in parallel to stop the operation if it exceeded the given time limit.)
Coming back to the main point. YCSB can run forever even if "maxexceutiontime" property is mentioned in the workload file. This is because Terminator Thread only tries to finish the benchmarking once "maxexceutiontime" has passed but does not guarantee it.  This can happen when the DB Server does not respond to a request for long time. In such cases TerminatorThread will indefinitely try to join the worker thread but will never be successful, hence the benchmarking will run forever.
Why hasn't it been reported so far?
The reason that this hasn't been reported so far is because most of the clients do have a connection or read timeout configured in the client-binding. Hence if the worker thread gets stuck, they will automatically be failed once those timeouts are reached. Since most (in-fact all) clients have timeouts I feel that the YCSB handling for "maxexecutiontime" is fine the way it is currently. Once you've read this please let me know. I will close this item since it is not an issue, it is a design decision taken by YCSB.

should we be sending an interrupt to the client threads?

That can be done but it can have an implication on the benchmarking results if not handled properly. For example if 10 client threads have just sent out some requests and "maxexecutiontime" has been reached. Now if we decide to interrupt those client threads, then the question arises that how should that be handled? Should the operations for those interrupted client threads be considered as fail or pass? IMO it would make sense to not count those operations in the benchmarking results at all.

Okay, I'm fine closing this as-is. Would probably be worth mentioning the important of driver timeouts when we get around to making a datastore binding contribution guide.

I just ran into this with the accumulo client while testing 0.8.0-RC3 (#678). Due to a cluster misconfiguration I filled HDFS during a load phase. Since I had client-side buffering on for the accumulo client, the terminator thread waited for shutdown to complete, which waited for the buffered writes to flush, which happily waited for Accumulo to recover.
+ ycsb-accumulo-binding-0.8.0-RC3/bin/ycsb load accumulo -P ycsb-accumulo-binding-0.8.0-RC3/workloads/workloade -p table=ycsb_workloade -cp /etc/accumulo/conf -p accumulo.columnFamily=family -p accumulo.instanceName=accumulo -p accumulo.zooKeepers=YYYYY -p accumulo.username=ycsb -p accumulo.password=XXXXXX -s -p maxexecutiontime=1200 -threads 30 -jvm-args=-Xmx8192m -p recordcount=2147483647 -p insertstart=0 -p insertcount=429496729 -p exportfile=/root/ycsb-load_workloade-accumulo-test-1.gce.cloudera.com-measurements.json -p exporter=com.yahoo.ycsb.measurements.exporter.JSONArrayMeasurementsExporter

real    469m43.223s
user    8m17.917s
sys     5m9.610s

Once I saw the cluste's status I fixed things, which then allowed Accumulo to recover, which then allowed the final writes to flush, which finally allowed the thread to complete and the client to exit. Bit over my target limit of 20 minutes though. ;)

i meet the same problem when i test cassandra using ycsb,how to solve?please

same problem with SQL mysql/mariadb - YCSB 0.17.0


Needs to reference new createMiddlewareClient function

https://github.com/supabase/auth-helpers/blob/6e349e23039942120bf7b81f8e2b40d50f5b2f7b/examples/nextjs/middleware.ts#L9
This is referencing deprecated functionality.

Thanks for letting us know. It’s on the list 👍 the one in this repo is used for internal development of the auth helpers and is not always up to date.
This is the best one to use as a reference: https://github.com/supabase/supabase/tree/master/examples/auth/nextjs


Swift--use_frameworks!--[!]

[!] The 'Pods-XXX' target has transitive dependencies that include static binaries: (Pods/OpenSSL/lib/libcrypto.a and /Pods/OpenSSL/lib/libssl.a)
delete "use_frameworks!" ,  pod openssl is ok
but other pod is lose ------  [!] Pods written in Swift can only be integrated as frameworks; add use_frameworks! to your Podfile or target to opt into using it. The Swift Pod being used is: XXX

This does not seem to be an openssl issue.

yes Iwant to help me to get key hash Android for my apps


GHC panic with 9.2.8

I'm getting the following error when trying to compile this project with GHC 9.2.8:
Failed to build generic-lens-core-<IP_ADDRESS>.
Build log (
/home/work/.cabal/logs/ghc-9.2.8/generic-lens-core-<IP_ADDRESS>-2e45a1ae0108e4e64aae3ab321e793cacd6055af69d18e60c07e6871761c9d71.log
):
Configuring library for generic-lens-core-<IP_ADDRESS>..
Preprocessing library for generic-lens-core-<IP_ADDRESS>..
Building library for generic-lens-core-<IP_ADDRESS>..
ghc: panic! (the 'impossible' happened)
  (GHC version 9.2.8:
        lookupModuleWithSuggestions
  generic-lens-core-<IP_ADDRESS>-5923e7b30149b4fc926c67fe1cd2dec37e6b3610dfbbfde4320c6235477868dc Data.Generics.Internal.VL.Traversal
  Call stack:
      CallStack (from HasCallStack):
        callStackDoc, called at compiler/GHC/Utils/Panic.hs:181:37 in ghc:GHC.Utils.Panic
        pprPanic, called at compiler/GHC/Unit/State.hs:1890:48 in ghc:GHC.Unit.State

Please report this as a GHC bug:  https://www.haskell.org/ghc/reportabug

Error: cabal: Failed to build generic-lens-core-<IP_ADDRESS> (which is required by
exe:example from cuddle-<IP_ADDRESS> and exe:cuddle from cuddle-<IP_ADDRESS>). See the
build log above for details.

Should now have been fixed.


Unable to verify the first certificate

  Error: unable to verify the first certificate
      at TLSSocket.onConnectSecure (_tls_wrap.js:1049:34)
      at TLSSocket.emit (events.js:182:13)
      at TLSSocket._finishInit (_tls_wrap.js:631:8)

I am trying to use api with https, maybe there is something wrong with certificate.
Is it possible to disable the verification of the certificate?

Hi! If the API is public, is it possible to send to your configuration file so that I can investigate this issue ?
If this is a bug, I can work on HTTPS support. If the certificates are not valid, you may try to disable security checks, although I cannot recommend it, using NODE_TLS_REJECT_UNAUTHORIZED=0 npx @antoinchalifour/memento

@antoinechalifour Thanks. NODE_TLS_REJECT_UNAUTHORIZED=0 works.
No, its our internal api.
Some feedback:
When this error occurs memento returns 500 error and it isn't obvious it's server response or memento error.
I think is this case memento should return error message like Memento cannot process this request
Also, Is it possible to use request urls inside .memento-cache instead of hashes? I would like to modify some responses for testing purposes and it would be easy to find these responses.

Glad it worked!
Yes memento should definitely send a message on internal server error.
Regarding the folder names, previous versions implemented this but I faced a issues regarding folder named and length so I decided to use the hash.
As an alternative, I am working on a new command memento edit which opens the response on your editor. Planning to release it in a few weeks!
Thanks for your feedback :)


Add concept of caller to IsActiveContext

like ProfileDataRequestContext

Turns out this already exists...

Turns out this already exists...

We're getting old.