小编Tim*_*Tim的帖子

Android BLE,读写特性

我目前正在开发Android BLE,并遇到Android BLE堆栈的很多问题..

我的开发工具是三星Galaxy J和Android 4.3.

我想知道如何从BLE中读取特征并写入特征(就像我验证我收到的数据,然后我使用BLE发送另一个数据)

我有严重的问题了解Android BLE回调如何工作,我不明白这5个功能......而且手册不清楚,任何人都可以用简单的形式解释好的灵魂???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Run Code Online (Sandbox Code Playgroud)

我目前的情况是,我设法读取onCharacteristicChanged()回调中的数据,然后我验证了收到的数据我试图通过使用发送数据

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Run Code Online (Sandbox Code Playgroud)

但是,Android BLE堆栈没有调用onCharacteristicsWrite(),事实上,Android只是挂在那里..

我尝试谷歌关于Android BLE,没有太多的信息,只有一堆抱怨BLE堆栈是多么不稳定......

android bluetooth-lowenergy android-bluetooth

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

Express.js的Restful API身份验证和会话管理

我一直在研究RESTful身份验证,我仍然无法得到一个非常明确的想法,我如何设计我的Web架构!我有很多问题没有答案..

我希望我的API也可以用于移动和网络,我使用的是Express v4

我不想使用基本身份验证,因为许多帖子建议作为一个简单的出路,或者我可以使用Passport中间件,但我想使用基于令牌的身份验证或类似或更好的东西,我想进行我的身份验证,所以我可以更好地理解,但我不知道我该怎么做,或者如果我理解清楚的话!

我将在下面简化我的预期身份验证架构:

注册新用户

  • 客户端

将用户名和密码发布到服务器(我知道如果你想保证连接安全是使用https连接,否则我会公开我的凭据,或者除了https之外还有其他任何选项?否则我将需要使用公共和私钥与时间戳和哈希我的凭据发送到服务器??,我该怎么办?或其他更好的选择?)

  • 服务器端

使用salt cryptography对密码进行哈希处理,并存储哈希密码和salt,然后生成令牌ID并发送给客户端!并且令牌ID存储在会话中或使用REDIS数据库???

是不是使用会话再次违反REST ??? 但是,如果我不使用会话,我如何存储令牌ID并将其与客户端进行比较???

  • 客户端

从现在开始我有令牌ID,我怎样才能存储在我的客户端?

  1. 我应该使用cookie吗?如果是的话,这不会违反RESTful ??? 我的移动应用程序如何存储cookie?
  2. 除了cookie,我还有什么其他选择,我想不出任何其他选择!

授权API

  • 客户端

现在,我有令牌ID,每次我想向服务器发出请求时,我都会将其放在授权标头中.

  • 服务器端

收到请求后,服务器将检查令牌API,并将其与会话令牌进行比较,如果为true,请求允许否则拒绝

这是Express应用程序授权的标准方法吗?

我很遗憾这篇冗长的帖子,但我觉得我应该掌握认证和授权,因为它很重要!我希望有人可以纠正我对REST authenticatino的误解并回答我的问题或建议我更好的方法来做到这一点!

authentication api rest node.js express

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

没有Passport.js的Google +身份验证

我无法理解Google +的身份验证和授权标准流程,而无需使用Passport

需求:

  1. 没有passport.js(我知道使用它很简单,但我不想使用它)
  2. 没有会话(不会使用任何会话,我想维持无国籍状态)

目前的架构:

  • 我有一个REST API服务器,带有JWT(JSON Web令牌),
  • 用户在进行POST /登录时会从我的服务器获取访问令牌
  • 我的服务器,将检查用户名和密码,并返回访问令牌
  • 我的服务器中的未来API查询需要此令牌

题:

i)如何用Google +替换当前的身份验证?

ii)当我使用Google +按钮登录时,我在客户端获得了一个访问令牌,我是否将令牌发送回我的服务器?

III),但是,我的服务器没有该用户的信息?我需要先在我的服务器上创建该用户,而当它发送一个访问令牌到我的服务器,我会检查该用户是有效的,并与我的服务器返回它访问令牌?(对于这个用户,我的服务器数据库上没有密码信息?,谷歌的这个访问令牌会存储在我的服务器上吗?)

iv)我读到 他们正在使用会话的文档https://developers.google.com/+/web/signin/server-side-flow,当用户第一次访问该页面时,我不想使用sessiosn

我想知道一般流程,我自己可以实现的代码,我只想知道解决这个问题的通用架构!

如果你能告诉我处理这个的一般概念,那将是很棒的!:)

authentication oauth node.js google-plus google-oauth

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

在安装之前反应处理空对象的最佳方法是什么?

我有一个React类,它想要渲染如下所示的对象:

