最近弄了digitalocean的vps,研究了一下搭建一个vpn自己用,因为有些系统代理goagent还是搞不定。但是事实证明digitalocean线路还是很不稳,基本上没啥帮助=0=
用ubuntu就是安装东西快
sudo apt-get -y update
sudo apt-get -y install pptpd
配置一下dns
cat >/etc/ppp/options.pptpd <<END
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
END
说明
还有ip
cat > /etc/pptpd.conf <<END
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.2.1
remoteip 192.168.2.10-100
END
cat >> /etc/sysctl.conf <<END
net.ipv4.ip_forward=1
END
sysctl -p
备份当前iptables
iptables-save > /etc/iptables.down.rules
修改iptable NAT转发
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
设置MTU
iptables -I FORWARD -s 192.168.2.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300
保存新iptables
iptables-save > /etc/iptables.up.rules
重启后继续有效
cat >>/etc/ppp/pptpd-options<<EOF
pre-up iptables-restore < /etc/iptables.up.rules
post-down iptables-restore < /etc/iptables.down.rules
EOF
增加帐号密码都是test的用户
cat >/etc/ppp/chap-secrets <<END
test pptpd test *
END
/etc/init.d/pptpd restart
netstat -lntp
wget -c https://github.com/suyan/scripts/raw/master/Setup/pptp.sh
如果链接中断,并且出现下面问题:
Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.5, this is 2.4.6
在 /etc/pptpd.conf 文件中把 logwtmp 删掉就好了。
在这个信息爆炸的时代,我们阅读的来源实在太多了,以至于超过了我们能处理的极限。很好的筛选信息是很重要的,只阅读对自己当前最重要的文章。
Feedly 不用多说,作为 Google Reader 的替代者,功能上来说基本都满足了订阅RSS阅读的需求。为了筛选内容,可以考虑只读阅读人数多的文章。
RSS订阅包括了一些个人博客、媒体,比如:
Twitter 上关注了挺多开发者和科技媒体,偶尔关注一下最新动态。
每天一些精选内容,挑感兴趣的读一下。
微信上公众帐号经常有不错的文章,值得阅读。
微信公众帐号虽然关注了挺多,但是其实最后也只看这么几个人的:
稍后读工具之前还在用信息源的收藏,后来发现那些收藏既不容易翻阅,又不容易搜索,所以后来统一到了一个软件下。
Pocket 拥有比较广的支持,例如 Feedly, Twitter 和知乎日报都支持了 Pocket 收藏。只有微信不支持,不过没有关系,微信里点在 Safari 中打开,然后分享到 Pocket 即可。
稍后读的最大问题就是 Read It Never。不过这个没有问题,本来我们要做的也是阅读 or 归档。由于信息实在太多,有些内容又不是想现在读,合理的归档可以有助于以后再搜索。不过我们必须保证 Pocket 的尽量简洁,每天晚上尽量将今天收藏的文章归档。
Evernote 是我发现当前的最佳归档工具。它的检索非常快,而且网页版插件也非常好用。
我在mac下,使用port install zsh就好了,因为mac自带的Zsh比较老,然后使用chsh -s /opt/local/bin/zsh搞定
克隆配置
git clone git://github.com/sjl/oh-my-zsh.git ~/.oh-my-zsh
移动到根目录
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
使用Zsh的九个理由写了Zsh最令人激动的理由
直接使用“ ` ”符号包含起来,或者使用一个tab直接利用markdown来做高亮
Jekyll通过Pygments可以直接处理代码高亮
在Github Pages的文档里,也提到了这个方式,但是总觉得这样有点不是很舒服,打破了markdown的格式
这个方式使用了一个插件,而且gist也得管理,增大了开销……
这个方式使用了google-code-prettify来渲染代码高亮,本身库并不是很大,使用方便,最后我也选择了这个
直接到google-code-prettify官网下载代码,然后将它们放到项目下
官网提到了可以直接包含run_prettify.js的方式,这个会导入远程库,我选择了自己导入,如下
<link rel="stylesheet" href="/public/js/prettify/prettify.css">
<script src="/public/js/prettify/prettify.js"></script>
<script type="text/javascript">
$(function(){
$("pre").addClass("prettyprint linenums");
prettyPrint();
});
</script>
这里导入了css和js后,就可以直接用markdown的tab的方式来导入代码段了
默认主题不是很好看,只要更换prettify.css即可更换样式,可以到这里下载自己喜欢的主题css即可
Cobbler是一个Linux的安装服务,它可以在网络环境下迅速安装。它可以将众多Linux任务关连在一起,这样在你安装或修改系统时,就可以不必在众多命令和应用程序之间切换了。
随着一系列简单的命令,可以配置网络安装PXE(Preboot Execute Environment)、重新安装、基于媒体的网络安装和虚拟化安装(支持Xen、qemu、KVM、和一些类型的VMware)。Cobbler使用一个叫做’koan’(和Cobbler交互)的程序来重新安装及虚拟化支持。
Cobbler是一个轻量级的应用程序(只有1.5万行Python代码)。它试图在小型和大型安装时都非常简单易用,而且容易工作、扩展和阅读。它避免成为”企业级”(像那么复杂),但是它又拥有众多优秀的功能,非常适合在各种企业环境中使用,在重复性工作中节省大量的时间。
Cobbler可以选择性的帮助管理DHCP、DNS和yum包镜像基础设施,再者方面,它是一个更广义的自动化应用程序,而不仅仅只是处理配置。它还有一个轻量级的内置配置管理系统,以及整合与配置管理系统,像Puppet一样。Cobbler有一个命令行界面,一个网络界面,和许多用来访问配置的API。
puppet是一种Linux、Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppet master)。在需要管理的目标主机上安装puppet客户端软件(被称作Puppet Client)。当客户端连接上Puppet master后,定义在Puppet master上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况。如果有新的配置信息或者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信息被改变了,它可以从服务器获得原始配置进行校正。
func全称 Fedora Unified Network Controller ,主要用在Radhat, Fedora,OpenSuse,Centos系列系统上由一个server管理任意台服务器的工具,建立了Master-Slaves 主从SSL证书管控体系,可以将证书自动分发到所有受控服务.func直接发送远程命令或者远程获取数据,但是只适用于一些常用功能的模块的操作,实现其它功能需要自己写Python API,个人认为没有使用比较适当的”for do done”循环程序效果明确和方便.
git中一般使用 git init 创建的库不允许同一分支多个work tree直接提交,如果这么做有可能会出现以下问题:
remote: error: refusing to update checked out branch: refs/heads/master
要解决这个问题可以有以下四种方式
# 创建共享库(bare)
$ mkdir /git/repo.git && cd /git/repo.git && git init --bare
# 本地库
$ mkdir ~/repo && cd ~/repo && git init
# 创建一个文件
$ vi foo
# 增加新增文件到库管理
$ git add .
# 提交
$ git commit
# 增加共享库位置
$ git remote add origin file:///git/repo.git
# 提交更改
$ git push origin master
# 创建库
$ mkdir /git/repo && cd /git/repo && git init
# 创建一个文件
$ vi foo
# 增加新增文件到库管理
$ git add .
# 提交
$ git commit
# 新建一个分支
$ git branch test
# 本地库
$ git clone file:///git/repo && cd repo
# 切换到分支test
$ git checkout test
# 修改文件
$ echo "foo">foo
# 提交
$ git commit
# 增加远程库位置
$ git remote add origin flie:///git/repo
# 提交更改
$ git push origin test
修改远程库.git/config添加下面代码
[receive]
denyCurrentBranch = ignore
这种方式不能直接显示在结果的work tree上,如果要显示,需要使用
git reset --hard才能看到
在远程库上
git config -bool core.bare true