Arganzheng's Blog

stay hungry, stay foolish

构建可伸缩的大型网站

语言与框架 php: Zend python: django ruby: rail java: springMVC 开发环境与服务器环境 linux 机房 服务器硬件 服务器软件: webServer: apache, lightd, nginx appServer: tomcat, jboss, jetty, nodejs 代码版本控制 svn git 自动化构建工具 ...

工欲善其事,必先利其器——从零打造你的vim

内功心法 预练此功,必先自宫。 1、源码安装编辑器 vim 发行套件的软件源中预编译的vim很多时候版本太老旧,但是有些插件,比如YCM插件,对VIM版本有很严格的要求,所以如果你的版本实在太低,还是建议先升级一下。可以采用源码安装: git clone git@github.com:vim/vim.git cd vim/ ./configure --with-features=huge --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-perlinterp --with-python-config-dir=/usr/lib/python2.7/config/ --en...

使用github搭建个人博客

一直喜欢写文章。大概一年多前吧,在CSDN和javaeye(哦,现在叫做iteye..)注册了帐号,写了几篇博文,但是看着javaeye老土的界面和窄小的编辑区域就没有写的兴致了,CSDN相对大方点,但是速度老慢。还不如我用QQ记事本编辑方便和有意思。想自己写个博客系统,实在是没有抽不出空闲的时间,而且本人前端美工比较烂,所以一直是QQ记事本将就着用。直到最近看到很多人用jekyll搭建了自己的博客系统,所以在这周抽出时间也搞了一个,就是大家现在看到的这个。本博客是在其他文章的帮助搭建成功的,怀着感恩的心,本博的第一篇文章就是详细介绍如何用jekyll搭建一个个人博客。虽然文章很长,但是请相信我,整个过程只需要一天左右。 What: 什么是jekyll jeky...

使用rsync进行文件同步

以前一直用scp,但是rsync更强大。最常见的应用场景是需要将开发机的代码发布到测试机上编译和运行,确认没有问题之后再提交svn。以前的standalone发布程序做的其实就是这样的事情,里面的核心发布函数就是利用了rsync: Release(){ echo_red `nchar = 25` "[$APP]:Press any key to release on $CONTAINER, or Ctrl+c to quit !" `nchar = 25` read _xx ssh $CONTAINER "mkdir -p $TARGETDEPLOYDIR" rsync -avz --delete $SOURCEDEPLOYDIR/...

shell模块的另一种组织方式

在前面一篇文章里shell如何模块化和复用——shell深入学习,我介绍了一种shell的模块化做法,但是在实际的代码中我估计很少人会这么处理,相反,有另一种组织方式(或者称为模块化方式吧)在一些开源代码中可以见到,感觉更符合shell的语言特性。 由于shell的source语句(. 语句)本质上是在当前的shell进程中执行script脚本文件,所以如果这个脚本文件中不是单纯的定义子函数被导入上调用(也就是我们所谓的子模块或者库),那么他就类似于VM中的一个子control,仅仅是为了避免重复代码,而且往往需要导入多次(因为导入就是为了执行该子shell)。而对于作为子模块的子shell文件,我们其实是希望他只被导入一次的(因为我们是要导入他定义的子函数)。这...

Linux里复制终端Session(像SecureCRT一样)

This Tip is from YangQi 在你的登录账户下的.ssh文件夹新建一个文件:config cd ~/.ssh config的文件中,内容为: host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p 在linux里面,像secureCRT一样,复制session,不需要重复输入密码 举例: 你在窗口a登录了server2 新开窗口b,ssh user@server2后,就不需要再输入用户名密码。将经常需要登录的服务器,比如跳板机,写在online.sh里面,每次只要运行online,效果更佳。

shell如何模块化和复用——shell深入学习

基本上所有的编程语言都支持模块化,以达到功能复用的效果。比如java和python的import xxx。C/C++的include。那么shell支持模块化吗? shell本质上并不支持模块化,但是有些机制可以使它达到类似的效果。 一些背景知识 首先要了解有两种方式可以执行一个shell脚本: 1. 一种是新产生一个shell,然后执行相应的shell脚本 方法是在scripts文件开头加入以下语句 #!/bin/bash 一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。 也可以直接在命令行中指定shell类型,如: $ sh script文件 2. 一种是在当前shel...

Linux命令学习之——paste命令

基本上没有使用过paste命令,不过今天系统的回顾和学习了linux的常用命令。发现paste命令还是很不错的。 例如有下面两个数据文件: forrest@forrest-laptop:~/study/shell$ cat sname.txt Sr.No Name 11 Vivek 12 Renuka 13 Prakash 14 Ashish 15 Rani forrest@forrest-laptop:~/study/shell$ cat smark.txt Sr.No Mark 11 67 12 55 13 96 14 36 15 67 这两个文件其实非常类似于数据库的数据,根据Sr.No作为外键关联起来,我们想得到这样的数据: Sr.No Na...

python2.x的一个需要注意的地方

今天晚上过来跑图片dump python脚本,无意中发现python的OptParse的一个小“问题”,很容易中招,就像python的range一样,不小心就容易出问题。 程序主体逻辑如下: def main(): p = optparse.OptionParser(description=”dump summ img in a dir that matches the given patten”, prog=”dump_summ_img”, usage=”%prog dir”) p.add_option('--destdir', '-o', action="store", dest="destdir", d...

ifttt模式语言——sed和awk深入学习

引子——一些思考 sed和awk能否实现这样一类问题:假如匹配了一个pattern,对下面的记录行采取这样的action,直到另一个pattern满足。 也就是说: pattern1 ==> begin action {action} pattern2 ==> end action 有点麻烦,但是并不是不能做到。因为sed和awk都是ifttt模式,上面的模式其实其实可以分解为两个ifttt: if pattern1, then do the action; 此时的action context就是pattern1开始的那一行。 if pattern2, then stop the action; 这样,将action的context限...

×