作者:AngryFox 分类: Uncategorized January 6th, 2018 暂无评论

使用 Certbot 工具让你的网站秒配 HTTPS 证书。
Certbot
Certbot is an easy-to-use client that fetches a certificate from Let’s Encrypt—an open certificate authority launched by the EFF, Mozilla, and others—and deploys it to a web server.
Certbot是由 Let’s Encrypt 一个开放免费证书颁发机构的EFF、Mozilla和其他开发者推出的,易于客户端获取网站加密证书。
特点

简单易用、免费
自动化配置
证书无限免费续签
效率极高,一次安装,再配置其他站点 https 证书只需要 3 分钟
PS: 因为测试服务器站点过多,每次使用 acme-tiny 脚本配置证书都要十多分钟时间,为了提高效率,就使用了 Let’s Encrypt 官网推荐的自动部署脚本。

官方网站: https://certbot.eff.org
选择自己的服务器和操作系统环境,Certbot 官方会给出详细的安装过程和使用方法,我的环境是 Nginx + Ubuntu 14.04,安装过程如下
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
安装成功之后把 certbot 加入系统全局变量 PATH 中。

获取证书前需要先停止 Nginx 服务
service nginx stop
生成单域名证书
certbot certonly –standalone –email your@email.com -d yourdomain.com
一次生成多域名证书:

certbot certonly –standalone –email your@email.com -d yourdomain.com -d yourdomain2.com
证书配置成功后提示:
https可以访问到数据
4.查看网站生成的证书

tree /etc/letsencrypt/live/
5.配置 Nginx

…… 其他配置

listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/{yourdomain}.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{yourdomain}.com/privkey.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
6.重启 Nginx

service nginx start
此时再加上 https:// 访问你的网站,就会有一把可爱别致的小绿锁 Secure^_^

Let’s Encrypt 生成的免费证书为3个月时间,使用 certbot renew 可以无限免费续签 Https 证书

certbot renew
在生成证书的时候遇到一个问题
Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping
这是因为 nginx 服务没有关闭,执行 service nginx stop 即可。
原文地址

https://certbot.eff.org/docs/install.html

作者:AngryFox 分类: Uncategorized January 3rd, 2018 暂无评论

GRANT ALL PRIVILEGES ON *.* TO ‘mmp’@'%’ IDENTIFIED BY ‘#mmp2018′ WITH GRANT OPTION;
sudo apt-get install ufw

使用方法
1 启用
sudo ufw enable
sudo ufw default deny
作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。

2 关闭
sudo ufw disable

2 查看防火墙状态
sudo ufw status

3 开启/禁用相应端口或服务举例
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口

可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

推荐设置
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny

这样设置已经很安全,如果有特殊需要,可以使用sudo ufw allow开启相应服务。

作者:AngryFox 分类: Uncategorized December 15th, 2017 暂无评论

[root@iZ945cveihaZ svn]# scp -r /home/wwwroot/app.missapp.com root@119.23.140.89:/jdata/app.missapp.com
使用nohup在后台运行scp

需要从远程拷贝一个比较大的文件,所以要让SCP在后台运行
google搜了一下都是说使用ssh的public key让两台机器可以不用密码连接
但不是每个人都有这个条件允许两台机器无密码通行的
所以可以使用下面的方法实现
1.nohup scp user@server:path/file localpath
2.输入密码
3.按Ctrl+z挂起当前进程
4.使用命令bg让挂起的进程继续运行

作者:AngryFox 分类: Uncategorized December 8th, 2017 暂无评论

zk-snarks anonymity

应用性能治理系统——APM(Application Performance Management)来解决这个问题。

在APM产品选型时,我们考虑到当当目前系统的现状,得出了以下的结论:
APM产品需要性能极高,嵌入线上系统的探针需要尽量少的资源来完成调用信息获取,APM自身也需要能承载百亿量级的入库和查询操作的能力。
APM产品需要方便部署使用,尽量不改动或者轻微改动代码即可实现系统追踪。
APM系统可以提供系统依赖关系、SLA指标和调用耗时甘特图。
APM产品方便定制开发,方便扩展内部不同语言的系统使用和提供各种的统计数据。
排行榜系统逐步实现了一套较高可用性、低延迟、低成本的排行榜解决方案(涵盖自动接入、调度、容灾、资源隔离、监控、扩缩容、数据冷热分离等)

