看了第一遍,还真以为这是部电影预告片,制作实在是精良
话不多说了,真正程序员应该都能看得其乐无穷
生活思考, 思考生活
2,069 浏览
由于目前我从事的开发工作只能在Unix上编译和测试,开发人员一般都习惯于在Windows下使用Ultraedit(以下简称UE)编辑代码,然后再FTP上传,这注定了IDE将与我们无缘。在无比怀念Eclipse、Visual Studio的同时,我尝试了很多Windows下优秀的C++开发工具,不断地比较和取舍后最终还是回归了UE。
UE曾经是16进制编辑器的代名词,强大的列编辑模式目前也无人能及,多年的演进让它的功能丰富了到让人望而生畏(想想那一屏高的右键菜单),幸好它还拥有着同样强大的可定制性。经过一番配置和二次开发后,现在我开发后台已经颇为顺手,下面介绍一下我的定制过程,均基于我当前在用的v15.10.0.1028版本。
我的开发方式要求我们的工具要有远程编辑功能;为了方便,我还希望能以目录树的方式,随选随改;工作的网络环境不是很理想,希望切换远程目录时不会停顿;我的编辑仅限于代码文件,不希望编译过程中产生的中间文件(包括中间代码文件)干扰我的视线。在我尝试过的众多文本编辑器和IDE中,只有UE优雅地解决了这些问题。
UE中的工程同时支持本地文件和远程文件,支持多层虚目录,只须将FTP上的源文件组织成一个工程,即可快速编辑,文件也可以保持原来的目录层次,避免了FTP方式的频繁加载目录和中间文件的干扰。
我的工作可能涉及5个子系统,近200个模块,将这些模块人工组织成UE工程明显不现实。研究工程文件发现,一个工程共分为3部分,头部是格式声明,然后是目录层次,最后是每个目录下的文件全路径,如下:
[Project ID] Signature=UE Proj: v.1 [Project Information] Use Relative Directory=1 Relative to Project File=1 [Group] 0=busiaccep_svr 1=busiaccep_svr - busicompleteintfmgr 2=busiaccep_svr - busicompleteintfmgr - kernel 3=busiaccep_svr - busicompleteintfmgr - include 4=busiaccep_svr - busicompleteintfmgr – mgr …… [Files - busiaccep_svr - busicompleteintfmgr - kernel] 0=FTP::182ng\/home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|interfaceip_db.obd 1=FTP::182ng\/home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|public_intf_db.obd 2=FTP::182ng\/home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|Makefile [Files - busiaccep_svr - busicompleteintfmgr - include] 0=FTP::182ng\/home/blahblahblah/busiaccep_svr/busicompleteintfmgr/include|IUserProm_mgr.h 1=FTP::182ng\/home/blahblahblah/busiaccep_svr/busicompleteintfmgr/include|IUserCell_mgr.h …… |
这应该可以写一个Shell脚本,遍历UNIX上的源代码目录,生成项目文件,下载到Windows中用UE打开,最终证实是可行的。脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/bin/ksh # # 根据当前目录生成UltraEdit工程文件内容 # 将生成的内容存储为.prj文件, 即可作为UE工程打开 # # caijw 创建 2009-5-6 13:50:30 # # 参数 FILTER="Makefile .c .cpp .h" FTP_LINK="182ng" CUR_PATH=`pwd` # 生成项目头部信息 echo "[Project ID]" echo "Signature=UE Proj: v.1" echo "[Project Information]" echo "Use Relative Directory=1" echo "Relative to Project File=1" # 生成目录结构信息 echo "[Group]" find . -type d | egrep -v \/CVS$ | egrep -v .svn | egrep -v ^\.$ | awk -F"/" '{print NR-1"="substr($0, 3)}' | sed 's/\// - /g' # 生成文件列表 find . -type f | egrep -v \/CVS\/ | egrep -v \/.svn\/ | egrep -v ^\.$ | awk '{print substr($0, 2)}' | awk ' BEGIN{ FS="/"; LAST_PATH="/DEV/NULL"; FILE_IDX = 0; } { SCAN_PATH = substr($0, 0, last_index($0, "/") - 1); UE_PATH=SCAN_PATH; gsub("/", " - ", UE_PATH); if(SCAN_PATH != LAST_PATH) { print "[Files"UE_PATH"]"; LAST_PATH = SCAN_PATH; FILE_IDX = 0; } print FILE_IDX"=FTP::'$FTP_LINK'\\'${CUR_PATH}'"SCAN_PATH"|"$NF; FILE_IDX++; } # # 查找某字符串在另一字符中出现的最后一次位置 # function last_index(strsrc, strsub){ idx = index(strsrc, strsub); if (idx != 0){ return idx + last_index(substr(strsrc, idx + 1), strsub); }else{ return 0; } } ' # 完成 |
使用前修改脚本内容,将FTP_LINK="182ng"中的182ng修改为UE中FTP的连接名称。建议名称尽量短小,以减少最终生成的项目文件的体积。
将脚本文件放到代码的最上级目录,执行chmod +x ue_prj.sh添加可执行权限,执行ue_prj.sh > openboss.prj,即可生成该目录下所有文件组织成的UE工程,下载至Windows中即可用UE打开,效果如下:
注意:
Posted in 班门弄斧.
– 2009-08-28
723 浏览
从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获的幸福
我也愿面朝大海,春暖花开
Posted in 信手拈来.
– 2009-06-08
759 浏览
昨日观了《南京!南京!》
片子没有正经的主角,没有正经的观点,只是展示了那场战争中一些比较有代表性的人物:中国人、日本人、外国人、男人、女人、小孩。
《集结号》和《南京!南京!》告诉我们,只要有钱,国人现在也能拍出非常震撼的战争。一开始日军攻城的场景给人带来了无比巨大的压力,刻意黑白的画面,震耳欲聋的枪炮,残破的城墙,疯狂的军人。在这样一种炼狱般的环境,每个人都歇斯底里,每个人都是野兽,有的只想发泄,有的只想生存,善与恶,已经不能再以常理来论。
一场看起来很痛快,实则无足轻重的反抗之后,影片剩下的内容基本就是杀戮、生存、拯救。
一直没有流泪,到片子最后鼓声响起有些憋不住了,那一锤一锤都是敲在我们的心上。日军在祭念他们的烈士,他们至今仍有荣誉,我在痛心我们的同胞,他们大多已尸骨无存。
最后一个离开座位,心中全是痛,却一分都恨不起来,无论是什么名义的战争,受伤害的永远都是普通百姓,唯有国家强大,才能避免历史重现。借用这两日读《庆余年》中的一句:
我希望中国的人民都能成为不羁之民。受到他人虐待时有不屈服之心,受到灾恶侵袭时有不受挫折之心;若有不正之事时,不恐惧修正之心;不向豺虎献媚……
勿念国仇,勿忘国耻,自强不息!
感谢陆川,感谢中泉英雄,感谢所有为此片付出的日本人!
Posted in 捕声捉影.
– 2009-05-24
1,201 浏览
最近学习C++,想自己装一个g++的编译平台,选择了现在红得发紫的VirtualBox 2.2.2 + ubuntu 9.04组合。
ubuntu 9.04的界面确实很友好,但折腾了太多年系统,这些对我就有如浮云~而默认安装不带g++、ftp、telnet这几个必要的组件,更让我头大一些。好在虚拟机默认的NAT网络方式让ubuntu可以装后就上网,换了N次源以后终于装好。而最终要TELNET/FTP访问ubuntu的时候,还得有固定的IP才可以,于是将网络模式切换成host-only,将主机上虚拟网卡和ubuntu的网卡配置在同一网段,成功连接。连上后又想再装个vim,而host-only模式上不了外网,我又不想做网桥把ubuntu也并入我的物理网络,只好重启又切换回NAT,装好后再换回host-only,突然又想装个xxx。。。几经周折后又烦又累,开始在网上找一个两全的办法。Google里的文章标题不一样,而内容都差不多。最终灵光一现,想到个最简单有效的法子,想出来后恨不得扇自己两耳光:咋现在才想到!!??
办法是:给虚拟机装两块网卡,一块用host-only提供与host之间的互访,另一块NAT上外网,问题解决。
也许是自己太火星了……有谁看到了轻点鄙视……
Posted in 班门弄斧.
– 2009-05-16
最新评论