redis 的使用场景及其数据类型

redis 的使用场景总结有以下几种:

  • 缓存/数据存储。涉及大部分 redis 的数据类型, string,Hash ,Zset ,set 等
  • 队列。利用 list 类型的 push pop 操作。
  • 事件通知。利用 publish/subscribe 消息系统
Read more...

密码哈希(Password Hashing)

密码哈希(password hashing),是常用的密码管理技术。在 web 开发等工程实践中,账户密码等敏感信息通常不会明文存储到数据库,而是转换成一段哈希值存储。这样即使哪天数据库泄露了,用户的密码也不会一眼被识破。密码哈希有以下特点:

  1. 把任意长度的字符串,转换成固定长度的随机字符串。
  2. 单向加密,不可逆转
Read more...

翻译:JavaScript Promises 实现原理详解(JavaScript Promises ... In Wicked Detail)

译按: Promise 是异步编程的一种解决方案,让 javascript 可以从杂乱回调函数中解脱出来。后来 ES6 标准把 Promise 纳入其中,原生提供了 Promise 对象。Promise 也成为 ES6 最主要的特性之一。
网上介绍 promise 使用方法的文章很多,解释其原理却很少。这篇文章循序渐进地实现了一遍 promise,分析透彻,对了解 promise 的工作原理很有帮助。为了加深印象,所以把原文翻译了一遍。

Read more...

搭建支持 Repo 的 Android 源码镜像(Repo 服务器)

方案厂商给了一份 Android 源码,没有 manifest.git 文件,不支持 Repo。为了基于这份代码搭建支持 Repo 的镜像服务器,断断续续摸索了两个星期,总算 hacking 成功。 本文用到的主要知识: shell script git 指令 一、关于 Repo 基于 Android 源码的开发工作大多要用到 Git 和 Repo。 Repo 是基于 Git 的仓库管理工具,支持同时管理许多个 Git 仓库。因为 Android 源码包含了许多个 Git 仓库,使用 Repo 可以简化许多工作。比如,使用一个 Repo 命令,就可以从多个不同的仓库下载文件,同步到你的计算机上。 搭建支持 Repo 的 Android 源码镜像,主要步骤如下: 在服务器搭建 Git 托管服务器 在客户端安装配置好 Repo 在客户端创建 manifest/default.xml 并上传到 Git 服务器 将客户端 Android 源码上传到 Git 服务器 在其它获得 git 权限的客户端使用:Repo init; Repo sync 二、搭建 Git 服务器 搭建 Git 服务器这部分的内容相对独立,和 Repo 的关系不大,因此另外写了一篇文章:
Read more...

React Native 原生模块库打包指南

最终项目的 repository:react-native-baidu-ocr 原生模块(Native Module)的使用方式 React Native(下称RN)的官方文档介绍了Native Modules (下称“原生模块”)的使用方法,用于访问原生平台的 API。但是,文档里的方法并不适合直接在项目使用。 以 iOS 为例,如果按照 RN 文档的做法,你需要用 Xcode 项目的 .xcodeproj 文件,在里面新建一个 .m Objective-C File 和一个 .h Header File,然后在这两个文件里实现一个“RCTBridgeModule”协议的 Objective-C 类。 这样做的缺点我想到的有两个,一是,如果要实现的原生模块多了,.m 和 .h 也会递增,目录容易混乱难以管理;二是,这样的原生模块不容易复用,其它项目没法直接使用这个原生模块。 通行的做法是,将实现后原生模块打包好,然后存放在项目的node_modules的文件内,供 APP 调用。 打包原生模块的主要工作 打包一个原生模块,最主要的工作有两部分: 安装该模块,即 “react-native link” 完成的工作。 写代码,对于iOS,是写一个实现了“RCTBridgeModule”协议的Objective-C类;对于Android,是写一个继承了 ReactContextBaseJavaModule的Java类。 所以,要打包 React Native 的原生模块,你最好有以下知识储备: 有 RN 开发经验。如 RN 文档所说,原生模块是该框架的高级特性,当然是有一定的经验更易理解。 了解 Java 和 Objective-C, 至少能看懂这两种代码。 本文将以百度 OCR 的 iOS SDK & Android SDK 为例,介绍如何将其打包为一个名为 “react-native-baidu-ocr” 的 原生模块库(library),供 RN APP 调用。
Read more...