区块链与比特币

2018-3-23

最近因为购买了少许比特币、以太币的缘故,开始看一些和区块链技术有关的文章和书,多亏去年做电子政务积累了一些信息安全方面的知识,所以在加密和数字签名方面接受较快,现在把这周的几个知识点做个梳理,希望说明白什么是区块、什么是链、币。哈希

  1. hash是整个区块链的核心技术,确切的说是一种算法。
  2. 这种算法具有不可逆、不可篡改、一致性等特点。当然,这里使用”不”只是从实际出发,因为如果计算机发展到了某个阶段,说不定真的可以在短时间内找到hash结果的输入值,也就是成功进行了”哈希碰撞”。
  3. 只不过按照2018年的最新统计,一个基于SHA256的哈希,如果想找到两个不一样的输入但是相同的哈希结果,需要目前所有最强大的计算机联合起来进行计算,耗费自宇宙有历史以来的所有时间才能实现一个哈希碰撞(Even the most powerful computers in the world working together would need more time than the entire history of the univers)。
  • 区块-block

  1. 区块,就是矿工在收到所有交易信息的情况下,不断进行哈希运算,来找到一个符合规定的哈希结果;
  2. 比特币规定,合格的哈希结果是这个样子:”0000000000000000005efdckjfjejf3434dsjfad3if….34efakdfier”,这是一串基于16进制字符的字符串,长度是64位,但是要求前18个字符是0.
  3. 一旦有矿工得到了符合规定的哈希,他就会向所有节点进行广播,当其他节点进行确认后,一个新的区块就可以加入比特币区块链;
  4. 在自己的新区块得到所有节点确认后,矿工同时会获得12.5个比特币的挖矿奖励。当然,这笔交易在他挖矿时也已经作为交易内容放入了哈希的输入里;
  • 区块链-blockchain

  1. 区块链的含义,每次矿工在进行哈希运算前,会把前一个成功的区块的哈希结果放入自己的区块头部,因为哈希的特点是:任何一点的输入改变,都会引起哈希结果的巨大变化,这就确保了每个成功的区块之间是紧紧的”链”在一起;
  • 分布式区块链-distributed blockchain
  • 私钥与公钥
  • 加密与签名
  • 加密的交易
  • 加密货币地址
  • 钱包

在mac切换APPLE ID

2018-2-24

2018年2月起,苹果在中国大陆icloud数据中心,会由苹果和云上贵州共同运营。

苹果官方发出的邮件:

Dear XXX,

Thank you for using iCloud. We have some important information about iCloud in the mainland of China to share with you.

中国大陆的iCloud服务由云上贵州提供,这是为了在中国合规。

Apple recently announced a partnership with Chinese internet services company Guizhou on the Cloud Big Data Industrial Development Co., Ltd. (GCBD-云上贵州) to provide iCloud services in the mainland of China. This will allow us to continue to improve the speed and reliability of iCloud and comply with Chinese regulations.

从2月28日起,云上贵州正式接手iCloud服务。

Starting February 28, 2018, the operation of iCloud services associated with your Apple ID XXX will be transferred to GCBD. Use of these services and all the data you store with iCloud, including photos, videos, documents, and backups, will be subject to the Terms and Conditions of iCloud operated by GCBD. Aside from this change, your iCloud service will continue working without interruption.

如果你不是中国人,可以使用如下方法更改自己的国家或区域。

If you are not a Chinese citizen residing in the mainland of China, you can edit the country or region setting of your Apple ID to reflect your current country or region and continue using iCloud under Apple’s current terms and conditions. Read more about how to change your country or region of your Apple ID and iTunes Store or App Store in frequently asked questions about iCloud operated by GCBD.

如果你是生活在大陆的中国人,不想使用云上贵州提供的iCloud服务,可以按照如下方法取消自己的iCloud账户。

If you are a Chinese citizen residing in the mainland of China and don’t want to use iCloud operated by GCBD, go to https://www.icloud.com/optout to deactivate your iCloud account.

收到这封邮件后,我立即采取行动更换了自己苹果ID的国家属性,虽然网上介绍了众多更换到香港地区的方法,但是考虑到2017年末在澳门发生的微信事件,最终还是费了点周折切换到美国地区。

但是,由于部分app只有在国内能下载,我经常需要在两个苹果ID之间切换,手机终端还好,在mac总是找不到简便的切换方法。

