java.lang.UnsatisfiedLinkError when attempting to open a model

Steps to reproduce
File > Open Model..., select Models\Gait10dof18musc\OutputReference\subject01.osim.
Expected result
Model opens.
Actual result

java.lang.UnsatisfiedLinkError: org.opensim.modeling.opensimCommonJNI.ComponentsList_begin__SWIG_0(JLorg/opensim/modeling/ComponentsList;)J
	at org.opensim.modeling.opensimCommonJNI.ComponentsList_begin__SWIG_0(Native Method)
	at org.opensim.modeling.ComponentsList.begin(ComponentsList.java:47)
	at org.opensim.view.NavigatorByTypeModel.buildCollections(NavigatorByTypeModel.java:104)
	at org.opensim.view.NavigatorByTypeModel.(NavigatorByTypeModel.java:96)
	at org.opensim.view.nodes.OneModelNode.(OneModelNode.java:46)
	at org.opensim.view.ExplorerTopComponent.update(ExplorerTopComponent.java:308)
	at java.util.Observable.notifyObservers(Observable.java:159)
	at org.opensim.view.pub.OpenSimDB.addModel(OpenSimDB.java:155)
	at org.opensim.view.pub.OpenSimDB.addModel(OpenSimDB.java:143)
	at org.opensim.view.FileOpenOsimModelAction$2.run(FileOpenOsimModelAction.java:101)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Environment and GUI version
AppVeyor artifact OpenSim-b4cabd07-2018-05-17-win64.exe

Need some context: path, plugins involved.

No plugins involved. I downloaded the AppVeyor artifact to my desktop and installed to a directory residing in the same parent directory as all the other betas (but with a unique directory name). No errors/warnings during installation. I then started OpenSim, installed resources by typing "installResources()" in the ScriptingShell window, and attempted to open a model. I think I followed all the same steps as for previous versions, so I'm not really sure what I'm looking for. If you think this is a local issue, I can test on a different machine later today.

Tom, not sure if new mechanism to load falls by Chris is in, if not did you
change your path otherwise?
On Fri, May 18, 2018, 8:57 AM Tom Uchida<EMAIL_ADDRESS>wrote:

No plugins involved. I downloaded the AppVeyor artifact to my desktop and
installed to a directory residing in the same parent directory as all the
other betas (but with a unique directory name). No errors/warnings during
installation. I then started OpenSim, installed resources by typing
"installResources()" in the ScriptingShell window, and attempted to open a
model. I think I followed all the same steps as for previous versions, so
I'm not really sure what I'm looking for. If you think this is a local
issue, I can test on a different machine later today.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/opensim-org/opensim-gui/issues/763#issuecomment-390252586,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADyccFDmUoDTydB_b9ep5mKP0wnwUCDoks5tzu91gaJpZM4UENdH
.

Tom, not sure if new mechanism to load falls by Chris is in, if not did you
change your path otherwise?

No it has not been merged.

did you change your path otherwise?

No, I have not changed my path. Anyway, I thought that OpenSim no longer relied on the path :confused:

It shouldn't but you broke it for the first time in years 😀
On Fri, May 18, 2018, 10:53 AM Tom Uchida<EMAIL_ADDRESS>wrote:

did you change your path otherwise?
No, I have not changed my path. Anyway, I thought that OpenSim no longer
relied on the path 😕
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/opensim-org/opensim-gui/issues/763#issuecomment-390283822,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADyccNJ7DSSn57oBHCOwofHZKuBUY-xhks5tzwqXgaJpZM4UENdH
.

Ok, if it's something I did locally, then don't worry about it; I'll try to figure it out over the weekend.

If you execute one of the executables in bin folder on command line you may
get more information. I'll try to download and run from appveyor myself.
On Fri, May 18, 2018, 11:10 AM Tom Uchida<EMAIL_ADDRESS>wrote:

Ok, if it's something I did locally, then don't worry about it; I'll try
to figure it out over the weekend.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/opensim-org/opensim-gui/issues/763#issuecomment-390288608,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADyccI9szpxxK4TUwme6CNMQg4gALlHXks5tzw6rgaJpZM4UENdH
.

This could be related to https://github.com/opensim-org/opensim-core/pull/2176

That's why we need to see the actual missing symbol. Dependency walker may do it or an executable that loads the dlls including java test cases

You were right Chris, can you undo the change and force Gui rebuild. Or let me know and I'll do it. Thanks

@aymanhab are you sure it isn't because .java files in the GUI need to be synced up? Perhaps there are lingering *.java files that should be deleted.

I downloaded the AppVeyor artifact again and reinstalled. This time, I noticed the following :red_circle: FileNotFoundException Exceptions immediately after opening the GUI for the first time (the :red_circle: may have been there on startup last night and I just didn't notice it).

java.io.FileNotFoundException: C:\Users\tkuchida\OpenSim 4.0 appveyor _180517\OpenSim b4cabd07-2018-05-17\platform\modules\org-netbeans-core-ui.jar (The system cannot find the path specified)
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.(ZipFile.java:225)
	at java.util.zip.ZipFile.(ZipFile.java:155)
	at java.util.jar.JarFile.(JarFile.java:166)
	at java.util.jar.JarFile.(JarFile.java:103)
	at sun.net.www.protocol.jar.URLJarFile.(URLJarFile.java:93)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:109)
	at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:152)
	at org.netbeans.core.startup.layers.BinaryFS$BFSFile.getInputStream(BinaryFS.java:906)
Caused: java.io.FileNotFoundException: Cannot find 'jar:file:/C:/Users/tkuchida/OpenSim%204.0%20appveyor%20_180517/OpenSim%20b4cabd07-2018-05-17/platform/modules/org-netbeans-core-ui.jar!/org/netbeans/core/ui/resources/SwingBrowser.xml'
	at org.netbeans.core.startup.layers.BinaryFS$BFSFile.getInputStream(BinaryFS.java:909)
	at org.openide.filesystems.MultiFileObject.getInputStream(MultiFileObject.java:666)
	at org.openide.filesystems.MultiFileObject.getInputStream(MultiFileObject.java:666)
	at org.netbeans.modules.openide.loaders.FileEntityResolver$DTDParser.parse(FileEntityResolver.java:419)
Caused: java.io.IOException: Parsing<EMAIL_ADDRESS>Cannot find 'jar:file:/C:/Users/tkuchida/OpenSim%204.0%20appveyor%20_180517/OpenSim%20b4cabd07-2018-05-17/platform/modules/org-netbeans-core-ui.jar!/org/netbeans/core/ui/resources/SwingBrowser.xml'
	at org.netbeans.modules.openide.loaders.FileEntityResolver$DTDParser.parse(FileEntityResolver.java:449)
	at org.netbeans.modules.openide.loaders.FileEntityResolver.getEnvForIDO(FileEntityResolver.java:175)
	at org.netbeans.modules.openide.loaders.FileEntityResolver.getEnvironment(FileEntityResolver.java:168)
	at org.openide.loaders.Environment.findForOne(Environment.java:131)
	at org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.java:714)
	at org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.java:705)
	at org.openide.loaders.InstanceDataObject.getCookieFromEP(InstanceDataObject.java:622)
	at org.openide.loaders.InstanceDataObject.getCookie(InstanceDataObject.java:652)
	at org.openide.loaders.FolderInstance.acceptDataObject(FolderInstance.java:417)
	at org.openide.loaders.FolderInstance.defaultProcessObjects(FolderInstance.java:798)
	at org.openide.loaders.FolderInstance.access$000(FolderInstance.java:103)
	at org.openide.loaders.FolderInstance$1R.init(FolderInstance.java:693)
	at org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:728)
	at org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
	at org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
	at org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:1059)
	at org.openide.loaders.FolderList.createBoth(FolderList.java:879)
	at org.openide.loaders.FolderList.getObjects(FolderList.java:564)
	at org.openide.loaders.FolderList.access$600(FolderList.java:77)
	at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
	at org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.openide.util.RequestProcessor$Processor.doEvaluate(RequestProcessor.java:2111)
	at org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:1675)
	at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:332)
	at org.openide.loaders.FolderInstance.instanceCreate(FolderInstance.java:281)
	at org.openide.loaders.FolderLookup.instanceForCookie(FolderLookup.java:222)
	at org.openide.loaders.FolderInstance$HoldInstance.instanceCreate(FolderInstance.java:1157)
	at org.openide.loaders.FolderLookup.createInstance(FolderLookup.java:166)
	at org.openide.loaders.FolderInstance.defaultProcessObjectsFinal(FolderInstance.java:888)
	at org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:730)
	at org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
	at org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
	at org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:1059)
	at org.openide.loaders.FolderList.createBoth(FolderList.java:879)
	at org.openide.loaders.FolderList.getObjects(FolderList.java:564)
	at org.openide.loaders.FolderList.access$600(FolderList.java:77)
	at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
	at org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)

java.io.FileNotFoundException: C:\Users\tkuchida\OpenSim 4.0 appveyor _180517\OpenSim b4cabd07-2018-05-17\ide\modules\org-netbeans-modules-xml-catalog.jar (The system cannot find the path specified)
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.(ZipFile.java:225)
	at java.util.zip.ZipFile.(ZipFile.java:155)
	at java.util.jar.JarFile.(JarFile.java:166)
	at java.util.jar.JarFile.(JarFile.java:103)
	at sun.net.www.protocol.jar.URLJarFile.(URLJarFile.java:93)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:109)
	at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:152)
	at org.netbeans.core.startup.layers.BinaryFS$BFSFile.getInputStream(BinaryFS.java:906)
Caused: java.io.FileNotFoundException: Cannot find 'jar:file:/C:/Users/tkuchida/OpenSim%204.0%20appveyor%20_180517/OpenSim%20b4cabd07-2018-05-17/ide/modules/org-netbeans-modules-xml-catalog.jar!/org/netbeans/modules/xml/catalog/resources/ProjectSettings.xml'
	at org.netbeans.core.startup.layers.BinaryFS$BFSFile.getInputStream(BinaryFS.java:909)
	at org.openide.filesystems.MultiFileObject.getInputStream(MultiFileObject.java:666)
	at org.openide.filesystems.MultiFileObject.getInputStream(MultiFileObject.java:666)
	at org.netbeans.modules.openide.loaders.FileEntityResolver$DTDParser.parse(FileEntityResolver.java:419)