data: {
    title: "haha",
    description: {
        country: "US",
        year: "1996"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当React想要呈现它时,它会产生错误.

未捕获错误:不变违规:receiveComponent(...):只能更新已安装的组件

我认为问题出在getInititalState中,我将我的数据声明为空对象,所以当我在超时后得到完整的数据对象时,React会尝试将我的数据对象映射到组件,但它会给出错误.

但有一件有趣的事情是,我没有问题访问this.props.title.title,但不是this.props.title.description.country,它会给出undefined

但是,当我调试它时,我可以看到我的对象.但是React无法访问它!

我的猜测是当React从空对象初始化时,它只会使用数据对象的第1级和第2级初始化虚拟DOM.

这个原因,当我尝试访问this.props.data.data.title时可以,但不是this.props.data.data.description.country

以下是我的代码

var BookBox = React.createClass({
    getInitialState: function() {
        return { data: {} };
    },
    componentWillMount: function() {
        var that = this;
        setTimeout(function() {
            console.log('timeout');
            that.setState({
                data: {
                    title: "haha",
                    description: {
                        country: "US",
                        year: "1996"
                    }
                }
            });
        }, 2000);
    },
    render: function() {
        return (
            <div>
                <h1>{this.state.data.title}</h1>
                <TestBox title={this.state.data} /> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

Three.js在Azure中加载.OBJ错误但不在本地加载

我使用three.js进行webGL加载.obj,但是在使用Google Chrome浏览器运行Windows Server 2008的Windows Azure中加载.obj时遇到问题,它给出了以下错误:

获取http://websiteaddress.net/webGL/obj/test.mtl 404(未找到)

甚至,我使用他们的原始源代码加载.obj文件它有相同的错误

当我尝试浏览服务器中的其他图像文件时,我可以预览它,例如:(website.net/images/test.gif) - 我可以在浏览器中看到test.gif图像

但是当我导航到.obj时,我在浏览器中收到错误:(例如:website.net/obg/test.obj)

404 - 找不到文件或目录.您要查找的资源可能已被删除,名称已更改或暂时不可用.

我可以在本地查看我的.obj,但是当我把它放在Azure中时却没有!任何人都可以帮我吗?谢谢!

html javascript azure webgl three.js

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

Angular $ http.delete CORS错误(预检请求)

我有一个Angular应用程序(v1.13.15)和Express.js(v4.12.4)作为后端.

我的后端有一个DELETE方法,我已经为它启用了CORS支持.

但是,当我使用Angular $ http.delete时,我遇到了这个错误

请求的资源上不存在"Access-Control-Allow-Origin"标头.

我已经尝试过使用Jquery,$ .ajax()调用它,我也遇到了同样的问题!

我也尝试使用POSTMAN来执行DELETE请求,没有问题.

但是,我使用Angular访问我的GET和POST方法没有问题.

我可以知道这是什么问题吗?

我的后端URL http:// localhost:3000

我使用gulp-webserver http:// localhost:8000为我的AngularJS提供服务

我的服务器代码

exports.deleteGPSData = (req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

let id = req.params.id;

res.send('here');
}
Run Code Online (Sandbox Code Playgroud)

和我的角色代码

$http.delete(API_URL + '/gps/' + id)
                .success(function(res) {
                    if (res.result !== 1) {
                        return defer.reject(new Error(id + ' failed to delete'));
                    }

                    defer.resolve(res.id);
                })
                .error(function(status) {
                    defer.reject(status);
                });
Run Code Online (Sandbox Code Playgroud)

我对GET和POST方法没有问题!只有当我使用DELETE方法时,我遇到了CORS错误!

我在下面附上了使用谷歌浏览器的请求标题的屏幕截图

Angular CORs问题

以下是Postman的截图,

POSTMAN删除

jquery node.js cors express angularjs

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

在每次测试之前在 mocha 套件中设置变量?

我想在执行测试之前先设置一些变量,我找到了这个解决方案,在每个套件之前而不是在每个测试之前运行 Mocha 设置

但是,我不知道如何将变量传递到我的回调中,他们这样做我会得到未定义

makeSuite('hello', (context) => {
    it('should return', () => {
        assert.strictEqual(1, 1)
    })
})
makeSuite('world', (context) => {
    it('should return', () => {
        console.log(context) // undefined
        assert.strictEqual(1, 1)
    })
})

function makeSuite(name: string, cb: (context: any) => any) {
    let age: string;
    describe(name, () => {
        beforeEach(() => {
            age = '123'
        })

        cb(age);
    })
}
Run Code Online (Sandbox Code Playgroud)

我想将变量传递给回调的原因是,我将有许多需要在beforeEach钩子上设置的私有变量,而且我不想为所有测试重复我的代码。

javascript mocha.js

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

在 C 头文件中声明全局字符数组

我有一个包含所有字符串命令的头文件,如下所示:

const char AT_RSSI[] = "ATRSSI\r\n";
const char AT_DEVICE_SECURITY[] = "ATDS";
Run Code Online (Sandbox Code Playgroud)

但是,使用这种方法,每个字符语句的末尾都附加了 \0,这很不方便,因为我每次使用 sizeof() 方法时都需要删除 1 个字符

还有另一种解决方案是使用

//header file
extern const char *AT_RSSI;

//some.c
const char *AT_RSSI = "ATRSSI\r\n";
Run Code Online (Sandbox Code Playgroud)

并在其中一个 .c 文件中声明它,但我不喜欢这种方法。我希望我所有的常量变量都在头文件中声明

我可以知道如何声明一个可以包含在各种.c文件中的常量全局变量 char 数组吗?

c global-variables

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

Android 5 RecyclerView就像Gmail一样

我正在玩RecyclerView,我发现没有太多关于如何使用它的文档

我从文档中看到GMail应用程序正在使用RecyclerView,但在应用程序中它具有许多普通RecyclerView不支持的功能:

它有截图

https://developer.android.com/training/material/lists-cards.html

特征:

  1. onTouch时列出项目突出显示
  2. 向左/向右滑动即可删除

我可以知道如何实现这些功能吗?

我发现有关于如何实现OnClickListener的讨论,(这些解决方案非常缓慢,因为它不断检查列表项区域)

RecyclerView onClick

但是,如果将它与Gmail应用程序进行比较,它会快速而流畅!

我可以知道如何实现上述2个功能吗?他们是如何做到的呢?他们使用Recyclerview还是ListView?

我确信我可以使用ListView实现这些功能,但我不知道如何使用Recyclerview实现它们.

android android-listview material-design android-recyclerview

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