关键隐私问题,安全共识和契约共识
AOF是什么:
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
Aof保存的是appendonly.aof文件。

优势
每修改同步:appendfsync always 同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
每秒同步:appendfsync everysec 异步操作,每秒记录 如果一秒内宕机,有数据丢失
不同步:appendfsync no 从不同步
劣势
相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb
aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

无优惠的场景、秒杀场景、满减场景、拼团场景
无优惠的场景分为“店铺首页、商品详情页、加购物车页、下单页、支付页、支付成功页”等等

链路压测的实施分为以下几个阶段:

基础中间件开发,各种框架升级开发,压测器研究与脚本开发。
业务升级与线下验证(人工点击,数据落影子库)
业务升级与线上验证(人工点击,数据落影子库)
数据工厂数据准备。
小流量下发验证(用gatling下发,数据落影子库)
大流量量压测与系统扩容

了解 CPython 的读者应该都知道,GIL(Global Interpreter Lock)的存在,制约了 Python 应用的并发能力。
Grumpy 是一个实验性的 Python 运行时。它将 Python 代码翻译成 Go 程序,转译(transpiled)得到的程序可以与 Go 运行时无缝集成。
Go 的垃圾收集来管理对象生命周期,而不再是依赖引用计数。

作者:AngryFox 分类: Uncategorized November 6th, 2017 暂无评论
<!--<audio autoplay="autoplay" loop="loop" src="http://app.missapp.com/file/uploads/20171103/1509703117.mp3"></audio>-->
在微信上面的代码iOS上无法播放
修改为

document.addEventListener("WeixinJSBridgeReady", function () {
    var audio = new Audio();
    audio.src = "http://app.missapp.com/file/uploads/20171103/1509703117.mp3"
    audio.play();
}, false);
正常播放

iphonex的 5.8封面图尺寸
5.8 英寸 Retina 显示屏
纵向分辨率为 1125 x 2436 像素
横向分辨率为 2436 x 1125 像素

作者:AngryFox 分类: Uncategorized October 29th, 2017 暂无评论

获得余额
zcash-cli z_getbalance “t1ePMocvBfyntF9p1Z5US1VS5pnLvUrh9N3″

获得转账记录
zcash-cli listtransactions

 币量投票实现共识,POS,是基于比特币的币地址币量公开的特性通过币量进行加权的投票机制,能提供自由和透明的投票,以促进比特币生态系统中的分散决策,并有由真实币量支持的真实性
比特币是去中心化的,没有中心作决策,那么就需要通过共识来决策。而共识是较模糊的,需要通过投票来具体量化。具体就分为了:算力投票,币量投票,和节点投票。
  三种投票中算力投票最公平有效,所有算力都是靠矿机堆出来的几乎无法作弊,且投票时是无法投弃权票的,参与度高。例如即将来的SW隔离验证软分叉就是算力投票,需要95%算力共识下才激活。币量投票,作为万一投票内容很涉及矿工而算力投票失效时(如变POS若让矿工算力投票应该是100%不同意)的备选投票方案,其需要足够多的币量参与时才较为有效。而节点投票因为存在刷节点量的可能

作者:AngryFox 分类: Uncategorized September 22nd, 2017 暂无评论

调试页面的时候js报错 : Uncaught SyntaxError: Unexpected token < in JSON at position 0

其实报这个错误,只可能是json解析异常,坑了很久都没找到问题原因大哭,
结果点开这个错误就能定位到错误的代码

直接点击这个initHTML后面的url,定位到错误代码位置;

看到这里原因就很明显了,这个EditorHtml不能正确的解析,此次错误是因为
EditorHtml的数据结构之前是简单的字符串,后来因为修改了逻辑,改成了JSON的字符串,
而我获取到了修改之前的数据导致的报错.微笑
这个错误都是因为某些原因导致传入的字符串不是标准的JSON字符串导致的.
就是JSON.parse()里的字符串不是标准的JSON字符串,传入标准的JSON字符串就好了.
或者try catch 捕获异常,自己处理.

作者:AngryFox 分类: Uncategorized September 19th, 2017 暂无评论

nice命令用于以指定的进程调度优先级启动其他的程序。
新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU: nice -19 tar zcf pack.tar.gz documents
方法非常简单,即在原命令前加上nice -19。很多人可能有疑问了,最低优先级不是19么?那是因为这个“-19”中的“-”仅表示参数前缀;所以,如果希望将当前目录下的documents目录打包,并且赋予tar进程最高的优先级:
nice –19 tar zcf pack.tar.gz documents