Caused: java.io.IOException: Parsing<EMAIL_ADDRESS>Cannot find 'jar:file:/C:/Users/tkuchida/OpenSim%204.0%20appveyor%20_180517/OpenSim%20b4cabd07-2018-05-17/ide/modules/org-netbeans-modules-xml-catalog.jar!/org/netbeans/modules/xml/catalog/resources/ProjectSettings.xml'
	at org.netbeans.modules.openide.loaders.FileEntityResolver$DTDParser.parse(FileEntityResolver.java:449)
	at org.netbeans.modules.openide.loaders.FileEntityResolver.getEnvForIDO(FileEntityResolver.java:175)
	at org.netbeans.modules.openide.loaders.FileEntityResolver.getEnvironment(FileEntityResolver.java:168)
	at org.openide.loaders.Environment.findForOne(Environment.java:131)
	at org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.java:714)
	at org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.java:705)
	at org.openide.loaders.InstanceDataObject.getCookieFromEP(InstanceDataObject.java:622)
	at org.openide.loaders.InstanceDataObject.getCookie(InstanceDataObject.java:652)
	at org.openide.loaders.FolderInstance.acceptDataObject(FolderInstance.java:417)
	at org.openide.loaders.FolderInstance.defaultProcessObjects(FolderInstance.java:798)
	at org.openide.loaders.FolderInstance.access$000(FolderInstance.java:103)
	at org.openide.loaders.FolderInstance$1R.init(FolderInstance.java:693)
	at org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:728)
	at org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
	at org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
	at org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:1059)
	at org.openide.loaders.FolderList.createBoth(FolderList.java:879)
	at org.openide.loaders.FolderList.getObjects(FolderList.java:564)
	at org.openide.loaders.FolderList.access$600(FolderList.java:77)
	at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
	at org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.openide.util.RequestProcessor$Processor.doEvaluate(RequestProcessor.java:2111)
	at org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:1675)
	at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:332)
	at org.openide.loaders.FolderInstance.instanceCreate(FolderInstance.java:281)
	at org.openide.loaders.FolderLookup.instanceForCookie(FolderLookup.java:222)
	at org.openide.loaders.FolderInstance$HoldInstance.instanceCreate(FolderInstance.java:1157)
	at org.openide.loaders.FolderLookup.createInstance(FolderLookup.java:166)
	at org.openide.loaders.FolderInstance.defaultProcessObjectsFinal(FolderInstance.java:888)
	at org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:730)
	at org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
	at org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
	at org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:1059)
	at org.openide.loaders.FolderList.createBoth(FolderList.java:879)
	at org.openide.loaders.FolderList.getObjects(FolderList.java:564)
	at org.openide.loaders.FolderList.access$600(FolderList.java:77)
	at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
	at org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)

I don't think so, those would not compile to begin with since their native implementation in the jni classes would be missing. Doesn't automated build copy these?

@aymanhab I've opened https://github.com/opensim-org/opensim-core/pull/2194

I don't think so, those would not compile to begin with since their native implementation in the jni classes would be missing.

I'm not sure I follow.

Doesn't automated build copy these?

yes but some .java files need to be deleted.

Ah okay I understand now. Thanks for explaining.


Clone RTCMultiConnection free URL

I have a chat app that works perfectly on the following free socket.io server, but when I install RTCMulticonnection to my own VPS it works, but my chat app doesn't work, I need to know the exact version running on the following URL, anybody know?
https://rtcmulticonnection.herokuapp.com:443/
Thanks for any information...

Answered. RTCMultiConnection 2.2.0

Answered. RTCMultiConnection 2.2.0


Set "releases_created" (and several other outputs) are even when release doesn't happen

TL;DR
"releases_created" says "true if the release was created, false otherwise", but is unset if a release wasn't created. This is true for most of the outputs described on this page: https://github.com/google-github-actions/release-please-action#outputs.
Expected behavior
I expected the output to be set to false as described in the documentation.
Observed behavior
The outputs were all unset.
Action YAML
N/A

Log output
No response
Additional information
Having the output unset is really hard to debug -- it would be better if they are explicitly set (even to "" or "none" for the ones that aren't used when a release isn't made) so that these values can still be used.

It's also a problem for me. I was trying to rely on the output values of major/minor/patch to get the current version, even when no new release is created.

This is fixed in v4. We set the releases_created and prs_created if we tried to create them.
If you set, skip-github-release: true, then the releases_created output is omitted. Similarly, if you set skip-github-pull-request: true, then the prs_created output is omitted.


Allow closed milestone to be selected

Currently the generator will fail if the requested milestone is closed.
With this change open and closed milestones are queried, sorted by
the latest date in descending order to make it likely that recent
milestones appear in the first page of results.

Nice to see this PR. I ran into this behavior too. Are there any plans to add this into the 0.0.5?


Wobbly text near top edge of display

I'm observing wobbly text (characters out by 1 pixel on y-axis) when drawn at or near the top-most edge of the display. The following snippet of code demonstrates this:
  for (int x = 0, y = -5; y < height; x += 80, y++)
  {
     char txt[30];

     if (x > width - 80)
     {
        x = 0;
        y += 31;
     }

     sprintf(txt, "(y = %d)", y);
     nvgFontFace(vg, "sans");
     nvgFontSize(vg, 15.0f);
     nvgTextAlign(vg, NVG_ALIGN_LEFT | NVG_ALIGN_TOP);
     nvgFillColor(vg, nvgRGBA(0, 0, 0, 255));
     nvgText(vg, x, y, "feedback", NULL);
     nvgText(vg, x, y + 16, txt, NULL);
  }

Result seen in the following enlarged image. At this particular font size, positions y=-1 to y=1, show the wobbly text result. But other font sizes have a similar effect at different ranges of positions, all near the y=0 position.

The issue appears to be pre-transformation, as swapping the above nvgText() calls with the following results in all the text having this problem:
      nvgSave(vg);
      nvgTranslate(vg, i, y);
      nvgText(vg, 0, 0, "feedback", NULL);
      nvgText(vg, 0, 16, txt, NULL);
      nvgRestore(vg);

