花钱的年华

--今天开始成为主站

用户操作
[即时聊天] [发私信] [加为好友]
江南白衣ID:calvinxiu
691454次访问,排名53好友0人,关注者38
calvinxiu的文章
原创 161 篇
翻译 0 篇
转载 0 篇
评论 646 篇
江南白衣的公告

肖桦,江南白衣,
开源项目SpringSide
春天的旁边
发起者

最近评论
calvinxiu:
发版本最痛苦的事情,就是刚发完之后忽然又有了一个比较重要的更新。

推荐大家下载3.0.3.1 (2mb)

1.简化了目录结构,感觉又清爽了不少。
2.消除了最后一块需要逐个Class写配置文件的地方(applicationContext.xml中的sessionFactory的mapping class)。
dreaming:恭喜~
hongyi:还是一头雾水,郁闷,为啥有这么多东东,叫人头大
suncheng_hong:用过appfuse,但springside还没有尝试过。
suncheng_hong:很想尝试一下。
文章分类
    收藏
      相册
      Blog用图
      Friends
      @_@
      Anders小明
      buaawhl
      cac
      canonical
      cctvx1
      david.turing
      femto
      g9
      JohnsonQu
      Michael Chen
      Raimundox
      robbin
      SimonLei
      totodo
      wuyu
      周爱民
      孟岩
      差沙
      庄表伟
      落魄的程序员
      透明
      郁也风
      铁手
      银狐999
      飞云小侠
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 开发人员行走Unix的随身四艺收藏

      新一篇: 免费的晚餐--Google技术学习 | 旧一篇: SpringSide的Coding Standards

         作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/01/27/1495778.aspx,转载请保留出处。

           Unix系统永远只会越来越多,开发人员就没必要特意学习它们的安装、配置和管理了,就全部交给集成人员吧。
          但开发人员行走于Unix之间,依然有四样东西要熟练。

          一、VI

          虽然Unix上的文本编辑器已经越来越好用,但不在Console前面,网速也不够连XWindows的时候,还是要依赖VI。
          回想VI的时代背景,发现VI对开发人员已经周到得离谱了,热键多到你双手不离键盘就能完成大半编辑工作。
          建议自己制作一张自己认为有用,但又经常忘记的命令的sheet--参见附录A,拿出考试的力气把它背熟。

          二、文本处理

             开发人员在Unix下干得最多的除了Make和除Bug外,大概就是处理日志文件、业务文件的查错和统计了。
             只会more和grep是不够的,开发老手会把awk,sed,grep,sort,uniq,wc,head,tail这些文本处理命令,通过管道玩具式的拆卸拼装,最后完成一件原本以为非编写大段代码不可的工作。周到的参数设定,让人再一次感叹那个简单的年代,这样复杂到极致的设计.......怪不得《Unix 编程艺术》的作者有那么骄傲的自觉。
          
           比如车东的每月访问TOP10 统计脚本:

      awk -F '\ t' '{ print   $ 4 }' 2004_2 . txt| grep chedong . com / tech / | uniq -c| sort  -rn|head - 10  

            以上命令的具体用法--参见附录B:文本处理命令小结,大概说明如下:

      • awk -F '\t' 将2004_2.txt访问纪录文件,用TAB分割,打印第4列
      • grep chedong.com/tech 只列出chedong.com/tech笔记目录下的文档
      • uniq -c 汇总计数
      • sort -rn 按数值排序
      • head -10 TOP 10

               补充:这些命令几乎都支持正则表达式,学正则比较好的书是OReilly的《Mastering.Regular.Expressions.3rd 2006》    

          三、Bash Shell 编程

          上面的纯粹命令管道拼装完成不了所有的事情,有时需要用Shell编程来配合调度。    

          编程是开发人员的天赋本能,不论什么语言,看看参考手册应该就能上手。

          见《Bash新手指南中文版》 ,一份快速的Bash Shell编程指南。
           
           更进一步,可以学习perl。

          四、Make or AutoMake

          用过Java的Ant后,想起Make就觉得很烦,很厌倦。总归还是会的,见《GNU Make 3.8.0 中文手册》    

           不过即使make已经精通到变态,每个人写出来的MakeFile还是千奇百怪,再看看开源项目们个个都是automake+autoconf了,我们自己也长进一点吧。手工编写MakeFile.am,让auotomake变成MakeFile.in,再让用户./configure 生成最终的MakeFile。
          
          autotools既能跨越平台,又是标准的写法,最重要的是,编写MakeFile.am的工作量比MakeFile少多了,只要简单的定义目标文件,先要处理的子目录,需要的源文件,头文件与库文件就可以了。
         
          入门文章
          使用AutoMake轻松生成Makefile 
          IBM DW:例解 autoconf 和 automake 生成 Makefile 文件

          上面两文只作入门了解,实际的操作步骤--参见附录C:我的automake1.9步骤小结。

          完整的免费电子书:
       《GNU Autoconf, Automake and Libtool》

          另外,ACE里还贡献了一个更厉害的MPC(Makefile, Project, and Workspace Creator ),  自动的生成MakeFile.am或者VC的项目文件。

          附录A:我的VI易忘命令手册

          上下左右:
          ctrl+u/d 上下半屏,ctrl+f/b,上下一屏
          H/G屏幕头/文章末 ,0/$ 行首行末
         
          增删改:
          yy/dd 复制/删除 一行,p/P:将yy/dd的内容paste出来
          I/A 在行首/末添加, o/O 开新行,d0/d$ 删除到行首,行末
          u:undo

          查:
          ? 向前查找, n/N 重复上一次查找

      附录B: 文本处理命令小结

         awk:处理结构化的文本(每行以固定符号分成若干列),提取打印某些字段,如:
          ls -l|awk '{print $1}'  --将ls-l结果的第一列打印出来
          awk -F":" '{print $1"  "$6}' /etc/passwd ,将以:分割的/etc/passwd文件的第1,6列打印出来,中间以空格分开
          详见IBM DW中国的AWK实例(共3篇) 或 Bash新手指南中文版第6章

          grep:过滤,大家用得最多的命令,支持正则表达式。参数有:
          -i忽略大小写,-n显示line number,-c 统计在每个文件的出现次数,-l只显示符合的文件的名字。

          sed:流编辑器,主要用于替换,如:
          sed -e '1,10s/foo/bar/g' myfile2.txt 将1到10行的文本中的foo 替换成bar,s代表替换,g代表全局替换
          支持正则的替换字符串,可以只替换某个范围内的内容。
          用法不算简单,详见IBM DW中国的Sed实例(共3篇)或 Bash新手指南中文版第5章
          
          sort:排序,参数有:
          -r逆序, -n 数字比较 , -M 日历比较 Feb,Dec, -f 忽略大小写
          同样支持结构化文件,如
          sort -t : -k 1,1 /etc/passwd,以: 分割,只按第1列排序
          sort -t : -k 1,1 -k2.2,3.4 /etc/passwd ,以:分割,先按第1列排序,再按第2列的第二个字符到第3列的第4个字符排序。

          uniq:去除重复行。
          除了正常用法外,还有-c统计重复次数,和-u (唯一)和 -d (重复)两个参数,只显示唯一的和重复的行。

          wc: 统计。
          -l 行,-m 字符,-w 单词

      附录C: 我的automake1.9步骤小结

      1. 先编写MakeFile.am
      2. 运行autoscan,生成configure.scan
      3. 修改configure.scan,同时把文件改名为configure.in :
        去除AC_CONFIG_HEADER([config.h])那行
        加入AM_INIT_AUTOMAKE([1.9 foreign])  (其中1.9是automake的版本号)
        加入AC_PROG_LIBTOOL  (如果用libtool的话)
        检查AC_CONFIG_FILES,如果之前没有先写齐所有MakeFile.am,autoscan就不会帮你加入,需要自己手工补充。
      4. libtoolize (如果用libtool的话)
      5. aclocal
      6. autoconf
      7. automake --add-missing
      8. ./configure
      9. make

        大家需要编写的文件从Makefile转为了Makefile.am 和configure.in, ACE的Examples是很好的参考。


        PS:以下文字不算字数 
             一个多月没有更新博客了,因为公司里调了新部门,很多东西要学习。太久没试过华丽的在上班时间,在工作中,在同事们身上学到这么多东西了,很是开心。
             下周开始爆发更新。

      发表于 @ 2007年01月27日 20:35:00|评论(loading...)|编辑

      新一篇: 免费的晚餐--Google技术学习 | 旧一篇: SpringSide的Coding Standards

      评论

      #plusboy 发表于2007-01-28 13:22:03  IP: 219.137.225.*
      看日志的时候还有个命令tail也是常用的。
      tail -f log_file | grep xxx
      #missdeer 发表于2007-01-28 13:57:32  IP:
      喜欢Emacs,对VI不感冒
      #sinall 发表于2007-01-28 15:50:11  IP: 218.97.242.*
      好文章!
      #shrinerain 发表于2007-01-28 17:51:02  IP: 219.82.145.*
      VI是好东西...
      不过命令太多了...我记不住...
      ~~~>_<~~~~~~
      #sunny_zsc 发表于2007-01-29 16:04:44  IP: 218.108.29.*
      我不赞同作者的观点,如果开发人员已经熟练掌握unix下的编程技巧,尚无可厚非;但是初入道着,我觉得不建议鼓励他们去熟记这么多复杂的指令,这无非是拷打初学者的记忆力而已,而并不是创造的能力,也不是那种自由驾驭软件的能力,当然我不否认,熟练驾驭这些指令的人有可能更加自由地控制代码,但这并不是必由之路.真正应该鼓励的是,让大家把更多的精力和时间投入到程序结构本身上来,枝端末节的事情应该让配置环境自动去做.大道至简,不能曲高和寡,我也担心有些人做着unix开发的贵族,有意无意用这些复杂的繁文缛节来吓退初学者进入他们的领地.c++如此式微,我觉得大家都有责任.
      #step_by_step 发表于2007-01-29 17:42:46  IP: 220.114.112.*
      我认为在unix世界中摸爬滚打,最重要的随身一艺是正则表达式,她是贯穿unix众多重量级工具的灵魂。不熟悉,不掌握regular expression,在unix世界中你便不能发挥出那些重量级工具最大的效率。
      #mslk 发表于2007-01-29 19:18:06  IP: 61.54.142.*
      必须学会Perl
      #Jiana 发表于2007-01-29 19:40:10  IP: 220.173.42.*

      regular expression'
      #Panr 发表于2007-01-29 23:14:55  IP: 58.100.80.*
      其实我觉得VI/文本日志/Shell 是中肯和必要的,至于AutoMake应该还没有到拳不离手曲不离口的重要地步吧

      VI其实感觉也不用强记吧,因为编程时间长了自然不需要看键盘的,而有时候写其它东西还是做不到盲打,这样也也无所谓可以接受了吧,呵呵
      文本日志原来也是这样的,后来想想是不够现代化,其实把日志存在数据库中,查询起来比想象中简单而且功能强大得多得多勒,这个是当初程序的开发习惯问题,毕竟作坊方式是一种爱好,我没有贬低的意思:)
      Shell是绝对没说的
      #axaw 发表于2007-01-30 10:26:30  IP:
      打倒WINDOWS在服务器领域的生存空间
      #myan 发表于2007-01-30 11:56:02  IP: 210.77.134.*
      关于第二点,一定程度上同意sunny_zsc。UNIX命令和小工具没有上千也有几百,每一个又有一大堆选项,完全记住既不可能也不必要,所以通常大家只是在需要的时候去查手册。非要追求用命令组合来完成任务的话,往往造成一种“头痛医头,脚痛医脚”的情况。Perl的出现,一开始就是为了把admin们从这种局面中解放出来。因此熟练掌握一种“系统管理语言”,在今天来说是远比掌握数百个UNIX命令更经济的。

      不过反过来说,随着经验的增长,自然会熟悉不少常用的UNIX命令和工具,这时候在Perl/Python/Ruby脚本里适时适度地使用,可以起到事半功倍的效果。

      所以正确的路子是,以系统管理语言为基础,合理嵌入现成工具。

      不过标题不是“文本处理”吗?为什么只讲到这些?

      #nasco 发表于2007-01-30 15:32:45  IP: 128.250.29.*
      unix下不一定要vi,但是公司里就我一个vi。automake夜有它的缺点,比如比能离开unix shell,程序本身如果是要windows、unix下同时native编译,windows下不用unix shell如bash,automake的那套东西就玩不起来了吧?还是标准的makefile,手工编写最厉害阿。

      那些文本处理工具也不过是基本到不能再基本的小把戏,如果大量文件需要反复高频率处理,还是不能指望他们。

      个人感觉unix就是一个平台,windows native/unix native/java这样我都能开发,但是我不认为这应该是我的主要技能。主要技能一个解决问题的思维能力,包括想象力与逻辑能力,其次语言沟通能力,包括外语以及所谓的协作能力。最后再是这些平台的东西。就比如有人开发windows,用vc写程序,他们不用讨论编辑器,更加不关心makefile,照样可以作出很好的东西。

      #startcode 发表于2007-01-30 17:17:33  IP:
      不错,很好。为什么不介绍一下emacs呢?它的作用不亚于VI/VIM。
      #shaolou 发表于2007-01-30 19:04:03  IP:
      勤学苦练,从苦到金不变的道理。
      #luyikk 发表于2007-01-31 20:11:43  IP: 60.184.154.*




      你难道只会拿 SpringSide
      来当下酒菜吗 这样未免太专注了 .

      有空到我府邸聊聊 , 我也是江南的.但我不学 UINX
      我只学 C# 我们可以谈谈别的事情.



      不错的文章 又学到 一课

      大家去我的BLOG 看看吧
      不是什么 大的原因去我的BLOG
      只是为了 "养眼"和学习 .

      http://blog.csdn.net/luyikk/
      #iamjianglibo 发表于2007-02-02 20:51:34  IP: 125.114.40.*
      vi只要会使用就行,处理文本我喜欢用脚本语言,比如python,ruby。这样做的好处是你一直都会熟悉这些语言。
      #foxyy8888 发表于2007-02-03 10:08:07  IP:
      不错,踢一脚。
      #mayabin 发表于2007-02-05 14:57:50  IP:
      呵呵,这样想太肤浅了吧,
      这些都是unix的基本知识,,不仅开发人员,系统管理员,集成人员,甚至普通用户都得了解。
      #chenpengyi 发表于2007-05-20 01:35:22  IP: 208.251.140.*
      呵呵,shell script、vi、sed、grep、awk和regexp确实是Linux世界的精髓,make的话持保留意见了。
      路过一个,支持一下
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 江南白衣