Arganzheng's Blog

stay hungry, stay foolish

使用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文件,我们其实是希望他只被导入一次的(因为我们是要导入他定义的子函数)。这...

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...

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限...

AWK学习与实战

前言 AWK的pattern { action }语法结构已经影响到很多后来的东东,当然更早的是grep和sed。 以至于现在有个网站叫做ifttt,其名字意思就是if this then that,做的就是这个事情。虽然这门语言有点过时,还是有必要介绍一下。 What is AWK? An awk program is a sequence of patterns and actions that tell what to look for in the input data and what to do when it’s found. Awk searches a set of files for lines matched by any of the ...

shell如何实现ssh免密码登陆

在shell中经常有这样的情况,一个可以写成脚本的程序,本来你可以执行它然后去星巴克喝咖啡,但是由于里面有些交互行命令需要你回答,如login某个服务器,或者输入svn密码,等。但是这样都是我们可以预料的,如果能将我们的回答先存放在某个地方,让shell在那个时候自动去读取这个答案,那么他就可以继续执行了。google了一下,发现有个命令还是不错的,叫作expect,man了一下,有如下描述: In general, Expect is useful for running any program which requires interaction between the program and the user. All that is nece...

shell语言之我见

2011-05-08 星期天 热 shell是一门非常简单而原始的语言,容易入手,它最常见的作用是将一连串的unix命令(cd, ls , find, etc.)串起来。所以只要你对这些命令比较熟,你只要熟悉shell的一点点语法和特性就可以马上写出一个小型甚至中型的shell程序了。 最近用shell写了好几个脚本处理一些svn相关操作(拉N个分支,合并N个分之,提交N个分之,等),也算是对shell有比较深入的认识,这里谈谈个人的看法。 我认为shell是一门面向文本的语言。这主要取决于shell的不支持用户自定义类型(struct和class),而它本身的数据类型又少的可怜(只支持两种类型:int和string,有些shell支持其他类型,如bash支持...

关于文件描述符和句柄

2011-03-31 星期四 晴朗 今天jojo突然问我们:“什么叫做句柄?”。我对句柄不是很清楚(Win32下没有怎么编过程),但是我对文件描述符是比较清楚的。但是我觉得应该是差不多的,所以我就这么回答她了:“句柄应该类似与Unix下的文件描述符,是一个内核对象标识。根据这个标识,进程可以访问相应的内核对象。至于为什么不直接返回内核对象地址,原因我想有两个: 内核对象驻留在内核地址空件,而进程没有权限访问内核地址空间。C标准库中的File对象返回指针,那是因为它是用户库。 不给定内存地址,有利于内核(用户进程也一样)做内存空间调整和优化,而保持对外部透明。很多数据库存储引擎,就是这么实现的——一种称之为slotted page的技术。 晚饭的时候跟...

×