博文

[转]国际:写出漂亮代码的七种方法(2008-12-17 12:51:00)

摘要:首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法: 1, 尽快结束 if语句 例如下面这个JavaScript语句,看起来就很恐怖: 1 function findShape(flags, point, attribute, list) { 2    if(!findShapePoints(flags, point, attribute)) { 3        if(!doFindShapePoints(flags, point, attribute)) { 4            if(!findInShape(flags, point, attribute)) { 5                if(!findFromGuide(flags,point) { 6                    if(list.count() > 0 && flags == 1) { 7                          doSomething(); 8                  ......

阅读全文(1496) | 评论:0

胡百师:测试工作是非常神圣的,每个人都可能在历史上留名(2008-12-08 12:43:00)

摘要:二届中国软件开发2.0技术大会2008年12月4日、5日、6日在北京九华山庄举行。本届大会较之前届规模更大、内容更丰富、水平更高,再次为上千名来自全国各地的高水平开发者和技术管理者呈献了一场中国软件业的顶级技术盛宴。 6日上午主题为软件工程管理的系列课程在3F102进行,9点,胡百师老师讲演的软件测试权责课程准时开始。
胡老师首先由现阶段软件开发的5个瓶颈引出软件为什么要进行测试的概念,介绍软件测试的的基本观念,透过简单的观念介绍说明软件测试中单元测试、功能测试、系统测试、验收测试各阶段的工作重点,详细阐述了测试工作的若干误区。接下来,探讨国内大多数软件企业对测试权责的认知,进而讨论测试工作的独立性。 在最后,胡老师鼓励大家:测试工作是非常神圣的,每个人都可能在历史上留名。并向大家分享了他对于测试工作的4个总结:1. 测试只能证明软件程序有错。而不能保证软件程序没错。2。测试只能证明软件程序有错。而不能保证软件程序没错。3. 测试人员钻研测试技巧,全力做好面对客户的各类测试人员。4。测试和开发没有黄金比例。 讲师简介:胡百师,现任昆山中创软件工程公司副总经理,负责推动该公司软件工程标准化作业、以及CMMI、ISO9000、ISO27001体系之建立与整合,对项目管理软件工程之最佳实践具有多年丰富实务经验。 ......

阅读全文(1220) | 评论:0

[转]没有工作经验,我求职时要不要说谎???--Leo谈应届生求职(2008-11-28 12:50:00)

摘要:1、 不要曲解工作经验 很多应届生在求职时经常说:“我没什么工作经验?”这样即给自己贴了负责的标签,又让自己在求职人占尽下风。让我看认真看,是没工作经验吗?还是我们曲解了“经验”这个词的含义。一门功课、一个课后作业、一次跟导师合作的项目机会,只要我们从中有所收获,都可以为视为经验;只要我们从中承担了工作,有所提高,都可以拿出来在面试时说。非全职的工作经验,远远比全职在公司混日子来得更有意义。 永远不要小看自己!!!   2、 看到别人偷东西时得手,我们不能也起歹意 “一个你认识的人靠说谎给自己赢得了面试甚至是入职的机会”在我看来,这件P事基本上影响了身处困境的你对世界的基本看法,大有自己也想试一试的意见。我个人建议还是不要试,看到别人偷东西得手时,我们不必也心生歹意,上去一起偷。所谓“伸手必被捉”偷东西的家伙最后总不会有什么好下场的。在简历上作假,尤如“偷”,代价很大,而且很不值得。我一个朋友就在简历里撒了个不大的小谎(虚报工作时间),在新公司里虽然干的不错,但内心之中总是感觉不踏实。劳动法规定:提供虚假信息的应聘者一经公司查实,公司可以立即解除与其的劳动关系,而且不必赔偿。   3、 丰富自己、提高自己是致胜根本 很高兴看到你确立了自己职业的努力方向。虽然现在遇到些挫折,只要目标坚定,总会有自己的机会。不断丰富自己,提高自己的是致胜根本。付出足够的努力,相信你不必靠“偷”,也能找到一份适合自己,自己也相对满意的工作。    http://blog.csdn.net/jobchanceleo/archive/2008/11/28/3396936.aspx......

阅读全文(2539) | 评论:0

[转]国际观点:有助于你编程而立即要做的10件事(2008-11-26 08:58:00)

摘要: 【CSDN编译】我们一直努力又努力去掌握那些对于我们来说是全新的东西。那么,我们做什么来帮助学习?下面是一个关于如何使你编程更迅速合理的10件事情的列表。我更习惯与使用Ruby on Rails,但下面的观点也适用于其他环境。

1.升级单元测试

你的编程没有测试?你应当随时进行测试,即TATFT ( testing all the fucking time )。当然你应当选择比仅是单元测试更好的方式。RSpec和Shoulda是两个可以选来使用的工具。

2.试用TDD

既然你在测试,那你就应当记录下这些测试。不要记录代码并用后来的测试覆盖它,而应当是方法的记录。TDD ( Test Drive Development ) 可以使你编出更好的代码,TATFT最重要的基础就是 TDD。进行TATFT并不难,首先你写下你所能做的最简单的测试并运行,观察测试的失败,然后写出执行语句以便使测试通过,不停地重复这样的过程就可以了。

3.自动化部署

自动化是你最好的朋友,想要实现自动Capistrano是相当好用的工具。在你配置部署好你的项目后,第一个要装的东西就应当是Capistrano。从第一天起就可以自动化部署将会节约你大量的时间。

4.安装 SCM

安装 SCM并学习使用它,这样做的好处是可以使那些超重的库中的代码不再那么冗繁,目前有大量的工具可以选择,我每天使用的是Git。Git是一款很特别的分布式SCM,即DSCM。DSCM是很有前景的,它可以同有其他库的用户们协同工作。

5.审查持续集成

现在我们已经测试了代码并将其安全的存放在库内。比起不停地测试,什么是更好的方式?自动测试是个不错的选择。很感激有cruisecontrol.rb的存在,这个应用工具自动运行了那些琐碎的测试。

6.了解你的代码

写代码是一回事,但是更重要的事情是了解代码。可以用四种自动化工具来帮助你了解代码:flog、 tarantula、rcov 和saikuro。这些工具分别有其独到之处,我很乐意向你介绍它们。
Flog,可以按字母排列的顺序来记录复杂的结果。

Tarantula,根据相关性原则和一些灵活的......

阅读全文(1518) | 评论:0

[转]Linux操作系统下C语言编程的注意事项(2008-11-19 12:03:00)

摘要:  一、工具的使用   1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。   2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。   3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。   4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。   二、linux/unix系统调用与标准C库   系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。   三、库的学习   无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。   1、glib库   glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat。因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。   2、libxml库   libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。   3、readline库   readline 库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要......

阅读全文(4742) | 评论:0

[转]VC++6.0 下搭建 wxWidgets 开发环境(2008-11-12 12:59:00)

摘要:和 GTK、QT、SWT、SWING 一样,wxWidgets 也是一种开源跨平台的 GUI 框架。因 wxWidgets 和 MFC 有些渊源,有些亲近,故要体验一番 wxWidgets。现在最新版是 2.8.7。wxWidgets 程序还可运行于 Windows CE、Palm OS。不但包括 GUI,还有 Media、Socket、ODBC 等库。 详情请见 wxWidgets 的官方网站是:http://www.wxwidgets.org 本篇介绍 VC++6.0 下如何搭建 wxWidgets 的开发环境,包括编译 wxWidgets 源码和配置 VC 环境。所用 wxWidgets 的版本是 2.8.7。 第一步:下载并安装 wxWidgets 在 http://www.wxwidgets.org/downloads/ 下载到 wxWidgets 源码。 你可以下载 Windows 安装版 http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7-Setup.exe (11.9M) 或者是 Zip 压缩版 http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.7.zip (15.9M) 假如我们下载的是 wxMSW-2.8.7-Setup.exe,就可运行它,过程中我们假定选择的安装目录是 d:\wxWidgets-2.8.7。 完成后,我们看到安装目录所在空间的大小是 127M。 注意要给 wxWidgets 有足够的剩余空间,单是编译一个版本的静态库就会增至300多M,如果还要编译动态库再选择上 DEBUG 或者 RELEASE、ASCII 或是 UNICODE 等,还要编译 sample 的话,最后空间能够暴到 2G。 第二步:编译 wxWidgets 编译方式有两种,一种是在 VC++ 中打开 wx.dsw 进行编译,另一种是用 nmake 在命令行下编译。 1) nmake 编译 运行 cmd.exe 来到命令行下,进入到目录 d:\wxWidgets-2.8.7,然后执行 D:\wxWidgets-2.8.7>nmake -f makefile.vc 默认是......

阅读全文(5227) | 评论:0

TCL/TK 与 C 程序的集成(2008-11-11 10:31:00)

摘要: TCL/TK 与 C 程序的集成   一、 简介   比较TCL/TK 提供的快速而又容易的开发图形拥护界面,X 程序显得很烦琐。Tcl/tk 是一种脚本语言,就象其它的一些脚本语言一样,也有很多事情不能够做或很难做。解决途径是联合 C 与 tcl/tk 一起来开发. tcl/tk 系统提供C 程序调用TCL/TK 的解释器来运行TCL/TK脚本。提供的库包括初始化变量的方法,调用不同的脚本和访问变量。利用这些混合变量对它们访问X固有的特性也提供了好处。简单的回调和时间函数允许程序员制定事件,注册一个C函数为TCL/TK的过程的能力成为一个强大的工具。这篇文档覆盖了TCL/TK脚本与C 集成的一些基础知识。  编译选项部分描述了变量库并包含了建立程序的必要文件。 初始化与注册名令部分解释了怎样开始,怎样从TCL/TK脚本中调用C函数,最后一部分访问变量阐述了怎样来从C函数里来读与写TCL/TK变量。 二、编译选项   为了能访问TCL/TK 库,必须在你的源代码中要设置一些常规的例程做并编译它。有两个调用库的头文件被声明。   #include   #include   编译混合应用程序需要指出正确的编译目录,正确的库,并设置正确的连接标志。在TCL/TK顶部的设置也是必须要包含的文件。而下面的设置是在使用 g++ 时要设置的。你的系统依赖于编译器和文件的定位可能有不同的变化。 -I/software/tcl-7.4/include -I/software/tk-4.0/include -I/software/x11r5_dev/Include -L/software/tcl-7.4/lib -L/software/tk-4.0/lib -L/software/x11r5_dev/lib -ltk -ltcl -lX11 三、初始化与注册命令   建立混合 tcl/tk & C 应用程序的中心要围绕几条选择命令。   首先就是"Tk_Main" 函数, 它用来控制整个 tcl/tk 解释器程序。这条命令没有返回值,因此,它需在你的"main" 函数中加下划线,你所有程序的一旦初始化,"Tk_Main" 函数带来三个变量。第二个变量是一个字符串型数组,每个字符串都有一个特殊的含义。第一个变量表示在......

阅读全文(8353) | 评论:0

利用SWIG把C函数生成Tcl接口(2008-11-11 10:28:00)

摘要:Tcl与SWIG   可能大家不是很熟悉swig这个名字,它的全称是Simple Wrapper and Interface Generator.它是干什么用的呢?是用来把C语言子程序包装成一些脚本语言的命令用的.比如,不少人喜欢使用Tcl/Tk来写点界面,但Tcl/Tk的数学功能实在太差,有时候就想自己给它扩充一些数学函数.又比如说,用Perl写个CGI程序,想用一个已经现成的自己编好的C语言子程序来处理用户返回的数据.这时候就用得上swig了. 其实刚才举的那些脚本语言都有自己的扩充接口,比如Perl有XS格式,Tcl/Tk有一套扩充内核用的C语言函数库.例如,要给Tcl扩充一个myfract命令,用来实现阶乘,可以这样做: (1)写一个C语言程序,假设叫做fract.c,内容如下: #include "tcl.h" int Tcl_myfract(ClientData notUsed, Tcl_Interp *interp, int argc, char { int i, j; double res=1.0; char re[30]; if (argc > 2) { Tcl_AppendResult(interp, "wrong args: should be myfract return TCL_ERROR; } if (Tcl_GetInt(interp, argv[1], &i) != TCL_OK) { return TCL_ERROR; } for (j=1;j......

阅读全文(6321) | 评论:0

国际观点:鼓励未来的程序员[转](2008-11-10 17:50:00)

摘要:今天我在BBC新闻网站上看到了这篇有趣的文章,是关于英国游戏产业的,英国是如何一直在发展他们能力范围之上的游戏产业。这个问题总是被推向那些伴随着BBC Micro,ZX-81等的计算机长大的那一代人身上。那时候的计算机通常会有一个内置的BASIC解释器,你需要使用它来运行磁带或磁盘程序。 幸亏这些本地居民和便宜的计算机,英国多年来在游戏市场都占据强有力的地位。程序员通过进入杂志的列表开始了解编程,进而一步一步开始写自己的游戏代码。那时候的机器明显是比现在的机器要难用,但却是文档齐全,更具有编程文化——如果你想要使用,你至少需要学习少数命令。 现在,与今年的这篇文章比较一下,这篇文章就显得很压抑。很少人在学习编程,学校在全神贯注地教学生如何使用Word和Excel。难怪很多人都不愿意考虑去试一试OpenOffice! 我现在将近30岁,在9或10岁的时候拥有了我的第一个计算机(Amstrad CPC 6128)。所以我认为我是处于伴随着第一代计算机长大的那一代人的末梢儿。像很多其他人一样,我按照电话本大小的手册书里的指南去编写程序,建立一个地址本应用程序,花费几个小时键入程序,同时调试来自杂志的游戏。 90年代被认为是计算机产业的一个糟糕时期,尽管计算机网络是出现于这个时代。Commodore沉没,Apple也只是死里逃生,在短短几年之内,Windows开始占据桌面统治地位,其它的几乎都消失了。 Windows毋庸置疑在使计算机更易使用方面做出了杰出贡献(其实我不喜欢承认这件事情,我是一个Linux用户),同时还提供了写信,制作电子表格,到后来的网络冲浪等一些了不起的功能。一定程度上来说,它使计算机变成了一个黑匣子,使人们对学习编码不感兴趣。 同时,游戏控制台开始占据更大的游戏市场。一些流派(如RTS即时战略),已经在家庭计算机上占有了很强的地位,而且现在仍然如此。平台游戏如Mario和Sonic游戏渐渐退去舞台。所以,像过去那种为了玩游戏买计算机,然后开始编程的情况已经很少见了。 现在,如果你买一台Windows PC,没有任何方式会鼓励你用它编程序。没有任何种类的指导,也没有BASIC解释器(或者任何其它解释器)。现在的PC杂志似乎没有做任何鼓励人们学习编程的事情,我觉得这有一些悲哀。 拥有一台Windows计算机,......

阅读全文(1963) | 评论:0

Selenium Remote Control: 教程(2008-11-01 15:18:00)

摘要:Selenium Remote Control: 教程
这个Selenium Remote Control 教程将会教你怎么从命令行开始Selenium Server, 并且怎么在交互模式下使用Server。它要求你熟悉怎么从命令行运行程序。最后,我们会演示怎么写一个简单的和我们在交互模式里做的同样的测试。
-------------------------------------------------------------------------------- Selenium Server 是用Java编写的,需要Java Runtime Environment (JRE)1.5.0 或者更高版本去运行。如果你已经安装了,试一下这个命令行: java -version 你应该看到一个简短的消息告诉你安装了什么版本的Java,例如: java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode) 如果你看到一个错误消息,你也许需要安装JRE,或者需要添加它到你的PATH环境变量。 对于这个例子,你还需要确定你已经安装了一个支持的浏览器。 Windows: 如果你使用Windows XP 或 Windows 2003,你可以只是使用IE去运行这个例子,或者安装Mozilla Firefox 或Opera。如果你使用Windows 2000,你将会需要[install reg.exe]去使用IE,但是即使你不装,Firefox也应该会工作。我们建议(但是不是必须)你添加你的浏览器执行文件到PATH环境变量。(如果你没有明确添加你的浏览器安装目录到这个路径,你必须安装你的浏览器到它的标准地址,Firefox的标准路径是"c:\Program Files\Mozilla Firefox\firefox.exe",IE的标准路径是"c:\Program Files\Internet Explorer\iexplore.exe"。)
Unix/Linux: 对这个教程来说,安装Fir......

阅读全文(12170) | 评论:2