经过今天摸索,发现mac上操作也很简便。
1.进入app store。
2.点击右下角的国旗(国家)。
3.进入国家选择页面,选则美国或者中国,然后重新在右上角的账户-account里重新登录即可。

在centos7.4下安装FTP

2018年2月12日旧文

这两天在centos7.4上安装FTP服务器,发现网上都是针对centos老版本(7以下)的建议,比如Redhat已经废弃不用的selinux设置,对新人很容易造成误导,总结自己的经验如下:

环境:CenOS7.4,阿里云ECS,PHP5.4,MySQL5.6.

选型:FTP(File Transfer Protocol)是典型的C/S架构产品,用来在客户端与服务端之间便捷传输文件,支持匿名下载更显方便。另外,一般安装的FTP是不安全的,因为用户凭证与数据都不加密。

在linux上常使用VSFTPD(vs代表very sucure,d代表Daemon),CentOS/红帽和Fedora这两种发新版都支持vsftpd。

下面各步骤都需要预先取得root权限,在命令行键入sudo即可(super user do的意思)

第一步:安装FTP服务器软件


1.安装vsftpd非常简单,在命令行键入:

# yum -y install vsftpd

2.安装完成后,ftp服务默认是关闭的,需要手动开启,并设置系统启动时自动开启。

#systemctl start vsftpd

#systemctl enable vsftpd

3.为了能够让外网客户端可以接入FTP服务,需要开启端口。注意有两个地方要添加端口:

  • 首先,在阿里云控制台里,安全组选择添加安全规则,开放20/21端口,并对所有ip地址开放。
  • 其次,如果centos上开启了防火墙,需要在对防火墙进行设置,命令如下,注意firewall后面没有空格

firewall-cmd –zone=public –permanent –add-port=21/tcp

firewall-cmd –zone=public –permanent –add-service=ftp

firewall-cmd –reload

第二步:配置FTP服务器


4.在编辑配置文件前,需要先进行备份,然后使用vim进行编辑

#cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak  

#vim /etc/vsftpd/vsftpd.conf

打开vim,按照如下内容进行编辑,完成后,按esc,输入“:wq”保存后退出。

anonymous_enable=NO             # 禁止匿名登录
local_enable=YES		# 允许本地登录
write_enable=YES		# 允许修改文件名称
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES		# 保存上传下载日志文件
connect_from_port_20=YES        # 开启主动模式
xferlog_std_format=YES
listen=NO
listen_ipv6=YES		        # 监听ipv6,要与listen=NO同时开启
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist    # 存储用户名
userlist_deny=NO                      

5.在完成vsftpd.conf编辑后,需要把ftp用户名加入vsftp.userlist,这里比较奇怪是,vsftpd.userlist里的用户默认是被禁止接入的(userlist_deny=YES),所以需要把deny修改为NO,则可以明确只有userlist里的用户才能接入ftp服务,还有两点需要注意:

  • 首先,使用useradd在系统内增加用户,并赋予相关权限(目录及文件);
  • 其次,在wordpress里增加插件、主题时会提示通过ftp上传文件,则必须将相关用户名和密码加入/var/www/html/wp-config.php

6.用户登录ftp服务器时,会被置于chroot中,这是用来作为ftp会话的本地root目录(被当作这些用户的home目录),我们需要把这些用户指向他们自己的home目录,在配置文件里加入下面两行。

chroot_local_user=YES  #本地用户被置于chroot
allow_writeable_chroot=YES  #YES确保chroot目录可写

第三步:通过SELinux提升FTP服务器安全


7.这里有个坑,在网上看到需要通过设置SELinux的boolean来允许FTP用户只读其home目录内的文件,即下面的命令,但是在CentOS7上总是报错:“boolean ftp_home_dir is not defined”,经过google(百度无用),原来红帽早就发了官方声明:“相关boolean已经在RHEL7.3中移除了,bugzilla.redhat.com上可以查询1406542,即ftp用户可以默认登录自己的home目录,如果此举无效,可以设置ftpd_full_access”。

#setsebool -P ftp_home_dir on

在设置full access时,发现semanage命令也需要安装,该命令是用来查询和修改SELinux默认目录的安全上下文,因为centos自带的chcon工具只能修改文件,目录等文件类型,无法对端口、消息接口和网路接口等进行管理,semanage能有效胜任SELinux的相关配置工作。semanage命令安装完毕后,需要重启系统,ECS会重启1-2分钟。

