小编Jos*_*ley的帖子

编程USB传输电缆/与USB设备驱动程序通信

如何以编程方式从Windows 访问USB传输电缆(如Belkin的Easy Transfer电缆)?

我对libusb-win32很熟悉,但据我所知,使用较新的设备并使用Windows Vista似乎很不错.

我知道Windows Easy Transfer可以做到这一点.如何编写与Windows Easy Transfer完全相同的代码?

如果没有关于如何做到这一点的罐装文件,我愿意做一些挖掘,但我不知道从哪里开始.如何查看Windows Easy Transfer正在执行的操作以了解它的工作原理?我看到Windows甚至在设备管理器"传输电缆设备"中为传输电缆提供了自己的类别.如何与这些驱动程序之一进行低级别通信?

windows usb device-driver

6
推荐指数
1
解决办法
5655
查看次数

未处理的拒绝在Chrome中无效

我正在尝试在Google Chrome中使用一个简单的未处理注释处理程序.

如果我将以下代码粘贴到JSFiddle并在Chrome中运行它,我会得到一个错误框,如预期的那样:

window.addEventListener('unhandledrejection', function(e) {
    console.log(e);
    alert(e.reason);
});
new Promise(function(resolve, reject) {
    setTimeout(function() {
        return reject('oh noes');
    }, 2000);
});
Run Code Online (Sandbox Code Playgroud)

如果我创建一个包含嵌入式脚本的HTML文件并将其作为file:///URL 加载到Chrome中,我会按预期收到一个消息框.

<!doctype html>
<html>
<body>
  <script type="text/javascript">
    window.addEventListener('unhandledrejection', function(e) {
        console.log(e);
        alert(e.reason);
    });
    new Promise(function(resolve, reject) {
        setTimeout(function() {
            return reject('oh noes');
        }, 2000);
    });
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我创建单独的HTML和JS文件并将其作为file:///URL 加载到Chrome中,我会获得Chrome标准的"未捕获(承诺)"控制台错误,但没有消息框.

index.html的:

<!doctype html>
<html>
<body>
  <script type="text/javascript" src="app.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

app.js:

window.addEventListener('unhandledrejection', function(e) {
    console.log(e);
    alert(e.reason);
});
new Promise(function(resolve, reject) {
    setTimeout(function() …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome promise

6
推荐指数
1
解决办法
1482
查看次数

ERROR_NOT_ENOUGH_MEMORY故障排除

我们的应用程序在一个特定用户的计算机上失败ERROR_NOT_ENOUGH_MEMORY("没有足够的存储空间来处理此命令").

这个错误显然是在我们正在使用的Delphi VCL框架内的某个地方引发的,所以我不确定哪个Windows API函数负责.

记忆是个问题吗? 致电GlobalMemoryStatus提供以下信息:

  • dwTotalPhys - 1063150000(~1 GB)
  • dwAvailPhys - 26735000(~27 MB)
  • dwAvailPage - 1489000000(~1.4 GB)

我觉得奇怪的是,当页面文件中有足够的空间可用时,Windows会让可用的物理内存变得如此之低,但我对Windows的虚拟内存管理知之甚少,以了解这是否正常.是吗?

如果不是内存,那么哪个资源限制被命中?从我在网上看到的,ERROR_NOT_ENOUGH_MEMORY可能是应用程序遇到几个限制(GDI对象,USER对象,句柄等)的结果,而不一定是内存.是否有一个全面的列表,列出了Windows强制执行的限制?有没有办法找出受到限制的限制?我试过谷歌,但我找不到任何系统的概述.

debugging memory-management out-of-memory

5
推荐指数
1
解决办法
7768
查看次数

sin,cos,tan和舍入误差

我正在用C/C++进行一些三角计算,并且遇到了舍入错误的问题.例如,在我的Linux系统上:

#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[]) {
    printf("%e\n", sin(M_PI));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序提供以下输出:

1.224647e-16
Run Code Online (Sandbox Code Playgroud)

当正确的答案当然是0.

使用trig函数时,我可以期待多少舍入误差?我怎样才能最好地处理这个错误?我熟悉用于比较浮点数的最后位置单位技术,来自Bruce Dawson的比较浮点数,但这似乎在这里不起作用,因为0和1.22e-16相当于几个ULP.

c math floating-point trigonometry rounding

5
推荐指数
4
解决办法
6255
查看次数

如何告诉 Windows 资源管理器刷新其图标?

一旦我的安装程序完成应用程序 exe 新版本的安装,我想告诉资源管理器使用新 exe 的图标作为其快捷方式。但是,我不知道该怎么做。

从网上看,问题似乎是系统图像列表缓存了旧版本的图标。我尝试使用参数调用SHChangeNotifySHCNE_UPDATEIMAGE。我尝试致电SHUpdateImage。我什至尝试过大锤式的广播方式WM_SETTINGCHANGE。似乎什么都不起作用。

完全有可能我只是做错了什么。任何帮助,将不胜感激。

警告:下面是非常丑陋的测试代码。

#if 1
    // First attempt: using shell functions
    wchar_t icon_path[MAX_PATH];
    int icon_index;
    UINT icon_flags;

    IShellFolder *desktop_folder;
    IShellFolder *sub_folder;
    IExtractIcon *extract_icon;
    LPITEMIDLIST pidl;

    SHGetDesktopFolder(&desktop_folder);

    wchar_t *folder_path = L"C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\MyCompany\\";
    desktop_folder->ParseDisplayName(NULL, NULL, folder_path, NULL, &pidl,
        NULL);
    desktop_folder->BindToObject(pidl, NULL, IID_IShellFolder,
        (void**) &sub_folder);
    sub_folder->ParseDisplayName(NULL, NULL, L"MyApp.lnk", NULL, &pidl,
        NULL);

    sub_folder->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*) &pidl,
        IID_IExtractIcon, NULL, (void**) &extract_icon);

    extract_icon->GetIconLocation(0, icon_path, MAX_PATH,
        &icon_index, &icon_flags); …
Run Code Online (Sandbox Code Playgroud)

c icons windows-explorer windows-shell

5
推荐指数
1
解决办法
3066
查看次数

从HTML(Delphi)获取渲染的文本

我有一些HTML,我需要从页面中提取实际的书面文本。

到目前为止,我已经尝试过使用Web浏览器并呈现页面,然后转到document属性并获取文本。这有效,但仅在支持浏览器的地方(IE com对象)。问题是我希望它也能够在wine下运行,所以我需要一个不使用IE COM的解决方案。

必须有合理的编程方式来做到这一点。

html delphi html-parsing html-content-extraction

5
推荐指数
1
解决办法
3588
查看次数

使用C++中的Java

作为一名C++开发人员,我偶尔会遇到像iText,Batik,JasperReportsJFreeChart这样的Java库.在每种情况下,等效的跨平台C++库似乎都不太成熟,更昂贵或不可用.

使用我的C++应用程序中的这些Java库进行报告,制图和类似工作是否切实可行?如果是这样,这样做的最佳方法是什么?

  • 使用JNI在我的应用程序中嵌入JVM?
  • 使用GCJ将Java库编译为本机代码?
  • 我不知道的其他一些集成方法?
  • 放弃,因为从C++调用Java库太难实用,而是投入我的努力去寻找C++库?

c++ java cross-platform

5
推荐指数
0
解决办法
2666
查看次数

lcov绝对路径与相对路径

lcov如何确定何时使用绝对路径和相对路径?

我有一个app目录,该目录包含我产品的每个共享库的子目录和几个二进制文件的子目录。像这样:

/home/user/app/libfoo/bar
/home/user/app/libfoo/baz
/home/user/app/libqux
/home/user/app/testsuite
/home/user/app/product
Run Code Online (Sandbox Code Playgroud)

但是,当通过lcov和运行时genhtml,目录如下所示:

/home/user/app/libqux
/home/user/app/testsuite
/home/user/app/product
bar
baz
Run Code Online (Sandbox Code Playgroud)

换句话说,共享库目录之一中的所有内容都使用相对路径,而其他所有内容都使用绝对路径。 为什么?

我对lcov和的调用genhtml非常简单:

cd ~/app
testsuite/run_tests
lcov --capture --directory . --output-file coverage.info --gcov-tool gcov-5 --no-external
genhtml coverage.info --output-directory coverage
Run Code Online (Sandbox Code Playgroud)

relative-path lcov

5
推荐指数
1
解决办法
1845
查看次数

如何在hudson/jenkins构建输出控制台中显示超链接

如何在hudson/jenkins构建输出控制台中显示超链接(weblink)?

我想要实现的是,在基于特定条件的hudson/jenkins构建期间,我想显示一个超链接.当用户单击该链接时,它应该打开一个新的浏览器窗口并显示该页面.

有没有插件可以做到这一点?有什么建议吗?

hudson automated-deploy hudson-plugins jenkins jenkins-plugins

5
推荐指数
2
解决办法
6885
查看次数

oracle-java8-installer Webupd8 PPA 404 Not Found

执行时抛出以下错误sudo apt-get install oracle-java8-installer:

Location: http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz?AuthParam=1508340360_7be4aa21e145dd26bda475add7c27ada [following]
                    --2017-10-18 08:24:00--  http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz?AuthParam=1508340360_7be4aa21e145dd26bda475add7c27ada
                    Reusing existing connection to 2.2.0.1:8080.
                    Proxy request sent, awaiting response... 404 Not Found
Run Code Online (Sandbox Code Playgroud)

暂时的解决方法是:

cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u144|JAVA_VERSION=8u152|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="e8a341ce566f32c3d06f6d0f0eeea9a0f434f538d22af949ae58bc86f2eeaae4"|SHA256SUM_TGZ="218b3b340c3f6d05d940b817d0270dfe0cfd657a636bad074dcabe0c111961bf"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_144|J_DIR=jdk1.8.0_152|' oracle-java8-installer.*
Run Code Online (Sandbox Code Playgroud)

java oracle ubuntu debian

5
推荐指数
1
解决办法
1988
查看次数