Skip to content


[转]java 4-ever

45 浏览

看了第一遍,还真以为这是部电影预告片,制作实在是精良

话不多说了,真正程序员应该都能看得其乐无穷

Posted in 捕声捉影.

Tagged with , .


Ultraedit高级应用(1) - 快速生成远程工程

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方式的频繁加载目录和中间文件的干扰。

UE工程设置

我的工作可能涉及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打开,最终证实是可行的。脚本如下:

?Download ue_prj.sh
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的连接名称。建议名称尽量短小,以减少最终生成的项目文件的体积。

UE FTP设置

将脚本文件放到代码的最上级目录,执行chmod +x ue_prj.sh添加可执行权限,执行ue_prj.sh > openboss.prj,即可生成该目录下所有文件组织成的UE工程,下载至Windows中即可用UE打开,效果如下:

UE打开工程

注意:

  • 生成项目前先up一下代码,保证生成的项目是最新的
  • 对曾经编译的模块,最好gmake clean_all一次,避免中间文件也加入项目中

Posted in 班门弄斧.

Tagged with , , , .


面朝大海,春暖花开

723 浏览

从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开

从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人

给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获的幸福
我也愿面朝大海,春暖花开

Posted in 信手拈来.

Tagged with .


南京!南京!

759 浏览

昨日观了《南京!南京!》

片子没有正经的主角,没有正经的观点,只是展示了那场战争中一些比较有代表性的人物:中国人、日本人、外国人、男人、女人、小孩。

《集结号》和《南京!南京!》告诉我们,只要有钱,国人现在也能拍出非常震撼的战争。一开始日军攻城的场景给人带来了无比巨大的压力,刻意黑白的画面,震耳欲聋的枪炮,残破的城墙,疯狂的军人。在这样一种炼狱般的环境,每个人都歇斯底里,每个人都是野兽,有的只想发泄,有的只想生存,善与恶,已经不能再以常理来论。

一场看起来很痛快,实则无足轻重的反抗之后,影片剩下的内容基本就是杀戮、生存、拯救。

一直没有流泪,到片子最后鼓声响起有些憋不住了,那一锤一锤都是敲在我们的心上。日军在祭念他们的烈士,他们至今仍有荣誉,我在痛心我们的同胞,他们大多已尸骨无存。

最后一个离开座位,心中全是痛,却一分都恨不起来,无论是什么名义的战争,受伤害的永远都是普通百姓,唯有国家强大,才能避免历史重现。借用这两日读《庆余年》中的一句:

我希望中国的人民都能成为不羁之民。受到他人虐待时有不屈服之心,受到灾恶侵袭时有不受挫折之心;若有不正之事时,不恐惧修正之心;不向豺虎献媚……

勿念国仇,勿忘国耻,自强不息!

感谢陆川,感谢中泉英雄,感谢所有为此片付出的日本人!

Posted in 捕声捉影.

Tagged with , .


VirtualBox + Ubuntu实用网络配置

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 班门弄斧.

Tagged with , , .