#yum -y install semanage

#reboot

#semanage boolean -m ftpd_full_access –on

最后,重启vsftpd服务以便让上面的所有改动生效。

#systemctl restart vsftpd.service

好,现在可以试试你的VPN服务器了。

the third day in office

6:50~7:37:到达公司

7:37~7:52:早餐

8:35~8:43:俯卧撑40+35+25

8:50~9:45:处理studio code配置conda问题,python学习

9:45~10:36:刷微信,某甲沟通工作,某乙沟通工作,某丙沟通工作

10:38~11:00:车路协同、智慧高速及AI产业链资料分析

11:00~12:00:健身房椭圆机

12:00~12:30:午餐

14:30~15:00:JJ方案评审

17:00~17:30:GJ方案讨论

the second day in office

2021-1-5,Tuesday

6:30~7:05:到达公司

7:05~7:30:公司早餐

7:30~9:36:查阅1月4日港股/美股交易记录,编制google sheet,2021年限制交易次数小于100次,计划今天抛售所有港股,不再融资炒股。和一位同学沟通部门调动的问题。

9:40~9:45:卖掉港股

9:45~11:30:更新下午交流材料

12:00~13:00:团队聚餐

15:00~16:00:和某卡公司初步交流

16:00~17:00:报销。海量搜索培训,包括倒序、短特征等算法

17:00~18:00:到家

20:00~20:30:钢琴基础

22:00~22:15:《平成史》

first day in office

20210104,周一,办公室第一天。

6:40出发~7:15到达公司

7:15~7:40:公司免费早餐

7:40~7:45:刷手机,打开tomato计时器

7:45~8:10:俯卧撑30+30+20+25

8:10~9:15:同事闲聊产品定价、车联网、无锡测试基地

9:15~:编写2021工作计划

10:00~10:26:行业例会

10:26~10:48:折腾blog离线撰写软件,选择open live writer

11:30~11:58:午餐

12:00~12:30:大号

12:30~13:10:肩部推拉

13:10~13:49:微信冲浪

13:50~16:30:工作计划

16:00~16:30:针对某所新年规划的会议

16:30~17:30:回家


遗留问题

-计划今年离开这家公司,去哪里未定,这里已经找不到个人价值。

关于oh-my-zsh

使用oh-my-zsh,对vps终端提示符进行优化,实现”主机名+当前目录+时间“的显示效果。

1 安装zsh
查看系统当前shell

# 查看系统当前 shell
cat /etc/shells

看zsh版本

zsh --version

2 安装oh-my-zsh
CURL安装

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

WGET 安装

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

3 选择特定theme
可以先看一下

open ~/.zshrc

在mac上使用open会打开文本编辑器,我没有尝试是否可以修改,直接用vi就好了

vi /etc/zshrc
vi ~/.zshrc

将ZSH_THEME后面修改为自己喜欢的theme

# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="robbyrussell"

3 使用vi编辑器.

/vi ./root/.oh-my-zsh/themes/robbyrussell.zsh-theme

增加下面一行

#PROMPT='$USER${ret_status}%{$fg[cyan]%}%d%{$reset_color%}$(git_prompt_info)[%T]'
PROMPT='$HOST${ret_status}%{$fg[cyan]%}%d%{$reset_color%}$(git_prompt_info)[%T]'
MDMacPro.local/[10:23]

我的其他配置

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

以上操作结束后,重启terminal;远程登录vps,logout即可。

修复wordpress及插件更新问题(FTP权限)

来自(https://www.dingguohua.com/tech/lnmp-wordpress-ftp.html )
假设你的 WordPress 安装目录为 /home/wwwroot/www.dingguohua.com
用 ssh客户端登录 Linux VPS ,执行:

chown -R www /home/wwwroot/www.dingguohua.com

此方法在centos上没有成功,我使用如下命令

chmod -R 777 /usr/share/nginx/html/wordpress

执行上面的命令就可以将 /home/wwwroot/www.dingguohua.com 下所有文件的属主改为 www ,这样就可以解决自动更新必须填FTP的问题。
基本上按以上方法就可以解决问题,如果还不能正常成功更新,例如还是出现需要输入FTP用户名和密码的窗口,则可以尝试修改 wp-config.php 文件
在 wp-config.php 中加入一行代码

define(‘FS_METHOD’, “direct”);

完成以上修改后,点击wordpress后台仪表盘的更新按钮,就会直接进入更新。