小编x-r*_*ray的帖子

在Android应用程序中使用哪个WebSocket库?

我想在我的Android应用程序中添加一个服务,该应用程序在后台运行,持有WebSocket连接(可能需要几个小时甚至几天),并定期将一些数据发送到服务器.

现在似乎有一堆用于Java的WebSocket库,我不确定应该使用哪一个:

此外,Android …

android websocket node.js

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

react/redux-form:如何从onSubmit返回promise?

我试图围绕redux,react-reduxredux-form进行包装.

我已经设置了一个商店并添加了redux-form的reducer.我的表单组件如下所示:

登录表格

import React, {Component, PropTypes} from 'react'
import { reduxForm } from 'redux-form'
import { login } from '../../actions/authActions'

const fields = ['username', 'password'];

class LoginForm extends Component {
    onSubmit (formData, dispatch) {
        dispatch(login(formData))
    }

    render() {
        const {
            fields: { username, password },
            handleSubmit,
            submitting
            } = this.props;

        return (
            <form onSubmit={handleSubmit(this.onSubmit)}>
                <input type="username" placeholder="Username / Email address" {...username} />
                <input type="password" placeholder="Password" {...password} />
                <input type="submit" disabled={submitting} value="Login" />
            </form> …
Run Code Online (Sandbox Code Playgroud)

javascript forms reactjs redux redux-form

15
推荐指数
1
解决办法
9019
查看次数

ESP8266/Arduino:为什么需要将 ICACHE_RAM_ATTR 宏添加到 ISR 和从那里调用的函数?

我读到我需要将 ICACHE_RAM_ATTR 宏添加到中断服务例程 (ISR) 以及在我的 ESP8266 Arduino 代码中从那里调用的每个函数,以防止随机崩溃。我还找到了对宏 ICACHE_RAM_ATTR 的作用的解释,尽管我不确定该解释是否适用于 Espressif ESP8266 SDK,也适用于 ESP8266 上的 Arduino。我不明白为什么我需要将宏添加到 ISR。

第一个问题:为什么我需要将 ICACHE_RAM_ATTR 宏添加到 ISR 以及从那里调用的所有函数?

下一个问题是,如果我强制内联从 ISR 调用的函数会发生什么:

inline void doStuff() __attribute__((__always_inline__)) { // <-- necessary to add ICACHE_RAM_ATTR here?
    // no more function calls here
}

void ICACHE_RAM_ATTR handleInterrupt() {
    doStuff();
}
Run Code Online (Sandbox Code Playgroud)

第二个问题:我是否需要将 ICACHE_RAM_ATTR 宏添加到强制内联的函数中?

arduino isr esp8266 arduino-esp8266

10
推荐指数
1
解决办法
1万
查看次数

Node.js:获取已安装的npm包的(绝对)根路径

任务

我正在寻找一种通用方法来获取Node.js中已安装的npm包的(绝对)根路径.

问题

我知道require.resolve,但这将给我一个入口点(主模块的路径)而不是包的根路径.

bootstrap-sass作为一个例子.假设它在本地安装在项目文件夹中C:\dev\my-project.然后我正在寻找的是C:\dev\my-project\node_modules\bootstrap-sass.require.resolve('bootstrap-sass')会回来的C:\dev\my-project\node_modules\bootstrap-sass\assets\javascripts\bootstrap.js.

我可以想到几种方法如何获取包的根路径:

解决方案#1

var packageRoot = path.resolve('node_modules/bootstrap-sass');
console.log(packageRoot);
Run Code Online (Sandbox Code Playgroud)

这适用于本地安装在node_modules文件夹中的软件包.但是,如果我在子文件夹中,我需要解决../node_modules/bootstrap-sass,并且使用更多嵌套文件夹会变得更复杂.此外,这不适用于全局安装的模块.

解决方案#2

var packageRoot = require.resolve('bootstrap-sass')
    .match(/^.*[\/\\]node_modules[\/\\][^\/\\]*/)[0];
console.log(packageRoot);
Run Code Online (Sandbox Code Playgroud)

这适用于安装在node_modules文件夹中的本地和全局模块.正则表达式将匹配最后一个node_modules路径元素以及以下路径元素的所有内容.但是,如果将包的入口点设置为另一个包(例如,"main": "./node_modules/sub-package"in package.json),则会失败.

解决方案#3

var escapeStringRegexp = require('escape-string-regexp');

/**
 * Get the root path of a npm package installed in node_modules.
 * @param {string} packageName The name of the package.
 * @returns {string} Root path of the …
Run Code Online (Sandbox Code Playgroud)

javascript path package node.js npm

7
推荐指数
2
解决办法
3349
查看次数

使用phpseclib验证在Java(Android)中生成的SHA1withRSA签名

这就是我想要做的:

  • 在Java/Android中生成512位RSA密钥对
  • 为Java中的某些消息生成SHA1withRSA签名
  • 向PHP发送消息,签名和公钥(用于测试这将同时完成)
  • 使用phpseclib验证PHP中的消息

到目前为止我得到了什么:

在Java方面:

String msg = "Test message";

// generate keypair
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(512);
KeyPair keyPair = keyGen.generateKeyPair();

// generate signature
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initSign(keyPair.getPrivate(), SecureRandom.getInstance("SHA1PRNG"));
signature.update(msg.getBytes());
byte[] sigBytes = signature.sign();

// send message, signature and public key to php script
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(uploadNum + 1);
nameValuePairs.add(new BasicNameValuePair("msg", msg));
nameValuePairs.add(new BasicNameValuePair("signature", Base64.encodeToString(sigBytes,
        Base64.DEFAULT)));
nameValuePairs.add(new BasicNameValuePair("pubkey", Base64.encodeToString(keyPair
        .getPublic().getEncoded(), Base64.DEFAULT)));

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(UPLOAD_SCRIPT);
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse …
Run Code Online (Sandbox Code Playgroud)

php java android rsa signature

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

当访问作为引用的类成员时,lambda 表达式是否保留对其封闭实例的引用?

我认为描述我的问题的最简单方法是举一个例子:

class Enclosing {
    private ObjectOfInterest o = new ObjectOfInterest();
    public void registerEventListener() {
        EventEmitter.onEvent(() -> {
            // Need to access 'o' here, while 'this' is not important.
            o.yeeha();
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

lambda 表达式是否包含对其实例的隐式引用Enclosing?如果是这样,我该如何避免这种情况以避免内存泄漏?我需要访问o事件侦听器,但不需要访问封闭的实例。

顺便说一句,我发现了这个问题“ Java8 lambda 是否像匿名类一样维护对其封闭实例的引用? ”,但我不清楚 lambda 表达式何时被认为“不从封闭实例捕获成员”。此外,接受的答案中引用的文档声明自己已过时。

java lambda reference

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

Docker 容器中 Alpine Linux (arm32v6) 上的 PostgreSQL 9.6.9 - 如何安装正确的 postgresql-contrib 包?

我需要在 32 位 ARM 系统(它的 QNAP NAS,CPU:Annapurna Labs Alpine AL-314)上的 Docker 容器中安装支持 uuid-ossp 的 PostgreSQL 9.6.9。

我找到了arm32v6/postgres图像并安装了arm32v6/postgres:9.6.9-alpine. 这工作顺利,但缺少 postgresql-contrib 包。据我了解,我需要安装 postgresql-contrib 才能获得 uuid-ossp 支持。

我在容器中打开了一个 CLI 并尝试:

# apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/armhf/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/armhf/APKINDEX.tar.gz
v3.7.0-215-g16971064c0 [http://dl-cdn.alpinelinux.org/alpine/v3.7/main]
v3.7.0-207-gac61833f9b [http://dl-cdn.alpinelinux.org/alpine/v3.7/community]
OK: 8879 distinct packages available
# apk add postgresql-contrib=9.6.9-r0
ERROR: unsatisfiable constraints:
  postgresql-contrib-10.4-r0:
    breaks: world[postgresql-contrib=9.6.9-r0]
Run Code Online (Sandbox Code Playgroud)

如何安装正确版本的 postgresql-contrib?或者我可以在 PostgreSQL 9.6.9 中使用 postgresql-contrib-10.4-r0 吗?

postgresql arm docker alpine-linux postgresql-9.6

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