Life is Thinking & Feeling

I'm a embedded software engineer! I'm now learning English. and i like photography. I also like Programming with Python, and learning the Turbo Gears! for Web Development!

Thursday, July 17, 2008

从ClearCase到TortoiseSVN

ClearCaseTortoiseSVN

习惯了使用ClearCase之后,原本以为转换到SVN会有很大的不方便。没想到TortoiseSVN带给我的却是比ClearCase更灵活的功能。感觉SVN的概念大部分来自于ClearCase,却又完全抛弃了ClearCase中的许多冗余繁杂的功能。可以说SVN真是轻装上阵,身手敏捷。

我现在还只是在本机上安装了SVN,平常的工作也只是自己一个人的代码Check in/out(相当于SVNCommit概念),所以我暂时还不能说SVN得功能比ClearCase强大。就讲讲SVN怎么个灵活法吧。

先略略带过几个代码管理的基本概念,我认为要想快速上手并且合理有效的使用SVNClearCase,这些概念很重要。首先是“代码库”的概念。讲一句废话,同一个代码库中可以存放多套产品代码。在ClearCase中,一般采用不同的VOB来划分不同的产品代码,在SVN中相对比较简单,在Deposit的根目录下创建不同的子目录就可以。

再讲讲“分支Branch”和“标签(Tag/SVNLabel/ClearCase)”。在ClearCase中,两个概念是划分的很清晰的,拿棵树打个比方,要创建一个Branch,就在主干分支或其他分支上拉出新的分支;而打标签就是选定一个平面,给其中的每个代码文件的选定版本打上一个标签。

而在SVN中,由于采用了“镜像Copy”机制,创建分支和创建标签的操作方法是一样的,无非都是选定一个目录,然后执行“Copy to”操作,新创建的目录就是你所创建的分支或标签。正因如此,SVN才会需要推荐代码库的目录结构,使用TrunkBranchesTags三者分别表示主干分支、子分支和标签。

如果没有使用过ClearCase或其他版本控制工具,那么在使用SVN之前,需要尽量理解标签和分支的不同作用。不要把“分支”的概念混淆于磁盘上的“目录”(或“文件夹”)。

对于一套产品代码,设定了目录结构之后,我们一般将其确定为主干分支,例如对于Project1,主干分支的目录应该是file:///D:/deposit/Project1/trunkClearCase的使用者们一般习惯在为一套产品代码创建主干分支(ClearCase中即是MAIN)后,为每个不同子版本建立各自的主干分支,例如/MAIN/VER_1_0_MAIN/MAIN/VER_2_0_MAIN。在SVN中大可不必这么做,这里先不讨论。

确定了主干分支后,我们一般定义一个子分支用于日常的开发,在其上进行Check Out/Check-in|Commit代码等操作。在发布(Release)版本的时候,先在子分支上Commit所有代码,然后Merge到主干分支,打上标签,然后开始出版本。所以我们一般在本地磁盘上会从主干分支和子分支各Check-Out一套代码,一套用于开发,一套用于Release

然后就是从代码库中取出代码。

使用ClearCase就必须了解它的“Config Spec”。Config Spec实在是太强大了,一个复杂的Config Spec可以灵活的从不同VOB、不同代码目录、不同代码分支和不同代码标签获取到你想要的一套代码。所以使用ClearCase的方式一般是,确定VOB,找到VOB中的目录,然后确定一个分支,然后从该分支上的某一个标签或LATEST位置获取代码。

对于SVN,我还不知道是否有类似的功能,目前我只是使用最简单的操作:从Deposit Browser上选择一个开发分支所在的根目录,然后将其Check-Out到磁盘上保存本地代码的路径,仅此而已,不需要考虑不同的目录结构、不同的分支,或是不同的标签。这正是SVNClearCase的一个很大的不同,SVN的版本控制策略非常简单,但是足够应付大部分情况。至于其他情况,完全可以通过简单的Windows文件夹管理方法解决。例如如果两个项目共享一个目录,在ClearCaseConfig Spec就可以大显身手了,而在SVN中,只需要在Check-Out的时候为共享目录和项目主目录分别创建代码目录就可以了。

