0%

在使用阿里云 OSS 对象存储服务时,OSS 提供了图片处理的服务,可以通过在请求图片对象的 url 上携带各种图片处理的参数,如:x-oss-process=image/resize,w_100 等来实现图片的缩放、裁剪、水印、内切圆等等图片处理方式。

阿里云 OSS 图片处理服务指南

类似阿里云的这个图片处理服务,我们也可以通过 MinIO 和一个开源的图片处理服务项目 images.weserv.nl 来自建一套同时支持图片处理(和部分兼容阿里云图片处理样式)的对象存储系统。

images.weserv.nl 这个开源项目的最新版本 5.x 在 4.x 版本上完全使用 C++ 重写了,大幅度提升了性能,而 4.x 主要是基于 openresty + lua 来实现的,具体的重写原因,主要也是因为 images.serv.nl 的流量请求越来越多,对图片处理的性能要求也越来越高,所以团队从 5.x 之后完全重写了。不过,我们这里的演示仍然是基于 images.weserv.nl 4.x 分支的 :)

Read more »

MinIO 是啥

摘一个官网的简介:

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

更多的介绍、配置等内容移步MinIO Quickstart Guide

本文主要学习记录了如何在 MinIO 中使用基于 AssumeRole 的 STS 方式来获取临时访问授权的步骤。

STS 临时授权(STS temporary credentials)可以为第三方应用、自有应用或应用内不同用户(即用户由自有平台管理)颁发一个自定义时效和权限的访问凭证。

Read more »

关于 Spring Cloud Config

Spring Cloud Config 在分布式系统环境下为集中化的外部配置分别提供服务端和客户端支持的项目,不依赖于注册中心,是一个独立的配置中心,支持 git(缺省)、svn、jdbc、native等多种存储配置信息的形式。

Spring Cloud Config 的服务端特性如下:

  • HTTP, resource-based API for external configuration (name-value pairs, or equivalent YAML content)
  • Encrypt and decrypt property values (symmetric or asymmetric)
  • Embeddable easily in a Spring Boot application using @EnableConfigServer

Spring Cloud Config 的客户端特性如下:

  • Bind to the Config Server and initialize Spring Environment with remote property sources
  • Encrypt and decrypt property values (symmetric or asymmetric)

本文主要记录的是 Spring Cloud Config 的使用,就直接略过什么是配置中心以及配置中心需要的特性之类的介绍了。

Read more »

关于 gRPC

gRPC 是一个高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf (Protocol Buffers) 序列化协议开发,且支持众多开发语言()。

gRPC 提供了一种简单的方法来精确地定义服务和为iOS、Android 和 后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的 TCP 链接次数、节省 CPU 使用、和电池寿命。下图为 gRPC 结构图:

Read more »

这两天一个朋友给我提了个涉及语音识别的“需求”(当然是不能调用如科大讯飞等各种开放平台的语音SDK),主要识别的当然是中文,不过因为之前从未接触过机器学习领域的技术,所以这里也只是属于快速了解语音识别相关技术、以及提供一个能够运行语音识别的示例。

因为示例都是在自己的 PC 跑的,没有安装 CUDA,所以后面的训练和使用都没有采用 DNN-HMM 来训练,还是采用的传统的声学模型 GMM-HMM。

初识语音识别

定义

从 wiki 上摘抄一下,语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR)、计算机语音识别(英语:Computer Speech Recognition)或是语音转文本识别(英语:Speech To Text, STT),其目标是以计算机自动将人类的语音内容转换为相应的文字。

https://zh.wikipedia.org/wiki/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB

Read more »

Overview

我们想通过手机来模拟成智能卡(Smart Card),很多情况下,都是通过设备上的称为 Secure Element (以下简称 SE)的安全芯片来模拟的,譬如很多运营商提供的 SIM 卡中也会内嵌有这样的 SE 芯片(例如:中国移动和银联推的 NFC-SIM 卡-云闪付)。SE 芯片一般在设备出厂前就已经内嵌在板子上了,无法替换,并且 SE 上的系统主要负责处理安全支付方面的工作。

通过下面的使用 SE 来模拟 Card 的结构图,可以看到,这里的 transactions 都是由 SE 芯片直接和 NFC 读卡器进行通信和交互的,而不需要其他 Android 应用的参与,在 transaction 完成之后,Android 应用可以查询状态并通知用户:

Read more »

关于 NFC

NFC,全称是Near Field Communication,中译为近场通信,也叫做近距离无线通信技术。2004 年,飞利浦、索尼和诺基亚创建了 NFC 论坛来推动推动 NFC 的发展普及和规范化。NFC 的工作频率为 13.56MHz,有效距离为 4cm 左右,目前所支持的数据传输速率有 106Kbps、212Kbps 和 424Kbps 三种。

NFC Forum 至今共推出了一系列的技术规范(下图为技术规范架构图):

Read more »

本文目标是通过结合 Android Keystore 和 Fingerprint 来安全的对数据进行加密,并且能够通过指纹身份验证之后对数据进行解密。

了解 Keystore

Android Keystore 系统可以在一个安全的容器中(如:借助于系统芯片中提供的可信执行环境 TEE)存储加密密钥,在我们的加密密钥进入 Keystore 之后,可以在不用导出密钥的前提下完成加密操作,Keystore 支持的操作有:

  • 生成密钥
  • 导入和导出非对称密钥
  • 导入原始对称密钥
  • 使用适当的填充模式(padding modes)进行非对称加密和解密
  • 使用摘要和适当的填充模式(padding modes)进行非对称签名和验证
  • 以适当模式(包括 AEAD 模式)进行对称加密和解密
  • 生成和验证对称消息验证码(Message Authentication Codes, MAC)
Read more »

一个 Bitcoin 钱包包含了一系列的密钥对,每个密钥对都是由一对公钥(public key)和私钥(private key)组成。私钥(k)通常是随机选出的一串数字串,之后我们就可以通过椭圆曲线密码学(ECC)算法来产生一个公钥(K),然后再通过单向的 Hash 算法来生成 Bitcoin 地址。

如下图所示,描述了生成过程及主要的算法,以及整个过程的每一步都是不可逆的。

如何生成私钥(private key)

本质上私钥就是一串随机选出的 256 个 bit 的 01 数字(32 字节 * 8 = 256 bits),但是这串数字却控制着你的比特币账号的所有权,因此这串数字相当重要,要具有足够的随机性,一般采用密码学安全的**伪随机数生成器(CSPNG)**,并且需要有一个来自具有足够熵值的源的种子(seed)。

Read more »