最近用shell script撸了个日记管理工具,自己写日记用,为了加密日记研究下用 Shell 中直接用Openssl加密文本的方法:
使用Systemd管理Minecraft Server
我一直开着一个自己的Minecraft小服务器,大家可以一起愉快地玩耍,服务器的管理是使用的Systemd将Minecraft作为一个service。
Nginx 搭建 RTMP 流媒体直播服务器
为了在远处查看屋里的情况,又把以前用过的Nginx – rtmp服务器搭起来了,大致记录下:
编译Nginx(带有RTMP模块):
Nginx使用1.6.3,Nginx-rtmp使用master最新版本,系统为CentOS 7
准备Nginx源代码:
wget
Nginx-rtmp:
git clone
配置:
在CentOS下:
在Gentoo下:
编译:
make -j9
安装:
make install
Nginx 配置:
加入rtmp block
rtmp{
}
Iptables配置:
Selinux配置:
启动Nginx:
Systemd中:
systemctl start nginx
systemctl enable nginx
非Systemd:
/etc/init.d/nginx start
TC (Traffic Control) 的使用
www.ibm.com/developerworks/cn/linux/1412_xiehy_tc/index.htmlhttp://www.lartc.org/LARTC-zh_CN.GB2312.pdf
使用 Dnspod 的 DDNS 功能,动态 IP 搭建网站
虽然我有台学生版阿里云,但还是更愿意将自己的网站放在看得见摸得着的主机上,家用宽带只有动态IP,可以用将域名 解析交给 Dnspod 的,通过 DDNS 动态解析 IP。
域名设置 Nameserver:
GoDaddy
Dnspod 设置:
服务器上配置 DDNS 自动更新服务:
emerge -v dev-python/httplib2
chmod 750 /usr/local/bin/pypod.py
chgrp ddns /usr/local/bin/pypod.py
useradd -s /sbin/nologin -d /var/empty ddns
usermod -a -G tpe,noserver ddns
尝试自建一个 OJ
有这个想法很久了,目前构思:
前端:
普普通通。
后端:
后端是重点所在,如何保证上传程序无法执行恶意操作等等,同时计算程序的内存,CPU占用等等。
1、chroot
2、Docker
3、VM
互联网信任链
经过这段时间的几次建站和证书申请,和Let’s Encrypt等的兴起,近期要研究一下整个互联网信任链大致工作方式。
非对称加密,公钥,私钥:
非对成加密即,即加密解密所需密钥不统一。非对称加密会有公钥。任何人公钥持有人可以用公钥对一段数据进行加密,但只有私钥的持有人能解密。非对称加密被广泛应用于各种安全通讯领域。通讯过程即使被全程监听也几乎不可能被破译。(目前破译一个4096位,RSA加密之后的数据大概普通PC会耗费几个世纪吧)。
证书:
证书中包含了证书持有人发布的公钥。
证书链,证书机构:
证书机构是一些可靠的机构,负责给证书”签字”,确保这个证书是和一个(或多个)域名绑定的,合法的。
域名,域名注册机构,所有人:
域名注册时会记录域名所有人给的email地址等信息,
DNS,MX地址:
每个地址会被对应解析为一个IP,
HTTPS:
信任:
MITM:
HTTPS优化:
>>def nexts(*iters):
>> nexts = [i for i in iters]
while nexts:
>> t = nexts
try:
>> for n, i in enumerate(t):
if iter(i):
yield n
>> except:
>> t = next[:n] + next[n+1:]
nexts = t
>>for i in nexts([[1,1],[2,2],3]):
pass
Grsecurity 的用户组加固
Grsecurity提供了基于GID,UID的执行控制(TPE)和网络控制,可以让指定用户组的用户无法执行非root所有的可执行文件,或者禁止建立监听端口或者出站连接等,可以加固服务器,防止漏洞被利用。
我是这样使用的,如果有更好的方法或者哪里不妥的话欢迎拍砖讨论。
UID是在内核中设置好的,根据内核config来建立用户组:
groupadd -g 65532 tpe groupadd -g 65531 nonet groupadd -g 65530 noclient groupadd -g 65529 noserver useradd -g tpe -s /sbin/nologin -u 65532 tpe useradd -g nonet -s /sbin/nologin -u 65531 nonet useradd -g noclient -s /sbin/nologin -u 65531 noclient useradd -g noclient -s /sbin/nologin -u 65530 noclient useradd -g noserver -s /sbin/nologin -u 65529 noserver useradd -g nonet -s /sbin/nologin -u 65528 nonet-tpe useradd -g noclient -s /sbin/nologin -u 65527 noclient-tpe useradd -g noserver -s /sbin/nologin -u 65526 noserver-tpe usermod -a -G tpe noclient-tpe usermod -a -G tpe noserver-tpe usermod -a -G tpe nonet-tpe
让特定程序以特定身份运行,比如php的用户名就叫php:
Scheme 的奇妙表示
前段时间读 《SICP》 的时候被 lambda 重新定义的皮亚诺公理惊艳到了。
lambda表示皮亚诺公理:
最早接触数学归纳法大概i是在初中时,那时并不懂得什么叫数学,什么叫归纳,感觉这个方法的使用和命名都颇为莫名其妙。
归纳,是通过根据已有的,通过观察的来的规律,总结出一个通用规则。数学归纳,就是用严格的
推演,证明
让一个推测可被证明。
lambda表示数学归纳法:
数学归纳法和递归颇为相似。我们对第n个命题求结果,有数学归纳法的定义这个取决于n-1个命题(n-1成立时,n成立),一层层直到第一个命题,也就是n=1时命题成立。此处为尾递归。
通过归纳之后,我们不仅
lambda:
归纳法相比直接通过工程学方法去证明在直观感受上更加不直观,颇有种“流氓有文化“的感觉。工程学所带来的”直观感受”有是如何得来的?(比如?)
其实工程学的任何推导都是归纳的一部分,lambda层层“递归“最终可以实现任何计算模型可实现的功能。递归的最底层只有三条命题。
数学,数字是从现实中抽象化得来,随着发展,很多数学概念很难直接推演到。