ClearCase中,需要首先创建一个View来取出代码,创建了View之后才能够执行Check-OutCheck-In等操作。而在SVN中的Check-Out操作本身就创建了一套本地代码。

SVN还有的一个简便之处在于,如果是同一份代码的两个目录,其中一个失从SVN Depositcheck-out的,另一个不是,那么只要拷贝“.SVN”文件夹到另外一个代码目录,那么立刻可以使其成为受管辖的代码目录。虽然这个功能似乎很无稽,但是确实对于一些情况很方便。如果你知道ClearCase管理它的View的复杂方法,你就知道SVN在这一点上多么人性化。

Tuesday, July 15, 2008

转换16进制字符串为整数 C++ hexidecimal string to integer/long

strtol:convert strings to a long-integer value.
strtod: Convert strings to a double-precision value.




long strtol(
const char *nptr,
char **endptr,
int base
);
long wcstol(
const wchar_t *nptr,
wchar_t **endptr,
int base
);
long _strtol_l(
const char *nptr,
char **endptr,
int base,
_locale_t locale
);
long _wcstol_l(
const wchar_t *nptr,
wchar_t **endptr,
int base,
_locale_t locale
);

double strtod(
const char *nptr,
char **endptr
);
double _strtod_l(
const char *nptr,
char **endptr,
_locale_t locale
);
double wcstod(
const wchar_t *nptr,
wchar_t **endptr
);
double wcstod_l(
const wchar_t *nptr,
wchar_t **endptr,
_locale_t locale
);

Routine

Required header

strtol,__strtol_l

strtod, _strtod_l

wcstol,

wcstod, _wcstod_l

or


Wednesday, April 30, 2008

DSLR Life

买了Nikon D40X DSLR之后,一直在享受单反的快乐。真实、厚重、快速、色彩,都是让我享受的。

买单反主要是为了给宝宝拍照片,虽说自己想去研究一些东西。比如现在要离开杭州,去上海工作了,便想留下一些纪念,例如把杭州的一些有特点的场景用模糊的照片记录下来,做成一个系列,这样,在上海便可以透过模糊的影响回忆起在杭州的生活。不过没有去做。

1000M Pixels DSLR带来的烦恼是图像文件太大,用了NEF RAW格式一般有七八M,而JPEG High的文件也有三四M,我用的是2G SD flash Card,每次几百张照片拍下来,一张都舍不得删除,于是就都保存在硬盘里。整理起来可就痛苦了。

不过现在发现Picasa的确是个好东西。有一点不好,就是它的backup功能感觉有些像鸡肋,连做一个旋转也要backup,极大的浪费空间,可是又不能通过configuration把backup禁止。但是其他的功能都是很不错的:实用、快捷。它的“相册”功能,在照片冲印的时候很有用,不需要拷贝照片,只需要新建一个相册就可以了,也算是节省了一些空间。

Wednesday, May 16, 2007

Windows下安装配置集成Trac

