1 | # 默认 |
Mosquitto从零部署
环境
全新的Ubuntu 16.04,所需编译环境:
1 | $ sudo apt-get install build-essential openssl libssl-dev libc-ares-dev uuid-dev cmake -y |
安装libwebsockets
1 |
|
Letsencrypt-SSL-证书脚本acme.sh
acme.sh 可以从 letsencrypt 生成免费的证书,自动更新.
6.1、基于truffle发布Token到测试私链
在上一篇文章《6、基于truffle框架部署合约》中,我们已经实现了部署一个简单的合约(sayhello和add),并且在控制台可以调用合约的函数。
本文将使用
《5.1、基于Ganache-Cli用Remix发布Token(代币)》
中sol代码,编译一个比较完整的合约,部署。
修改工程配置
- sol代码加入到工程
- 修改
1_initial_migration.js
文件TeaToken的构造函数1
2
3
4
5
6
7
8
9
10
11
12var Token = artifacts.require("./Token.sol");
var StandardToken = artifacts.require("./StandardToken.sol");
var TeaToken = artifacts.require("./TeaToken.sol");
module.exports = function(deployer) {
deployer.deploy(Migrations);
deployer.deploy(Token);
deployer.deploy(StandardToken);
//四个参数,是TeaToken的构造函数参数。
deployer.deploy(TeaToken,"10000000000000000000000","BBCoin",18,"BBC");
};1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20function TeaToken(
uint256 _initialAmount, //发行量
string _tokenName, //token名称
uint8 _decimalUnits, //小数位
string _tokenSymbol //标识
) {
// Give the creator all initial tokens
balances[msg.sender] = _initialAmount;
// Update total supply
totalSupply = _initialAmount;
// Set the name for display purposes
name = _tokenName;
// Amount of decimals for display purposes
decimals = _decimalUnits;
// Set the symbol for display purposes
symbol = _tokenSymbol;
}
编译部署
1 | $ truffle compile |
6.0、基于truffle部署HelloWorld合约到私链
后来发现 文档翻译系列-Truffle框架 文章,摘录:
Truffle是针对基于以太坊的Solidity语言的一套开发框架。本身基于Javascript。
依赖环境
- nodejs
- npm
启动 ganache-cli 或者 ganache-gui
1 | #本文采用 cli |
5.1、基于Ganache-Cli用Remix发布Token(代币)
本文启动 ganache-cli
1 | $ ganache-cli |
编译合约
打开remix,一样编译三个sol代码文件(参考上文)。
部署合约
5.0、搭建Ganache测试私链环境
与
Ropsten Test Net
一样,现在我们在私有链发布一个Token,私有链前面使用了Geth
来实现,本文通过ganache
来作为本地测试私有链。ganache
是一个基于内存的以太坊链,用于本地测试,安装简单,不用去连接测试网络,省去同步以太坊区块的麻烦。最关键是为后面的truffle框架做铺垫。
安装运行
ganache 是GUI程序。(需要nodejs环境)
下载地址 https://github.com/trufflesuite/ganache/releases
支持Linux、Mac和Windows ,本文直接安装Windows的,启动就可以,运行后默认创建10个账号,每个账号里有100ETH的余额。
默认是127.0.0.1,只有本地能访问,修改为WLAN局域网内可以访问。
ganache-cli 是字符终端程序(需要nodejs环境)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36$ npm install -g ganache-cli
$ ganache-cli
Ganache CLI v6.1.0 (ganache-core: 2.1.0)
Available Accounts
==================
(0) 0xef1e0310ecf99c3808940d351b8a4bd7566d0a71
(1) 0xa91b4c17ff43421754a8b721a8e55ac2881d946b
(2) 0x0a6d612ce9d06ee9bced7395f29b0167e059207e
(3) 0xd64f06e3a98a41bea2a6fa290e742083206ee061
(4) 0xd315be81ca72314a2434df898fe962e6b53db337
(5) 0xd4b54a13c047214bfae17ee2e25bbe4891edf582
(6) 0x630b76b384c423c231bbc3384b1333369296eff9
(7) 0x5f10c0cc0a914d9e5711a4ae022c27f4be7013d4
(8) 0xd7c06d6f55c44125a11d7d203bb24c86f786b37d
(9) 0x2fc8126d7ea755089dc7337fe956f2f0369a205b
Private Keys
==================
(0) 82d925b9235dcf17d2e7cb0907084bf44fa9ce7ab31a9d2375b5db75e2da0509
(1) 3f02535f00fa0ab48c306e561491cb4e10c684cea0297ec23aa4e87322108723
(2) a0c830651cac356ce0a1a1d471ae0a77d2f0cfbb869dbd2d7650d4827becf879
(3) 60a0a77161316406a5c03453d9e85427357f4046939bd4f884561cc806a4dccf
(4) 7914c24a44119f21071b2a7da59a4b07a8c665475b995e0491bf62e7b1cc0403
(5) bc512c5af4b68021be1ea084e93acf87fd3c1dea4a3ad1eec60cc0ba408f5ac0
(6) 2f1831f2ab30d0b091a4dced5dcac68c79fad0352727a5ab4edd694c3a9d4bd7
(7) 963d08d6060e01eb9223e742f12955daf00f5cc54220001ce75353a50a017968
(8) e3d724fa1a859afda107e9be2e3b0d5703705436bae1057280b8363bc6929fd8
(9) 6a661a59913f97e6fbd9cc4d56e8fc4d6c098d7be14254d788a5917cfe498bfd
HD Wallet
==================
Mnemonic: penalty until vessel limit motor waste rule ability soft moral stem harsh
Base HD Path: m/44'/60'/0'/0/{account_index}
Listening on localhost:8545
4、基于Ropsten测试网络用Remix发布Token(代币)
参考《以太坊发token教程》
本文只记录操作流程,在Ropsten Test Net下操作(非私有链),用MetaMask和Remix-ide来完成发行部署。
准备工作
- 安装MetaMask钱包,在Ropsten网络创建和登录账号(
0xBCdc478c31Bb569AFc9ed986E869f62A117a4Cae
),这个账号将会是我们的智能合约的所有者,token发行数量都是存入到这个账号. - 在MetaMask的Buy按钮,去领一些以太坊测试币(request 1 eth from faucet 按钮点一次领一个币),用于部署合约。
编写Token的合约代码
接口(ERC20标准)
Android P(9.0) 功能和 API
原文
Android P 为用户和开发者引入众多新特性和新功能。
本文重点介绍面向开发者的新功能。 要了解新 API,请阅读 API 差异报告或访问 Android API 参考 — 为醒目起见,将突出显示新 API。 请务必查阅 Android P 行为变更以了解平台变更可能给您的应用带来哪些方面的影响。
利用 Wi-Fi RTT 进行室内定位
Android P 添加了对 IEEE 802.11mc Wi-Fi 协议(也称为 Wi-Fi Round-Trip-Time (RTT))的平台支持,从而让您的应用可以利用室内定位功能。
在提供硬件支持的 Android P 设备上,应用可以使用全新的 RTT API 来测量与附近支持 RTT 的 Wi-Fi 接入点 (AP) 的距离。 设备必须已启用定位并开启了 Wi-Fi 扫描(在 Settings > Location 下),同时您的应用必须具有 ACCESS_FINE_LOCATION 权限。 设备不需要连接至 AP 即可使用 RTT。 为保证隐私性,只有手机可以确定与 AP 的距离;AP 不具备该信息。
如果您的设备测量与 3 个或更多 AP 的距离,您可以使用一个多点定位算法来预估与这些测量值最相符的设备位置。 结果通常精准至 1 至 2 米。
免费下载App图标Icon
可以下载一些常用的icon
3、以太坊钱包Mist
参考这篇文章: 玩转以太坊(Ethereum)的测试网络
以下是我在Ubuntu18.04下使用 Mist
记录
安装钱包(Mist)
下载Mist: https://github.com/ethereum/mist/releases (这里安装的是 Mist-linux64-0-10-0.zip)
Mist其实只是以太坊钱包的一个图形界面,后端还是官方的Geth。
写一个Volley自定义Request
在Android中,使用Volley来请求JSON数据,Volley自带 StringRequest
JsonObjectRequest
JsonArrayRequest
JsonRequest
GET示例
自定义Request,就是在Request中使用Gson把数据处理为对象,返回给调用者。示例 GsonRequestSample.java (GET Request):
1 | //代码来自:https://developer.android.google.cn/training/volley/request-custom |
Android通过 HTTPS 和 SSL 确保安全.md
摘录: https://developer.android.google.cn/training/articles/security-ssl
安全套接字层 (SSL)(现在技术上称为传输层安全协议 (TLS))是一个通用构建块,用于在客户端与服务器之间进行加密通信。应用很可能以错误的方式使用 SSL,从而导致恶意实体能够拦截网络上的应用数据。为了帮助您确保您的应用不会出现这种情况,本文重点介绍了使用安全网络协议的常见陷阱,并解决对使用公钥基础结构 (PKI) 关注较多的问题。
概念
在典型的 SSL 使用场景中,会使用一个包含公钥及与其匹配的私钥的证书配置服务器。作为 SSL 客户端与服务器握手的一部分,服务器将通过使用公钥加密签署其证书来证明自己具有私钥。
不过,任何人都可以生成他们自己的证书和私钥,因此,一个简单的握手只能说明服务器知道与证书公钥匹配的私钥,除此之外什么都证明不了。解决此问题的一个方法是让客户端拥有其信任的一个或多个证书集。如果证书不在此集合中,则不会信任服务器。
Nogotofail网络流量安全测试工具
对于已知的 TLS/SSL 漏洞和错配置,可以通过 Nogotofail 轻松确认您的应用程序是否安全。它是一款自动执行的工具,功能强大并且可扩展,用于测试通过它传送网络流量的任意设备的网络安全问题。
Nogotofail 可用于三个主要用例:
- 查找错误和漏洞。
- 验证修复并监测回归。
- 了解哪些应用和设备正在生成哪些流量。
Nogotofail 适用于 Android、iOS、Linux、Windows、Chrome 操作系统、OSX。事实上,任何用于连接互联网的设备都可以使用 Nogotofail。在 Android 和 Linux 上提供了一个易于使用的客户端来配置设置和获取通知,同时还提供了一个本身可作为路由器、VPN 服务器或代理部署的攻击引擎。
您可以在 Nogotofail 开源项目网站上访问此工具。
Adobe CC 2018离线安装包
Product | Windows | macOS |
---|---|---|
PS | Windows (32 bit) \ Windows (64 bit) | macOS (64 bit) |
AI | Windows (32 bit) \ Windows (64 bit) | macOS (64 bit) |
UI标注和切图
SpringBoot学习资料整理
SpringCloud和Dubbo如何选择
摘:可能很多人正在犹豫,在服务治理的时候应该选择那个框架呢?如果公司对效率有极高的要求建议使用 Dubbo,相对比 RPC 的效率会比 HTTP 高很多;如果团队不想对技术架构做大的改造建议使用 Dubbo,Dubbo 仅仅需要少量的修改就可以融入到内部系统的架构中。但如果技术团队喜欢挑战新技术,建议选择 Spring Cloud,Spring Cloud 架构体系有有趣很酷的技术。如果公司选择微服务架构去重构整个技术体系,那么 Spring Cloud 是当仁不让之选,它可以说是目前最好的微服务框架没有之一。——出自《阿里Dubbo疯狂更新,关Spring Cloud什么事?》
Dubbo性能高(RPC ),轻量级,设计的也很自由,开发者可以各种DIY,比如,他的注册中心,甚至可以用Redis来做。
Spring Cloud 是一个生态,要使用各种组件来组成整个服务,因为服务之间是基于HTTP通讯的,所以没有RPC 那么高效率,求的是一个稳。
总结:
中小型项目可以用Dubbo来快速实现,而且现在Dubbo已经支持SpringBoot。
SpringCloud学习资料整理
ASCII 流程图生成方法
markdown文档很多时候要流程图,不用图片,用字符就可以显示,如:
1 | +--------+ request +--------+ |
那么如何画这种图?
Easy DSL的语法描述图像
1 | $ apt-get install libgraph-easy-perl |