算法程序

https://github.com/OhGodAPet/cpuminer-multi

https://github.com/lucasjones/cpuminer-multi

查询目前的币值

https://minergate.com/internal

glibc

http://ftp.gnu.org/gnu/glibc/

.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2

国内矿池

http://xmr.alimabi.cn/#getting_started

作者:AngryFox 分类: Uncategorized January 19th, 2017 暂无评论

PHP iconv(): Unknown error (84)
语法错误
如果你加上 //TRANSLIT 到out_charset 的参数后面,意味着如果找不到目标编码,则程序会去找与其相近的编码。如果你加的是//IGNORE,则不会去找相近的编码,而且只要有一个字符是程序无法识别的则将会报错。
根据上面的解释我将代码
iconv(‘gb2312′,’utf-8′, serialize($storeData));
改为
iconv(‘gb2312′,’utf-8//TRANSLIT//IGNORE’, serialize($storeData));

作者:AngryFox 分类: Uncategorized January 15th, 2017 暂无评论

Grumpy 是一个实验性的 Python 运行时。它将 Python 代码翻译成 Go 程序,转译(transpiled)得到的程序可以与 Go 运行时无缝集成。 Grumpy 去掉了 GIL,这就可以利用 Go 的垃圾收集来管理对象生命周期,而不再是依赖引用计数.,Grumpy 可以分为 grumpc 、 Grump 运行时和 Grumpy 标准库三块。其中grumpc 负责将 Python 程序转换为 Go 程序。解析 Python 代码,生成 Go 代码。它是用 Python 实现的。
从系统结构层面来看,系统分应用业务层、应用服务层,系统所依赖基础数据由平台服务层提供。

从服务部署层面来看,业务主要部署在三大服务集群,分别为Home池、Page池以及应用服务池。
php7

(1)addassocstringl参数4个改为了3个。

//PHP5
 add_assoc_stringl(parray, key, value, value_len);
//PHP7
 add_assoc_stringl(parray, key, value);
(2)addnextindex_stringl 参数从3个改为了2个。

//PHP5
 add_assoc_stringl(parray, key, value, value_len);
//PHP7
 add_assoc_stringl(parray, key, value);
(3)RETURN_STRINGL 参数从3个改为了2个。

//PHP5
RETURN_STRINGL(value, length,dup);
//PHP7
RETURN_STRINGL(value, length);
(4)变量声明从堆上分配,改为栈上分配。

//PHP5
zval* sarray_l;
ALLOC_INIT_ZVAL(sarray_l);
array_init(sarray_l);  

//PHP7
zval sarray_l;
array_init(&amp;sarray_l);
(5)zendhashgetcurrentkey_ex参数从6个改为4个。

//PHP5
ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex (
     HashTable* ht,
    char** str_index,
    uint* str_length,
    ulong* num_index,
    zend_bool duplicate,
    HashPosition* pos);  

//PHP7
ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(
      const HashTable *ht,
     zend_string **str_index,
     zend_ulong *num_index,
     HashPosition *pos);

一个支付系统不例外包括几个重要组成部分:收银台、交易、支付、网关、账务。

收银台:用于展示支付详情、提供各种多样支付方式的选择
交易:收单规则和交易规则处理
支付:处理各种组合的支付方式,如银行卡、用户余额、信用付、拿去花、红包、代金券、立减、积分等
账务:用来记录所有交易、资金往来的明细,财务会计记账
网关:用于对接银行通道、第三方支付通道(微信、支付宝)
大数据平台的数据源集中来源于三个方面,按比重大小来排序:

60%来源于关系数据库的同步迁移: 大多数公司都是采用MySQL和Oracle,就拿互联网金融平台来说,这些数据大部分是用户基本信息,交易数据以及资金数据。
30%来源于平台埋点数据的采集:渠道有PC、Wap、安卓和IOS,通过客户端产生请求,经过Netty服务器处理,再进Kafka接受数据并解码,最后到Spark Streaming划分为离线和实时清洗。
10%来源于第三方数据:做互联网金融都会整合第三方数据源,大体有工商、快消、车房、电商交易、银行、运营商等等,有些是通过正规渠道来购买(已脱敏),大部分数据来源于黑市(未脱敏)。这个市场鱼龙混杂、臭气熏天,很多真实数据被注入了污水,在这基础上建立的模型可信度往往很差。