安装Trac简单吗?看到Trac复杂的安装步骤,大多数人会感到迷失,不过当我这一次安装成功后发现,原来一切都那么自然,我甚至为没有看到那么多困难感到奇怪,好的不说废话了,看看我的安装步骤。
1,下载程序
经过这次安装,发现下载正确的程序就完成了工作的80%,因为很多安装都是完全自动的,而配置又非常的简单。本文的所有下载都是针对Subversion1.4.2,不要搞错阿,下面是要下载的程序:
Python: http://www.python.org/ftp/python/2.4.4/python-2.4.4.msiTrac: http://ftp.edgewall.com/pub/trac/trac-0.10.2.win32.exeClearsilver: http://www.clearsilver.net/downloads/win32/clearsilver-0.9.14.win32-py2.4.exePysqlite: http://initd.org/pub/software/pysqlite/releases/2.3/2.3.2/pysqlite-2.3.2.win32-py2.4.exesvn-python: http://subversion.tigris.org/downloads/svn-python-1.4.2.win32-py2.4.exe
Python是必须的运行环境,Trac自然要下载,Clearsilver是Trac需要的页面显示框架,Pysqlite是访问sqlite数据库的程序包,而svn-python是访问Subversion的程序包。
2, 安装程序
首先安装Python,然后其他几个安装程序能够自动识别Python的安装,从而只需要按照默认安装即可。
3,配置Trac
我的Python安装在“D:\Python24”,我们在D盘创建了一个目录trac,作为trac环境存放的目录,然后在“D:\Python24\Scripts”下运行(“>”后的为实际输入的内容,后面相同):
D:\Python24\Scripts>..\python.exe trac-admin d:\trac initenv
然后提示输入Project的名字,我们输入自己喜欢的名字,这里我输入tractest,回车;然后询问使用何种数据库,为了教程的简单,这里使用默认的sqlite数据库,直接回车即可,数据库会存放在环境存放的目录;然后会询问版本库的类型,默认即可;然后会询问版本库的路径,在这个例子里我输入的是“d:\svnroot\project2”,这个目录里就是我的一个版本库;然后提示使用何种模版,回车默认即可。最后回车,如果没有问题,trac配置环境就建立起来了,现在启动服务器即可,运行:
D:\Python24\Scripts>..\python.exe tracd --port 8000 d:\trac
然后在浏览器打开“http://localhost:8000/trac” ,如果看到有内容,应该就是安装成功了,恭喜!
提示:关于Trac中版本库中文显示的问题,我看了一下,Trac处理文件编码是通过D:\trac\conf(刚才设置trac环境目录的配置目录)中的trac.ini文件的default_charset实现的,例如下面的配置:
default_charset = UTF-8
则在版本库中的文本文件如果是UTF-8编码的,则其中的中文字显示非常正常,当然如果是GBK(其实就是ISO88591)的文件,显示的中文是乱码。要想完全解决这个问题,不是单纯Trac能解决的,需要考虑更全面的方式解决。
总结
大家如果还有什么其他需求,可以继续探索。其实Trac的安装过程并不复杂,只是因为同时要描述多种可能,所以让人摸不着头脑。在本文介绍的基础上,你还可以有很多选择,例如使用MySQL数据库(要安装MySQL和MySQL的Python库),或者使用Apache(需要安装Apache和对应的Python集成工具)。
本文转贴自:http://www.subversion.org.cn/index.php?option=com_content&task=view&id=99&Itemid=9

想试用SVN,转帖一个帖子

