737 浏览
由于目前我从事的开发工作只能在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打开,效果如下:

注意:
- 生成项目前先up一下代码,保证生成的项目是最新的
- 对曾经编译的模块,最好gmake clean_all一次,避免中间文件也加入项目中
Posted in 班门弄斧.
Tagged with Awk, Shell, Ultraedit, Unix.
By cpiz
– 2009-08-28
481 浏览
从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获的幸福
我也愿面朝大海,春暖花开
Posted in 信手拈来.
Tagged with 诗.
By cpiz
– 2009-06-08
352 浏览
昨日观了《南京!南京!》
片子没有正经的主角,没有正经的观点,只是展示了那场战争中一些比较有代表性的人物:中国人、日本人、外国人、男人、女人、小孩。
《集结号》和《南京!南京!》告诉我们,只要有钱,国人现在也能拍出非常震撼的战争。一开始日军攻城的场景给人带来了无比巨大的压力,刻意黑白的画面,震耳欲聋的枪炮,残破的城墙,疯狂的军人。在这样一种炼狱般的环境,每个人都歇斯底里,每个人都是野兽,有的只想发泄,有的只想生存,善与恶,已经不能再以常理来论。
一场看起来很痛快,实则无足轻重的反抗之后,影片剩下的内容基本就是杀戮、生存、拯救。
一直没有流泪,到片子最后鼓声响起有些憋不住了,那一锤一锤都是敲在我们的心上。日军在祭念他们的烈士,他们至今仍有荣誉,我在痛心我们的同胞,他们大多已尸骨无存。
最后一个离开座位,心中全是痛,却一分都恨不起来,无论是什么名义的战争,受伤害的永远都是普通百姓,唯有国家强大,才能避免历史重现。借用这两日读《庆余年》中的一句:
我希望中国的人民都能成为不羁之民。受到他人虐待时有不屈服之心,受到灾恶侵袭时有不受挫折之心;若有不正之事时,不恐惧修正之心;不向豺虎献媚……
勿念国仇,勿忘国耻,自强不息!
感谢陆川,感谢中泉英雄,感谢所有为此片付出的日本人!
Posted in 捕声捉影.
Tagged with 电影, 影评.
By cpiz
– 2009-05-24
689 浏览
最近学习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 班门弄斧.
Tagged with ubuntu, virtualbox, 网络.
By cpiz
– 2009-05-16
667 浏览
1999
为中考而紧张准备着,当然,这只是表面上的。父母不知道我挑灯夜战的时候其实耳朵里正塞着耳机,听着电波里的声音。
还好考试暴发了一下,拿了个班级第3进入了高中。开始每天坐公交上下学,市里比镇里繁华得多,生活也丰富了起来。老师和爸妈管不到我,沉迷于电脑/电子游戏,每天抠着生活费也要玩上两把。
2000
继续沉迷于游戏,但渐渐网吧开始普及,第一次跟着别人去上网,老板娘教我申请OICQ(后来查到那天是2000年10月25日),网名貌似叫小虫。
互联网很神奇,接触到了很多新东西,还有点以网民的身份而骄傲。
2001
真正对计算机起了兴趣,每周不断地买<电脑报>,看完后到网吧去试验。最初什么都看不懂,一段时间后知识渐渐丰富了起来,在班里也被当作了"高手"。那是有生以来对知识最饥渴的日子,第天都盼着下一个报纸的出版日,有一回放学太晚报纸被人买走了,我穿梭了半个城市,一个接一个报刊亭地找,都忘了最后怎么才回到家的。那时候日子过得紧,一天只有几块钱生活费,大部分都花在了网吧里,吃用只能挑简单便宜的,但其中的快乐只有我自己知道。
那时最大的愿望就是买台自己的电脑,找了张质地较硬的纸片,仔细地画了张表格,每周对着报纸用铅笔更新一次爱机的配置,但最终上大学前还是没能兑现。上个月离职在家时整理资料,翻出了这张纸片,上面还填着PIII933,128M内存。。。这配置放现在跑XP都困难吧。
2002
要高考了,但实用主义的思想又扎根太深,对那些空泛的课本知识特别是个别学科始终提不起兴趣,偏科严重,成绩在始终在中游浮动。家里严重反对我看计算机相关的书报,然而年轻的叛逆指挥着我顶风而上。
因为每天要晚自习,在学校旁租了个房子,更没了人管。下完自习后基本上就钻网吧里了,经常是搞一个通宵再出来,第二天打一天瞌睡,然后晚上接着去。在去网吧的路上,脑袋里也常常进行着天人决战,一边是网络/CS/<千年>的诱惑,一边是觉得对不起父母的内疚,战到激烈时还冷不丁抽自己一嘴巴,只是掉头回宿舍的举动从来没有过-_-!!!。。。现在回忆起来,那时候精力可真好。
就这副样子,高考自然是落败了。父母很难过,所以我也很难过。问我愿不愿意去复读,我不想让他们再难过,说我愿意。其实当时根本没有那种我想读书的念头,读书就是为了爸妈。我的真正想法是随便找个破烂学校,二本也好,专科也将就,然后读个计算机专业,我不信凭我的兴趣和脑袋学不出头来,后来事实证明我当初的想法也没错。。。
复读的学校在当地很有名,落弟学子们都挤着进去翻新,实施的是监狱化的管理,严格控制寄读生的出入。一开学就军训,军训完了后我旧瘾复发,煽动宿舍里的兄弟随着走读生的人流混出了学校又泡了一通宵网,谁知道东窗事发,正赶上班主任探监(查房),第二天早晨6点不到在校门口把意犹未尽我们堵个正着。这事差点把我们弄开除了,后来写检查,叫我爸来签字,还要在班上念。。。只记得那回我爸的脸色相当难看。大错不敢犯了,小错仍然不断,也就是晚上在宿舍赖着不睡下下棋聊聊天什么的,我在开学后的40天内写了三份检查,破了个记录。
那时候学习非常紧张,每天5:50起床,21:45下自习,又出不了校门,只能苦中作乐,最流行的是写信、听音乐,课间男生们密密地排在走廊两边,对来往的女生们品头论足。
那时候仍然没心思读书,都说不在寂寞中恋爱,就在寂寞中变态,我往稍好点的那个方向走了一步,每天多了份希望,除了盼着下课外还盼着我传情飞鸿。。。
2003
赶上有史以来难度最高的一次高考,运气比上一回好了一点,踩了二本线几十分,志愿填得很满,真正的目标只有一个,读南昌大学的软件学院,好歹是个211,又是自己喜欢的软件。
最终如愿,尽管学校一般,但相比高中就是天堂,家里不再管我,甚至鼓励我谈恋爱,却又和GF分手了,谁对谁错最终也没分清。
认识了一个好朋友,一起打羽毛球,一起扯淡,一起泡网吧,一起参加学校活动,生活新鲜丰富。
2004
2月,买了第一台电脑,相当地兴奋,以前学的很多在网吧不能试的东西都可以一一实验,这一年基本用在了折腾上。
开始接触C、VB,认识了一个挺牛的师兄,之前多年自学的基础加上正确的引导,少走了很多弯路,专业水平在年级中开始展露。
与高中一样,对抽象学科仍然学不好,挂掉了大学第一门功课《高等数学》,从此以后几乎是逢"数"必挂,开始了几年的噩梦。
10月,买了第一台属于自己的手机N3108,开始每天从手机上看小说,随即对手机开发感兴趣,开发了一个制作手机电子书的软件放到网上,得到了很多网友的鼓励和感谢,觉得自己真没入错行。
2005
暑假在一家软件公司实习,搞WEB开发,初次感受就业,开始思量技术的价值
撞运通过了四级,提前解决了毕业的一大障碍
受那位兄弟的引导,开始写博客,那时候还是很新鲜的玩意
这一年挂掉了《数字逻辑》与《离散数学》,继续痛苦。。。
2006
认识了大学的本质,开始专注于专业学习,过了软件设计师考试,技能飞速提高,信心也快速增强。做了些虚虚实实的项目,真正赚到了人生第一枚金币。
随着基础课的淡出,专业课的增多,以前老赔钱的(交重修费)的我也开始能赚奖学金了,只是那几门重修仍然没过,每到学期末就痛一次。
开始准备就业,一番试水之后,无一失败,暗暗自喜。。。
2007
用心完成了毕业设计,交上了大学的最后一份作业。
原本是毕业后打算搞J2EE,但被PM在招聘宣讲时的一句话打动,加入了亚信,开始做电信行业。大学里从没接触过UNIX和ORACLE,一开始觉得很神秘,但好在基础不错,没过多久也开始玩得很熟。在这儿不仅学到了技术,更学到了很多职场技能:如何沟通、如何求助、如何安排任务、如何面对压力,结实一帮真诚的朋友。
2008
深思熟虑之后,还是选择了离职。
走进了广州,一个打工者的园地,走进了华为,一个IT业的王国。
广州的感觉与南昌完全不一样,处处能看到提醒防骗防盗防抢的公示,感觉危机四伏,人人功利而冷漠,凌晨时一个人走过夹在高楼中长长荡荡的天桥能感到彻骨的孤独。华为感觉冷酷、疯狂,像一列气势汹汹的蒸汽火车,我像车轮,与火车一同前进,却只能老老实实地做着圆周运动,提升有限。纵有诸多的不如意,还是不曾后悔当初的决定。写在年末最后一天,这是有生以来做出最多选择的一年,收获颇丰的一年。
Posted in 峥嵘岁月.
Tagged with 记忆.
By cpiz
– 2008-12-31
最新评论