Problem appears to originate in fontstash; though I can't be sure of the original intention of the author so the same modification might equally be made in a different location. (Such as making font metrics like ascent whole numbers where these are grid fit aligned.)
It looks like the consequence of cropping a float as an int using a cast when values cross the positive/negative boundary. In this case we have short and tall glyphs with different negative yoff values. These whole numbers are added to a slightly smaller float y position, with fraction, resulting in either a small negative float (tall glyphs) or positive float (small glyphs.) The cast is rounding up the negative value and rounding down the positive, resulting in the characters being drawn +/- 1 pixel out of step from each other.
As I say, I wasn't certain of the original intention of the code, so I chose a fix that seemed like the nearest thing, namely to change the cast to a call to floor().
--- nanovg/src/fontstash.h	Wed Mar 11 21:12:37 2020
+++ nanovg/src/fontstash.h	Wed Mar 18 11:13:38 2020
@@ -1228,2 +1228,2 @@ static void fons__getQuad(FONScontext* stash, FONS
-		rx = (float)(int)(*x + xoff);
-		ry = (float)(int)(*y + yoff);
+		rx = floor(*x + xoff);
+		ry = floor(*y + yoff);
@@ -1241,2 +1241,2 @@ static void fons__getQuad(FONScontext* stash, FONS
-		rx = (float)(int)(*x + xoff);
-		ry = (float)(int)(*y - yoff);
+		rx = floor(*x + xoff);
+		ry = floor(*y - yoff);

Another option would perhaps be to round the input y value at an earlier stage. But I assumed the '(float)(int)' cast was there expecting to deal with fractions.

Thanks for looking into it. The intent is to remove the fractional part to make sure the glyphs are rendered at whole pixels to keep the glyphs from blurring. Floor indeed is the right solution here.


[feature request] Enhancements for logging

I've been using this for a while as part of an archiving cronjob, and it's worked great. My one gripe is how chatty the logs are, since the app prints out information for every single episode. Altogether, each run generates over 5MB of output, most of it redundant. I suppose I could diff the logs on each run and store the differences, but it would be great if there was a flag to make podcast-dl only output (and/or act upon) changes in the feed since the last run.
Currently I use the following script to automate the invocation of podcast-dl for each feed:
#!/bin/env python3

PDL_BIN = 'podcast-dl'

from configparser import ConfigParser, ExtendedInterpolation
import subprocess
import sys

import fasteners

cp = ConfigParser(interpolation=ExtendedInterpolation(), delimiters=('=',))

with open('podcast-dl.ini') as f:
    cp.read_file(f)

dl_sections = cp.sections()

for sec in dl_sections:
    print(f"Running for {sec}")
    conf = cp[sec]
    args = [PDL_BIN]

    if not conf.get('url'):
        print(f"Missing url for section {sec}")
        continue
    elif not conf.get('outdir'):
        print(f"Missing outdir for section {sec}")
        continue

    args.extend(("--url", conf['url']))
    args.extend(("--out-dir", conf['outdir']))

    if 'archive' in conf:
        args.extend(("--archive", conf['archive']))

    if 'template' in conf:
        args.extend(("--episode-template", conf['template']))

    if 'regex' in conf:
        args.extend(("--episode-regex", conf['regex']))

    if 'extra_options' in conf:
        args.extend(conf['extra_options'].split())

    lock = fasteners.InterProcessLock(f"{conf['outdir']}/.pdl_lock")

    if not lock.acquire(blocking=False):
        print("lock exists, skipping")
        continue

    with lock:
        subprocess.run(args)

It's nothing special, but makes the cron entry very straightforward. All that's missing is some way to monitor what happens in each run in a concise form, without the repeat entries or fancy progress indicator so it is easier to review the logs.

Hey @calebj!
Thanks for opening an issue. I think this is a good feature quest. I've been meaning to implement a --log-level flag with the following settings:

normal: Leave as-is. Default logging output (all logs, warnings, and critical errors).
quiet: Only important info (download started, download complete, critical errors).
silent: Only critical errors that cause the script to fail.

Sounds like --log-level quiet would fit your use case. Let me know what you think!

You're right, I think a quiet level would fit perfectly.
The one extra thing that might make it even better isn't related to logging, but a cache of the RSS with a quick check of the Last-Modified and/or ETag could make subsequent runs much quicker for large feeds (assuming the last run fetched all items it needed).

Added support for the LOG_LEVEL environmental variable in the latest release. Ran it through a few feeds with the quiet setting and I think it should greatly reduce the log output size you saw.
Regarding caching RSS feeds: Let me do some thinking/research on it. Slightly hesitant because it starts to the move the project into more of a "service" category, but I definitely see the value for large feeds. 👍

This is much better, thank you!
As for caching, it seems like a free optimization to me. If the server provides the headers that indicate cachable content, I don't see why podcast-dl shouldn't take advantage of it. Conversely, if certain values are present for Cache-Control, the client knows that it shouldn't cache anything. It's reasonable to leave it up to the server and to cache what it allows us to, and I don't think doing so changes the category of the program at all.

Certainly. I think a good first simple version could exclusively check for the Etag save a podcast.cache.json for additional runs. I'll spin this conversation out into a separate issue for tracking. #23


cmd/6l: -shared generated invalid relocations

I guess this falls into the category of things not really guaranteed to work, but:
mwhudson@narsil:shared-lib-stuff$ cat trivialmain.go
package main

func main () {}
mwhudson@narsil:shared-lib-stuff$ go build -ldflags -shared trivialmain.go
# command-line-arguments
/usr/bin/ld: /var/tmp/go-link-teMwJN/go.o: relocation R_X86_64_TPOFF32 against `runtime.tlsg' can not be used when making a shared object; recompile with -fPIC
/var/tmp/go-link-teMwJN/go.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
/opt/opensource/go/pkg/tool/linux_amd64/6l: running gcc failed: unsuccessful exit status 0x100

I think this was broken by 90093f0634d0143c6294e827e5c83fc0818ff8aa.  For ARM the roughly analogous change (b377c9c6a9b720d0897d298652bebd3887ceeb46) was fixed by  9ed5995cfe4c217c1291ced9c4a70334383df226.

I don't think -shared is supported except for linux/arm....

Well yes, but I'm working on shared libraries for go and so I need this sort of thing to work :)  I don't expect anyone else to fix it.

https://github.com/mwhudson/go/compare/master...5391ba7e0d32f0953992be72c05058255a54aae7 sort of fixes this, as well as being terrible in a variety of ways.

Is the command in the issue description supposed to work as is?  I'm still getting the same error as in the description on amd64 linux.

Unfortunately I bungled a rebase and dropped part of the change; see https://go-review.googlesource.com/#/c/6802/
Even then you need to pass -shared to the compiler and assembler as well as the linker.

Okay, I'm indeed able to build with -shared passed to all the commands, with your new patch.
Btw., how are you passing -shared to the assembler?  I've had to add -asmflags to the go/build command and pass that along.

Same! https://go-review.googlesource.com/#/c/4280/
Eventually I'll add the flags from the "Execution Modes" doc by @ianlancetaylor I hope.

I'm trying to make a static library in go (devel +97f854c) that exports a function that gets called by an apache mod (apxs) and get the following error.  I compile my go program with "go build -buildmode c-archive libxxx.go".  When try to comple and link with my apache mod using "apxs -c mod_authnz_xxx.c libxxx.a" I get:
*** Warning: Linking the shared library mod_authnz_xxx.la against the
*** static library libxxx.a is not portable!
/usr/bin/ld: libxxx.a(go.o): relocation R_X86_64_TPOFF32 against `runtime.tlsg' can not be used when making a shared object; recompile with -fPIC
libxxx.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
apxs:Error: Command failed with rc=65536
.
make: *** [mod_authnz_xxx.la] Error 1
I added the "-x" option shows that my go code is compiled with -fPIC but this appears to be a problem related to the fact it's a static library (using a c-shared library works).

replying on a tangentially related closed bug is not really useful
this seems entirely to be working as designed, you cannot make c-archive
into a shared object, but c-shared you can
On 20/12/2015 10:57 am, "pjbgtnj"<EMAIL_ADDRESS>wrote:

I'm trying to make a static library in go (devel +97f854c) that exports a
function that gets called by an apache mod (apxs) and get the following
error. I compile my go program with "go build -buildmode c-archive
libxxx.go". When try to comple and link with my apache mod using "apxs -c
mod_authnz_xxx.c libxxx.a" I get:
*** Warning: Linking the shared library mod_authnz_xxx.la against the
*** static library libxxx.a is not portable!
/usr/bin/ld: libxxx.a(go.o): relocation R_X86_64_TPOFF32 against
`runtime.tlsg' can not be used when making a shared object; recompile with
-fPIC
libxxx.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
apxs:Error: Command failed with rc=65536
.
make: *** [mod_authnz_xxx.la] Error 1
I added the "-x" option shows that my go code is compiled with -fPIC but
this appears to be a problem related to the fact it's a static library
(using a c-shared library works).
—
Reply to this email directly or view it on GitHub
https://github.com/golang/go/issues/9652#issuecomment-166029755.


Catch exceptions in owfs module

Don't let problems in the owfs module cause Node-RED to die

Not quite sure what I meant when I raised this.
Errors come back from OWFS using the node-style error callback, not exceptions.


revised Compilers section per Raghu, add to General material

Compiler information edited for accuracy.

I'd like to see the compilers section added as its own file, versus being added into common.rst.
Also, the Nvidia compilers are not available everywhere (just Hera, I believe) and GCC should be mentioned as well.

The structural suggestion makes sense; I'll do that.
I'll also ask the Support Guys for clarity on Nvidia compilers, and GCC,
that is where and how we use it.
It probably makes sense to close this PR and resubmit when I've done this.
Thanks Chan.
On Fri, Sep 13, 2024 at 3:53 PM Chan Wilson @.***>
wrote:

I'd like to see the compilers section added as its own file, versus being
added into common.rst.
Also, the Nvidia compilers are not available everywhere (just Hera, I
believe) and GCC should be mentioned as well.
—
Reply to this email directly, view it on GitHub
https://github.com/NOAA-RDHPCS/noaa-rdhpcs.github.io/pull/200#issuecomment-2350052111,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A4T5JW4YEXKEQNVHE4LAGSLZWM7B7AVCNFSM6AAAAABOFXWMLCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJQGA2TEMJRGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

A couple of things here.

Right now, Compilers is accessed directly from the sidebar menu, it's
not in the "Systems" section. That was a SME suggestion. I don't care
whether it stays on the sidebar or goes under software; somebody make an
executive decision ok?
At this time, Common is the name of a folder that contains some but
not all material from CommonDocs. If you click the Systems title on the
sidebar, the section title that's displayed in General Information. If
you've got a more useflul title, I'll replace it.
I think there needs to be some category of general information for
users and the support team, even when the search capability is perfected.
Unless there really is absolutely no general information? There is a FAQ,
and that tab needs a new name b/c the Office Hours notes live there. I just
don't have a better idea yet.
I agree that things need to be organized better. Don't think I haven't
thought about it -- sadly if I was sure what "better" looks like you'd be
seeing it. There's more time for that exercise now, at least.

Regards,
Lis

On Wed, Sep 25, 2024 at 12:03 PM Seth Underwood @.***>
wrote:

@.**** requested changes on this pull request.
This should not be in the "systems" section, but in "software" under a
"compiler" page.
We really need to remove the "common" page from systems. Things need to be
organized better, and "common" is not specific enough.
—
Reply to this email directly, view it on GitHub
https://github.com/NOAA-RDHPCS/noaa-rdhpcs.github.io/pull/200#pullrequestreview-2328732421,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A4T5JW4XVU74TD6JE4UFAODZYLNF5AVCNFSM6AAAAABOFXWMLCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGMRYG4ZTENBSGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

#234 resolved this.


Character Encoding Incorrect

here is my .lnk file,one is japanese,another is chinese

here is my code
ShellLink shellLink  = new ShellLink(file); System.out.println(shellLink.getLinkInfo().getLocalBasePath());
and console out put:
O:\game\J�c����B\Start.exe A:\�½��ı��ĵ�.txt

my os is windows10 x64  Chinese version.
here is the sample .lnk files.
lnk.zip
when I change your code
localBasePath = data.readString(pos + size - data.getPosition());
to
localBasePath = new String(bytes,"GBK");
the "新建文本文档" file can be correct printlned on console,but another file is incorrect. I change Charset to 'Shift_JIS' the other "JＤ温泉。" file can be correct printlned.
is there a way to read the .lnk file's Charset ?

Hi,
On Windows:

Do NOT use Command Prompt / cmd.exe
Write a UTF-8 log file using Java
Compiling your application using -encoding UTF8.
Set up file logger to use UTF-8 too.

See example below: (I can NOT get this to work using CMD)
public class Main {
    public static void main(String[] args) {
	    System.out.println("こんにちは");
    }
}

Try to compile WITHOUT encoding:
javac.exe Main.java

- Main.java:3: error: unmappable character (0x81) for encoding windows-1252
-        System.out.println("�?�ん�?��?��?�");

(above error is for Cp1252, sorry, but very similar error should occur on other similar unmappable characters for Shift_JIS, GBK, etc).
This is because Java will use default encoding to COMPILE.  It needs to be compiled using UTF-8. 😠
- javac.exe Main.java
+ javac.exe -encoding UTF-8 Main.java

Ok, it is good!  But this will not work very well with Command Prompt / cmd.exe (at least not on my computer) because Command Prompt is very bad at displaying certain characters. 😠 😠
This does NOT work on my computer:
C:\> chcp 65001
Active code page: 65001

(I also installed Japanese language pack, change Terminal font and did NOT have success)
public class Main {
    public static void main(String[] args) {
	    System.out.println("テスト");
    }
}

javac.exe -encoding UTF-8 Main.java

java -D"java.encoding=UTF8" Main

Shows this:

.. but copy/paste to Chrome shows UTF-8.  This is better. :)
The question marks are generally a problem between Microsoft + Java , not MSLinks.  This is because Java is outputting a different encoding than what CMD is expecting.
Instead, tell Java to write a UTF-8 log file and compile using UTF-8.
import java.io.*;
import java.nio.charset.*;

public class Main {
    public static void main(String[] args) throws Exception {
        String utf8File = System.getProperty("user.home") + "/Desktop/utf8.txt";
        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(utf8File), StandardCharsets.UTF_8);
        writer.write("こんにちは");
        writer.close();
    }
}

javac.exe -encoding UTF-8 Main.java
java Main

Notepad looks good!

is there a way to read the .lnk file's Charset

Not easily.  IBM maintains a comprehensive IC4UJ which can help with encoding, but this tool can be very difficult to use.  In most cases it's easier to just know/force which encoding Java is using.
This problem is complex because many characters sets used historically are extensions of others, meaning some characters will print fine, others will print incorrectly.  UTF-8 is supposed to fix this problem, but for historical purposes Java and Windows like to use old encodings instead by default.
I have installed Japanese as default language in Windows, this still does not work.
However, I test same code on MacOS, no problem. :(
This problem is very widespread and many people are confused about this:
https://stackoverflow.com/a/57134096
https://stackoverflow.com/q/3780378
https://stackoverflow.com/q/35141175
https://stackoverflow.com/q/10890578
https://social.technet.microsoft.com/Forums/windowsserver/en-US/728d6169-07fa-4e93-8a41-f9fa6dd8d9d9/displaying-japanese-in-english-command-prompt?forum=w7itprogeneral
Please try to not use Command Prompt and write to UTF-8 file.  😅

  OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(utf8File), StandardCharsets.UTF_8);
        writer.write("こんにちは");
        writer.close();

thanks for your help.
I always compiled using UTF-8 to do my java job, and I try to write a UTF-8 log file,but it is the same as the console output. 😅
I think the reason is the two .lnk files have different charset ,mslinks use wrong charset to parse it .
because when I modify the LinkInfo.java file line 58
localBasePath = data.readString(pos + size - data.getPosition());
to
localBasePath = new String(bytes,"GBK");
the "新建文本文档" file can be correct printed on console,but another file is incorrect.like this:

when I modify to
localBasePath = new String(bytes,"Shift_JIS");
the other "JＤ温泉。" file can be correct printed,but another file is incorrect.like this:

when I modify to
localBasePath = new String(bytes,"UTF-8");
the two files be printed incorrect.like this:

so I think the way to deal this problem is find out .lnks file`s Charset, and use the Charset to prase it on LinkInfo.java file line 58.
but because  my english is not very good I can not find the way to read the .lnk file's Charset from Shell Link (.LNK) Binary File Format.

@battlesteed you are right, the encoding differs...
Please see this code comment:
https://github.com/DmitriiShamrikov/mslinks/blob/ba172b89ff4d419e880235ddc68a26f737b292ee/src/mslinks/data/ItemID.java#L267-L268
This explains why ASCII variants are needed to read these lines.
Other examples use the defaultCharset, which I believe should have an override to force UTF-8 (or default to UTF-8 with the option to force defaultCharset in special circumstances.
https://github.com/DmitriiShamrikov/mslinks/search?q=Charset:
https://github.com/DmitriiShamrikov/mslinks/blob/ba172b89ff4d419e880235ddc68a26f737b292ee/src/mslinks/data/CNRLink.java#L128
https://github.com/DmitriiShamrikov/mslinks/blob/ba172b89ff4d419e880235ddc68a26f737b292ee/src/mslinks/data/VolumeID.java#L90
https://github.com/DmitriiShamrikov/mslinks/blob/79751506cc95d50385ec1265f0083368ac047245/src/mslinks/LinkInfo.java#L81
This seems to suggest the following:

defaultCharset will be used most of the time, which will differ between systems.
There is a field reserved for DOS names that will use "ASCII".  I would not expect you to use this field, e.g. C:\PROGRAM~1, etc.

You may write code to detect encoding, but I believe it will be a trial and error effort and will not be 100%.  Many encodings do not error when the wrong one is chosen. 😞
I believe MSLinks should be recompiled with UTF-8 enabled 100% of the time.

Also, the ICU4J class which tries to offer detection:
https://unicode-org.github.io/icu-docs/apidoc/dev/icu4j/com/ibm/icu/text/CharsetDetector.html

Hello, thank you for your interest in mslinks!
Unfortunately, there is no information about charset stored in the .lnk files. In most cases there are two versions of a string: the first one is stored in default (system) code page, the second is in unicode which is essentially UTF-16.
I can guess that running java with forced default encoding as UTF-8 might actually be the problem. In this case it will try to decode strings which were stored in your default code page as UTF-8 .
You can test it by running: System.out.println(Charset.defaultCharset().name());
Sometimes when the string can be encoded with the default code page, the unicode version is not stored at all! So I belive that changing your OS locale can break some things too.
@tresf I don't think compiling with any forced encodig will change anything, because it is applied to source files and they don't contain anything other that normal ASCII symbols.

@tresf I don't think compiling with any forced encodig will change anything, because it is applied to source files and they don't contain anything other that normal ASCII symbols.

You're right, it only needed due to isolated unit tests requiring it and won't affect projects in any similar fashion to the bug report.

You can test it by running: System.out.println(Charset.defaultCharset().name());
thanks for your help.I tryed and it print "UTF-8"

I think there maybe a way to parse two different charset .lnk file at the same time.because windows can do this,like the picture

but I don`t know how windows can do it. I guess windows do it by detect encoding.the reason is:
I use hex editor modify  JＤ温泉。.lnk file's localBasePath "O:\game\JＤ温泉。\Start.exe" charset from Shift_JIS to GBK, like this:

left is Shift_JIS ,right is GBK
after modifed, windows still parse it correct.if windows parse .lnk file dependent on the information about .lnk file`s charset ,then  windows should parse it incorrect.so I think windows parse .lnk by detect encoding,and I will try the same way.
@tresf  I will try ICU4J ,thank you.

I believe that Windows tries to decode using UTF-8 and then falls back to the system ANSI charset (or perhaps it does the same, but in reverse).  A crude mockup could (for example) check the second character for a colon.
An article which helps explain this is here (Chinese (Simplified), requires translation) http://blog.sina.com.cn/s/blog_53c1950a010158mw.html
The article does have a code snippet to help detect encoding, but I believe it still relies on two values, CP_ACP and CP_OEMCP in Windows.
These values are referenced by APIs such as MultiByteToWideChar and WideCharToMultiByte.  If you can get them to work, JNA can expose C++ APIs to Java for you.

@battlesteed LocalBaseBath string is not the one that is displaying in link properties window. LinkTargetIDList is the most important structure and the one that is used to reconstruct the path if present. It starts from 4E position on your screenshot and contains each part of the path is separate field. Yes, there a lot of duplicated info in .lnk files.

thanks for your help. I tryed ICU4J,but in most cases it detect a wrong encoding.so finally I use this code to detect encoding:
new File(localBasePath).exists()
if not exists,I will try next charset until exists.


a filter with "*" is very slow.

Dear  Jan,you can use the test DB I send to u last time:
My Environment

ArangoDB Version:    <IP_ADDRESS>-1
Storage Engine:         RocksDB
Deployment Mode:   Single Server
Deployment Strategy:    Manual Start
Configuration:
Infrastructure:       own
Operating System:    centos7
Total RAM in your machine:    8GB
Disks in use:      15G/50G
Used Package:              none

Component, Query & Data  QUERY
Affected feature:
A filter  y.name="*" is VERY SLOW,but
a filter  y.name="鸿庆" or any string else is normal

AQL query (if applicable):
let tmp = (for r in my_gpro_gResource
filter r.gcId =="1596176426" and r.resourceType == 2 and r.status == 1 return r._key)
let xx =(for p in my_gpro_persons
filter p.treeKey in tmp    and (p.dynastic == 1)
return p
)
for y in xx
filter    y.name == "*"
return y
AQL explain (if applicable): search dcoument name == "*"

Dataset:

Size of your Dataset on disk:

Replication Factor & Number of Shards (Cluster only):

Steps to reproduce

set y.name="*"   time cost 6s~80s
set y.name="X" ,time cost 20ms
3 we save the result with out filter to a static document , then the cost of  y.name="*"  is also change to [20ms.]

Problem:
WHY？
Expected result:
Should the same

If an index is present on the name attribute in my_gpro_persons, it should be used to find all index entries with the specified name.
If searching for * is then way slower than searching for other strings, e.g. 鸿庆, I guess this is due to many more documents existing with a name attribute of * than with a name attribute of 鸿庆.
You can try this by checking the number of matches for the given search strings, i.e.
FOR y IN my_gpro_persons FILTER y.name == "*" COLLECT WITH COUNT INTO l RETURN l

and
FOR y IN my_gpro_persons FILTER y.name == "鸿庆" COLLECT WITH COUNT INTO l RETURN l

If the former query returns a lot more documents than the second, then it needs to process a lot more documents, even though it can find the documents via the index.
The query still needs to do all post-filtering on the documents returned via the index, because there are further conditions such as p.treeKey in tmp and (p.dynastic == 1).

font{
    line-height: 1.6;
}
ul,ol{
    padding-left: 20px;
    list-style-position: inside;
}

    Dear JanThing is no so simple.Of course the * sting is a little more than some sting else.But the total result data set is only 140 without filter. There are  about 4 is * So Add a filter of yname==“*”  should not take so much more time (more than 100 times) .I wish you can test the case on our database ,The backup server is still there.

                            liux

<EMAIL_ADDRESS>

    签名由
    网易邮箱大师
    定制

On 05/8/2020<EMAIL_ADDRESS>wrote：

If an index is present on the name attribute in my_gpro_persons, it should be used to find all index entries with the specified name.
If searching for * is then way slower than searching for other strings, e.g. 鸿庆, I guess this is due to many more documents existing with a name attribute of * than with a name attribute of 鸿庆.
You can try this by checking the number of matches for the given search strings, i.e.
FOR y IN my_gpro_persons FILTER y.name == "*" COLLECT WITH COUNT INTO l RETURN l
and
FOR y IN my_gpro_persons FILTER y.name == "鸿庆" COLLECT WITH COUNT INTO l RETURN l
If the former query returns a lot more documents than the second, then it needs to process a lot more documents, even though it can find the documents via the index.
The query still needs to do all post-filtering on the documents returned via the index, because there are further conditions such as p.treeKey in tmp and (p.dynastic == 1).
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

I tried the following queries on an older backup:

FOR y IN my_gpro_persons COLLECT WITH COUNT INTO l RETURN l. This returns 10047620. So there are around 10 M docs in the collection in total.
FOR y IN my_gpro_persons FILTER y.name == "*" COLLECT WITH COUNT INTO l RETURN l: this returns 551264, so there are 550 K docs with name == "*".
FOR y IN my_gpro_persons FILTER y.name == "鸿庆" COLLECT WITH COUNT INTO l RETURN l. This returns 111, so there are only 111 docs with name == "鸿庆".

This explains why searching for "*" is so much slower than searching for "鸿庆".
Both queries will use the index on "name", but the former one will process 550 K documents and apply the other filters on it, and the latter one will only have to do it for 111 documents. So it has to process 5000 times less documents.

font{
    line-height: 1.6;
}
ul,ol{
    padding-left: 20px;
    list-style-position: inside;
}

Dear Jan   Even there much more rows with  * in original table , but as you see .The filter result only has 140 ,then we add the filter of yname=“*”   So  It still very slow is very confuse for us.

                            liux

<EMAIL_ADDRESS>

    签名由
    网易邮箱大师
    定制

On 05/8/2020<EMAIL_ADDRESS>wrote：

I tried the following queries on an older backup:
FOR y IN my_gpro_persons COLLECT WITH COUNT INTO l RETURN l. This returns 10047620. So there are around 10 M docs in the collection in total.
FOR y IN my_gpro_persons FILTER y.name == "" COLLECT WITH COUNT INTO l RETURN l: this returns 551264, so there are 550 K docs with name == "".
FOR y IN my_gpro_persons FILTER y.name == "鸿庆" COLLECT WITH COUNT INTO l RETURN l. This returns 111, so there are only 111 docs with name == "鸿庆".
This explains why searching for "*" is so much slower than searching for "鸿庆".
Both queries will use the index on "name", but the former one will process 550 K documents and apply the other filters on it, and the latter one will only have to do it for 111 documents. So it has to process 5000 times less documents.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

It does not matter how many results are in the final result, but how many documents the query needs to process.
Here is a detailed example, using the profile output.
Searching for "鸿庆":
Query String (258 chars, cacheable: false):
 let tmp = (for r in my_gpro_gResource filter r.gcId =="1596176426" and r.resourceType == 2 and
 r.status == 1 return r._key)  let xx =(for p in my_gpro_persons filter p.treeKey in tmp and
 (p.dynastic == 1) return p ) for y in xx filter y.name == "鸿庆" return y

Execution plan:
 Id   NodeType            Calls   Items   Runtime [s]   Comment
  1   SingletonNode           1       1       0.00001   * ROOT
 22   SubqueryStartNode       1       2       0.00002     - LET tmp = ( /* subquery begin */
 20   IndexNode               1       3       0.00045       - FOR r IN my_gpro_gResource   /* hash index scan, projections: `_key`, `resourceType`, `status` */    FILTER ((r.`resourceType` == 2) && (r.`status` == 1))   /* early pruning */
  6   CalculationNode         1       3       0.00002         - LET #11 = r.`_key`   /* attribute expression */   /* collections used: r : my_gpro_gResource */
 23   SubqueryEndNode         1       1       0.00002     - RETURN  #11 ) /* subquery end */
 19   IndexNode               1     111       0.02178     - FOR y IN my_gpro_persons   /* hash index scan */
 11   CalculationNode         1     111       0.00033       - LET #17 = ((y.`treeKey` in tmp) && (y.`dynastic` == 1))   /* simple expression */   /* collections used: y : my_gpro_persons */
 12   FilterNode              1       0       0.00009       - FILTER #17
 18   ReturnNode              1       0       0.00000       - RETURN y

Indexes used:
 By   Name            Type   Collection          Unique   Sparse   Selectivity   Fields       Ranges
 20   idx_31767023    hash   my_gpro_gResource   false    false        13.46 %   [ `gcId` ]   (r.`gcId` == "1596176426")
 19   idx_560401812   hash   my_gpro_persons     false    false        71.53 %   [ `name` ]   (y.`name` == "鸿庆")

Query Statistics:
 Writes Exec   Writes Ign   Scan Full   Scan Index   Filtered   Exec Time [s]
           0            0           0          113        111         0.02514

Searching for "*":
Query String (257 chars, cacheable: false):
 let tmp = (for r in my_gpro_gResource
 filter r.gcId =="1596176426" and r.resourceType == 2 and r.status == 1 return r._key)
 let xx =(for p in my_gpro_persons
 filter p.treeKey in tmp and (p.dynastic == 1)
 return p
 )
 for y in xx
 filter y.name == "*"
 return y

Execution plan:
 Id   NodeType            Calls    Items   Runtime [s]   Comment
  1   SingletonNode           1        1       0.00001   * ROOT
 22   SubqueryStartNode       1        2       0.00001     - LET tmp = ( /* subquery begin */
 20   IndexNode               1        3       0.00045       - FOR r IN my_gpro_gResource   /* hash index scan, projections: `_key`, `resourceType`, `status` */    FILTER ((r.`resourceType` == 2) && (r.`status` == 1))   /* early pruning */
  6   CalculationNode         1        3       0.00002         - LET #11 = r.`_key`   /* attribute expression */   /* collections used: r : my_gpro_gResource */
 23   SubqueryEndNode         1        1       0.00002     - RETURN  #11 ) /* subquery end */
 19   IndexNode             552   551264       1.30473     - FOR y IN my_gpro_persons   /* hash index scan */
 11   CalculationNode       552   551264       0.26558       - LET #17 = ((y.`treeKey` in tmp) && (y.`dynastic` == 1))   /* simple expression */   /* collections used: y : my_gpro_persons */
 12   FilterNode              1        0       0.09198       - FILTER #17
 18   ReturnNode              1        0       0.00000       - RETURN y

Indexes used:
 By   Name            Type   Collection          Unique   Sparse   Selectivity   Fields       Ranges
 20   idx_31767023    hash   my_gpro_gResource   false    false        13.46 %   [ `gcId` ]   (r.`gcId` == "1596176426")
 19   idx_560401812   hash   my_gpro_persons     false    false        71.53 %   [ `name` ]   (y.`name` == "*")

Query Statistics:
 Writes Exec   Writes Ign   Scan Full   Scan Index   Filtered   Exec Time [s]
           0            0           0       551266     551264         1.66458

As you can see, both queries use the same index on "name".
However, the query for "鸿庆" will find 113 documents in the index, and the query for "" will find 551266, so 5000 times more documents.
And then, the query for " 鸿庆" will apply the filter condition ((y.treeKey in tmp) && (y.dynastic == 1)) to just 113 documents, whereas the query for "" will apply it on 551266 documents. This is computationally more expensive, because it is 5000 times more work.

Hi @liuxiong888,
Did you have a chance to check jsteemann's latest message?


fix(ffe-form): Update focus outline

Apparently I forgot these while doing #407. :flushed:

Coverage remained the same at 80.521% when pulling 4f9d7e1fde1110b013fcbc69c63374ccbf9d4077 on more-focus-outline-adjustments into 013f55fa4d84845f315c7c5dad2611a5d9dbd6fc on develop.


followup #2098 ~ redis

@samdivaio redis server started, but then i get this:
-1 15:39:34 ShardsCoordinator | Starting NadekoBot v2.15.1
-1 15:39:36 ShardsCoordinator | StackExchange.Redis.RedisTimeoutException: Timeout performing SET NDEyNzQyNT_localimg_heads, inst: 2, queue: 4, qu: 0, qs: 4, qc: 0, wr: 0, wq: 0, in: 12, ar: 0, clientName: EC2AMAZ-E1JQ6JE, serverEndpoint: <IP_ADDRESS>:6379, keyHashSlot: 10606 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
   at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 2120
   at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\RedisBase.cs:line 81
   at NadekoBot.Core.Services.Impl.RedisImagesCache.Set(String key, Object obj)
   at NadekoBot.Core.Services.Impl.RedisImagesCache.<<Reload>b__50_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NadekoBot.Core.Services.Impl.RedisImagesCache.<Reload>d__50.MoveNext()

Unhandled Exception: StackExchange.Redis.RedisTimeoutException: Timeout performing SET NDEyNzQyNT_localimg_heads, inst: 2, queue: 4, qu: 0, qs: 4, qc: 0, wr: 0, wq: 0, in: 12, ar: 0, clientName: EC2AMAZ-E1JQ6JE, serverEndpoint: <IP_ADDRESS>:6379, keyHashSlot: 10606 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
   at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 2120
   at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\RedisBase.cs:line 81
   at NadekoBot.Core.Services.Impl.RedisImagesCache.Set(String key, Object obj)
   at NadekoBot.Core.Services.Impl.RedisImagesCache.<<Reload>b__50_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NadekoBot.Core.Services.Impl.RedisImagesCache.<Reload>d__50.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NadekoBot.Core.Services.ShardsCoordinator..ctor()
   at NadekoBot.Program.Main(String[] args)
   at NadekoBot.Program.<Main>(String[] args)

You've never told us what OS your using. Are you using a 64-bit build AND windows 8.1 or higher? Or maybe a linux distro?
Might help us with this.

@Macley-Kun Yes, 64bit Windows 10 I believe.

Can you double check that? The part saying i believe worries me a little bit.
Also have you looked at the log yourself? They gave you this link: http://stackexchange.github.io/StackExchange.Redis/Timeouts

@Macley-Kun Nothing on that page seemed to apply.

Mhm, you tried restarting and then starting Nadeko?

@Macley-Kun Yes.

hello apparently im having the same problem with 64bit windows10, redis is installed and running but got this instead, any solution?
https://cdn.discordapp.com/attachments/412920804561387520/414695570427478018/unknown.png

hello apparently im having the same issues with 64bit windows10, redis is installed and running until nadekobot stopped working, also the log shows exactly the same thing as the one in this thread. any solutions?

Try restarting your PC
Try restarting redis service
Navigate to the redis installation path, open CMD and then execute redis-cli.exe, press enter. Type FLUSHALL

@AnimeCat hows redis doing on your system? Did kwoth's steps helped you or your still dealing with it?

Just as a note for potential future people reading this...I had an issue when I installed Redis and did NOT use the default port. I had to reinstall Redis with the default port for Nadeko to work.


[Suggestion] GoTo->SwitchGroup->NextGroup and PreviousGroup should work in round-robin.

When we are working with multi-screen and active window is to last then command "Goto->SwitchGroup->NextGroup" didn't perform any action. I think it is by design but I personally feel it would be good if we can move focus to the first screen when user perform NextGroup action from last screen.

@v-pavanp this branch is work in progress and not meant for testing.


Fix fsharp-analyzers

For some reason, both in the pipeline and locally (but not with a source build of the analyser SDK!) analysis fails.
info: Loading analyzers from /Users/patrick/Documents/GitHub/WoofWare.Myriad/.analyzerpackages/g-research.fsharp.analyzers/0.6.0/
info: Registered 11 analyzers from 1 dlls
error: Checking of file /Users/patrick/Documents/GitHub/WoofWare.Myriad/WoofWare.Myriad.Plugins/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.fs aborted
error: Checking of file /Users/patrick/Documents/GitHub/WoofWare.Myriad/WoofWare.Myriad.Plugins/obj/Debug/net6.0/WoofWare.Myriad.Plugins.AssemblyInfo.fs aborted
error: Checking of file /Users/patrick/Documents/GitHub/WoofWare.Myriad/WoofWare.Myriad.Plugins/AstHelper.fs aborted
error: Checking of file /Users/patrick/Documents/GitHub/WoofWare.Myriad/WoofWare.Myriad.Plugins/RemoveOptionsGenerator.fs aborted
error: Checking of file /Users/patrick/Documents/GitHub/WoofWare.Myriad/WoofWare.Myriad.Plugins/JsonParseGenerator.fs aborted

Still reproduces in the pipeline but not locally :/


Add truncate feature for messages

We should provide an option to truncate the message. Diagnose message can be very long and sometimes reach the limit a target system can handle.

Provide option to define length of message for truncating
Truncate message. Add info to message that it has been truncated

Released with version v2.3.0


MetaData may not be serialized correctly when JsonConvert.DefaultSettings has been changed.

The serialization of the MetaData class is impacted by changing the default JsonSerializerSettings. This may lead to the json no longer being in valid EMF. This was found using Amazon.CloudWatch.EMF 2.1.0.
var jsonSettings = new JsonSerializerSettings
{
	ContractResolver = new DefaultContractResolver
	{
		NamingStrategy = new CamelCaseNamingStrategy()
	}
};

JsonConvert.DefaultSettings = () => jsonSettings;

using var metrics = new MetricsLogger();
var dimensions = new DimensionSet("Dim1", "abc");
metrics.PutMetric("Count", 1, Unit.COUNT);

Actual output:

{"_aws":{"timestamp":1699986206875,"cloudWatchMetrics":[{"Namespace":"aws-embedded-metrics","Metrics":[{"Name":"Count","Unit":"Count"}],"Dimensions":[["ServiceName","ServiceType"]]}]},"ServiceName":"Unknown","ServiceType":"Unknown","Count":1.0}

Expected output:

{"_aws":{"Timestamp":1699986206875,"CloudWatchMetrics":[{"Namespace":"aws-embedded-metrics","Metrics":[{"Name":"Count","Unit":"Count"}],"Dimensions":[["ServiceName","ServiceType"]]}]},"ServiceName":"Unknown","ServiceType":"Unknown","Count":1.0}

@chrischappell-rgare, what is your use case of changing the naming strategy to camel case?
The Metadata object properties are expected to be in pascal case: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Specification.html#:~:text=valid JSON types.-,Metadata object,-The _aws member

We have standardized on camel cased json for messages between applications. This can be configured a single time by overriding the default json serializer settings at app startup time. If we wanted to adopt this library we would need to make changes to each location where json is serialized in our applications.
This issue pertains only to the MetaData class. Json serialization is not consistent in this library. MetricDirective and MetricDefinition use the JsonPropertyAttribute with a name specified, which ensures that the property names are always serialized correctly. The property names are missing in MetaData.


Install - addLocal Could not install

So everytime I try to install homebridge using sudo npm install --unsafe-perm -g homebridge I get this:
npm ERR! Darwin 16.1.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--unsafe-perm" "-g" "homebridge"
npm ERR! node v6.9.2
npm ERR! npm  v4.0.3

npm ERR! No version provided in package.json
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/austincondiff/npm-debug.log

Does anyone have any idea as to why this is happening?

It looks like it might have something to do with the latest version of node?

FYI, I was able to change user accounts on my machine and install it fine with that account. :/


Update Haxe grammar

Changes
Updated languages/haxe.js to properly highlight some missing Haxe keywords and features.
Checklist

[x] Macro reification (macro keyword + $identifiers)
[x] final keyword (added in Haxe 4.0)
[x] is keyword
[x] Support numeric literal suffix (added in Haxe 4.3)
[x] Support numeric separators (added in Haxe 4.3)
[x] Fixed metadata arguments being colored unnecessarily.
[x] Support non-colon metadata.
[x] Fixed abstract module highlighting so doesn't conflict with abstract class, function, and new keyword.

Could you rebase on main now that I fixed the test suite?

Done! 👍

Also will need to update CHANGELOG

Hope that looks good!

Thanks so much!


Create infobox-1-1-17

Provides fixes that allow InfoBox to work with the latest experimental release of Google Maps.

I signed it!


Cannot pay invoice: TemporaryChannelFailure

Background
WARNING: I just started experimenting with lnd, and I do not know much about fee policies, routing, htlc, time locks, etc.
I got something out of the hodlmonkey.com and I am trying to pay an invoice using lnd.
Your environment

version of lnd: 0.4.1-beta (precompiled)
which operating system (uname -a on *Nix): Linux, amd64
version of btcd, bitcoind, or other backend: bitcoind master (~2018-05-12, cb9bbf77726a00c69a798ac818abda8281f61b43 )

Steps to reproduce
I got my bitcoind txindexed few days ago, and then I started lnd. I have enabled autopilot. Then I created a new address and funded it. In response to that lnd created just one big channel with 60% of what I deposited. Despite me asking for up to 5 channels. So next day I created another address and deposited some more BTC. lnd responded and created 3 more channels of varying capacity. All good. Now I do have 4 channels. 3 of them with capacity over 600000 sat.
I made a checkout at hodlmonkey.com, for a value of about 450000 sat. I got a encoded payment, and I am trying to pay using my lnd:
$ ./lncli sendpayment --pay_req 'lnbc444....32'
{
	"payment_error": "unable to route payment to destination: TemporaryChannelFailure(update=(*lnwire.ChannelUpdate)(0xc420214e10)({\n Signature: (lnwire.Sig) (len=64 cap=64) {\n  00000000  01 .......  },\n ChainHash: (chainhash.Hash) (len=32 cap=32) 00000019xxx1d,\n ShortChannelID: (lnwire.ShortChannelID) 7:1xx4:1xx4,\n Timestamp: (uint32) 23yyy,\n Flags: (lnwire.ChanUpdateFlag) 3013,\n TimeLockDelta: (uint16) 1,\n HtlcMinimumMsat: (lnwire.MilliSatoshi)<PHONE_NUMBER>949184 mSAT,\n BaseFee: (uint32) 65536000,\n FeeRate: (uint32) 65536000\n})\n)",
	"payment_preimage": "",
	"payment_route": null
}

2018-05-13 01:19:52.618 [ERR] CRTR: Attempt to send payment 05xxx30 failed: TemporaryChannelFailure
2018-05-13 01:19:54.019 [ERR] CRTR: Attempt to send payment 05xxx30 failed: TemporaryChannelFailure
2018-05-13 01:19:56.639 [ERR] CRTR: Attempt to send payment 05xxx30 failed: TemporaryChannelFailure
2018-05-13 01:19:56.773 [INF] HSWC: Sent 0 satoshis received 0 satoshis in the last 10 seconds (0.6 tx/sec)
2018-05-13 01:19:57.564 [ERR] CRTR: Attempt to send payment 05xxx30 failed: TemporaryChannelFailure(update=(*lnwire.ChannelUpdate)(0xc4238c9950)({
 Signature: (lnwire.Sig) (len=64 cap=64) {
  00000000  01 .....
 },
 ChainHash: (chainhash.Hash) (len=32 cap=32) 00000019xxxxxxxxx1d,
 ShortChannelID: (lnwire.ShortChannelID) 7:1xxx4:1xx4,
 Timestamp: (uint32) 23yyy,
 Flags: (lnwire.ChanUpdateFlag) 3013,
 TimeLockDelta: (uint16) 1,
 HtlcMinimumMsat: (lnwire.MilliSatoshi)<PHONE_NUMBER>949184 mSAT,
 BaseFee: (uint32) 65536000,
 FeeRate: (uint32) 65536000
})
)

$ ./lncli decodepayreq 'lnbc44....d32'
{
    "destination": "039376f846cb4e137f3474baa7fbe74ec627745c7d5c54935b99fbb1b60a62c9b3",
    "payment_hash": "05xxx30",
    "num_satoshis": "4xyzxyz",
    "timestamp": "1526abcdef",
    "expiry": "3600",
    "description": "Order key: https://hodlmonkey.com/checkout/order-received/12345/?key=wc_order_abcdefg",
    "description_hash": "",
    "fallback_addr": "",
    "cltv_expiry": "144"
}

Yet, when I ask for a potential routes to this destination with the same amount:
$ ./lncli queryroutes 039376f846cb4e137f3474baa7fbe74ec627745c7d5c54935b99fbb1b60a62c9b3 450000
{
    "routes": [
        {
            "total_time_lock": 522xyz,
            "total_fees": "2",
            "total_amt": "450002",
            "hops": [
                {
                    "chan_id": "57xxx",
                    "chan_capacity": "59xxxx",
                    "amt_to_forward": "450001",
                    "fee": "1",
                    "expiry": 522xyz
                },
                {
                    "chan_id": "57xxx",
                    "chan_capacity": "1xxxxxx",
                    "amt_to_forward": "450000",
                    "fee": "1",
                    "expiry": 522xyz
                },
                {
                    "chan_id": "57xxx",
                    "chan_capacity": "30xxxxxx",
                    "amt_to_forward": "450000",
                    "fee": "0",
                    "expiry": 522xyz
                }
            ]
        },
...

I got about 11 potential routes, shortest having total_fees of 2 sat and 3 hopes total.
$ ./lncli listpayments
{
    "payments": [
    ]
}

Either it is a bug in lnd, or one of the nodes on the path is offline / not cooperating, in which case lnd should try another path, or there is not enough capacity in some channels, in which case lnd should not reported them in queryroutes, or it is simply a bug in lnd, which should be fixed, or it is intended result, in which case error message should be much clear what is going on and recommend workaround actions.
Thanks.
PS. I got the same error when using payinvoice, even if I set --amt X to some sane value, like --amt 100, or didn't pass it at all. (Not sure if this is to override amount in the invoice request, or to set maximal amount of lightning channel fees allowed to fulfill invoice).

TemporaryChannelFailure is protocol level error. It means that along an HTLC route, a channel didn't have enough available bandwidth to carry the HTLC. The error returned is simply one of the last errors we encounter. For example, if hodlmoney doesn't have sufficient inbound payment bandwidth, then you won't be able to pay them no matter how many paths are shown. The queryroutes RPC just looks at static graph information, so for example if all nodes are offline, then that'll still show a set of eligible routes.
I'd also recommend you use the latest master version, as a number of bugs have been fixed over the past week weeks. We'll be releasing 0.4.2 in a few days.

I got the same error when using payinvoice, even if I set --amt X

If the invoice has a payment amount specified, then you can't override it atm.

Also in the future may be worth searching the set of prior closed issues before creating a new one, thanks.

I did check all previous issues, including the closed one, and I did find some mentioning TemporaryChannelFailure, but none was really similar to this one in my opinion.
I still think that the error message could be improved anyhow.

Updated to current master version (2018-05-13 02:20 CEST) "version": "0.4.1-beta commit=28b12116e42c83149b6c6b93b70d669a0702bd2d", still the same error and error message.
Is it possible to simulate routing or debug routing somehow more, do a dry run of payinvoice, and see the possible paths examined, and path chosen for execution, or if it fails possible fallback paths, or something?
I understand it might be hard to get more information than unable to route payment to destination , but maybe hint like what was the potential capacity to destination amount the shortest route, and route with highest potential capacity would be very useful. I.e. if I got something like this instead: unable to route payment to destination: path of highest capacity xyz sat with 6 hopes, maximal capacity shortest path of xyz sat with 2 hops, it would be so much more useful.

Is it possible to simulate routing or debug routing somehow more, do a dry run of payinvoice, and see the possible paths examined, and path chosen for execution, or if it fails possible fallback paths, or something?

If you use trace logging, you'll see the entire process in detail.
Sure the error messages can be improved, how about we close this, then create a new more targetted issue?

Testing with eclair and lnd

Both open a channel with the same node
A different user pays two invoice, 10 cents to eclair and 10 to LND
In less than a minute, both nodes try to send back 5 cents
LND can't find a path tx fails, Eclair can

How can I give a better report of this behaviour?

Channels have a reserve, so you may not be able to send again, until you're
above that reserve even if you've received money.
On Wed, May 1, 2019 at 3:52 AM Enrique Alcázar Garzás <
<EMAIL_ADDRESS>wrote:

Testing with eclair and lnd

Both open a channel with the same node
A different user pays two invoice, 10 cents to eclair and 10 to LND
In less than a minute, both nodes try to send back 5 cents
LND can't find a path tx fails, Eclair can

How can I give a better report of this behaviour?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/lightningnetwork/lnd/issues/1242#issuecomment-488255815,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHTWLRVQDQJF6ZA4G74H5LPTFZAVANCNFSM4E7SMRAA
.


Some changes to 6. Word Embeddings (same space needed)

Thank you very much, good find :)

Oh I just saw that somehow one additional line of space is needed :confused: Not sure why, since the Word Embeddings part has the same number of lines as before. Maybe we need to look at this closer if we run out of space.

Yeah, I realized this as well. We can still revert it if we run out of space later ;)


Format of signature

One of the differences I have seen among projects is how they transmit the signature of the meta tx, with some sending v, r, s fields separately, and some using an encoded version.
What are the arguments for each? For an encoded signature, which EIP does it adhere to (EIP-191 or EIP-712)?

Yeah, we were passing the V, R, and S separately for the assumed increased gas costs. (We hadn't tested these assumptions to see the true cost of doing this operation on chain). Have not run into the "Stack Too Deep" error, but I would agree that if the cost is negligible then the standard should follow that we do the operation on chain for cleaner smart contract code readability and to Austin's point, to allow for more arguments.

Same here, I just assumed it will cost more gas, but I haven't tested the exact amount. I've been hitting the "Stack Too Deep" sometimes, but normally walk around it by shuffling local variables.

Previous chat logs from the telegram group (archival purposes) https://hackmd.io/NPzA_EEFTuWR_DnnEEHOyw

If you have 1 signature it should be more gas efficient to pass the parts in separately (since bytes would be a dynamic type that is automatically copied to memory and therfore has some overhead). You can actually optimize this by hacking around a little in solitidy (external functions don't automatically copy their types into memory if not used).
The thing is that I would suggest to support multiple signatures and also standards like EIP-1271. For this it is way more dynamic to use a bytes


Update 4 adobe cs6 Casks: preflight / uninstall_preflight

After making all changes to the cask:

[ ] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

Check SafariNotificationAgent

Verified locally.


Control4 Climate

Hi, what is the currently best option to control the Control4 Thermostat? I have tried hass-control4, homeassistant-control4, but there is no Climate control. I have tried different repositories, based on itsfrosty 2way driver, but it is still giving me a message, there is no module for control4 climate and also, it is more than 2 years old. This add-on looks as the newest, but it doesnt have the climate or support multiple buttons from keypad dimmers or configurable keypads.

Yes, those things are not currently supported. I believe the other projects all require a custom control4 driver to be installed in the system as well.

I have my control4 dealer license, so I have no problem installing it on the C4 controller. If there is a driver at drivercentral.io, chowmainsoft.com, blackwiredesigns.com, etc. I am willing to pay for it.

This should be able to be closed with my update, please let me know if you find issues.


Allow GM to approve or rerun NPC defense rolls

NPCs sometimes dodge or die at the most inappropriate moments. Similar to the results of critical effects, this feature would send the results of an NPC defense roll privately to the GM first, with a choice to either approve the roll and its consequences, or to reroll. Only upon approval will the result be processed and shown to the players.
This requires:

a new function m3mgdDefenseResultPrompt(tokenID, rollResult, attackerID) modelled after m3mgdCriticalEffectPrompt() that whispers an at-a-glance rendering of the result to the GM with links to either rerun the defense roll (is it sufficient to just re-execute the defense script?) or to process the result
refactor result processing from the defense script into a function m3mgdExecuteDefenseResult(tokenID, rollResult, attackerID)
for data exchange between these functions, a structure holding defense result data (see below)

Defense result data:

Field
Notes

attackType

attackResult

criticalAttack

attackDamage

noDefense

defenseRoll

defenseResult

defenseSuccess

effEnduranceLoss

effHealthLoss

timeToDie

Depends on #64


Windows 64-bit version

Primary changes are to support compiling a 64-bit Windows version.  A couple of other minor updates are included and listed in the changelog.

I would greatly prefer if this was broken up into multiple pull requests. It'll be much easier to isolate faults if this breaks something that way by building without a specific commit (and with this many changes, there's a very high chance that something else will get broken unrelated to 64-bit Windows where it was heavily tested).  It'll also make reviewing it much easier if it's broken up.

Ok.  I'll just cancel this one for now.


Mark tests as requiring internet

I'm in the train at the moment and the internet is quite spotty. So I thought it might be useful to be able to skip tests that require an internet connection to run. Not sure if this is a contribution we really need, but let me know what you think!
I added a pytest mark internet_required that you can add to any test that requires an internet connection. Then you can run the tests with pytest -k "not internet_required" to only run the offline tests.
I only marked tests outside of webapp, since I thought it would make less sense to have something like this in webapp. I'm also not quite sure if I've got all of the tests requiring internet (I'm also running into some other problems relating to cleaning up temporary directories on Windows, so the errors I'm getting don't make much sense). Tests that require the Synergy dataset first look locally if they can find it I think, so those only require a connection if you don't have Synergy locally.

Thanks!


removeAllCachedResponses

Can you adjust your plugin to allow cache but instead give me the ability to call
[[NSURLCache sharedURLCache] removeAllCachedResponses];
from javascript?
Using UIWebView causes my memory usage to grow infinitely large.

I'm also interested in this
@jason-engage did you find a solution ?

@jason-engage @flieks Have you guys looked at this plugin?
https://github.com/moderna/cordova-plugin-cache


Fix regular expression in uwSchemas/v009base/uw-property-template.json

See:
https://regex101.com/r/ybhQcl/1

Fixed this here.
Unfortunately, however, it seems that I was mistaken in thinking that YYYY-MM-DD is always included in statusUW values. So it may not stay in the schema?


RitoKit no longer on cocoapods

I'm either going crazy, or RitoKit is hiding from me. I can't seem to find it on cocapods anywhere.

Hrm, that's strange. It's been a while since I've updated RitoKit and I'd recommend just pointing directly to the git repo to install the pod.

Thanks, sadly nothing I try seems to work, guess it needs some updating :(


partial iter

crosstrait: comments
introduce root-limited iterators
let path/indices/json_path/packed succeed for internal nodes
test and changelog the iteration root feature
mqtt: bump env_logger dev-dependency
README: add note on functional programming/polymorphism
Comments, docs

Adresses

the partial iteration aspect of #132
Key lookup/conversion for internal nodes.

Darling clippy warnings are: https://github.com/TedDriggs/darling/issues/293


Fixing typo in site-recovery-overview.md

fall back instead of fail back

@AntoineC44 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Closing this PR as fail back is a better technical term than fall back


Remove unmaintained Community Hedera Express.js Start Project

Description
The following starter project: https://github.com/publu/hedera-express-boilerplate, is no longer maintained and points to old versions of the SDK, along with 2019 tutorial on how to get started on Hedera. It also links devs to a site called Composer, which is a broken link.
There is an existing Hedera maintained Express.js app that is a chat that I believe is sufficient as a Hedera Express.js starter project. It is safe to remove the community-maintained Express.js repo that is referenced in this ticket.
Steps to reproduce

Go to https://github.com/publu/hedera-express-boilerplate
Clone the repo
cd into the repo directory
run npm i
run npm run start
check out the package.json is using hash-sdk

Additional context
No response
Hedera network
other
Version
current
Operating system
macOS

Thanks for creating this issue! Resolved in 1dd87ce


Image is not rendering in blog post

While trying to add picture in blog post , it is displaying neither in the preview nor in the blog page.
Here is the screenshot.

Hi,
Is the file at /filemanager/userfiles/apple.png ?
What is the url you use for the blog ?


Problem with "Waiting on Final Dir Space" checks

Hi,
I have three 1TB NVMes used as tmp folders.  Today, I added a 1TB NVMe as the final folder to decouple plotting jobs from the final plot xfr to HDs.  Thanks to that, the copy process takes about 1:10.  I have a batch file that loops every minute, and if it finds a new plot there, it moves it to the final HD (so plotting is not affected by that slow transfer or eventual collisions, and I can control the final HD through that batch file, so can run just one long job and target multiple drives).
With that H/W setup, I started one job with 9 queues, and 5 plots per queue.  It looks like there is a problem with the final copy phase, or starting a new plot with that setup.
I saw four consecutive jobs (first four, as it didn't get yet to finish the 5th plot) being stuck on "Waiting on Final Dir Space" event (New-ChiaQueueRunspace function, #grab a volume that has enough space).  The plot is finished, removed from "Current Runs," moved to "Completed Runs" but the new plot is not started.  In the "Job Queues" the status of that queue that just finished is set to "Waiting on Final Dir Space."  After the batch file removes that new plot from that final NVMe, PSCP wakes up and starts a new plot.
Just to make sure, that this is the case, for the fifth plot, I killed that batch file, and PSCP got stuck, until I restarted it, and it removed that plot.
I don't quite understand why PSCP was waiting for that plot to be removed, as the folder sizes at that time were: ~350GB used on 1TB Tmp folder, and 100GB used (one plot) on 1TB Dest Folder - plenty of room on both to start a new plot.
Is PSCP confused with the small size of that final NVMe compared to what is needed to finish the whole job (only 1TB, where the job has 40 plots)?
Thank you, Jacek

Are you using 2 1TB NVMEs's? One for temp and one final destination. The way PSCP calculates if their is enough free space is by grabbing the current freespace and subtracting all current runs whose final destination are set to the drive. How much freespace did your final destination drive have and how many runs targeted that drive when it got that status message?
($volume.FreeSpace - ($Volume.PendingFinalRuns.Count * $finalplotsize)) -gt $finalplotsize

Hi Syrius,
To clarify:
1 job
9 queues
5 plots per queue
3 * 1TB NVMe tmp folders d:\tmp, e:\tmp, f:\tmp (separate NVMe sticks)
1 * 1TB NVMe dst folder g:\dst (separate stick)
The load on that dst folder is just 1/16 of the tmp folder, so it will last for quite a bit longer than tmp ones, but if it works, it is a good improvement.
Yes, xfr from those Tmp folders to Dst takes just a tad over one minute.  However, the next plot is not started until the plot that was just moved to Dst folder is removed from that NVMe (about 11 minutes - moving it to an internal WD Red HD).
Actually, my previous setup was to share Tmp and Dst folders on the same NVMes (i.e., # of tmp folders == # of dst folders), but at that time, I think that the next plot was stuck on "Waiting on Tmp Folder" (basically the same free space logic, I think).  This setup could/should be implemented by PSCP, as it would make PSChiaPlotter a tad better, basically collision free.
Thank you, Jacek

Hi Syrius,
I tried to fight that PowerShell ignoring psm1 file modifications, but didn't go anywhere.  I tried to google it, but didn't find much as well.  I guess, not that many people try to make it work in place, and apparently Windows is doing everything possible to fight it.  Although, I would still appreciate any pointers to how can I test any local changes (e.g., zip all those files, move to a different folder, rename few things (???), and try to run it directly from that folder).
If you could modify Get-BestChiaFinalDrive and Get-BestChiaTempDrive to conditionally bypass part of those checks, I would really appreciate it.
Here are proposed changes:
// function Get-BestChiaFinalDrive
// instead of
            if (($volume.FreeSpace - ($Volume.PendingFinalRuns.Count * $finalplotsize)) -gt $finalplotsize){
                    return $volume
            }
//use
  if ($ChiaJob.IgnoreMaxParallel)	// preferably some other test that can be triggered via some init file modification, so it will not affect those that checked IgnoreMaxParallel
  {
    if ($volume.FreeSpace -gt $finalplotsize)
      return $volume
  }
  else
  {
    if (($volume.FreeSpace - ($Volume.PendingFinalRuns.Count * $finalplotsize)) -gt $finalplotsize)
      return $volume
  }

// function Get-BestChiaTempDrive
// same for Temp space, although, should that Temp test line be:
//   if (($volume.FreeSpace - ($Volume.PendingFinalRuns.Count * $requiredTempSize)) -gt $requiredTempSize){
// instead of
//   if (($volume.FreeSpace - ($Volume.PendingFinalRuns.Count * $finalplotsize))    -gt $requiredTempSize){

Thank you, Jacek

I confirm same behavior when the Dst drive space is much less then the number of  plots in the job.
In my tests, the "Waiting on Final Dir Space" status disappear once the new plot os moved to the HDD by the RoboCopy command.

Also, I confirm the problem in another scenario:
Job1:
Tmp X: - 1 TB nvme
Tmp2 Q: - 1 TB nvme (same for Job2)
Dst E:  5 TB hdd (same for Job2)
Paralel Count: 4
Delay: 60
Job2:
Tmp Y: - 1 TB nvme
Tmp2 Q: - 1 TB nvme (same for Job1)
Dst E:  5 TB hdd (same for Job1)
Paralel Count: 4
Delay: 60
First Delay: 45
=======================
One plot from each job will remain with status "Waiting on final disc space" even
they are in the "Completed Runs" list.
And the next queue will not start.


"was built for newer iOS version (7.0) than being linked (6.0)"

After updating plugin to latest version and when building for iOS I get lots of warnings with this message: " was built for newer iOS version (7.0) than being linked (6.0)"
Xcode build fails and throws "linker command failed with exit code 1 (use -v to see invocation)".
(Xcode version is 7.2 and Base SDK is Latest iOS(9.2)
Whats the problem? Is there any solution?
Thanks!

@tolomir try updating your platform to cordova ios 4.0.1.
https://cordova.apache.org/announcements/2015/12/18/cordova-ios-4.0.1.html

@macdonst done! But new errors appear!
https://cordova.apache.org/announcements/2015/12/18/cordova-ios-4.0.1.html#comment-2452094830

@macdonst If ENABLE_BITCODE is off it works in 3.9.2!
Thanks!

@tolomir great, I added a note in the installation docs.


Update pnputil-examples.md

compact layout looks better

@sldsrg - Thanks for this PR. And this formatting will avoid scrolling back and forth to view the samples. I guess another option would be markdown tables, as that can enable contribution from others, but not sure how that would render, as you have less control with markdown. Thanks again for this PR, and your interest in the Windows docs!


Scarcane Shit

Need someone to do learnset, which can be found in the learnset paste channel. No, I genuinely cannot do it myself.

I'm pissed. It seriously just doesn't work.    Wish support could help.

Is the error you're referring to the All Checks failed from Node.js? or a different issue?


[logging][easy] move security logs to new structure logging macro

closes https://github.com/libra/libra/issues/5612

/land


Check in missing files

@bannanc : The pickMolecules.ipynb notebook references files like "molecules/DrugBank_ff.mol2" which are not included in this repo. Can you add them?

I will add them, but they're also in openforcefield/data/molecules/ if you
need them ASAP.

Caitlin C. Bannan
Ph.D. Candidate
Mobley Group
UC Irvine - Chemistry Department
<EMAIL_ADDRESS>mobleylab.org

@davidlmobley and I discussed this in person. In our opinion, part of the benefit of this repository is to not have to download all of DrugBank. If people want to run that notebook they shouldn't need the file locally because openforcefield toolkits will look into its data/molecules/ directory where that file is permanently stored.


Unable to run script

I am following the README in order to install, and I attempted this command
'''

install.packages("dplyr", "testthat", "yaml", "yardstick", "R.utils", "purrr", "reticulate")
Warning in install.packages("dplyr", "testthat", "yaml", "yardstick", "R.utils",  :
'lib = "testthat"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) yes
Error in download.packages(pkgs, destdir = tmpd, available = available,  :
'destdir' is not a directory
In addition: Warning message:
package ‘dplyr’ is not available for this version of R

A version of this package for your version of R might be available elsewhere,
see the ideas at
https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
'''
It fails, as i am unable to install dependencies.
Is there a restriction on OS/R version to use this script?

Apparently the default repository was not working. I brute forced all 7 libs through this repo and it worked :shrug:
install.packages('dplyr', repos = 'https://cloud.r-project.org')
install.packages('dplyr', repos = 'https://cloud.r-project.org')
install.packages('yaml', repos = 'https://cloud.r-project.org')
install.packages('yardstick', repos = 'https://cloud.r-project.org')
install.packages('R.utils', repos = 'https://cloud.r-project.org')
install.packages('purrr', repos = 'https://cloud.r-project.org')
install.packages('reticulate', repos = 'https://cloud.r-project.org')

Issue Resolved


Label of Button not centered

Hello,
When we change the font size of the label of a button, the text is not correctly placed on the button : it is not centered.
However I do that in the code :
sfg::Context::Get().GetEngine().SetProperty<unsigned int>("Button > Label", "FontSize", 20);

I think the button doesn't position the label depending of the font size.

Related to #45.

Implemented, see #45.


cr: unref blocks that were unlinked deep in a recursive rmdir

If the unmerged user removed several layers of directories, the
unreferenced blocks from deep in a tree need to also be unreferenced
in the resolution op.
Part 2 (of 2) to addressing KBFS-1202.
Issue: KBFS-1202

lgtm


Redesign Header Section for Improved User Experience and Aesthetics

Description:
The current header layout needs improvement to enhance usability and aesthetics. Issues include:
Search Bar Visibility: The search bar is missing or not prominent enough, making it difficult for users to locate and use. A more accessible and visually appealing search bar should be added or moved to a better location in the header.
General Aesthetic and Alignment: The elements in the header seem cluttered, and the alignment could be improved for a cleaner, more professional appearance. Adjust spacing and layout for better readability and functionality.
By addressing these concerns, the user experience will be smoother, increasing engagement and usability on the platform.

im a GSSOC-Ext and Hacktober Fest Contributor! @vishanurag


Refactor/cdssm

Add support for dynamic input shape.

Codecov Report

Merging #317 into 2.0 will not change coverage.
The diff coverage is 100%.

@@         Coverage Diff         @@
##            2.0   #317   +/-   ##
===================================
  Coverage   100%   100%
===================================
  Files        28     28
  Lines       737    734    -3
===================================
- Hits        737    734    -3

Impacted Files
Coverage Δ

matchzoo/models/cdssm_model.py
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


KeyError: 'R_all'

Hi, very nice work.
And Here when I run your visulization code, it shows:

It seems that it has no key of  'R_all'.
And could you please share about your training codes? Thanks!

Hi @pyni
Thank you so much for your interest in our work!
I committed a quick fix for the issue, so could you check if that works? I keep busy with another project and I can not make time to release the training code soon. In fact, it requires some work because I separated the code to extract the PVNet's feature to make evaluation easier. I think you can use the almost same training script as clean-pvnet, so I recommend you to check it out if you want to train the model yourself as soon as possible. I will update this issue again when the training code is available!
Thank you, Shun

Thanks for replying.
And I have another question about you paper.
I wonder why it should be 'iterative refinement.'?
Since you have learned the deep texture for the 3D model. Why not directly match the CNN Feature with 3D model with learned texture using classical matching algorithms(such as RANSAC+PnP)?
Thanks.

You may be confused with the difference between indirect and direct methods. There are generally two ways to optimize a pose --- Minimize 1) the reprojection error (indirect) and 2) the photometric error (direct). For the former one, RanSAC + PnP is generally used. However, due to the sparse nature of the keypoints, its solution can be inaccurate and less robust to the localization error. On the other hand, to minimize photometric (feature-metric) error via LM can make use of the information of all the pixels, and be more accurate and finer. Our goal in this paper is object pose "refinement". Therefore, we're using the latter approach. Please refer to this page, BA-Net, and several SLAM related papers for more information.

I am sorry that I actually didn't answer your question. The minimization problem to match the rendered image from a 3D model and the CNN feature is non-linear and not solvable in a closed form. That's the reason why iterative non-linear optimization algorithms such as Gauss-Newton and LM need to be used.

Wow, that's awesome! I got it.
Thanks for your detailed explanation.

Hi, sorry to interrupt you again.
I have a doubt about equation (4) in your paper:
e = vec(Finp ) − vec(Frend )
According to the equation (4) in BA-Net(https://arxiv.org/abs/1806.04807):

According to this paper, for each point, it should be transformed by dj, Ti and π, then we can extract its feature. But according to equation (4) in your paper, it seems that it has no such transformation and it directly extract the feature.
So I wonder is it the same?
Thanks.

The feature $F_rend$ corresponds to $F_i$, and a 3D model is transformed by equation 1 and rendered by equation 2.
If you want to dig into it more, please check out our CUDA code for rendering.

OK, I got it. Thanks!

No problem!

Hi, I want to verify whether the iterative process reduces the objective function loss(equation 5 in your paper), so I add following:
e = f_inp - f_rend
diff_loss = e ** 2
print('objective function loss:',diff_loss.sum(dim=1).sum())
But It seems that the loss is increasing rather than decreasing:

It seems that the iterative object is not minimize equation 5 in your paper but maximize it. So do you know why?

This is interesting... Which category did you use? Did you use a pre-trained model we provided?
I would like to reproduce this result on my side when I have time, so could you please give me details?


Support @clientName for union/enum variant name

related code: https://github.com/Azure/typespec-azure/blob/00f500c4ba7cf3fcae628bfbad651c87695fc0a5/packages/typespec-client-generator-core/src/types.ts#L599
playground
The name for union/enum variant should honor @clientName decorator.

cadl-ranch https://github.com/Azure/cadl-ranch/pull/525