SourceForge开始全面支持Subversion,这真是个好消息,这预示着CVS独霸天下的时代快要结束,SVN时代就要来临。
和CVS比起来,SVN的确很强大,这就像它的出现就是为了取代CVS一样,它的目标快要实现了。
具体的功能特性大家可以上Subversion官方网站查看,这里没必要给出那段生涩不好翻译的英语短句了。
官方中文网站在这儿,不过这个站的网络通讯太差劲了,一个礼拜5天都上不去:(
欣慰的是这里有个网站提供一本免费的、非常棒的SVN图书,可以选择在线查看或者下载PDF,有中文版哦,SVN使用者必读。
如果你对SVN还是表示怀疑可以在这里查看国外网友写的一篇各个版本控制系统功能比较的文章,相信看过后你不会再对SVN表示怀疑了。
英文看不懂?幸好,有网友将那篇生涩的英文SVN特性用生涩的中文表述出来了 ,中文英文对照着看,凑合着还行。
冲动的你这时已经手痒痒的想尝试下SVN的魅力,但苦于现在的项目已经建立在CVS上。别担心,这里正好有一篇文章介绍如何将CVS的Repository转换成SNV,转换方法来自这个程序http://cvs2svn.tigris.org/
如何使用SVN我这里不再介绍,官方的那本书是最好的教程,网上还有大量的安装和使用的文章可以借鉴,这里简单罗列几个SVN辅助的软件:
1、SubVersion,从 http://subversion.tigris.org/ 下载,是实现服务系统的软件,必装的。
2、TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端,用起来很方便,commit动作变得就像Winrar右键压缩一样方便。
3、SVNService.exe,从 http://dark.clansoft.dk/~mbn/svnservice/ 下载,是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。
4、AnkhSVN,从http://ankhsvn.tigris.org/下载,这是一个专为Visual Studio提供SVN的插件。
5、Subversive,从http://www.polarion.org/p_subversive.php下载,这时一个为Eclipse提供SVN的插件,据说已经和Eclipse自带的CVS功能有一拼。
6、还有很多很多SVN相关的工具以及使用TIP介绍,大家可以上官方的相关链接页面中查看,地址:http://subversion.tigris.org/links.html

本文转贴自:http://www.duduwolf.com/post/subversion.asp

Tuesday, May 15, 2007

想买数码单反相机很久了

想买数码单反相机很久了,这两天有些时间,我便开始筹划新的购机行动。
我知道DSLR很烧米,所以我已经决定不去买新机。还是去物色二手的。
首先当然要上网看行情了。O记论坛肯定是要去看看的。因为一朋友推荐的E1很有诱惑力,现在在二手市场很是红火,因为Olympus已经停产E1很久了,而现在新的E3推出,很多大虾米都在出E1进E3。
可是看看O记上真正出E1的似乎也不多,其中一帖,一虾米想出E1,在问到底多少钱出合适,有虾米回复说花四五千元买一台500万像素的E1太不值得,另有虾米说可以E1和E3双修,“毕竟都是专业机”。想出E1的虾米最后决定还是留着自用了。
这一贴让我有同感,四五千元的机身,再加上镜头和配件,一万肯定要的。我现在可没有这么多闲米。我可是只想五六千元搞定一整套的,包括一机身、一基本镜头、一三脚架,再加一个包包。看看有没有其他的适合我的好东东呢?
闲逛,去蜂鸟看看有没有佳能的好二手东东。我对尼康没什么好感,首先不喜欢外形,然后听了各种传言,似乎尼康的入门级DSLR并不“物美”,“处境尴尬”。而索尼的东东我也不喜欢。所以除了Olympus,还可以看看的就只有Canon了。
可是蜂鸟上并不多见二手DSLR转让,反而是很多非数码的SLR相机。SLR显然太过时了。
此时另一贴让我有些恍然大悟之感。看到那么多虾米花了那么多钱,还在继续一直的折腾,我退缩了。弄个六七千元还只是“刚入门,拿不出手”,“烧钱”啊!而综合时间因素和工作学习因素,似乎我根本没有时间去折腾那些东西了。
所以看来我现在不是需要DSLR,而是需要机会。不放弃兴趣,但我也不强求。还是姐夫的那台富士S5000似乎更加简便有效。不过如果有机会,我还是希望踏入DSLR行列的。

Monday, May 07, 2007

技术的偏好

今天看到MVM的一篇文章(http://blog.joycode.com/mvm/archive/2006/09/09/82829.aspx),发现微软的MVM似乎对Google (作者指名Spreadsheet)有些不满,我感觉很奇怪。这两年来我对Google的好感确实与日俱增,它们的新软件一次次给我带来惊喜。现在,包括GMail,Google Calendar,Google Earth,还有Blogger,这其中大部分功能都可以通过同一个Google Account集成起来了,这让我感觉非常的舒服:我可以在Blogger中发布文章和照片,然后在Picasa Web中管理相册,同时我的GMail可以收到一份文章的备份。我相信不久之后所有的Google Service都可以在同一个帐号下统一管理了,或许往Google Earth上传照片也可以通过这个GMail来完成了。新推出不久的谷歌拼音也让我很喜欢,它比MSPY更易於同时输入中英文。而这两年,微软带给个人用户的东西似乎不多,就算现在Windows Vista推出来了,我仍然热衷于使用Windows 2000和Windows XP,虽然这也说明微软的东西做得不错,但是这都是以前。

而对於自己这个Programmer来说,回顾近三年的工作,因为现在做的是嵌入式开发,比起以前Windows上的开发工作来说,基本上是不和微软的开发方面的东西打交道了。但是平时的Programming方面的兴趣偏好一直有在,我经常会寻找新奇的开源软件去了解和使用,包括现在对Python的学习。以前在Windows上开发,我经常去找VC++、COM、ADO、MFC、.Net之类的技术资料,做了大概也有三年,到最后发现自己的思维被局限在狭小的空间之中,完全得不到发挥,自己犹如沉陷在狭隘的巷口,不敢转身后退,前行却让人失落。

三年前的跳槽改变了这个状况,现在回想起来,我并不是有意想要逃离Microsoft开发阵营,不过工作自然而然的改变了我。着三年我接触了嵌入式开发领域的许多东西,包括Embedded Linux、eCos、Rterms等等。我发现了Python,发现了SF(sourceforge.net)上许多的开源软件,就像夜空中的闪闪星光,它们就像一个个自由天使,让我体会到了Programming的快乐。我知道很多人都想"跟着微软混,十年不怕没饭碗",不过我庆幸自己逃离出来了。这或许是Microsoft Programmer"赎回自我"的一步?

不知道Google是不是很有心在开源方面努力,总之我感觉到了Google对于Python等新产品的好感,许多Google API也都通过Python发布。所以如果现在让我在这两家公司之间选择,我肯定选择Google。

不过我也在这里写出我找到的谷歌拼音的一个Bug:在打开谷歌拼音“中”输入的时候,在MSWord的Options-Security选项卡的"Password to open"和"Password to modify"输入框中无法进行输入,就连数字也不行。我上网找了谷歌拼音的Bug Report方式,却没有找到。我想这里的两个问题,Google今后应该会改进吧?

Sunday, May 06, 2007

难忘的六和塔山水水墨画

因为要回复青翼的博客中的一篇文章,因为他的一幅美丽的照片!
那油菜花和青砖白墙,似乎是雪色中春天一般美丽!其中一个人评价说“远景少了层次感.天气不好呀.你应该等上1.2天的.”。我回想起那一天看见的六和塔的风景,深有同感,便写此回复!
“““
是啊,天气真的是摄影的大因素。记得五一前一个早上,七点多钟,骑行在滨江的六和路上,迎面看到江对面的六和塔和群山,竟是一幅完美的山水水墨画卷!山色苍茫,雾气缭绕,山体凹凸有致,气势磅礴,六和塔耸立其中,像是水墨画中活灵活现的浮雕一座!风景完美的让我震撼!我不禁舍不得这样的风景在车轮的滚动中失去,便骑行到江岸上,停下车,观望了许久——有了千米宽阔江水的衬托,又正好看到一艘沙船驶过,那风景更比在路上看的通彻完整!出现这样的风景,是由于前两天下了很大的雨,当天雨停了,空气十分的清爽,才会有这样的风景!这要归功于杭州这几年优秀的环境保护工作了!而我上班路过此处近有三年,其中不乏风景记忆,例如有一次的晚霞“落日长弓”,被我拍摄下来!但唯有这一次的风景,如此像画一般美丽!让我难以忘怀!而我那一天却没有带相机,便在记忆中深刻留影这一幕难忘的六和塔山水水墨画,却也不觉遗憾!正所谓“黄山归来不看岳”!看过这般水墨画,又何以复求方寸之间笔墨之下的画!
”””

附录:“落日长弓照片”