显示标签为“IDE”的博文。显示所有博文
显示标签为“IDE”的博文。显示所有博文

2007年9月6日星期四

Stack corruption

真是看不出来,下面的这段代码引起了栈异常(stack corruption detected)。

{

char cn[60];

memset(cn,0,sizeof(cn));

char defile[FILENAME_MAX+4]={0};

strcpy(defile,localFilename);

strcat(defile,".de");

if (getCommonNameFromFile(localFilename,cn))

{

char *certfile=Singleton<CertList>::instance()->getCertFile(cn);

if (certfile)

{

int nerr=DeFile(localFilename,defile,certfile);

if (nerr==0)

{

//文件验签也OK

//那么,检查E语言

if (pReader==NULL)

{

pReader=new Reader();

}

getLogger()->LogMessage("Session %3d 正在进行E语言检查",id);

ret=pReader->checkEPack(defile);

remove(defile);

return ret;

}

}

}

}

真的好奇怪,这个问题头一次碰到。不就是这么一个auto类型的cn变量,也能出错?真是神了。。。

我把这个cn换成new的堆类型,结果就是堆异常。。。

Google一下,看到这么一篇文章:一个不小心引发的Heap corruption ,还有他的 探索Heap Corruption
大意就是访问,写越界。这里访问到了超过cn[60]的位置,怎么会这样呢??

我仔细看了下代码,发现 原来cn传入的函数中,都认为cn的大小为64。。。

因为64是默认的CommonName的最大长度。这里面一时忘记,写成六十了,结果产生异常。

还好被调试器发现了,要不然还不知道会出现什么恶劣结果呢。


后记:这也告诫我们,最好定义一个大小常量或者宏,每个地方统一用这个产量来定义大小,就不会出错啦

2007年8月19日星期日

更加强大开放的通用编辑器 --jedit

更加强大开放的通用编辑器 --jedit
2007/06/03 10:14
到 ,可以采用regexp : “ s/<tr[a-z='\-:;0-9.>/”
开始采用vim替换,虽然可行,但是vim不能自动替换所有的情况,非常不方便,也采用了editplus和uedit,好像他们的regexp替换根本不起作用
最后采用的jedit,在这个方面表现非常不错,他的incremental search bar 和vim的一样方便调试和立即查看regexp的结果,

支持find/replace dialog方式,具备了几个编辑器的优点。
buffer 管理
ctrl+w 关闭当前buffer
ctrl+q 关闭窗口
ctrl + 1 取消切分
ctrl + 2 纵向切分
ctrl+ 3 横向切分
在功能上不如emacs 强大,在实用性,和人机操作方面要比emacs好的多了,相信jedit的开发者一定是emacs的用户,
那么多的功能来源emacs,但是有很大的创新,可惜不能访问jedit.org,不然也许可以了解作者创作jedit的原因,来龙去脉。

jedit 的目录管理,是一个强项,比起ultraedit,editplus ,gvim 都方便的多。
在复杂的状况下,最老的FileOpenDialog一定是不合时宜,简单的treeDirectory&List+project 的editplus也是太简单,SourceInsight的search做的不错。
最好的目录管理我认为应该有Project file, Favorite Directory&List ,Search ,Filters ,TreeView &Listview和他们的合理组合。那么jedit达到了这个要求,
jedit 的FileSystemBrowser 如此精美,以至于即使Project管理方式,我也可以很少使用。
File System Browser | Favorite 方便在几个目录内切换来说非常方便,比如
PROJECT-HOME/src/com/app1 ;
PROJECT-HOME/src/moreapp ;
PROJECT-HOME/web/app1 ;
PROJECT-HOME/web/moreapp ;
PROJECT-HOME/docs/logs ;
PROJECT-HOME/docs/article ,
把这个目录列表加入你的Favarite 内即可
其他的几个编辑器里面真的感到非常头疼等等,这个大概又是jedit独有的功能
目录内部的newFile,rename file功能
FileSystem可以不必关闭
emacs 和jedit一样可以统一方式访问ftp,fileSystem,但是很可惜的,emacs缺乏现代的程序的特征,比如Dialog ,Common Control ,ToolBar 大部分工作都需要使用命令,
不管常用的还是复杂的,非常缺乏层次感;而且我没有测试成功在windows下下中文录入的方法。
ref:"type:article;author:Sanrex;Title:emacs+jde 开发java应用程序"
更多细节,用了才知道。
打开的文件会有一个下划线,一般和没有打开的文件区别
ctrl +` 仅仅切换两个最近的文件,更多文件在alt+` 查看,查看时,每次选择变化,无需确定,即可在不buffer中立即显示出来
文件可以执行rename ,delete,new操作,但是在打开时不可以如此
外部工具运行
这方面ue,ep 做的很好,而且可以捕获命令的标准输出,但是我们对editplus + ant的java开发方式的评价是很清爽,没有什么负担,而且采用这种方式有很长时间。但是由于editplus简单的不够灵活的目录和工程管理最后放弃,仅仅在简单的小修改才会使用它。
jedit 提供专门的控制台,并且和ErrorList 接口提供真正的可定位的编译错误列表,编译完成后可以通过下划红线标注错误位置。
开放性
opensource
二次开发,beanshell
比如经常需要把
line
line
转换成为
  • line

  • line

  • 只要点击菜单 utilities |Beanshell | evaluate for selected lines
    输入"
  • "+text+"
  • " 即可,这样可以简单的把你的文本文件内部的并行文本转换成为html 的ul 显示
    我的工程 changelog.html文档就是如此写作。

    editplus 中有一个小功能,插入当前日期(key : ctrl+d) 对于写log非常方便,jedit没有这个功能但是我们可以加入它
    试着执行下面的代码,在beanshell中
    import java.text.DateFormat;
    String newText = DateFormat.getDateInstance().format(new Date());
    textArea.setSelectedText(newText);
    创建 SimpleInsertDate.bsh 到JEDITHOME/macros/text/
    click Macros | Rescan Macros
    click Macros | text | SimpleInsertDate
    当然还是不够方便,那么 click utilities | global Options | jedit | shortcuts | macros | InsertSimpleDate | c+m c+d
    现在按键盘 c+m c+d

    插件:

    jedit 的插件结构非常完善 ,表现在用户只要把下载的插件jar'放置到 JEDITHOME/jar/,用户做了这简单的动作之后,就可以得到自动的菜单关联,配置信息,还有help的集成,是的安装完成插件后,你马上可以在jedit help中发现plugin的相关帮助。
    (在不知道这个情况之前,我是在jar文件内部查找html帮助文件)
    另外jedit的plugin manager ,看起来只要点击update plugin ,install plugin即可跟着向导走了,但是因为jedit.org 我一直没有连接上,因此这个功能我没有尝试,目前都是在jeditplugin central @sourceforge.net 中下载jar插件文件

    sql plugin :
    这个plugin大概是jedit都有的特征,其他比如ftp,ant集成,emacs,vim 都支持,但是好像没有那个editor连数据库的访问查看也支持,但是实际上这个需求应该说每一个人搞数据库的人都需要,我就经常在eclipse和mysql cc之间切换,而且mysqlcc给的功能太多,
    我需要的就是我输入一个sql,它返回一个结果。jedit的这个plugin只是我希望了那个样子。

    刚刚安装时在 plugin | sql | choose server type 空的,没有办法选择,而在文档中jedithome/jar/sql.jar/userguide.html指明:

    some configuration files - for Oracle, MySQL, PostgreSQL, DB2, Sybase,
    Microsoft SQL Server are bundled with the plugin

    说明这些基本类型已经在了,是的,仅仅在sql这个菜单里面做工作是否没有作用;
    最后发现在projectview里面可以创建数据库连接
    把 user pass host port 等等url信息。
    比如我的mysql,数据库DBNAME,可以填写成为:
    pass:
    user:root
    dbName : DBNAME
    extra :?autoReconnect=true&useUnicode=true&characterEncoding=ISO8859_1
    回头把 choose server type 选择好。
    现在可以执行sql了,sql菜单内的execute有两种方式,execute selection ,execute buffer ,在你的当前buffer 中填写一条语句,比如select * from yourTableName ;
    如果sql正确,那么sql result set 会显示出来,不知道为什么,里面仅仅了0 request running ,把它放大,才会发现resultset已经显示出来了。
    中文也显示出来了
    不错不错

    几个插件下来,感觉多个窗口切换还是很麻烦,使用dock帮助你更好的组织窗口 : utilities | Global options | jedit | docking .
    目前我的办法是:
    把File system browser ,project Viewer ,Ant farm 停靠到left
    把Error List ,SQL Result Set 停靠到bottom ,对于不做java编程或者没有数据库访问的,也不必停靠这些plugin了

    我目前采用的plugin列表

    XSLT-0.4.1-bin.zip xml+xsl (by xslt)= xml (比如html)
    AntFarm-1.3.1.zip 和Ant的接口
    ClassWizard-0.5.1-bin.zip 类生成wizard
    CommonControls-0.8-bin.zip 一些常用的界面对象
    Console-3.5-bin.zip 可扩展控制台,因plugin而不同,目前我的console可以执行Ant ,system (dos shell) ,Cvs ,beanshell,tomcatSwitch ,不同的console可以执行的命令不同,一般进入不同的console都会有help信息
    Debugger-0.6.1-bin.zip
    EditorScheme-0.4.2-bin.zip 可更换不同的font color ,background color 等
    ErrorList-1.2.3-bin.zip compile ,ant 之后可能生成的ErrorList ,和console不同在于,errorList可以帮助定位错误所在的源代码位置,而不是仅仅显示出来而已
    FTP-0.5-bin.tgz 如同File System Browser 一样管理open from/saveas 文件到ftp server
    JakartaCommons-0.2-bin.zip 基本类,提供command line 分析等基本服务
    JarMaker-0.4-bin.zip 形化创建jar文件
    JavaInsight-0.5.1-bin.zip 大概是class反编译
    JBrowse-1.4.4-bin.zip 提供类,方法的树图显示,快速定位类,函数..
    jEditCvs-0.4-bin.zip 和cvs接口
    JImporter-0.4.0-bin.zip 管理文件的Import,比如把java.io.* 展开成 java.io.FileReader
    JTools-1.3-bin.zip
    JUnitPlugin-0.0.2-bin.zip 和junit接口
    ProjectViewer-2.0.1-bin.zip 工程管理
    SideKick-0.2-bin.zip 结构化显示文件,比如xml树图
    SQL-0.97-bin.zip 在jedit里面通过输入sql直接查看结果集合,是不是非常集成。
    SwitchBuffer-1.0.0-bin.zip 切换buffer
    TaskList-0.4.2-bin.zip
    TomcatSwitch-0.6.2-bin.zip 提供tomcat的start ,restart ,stop
    XML-0.11.1-bin.zip 提供xml方面功能
    评价
    快速的,多层次的,丰富灵活选项,可以二次开发的,充分界面定制的通用程序员编辑器。
    我非常欣赏它的多层次,表现在:
    以二次开发为例:
    A 通过beanshell
    a1 记录macro
    a2 宏编写
    B 通过java
    B1 使用plugin
    B2 编写plugin
    B3 jedit代码修改
    如果需要二次开发,你可以在这么多的选择中做一个合适的选择,而且这两个层次也同样具备互通性,而不是学习新的层次就有抛弃老的层次
    因为beanshell本来就是java的脚本语言。
    在比如mark ,你可以使用最简单的ctrl+t X ,ctrl +y X 的组合,也可以使用Marker菜单中提供的丰富功能选项
    同样的例子还有clipboard。
    在丰富灵活选项这方面,我想对于窗口管理的方法非常不错,现在窗口比较少的情况下,可以使用float方式,在taskbar上切换,如果同时显示的窗口比较多,而且会和其他应用的窗口同时列出来
    那么会显得非常混乱,这个时候需要的就是dock方式了。在dock方式中,也可以选择dock到left ,right ,bottom,top 多个选项,而不同窗口适合列在不同的位置,比如横向比较长,应该dock到bottom或者top
    在纵向占位的应该考虑dock到left,right位置。
    所有的shortcut可以定义,充分按照你的要求。在基本使用后,多看看 utilities |Global Options 很有必要。
    以前写的关于java开发效率的文章,是研究这么多编辑器的动因
    我的开发平台: tomcat4 + jdk1.4 + james + cvsServer +mysql
    (1) 经常访问的目录,列出来,看看是否可以提供效率
    jspCompile:TOMCATHOME\work\Standalone\localhost\
    tomcatLog: TOMCATHOME\logs\stdout.txt
    Src : PROJECT-HOME\src
    Web : PROJECT-HOME\web
    以上目录可以使用windows的文件收藏,editplus的工程文件管理,user tools 等实现一部分,
    另外 editplus | preference|Working directory follows active document,本来也是很好的功能,但是好像没有实现

    (2)经常做的工作
    导入数据:RUNTIME_HOME\mysql\bin\mysql DBNAME < SQLFILE
    commandline 方式执行sql RUNTIME_HOME\mysql\bin DBNAME
    tomcat/james/mysql 启动管理
    RUNTIME_HOME\srvadmin.exe ,START ,STOP ,RESTART
    或者全部restart,全部reverse state ,一定可以提高效率,
    当然也包括linux : tomcat stop /tomcat start ,such as stop start dance !
    或者采用net stop service_name
    发布文件
    通过update2k ,cuteftp 传递文件。需要很多的主机配置条目,包括本机,各个客户机器
    数据库管理 mysqlcc 和ftp一样,有很多配置项目

    (3) 如果在行尾部可以自动加入
    和自动行添加
  • 前缀,和
  • 后缀,书写changelog.html 日志将会更加方便

    请随意转载,但注意文件的完整性

    author : Sanrex
    mail : Sanrex@163.com
    site : http://egovinfo.org
    createDate : 2003-5-18
    modifiedDate : 2003-5-26
    我对编辑器的需求就是在整个工程过程的各个环节中,大部分时间只要和这一个软件打交道,那么有那些环节呢

    建立一个java 环境的一般完整过程
    1 目录组织和工程管理
    2 编辑,创建
    3 compile
    4 run
    5 debug
    6 test by junit
    7 jar generate
    8 ftp / publish
    9 cvs 接口
    10 数据库访问
    11 外部工具运行

    因此我希望我得编辑器能够在具备强大的编辑能力外,还应该有以上的所有功能,或者和以上功能的一体化的接口。jedit应该是我的一个选择。

    安装很简单,下载jedit.jar ,执行java -jar jedit.jar 即可,当然你需要java runtime

    编辑能力:
    Rectangular Selection
    ctrl +mouseSelect建立 按列选择方式,由于按字数建立,因此在中文英文混合时会显示比较怪,看起来并非一个矩形。
    而实际上还是很好用
    编辑速度体验
    在我的notebook中,256M内存启动eclipse 大概8秒,启动jedit 4秒,editplus 可以忽略,uedit :3s,启动时间不是很大的问题,
    最大的问题是在edit过程中的反映速度,这个方面jedit完全出乎我的预料,非常快速,好像并非java写成的,(s是不是java程序一定很慢呢?)和editplus的编辑体验对我来说没有任何区别,
    而eclipse 就没有那么爽了,总是觉得牵牵绊绊的。eclipse 应该有一些优化的余地,但是我首先得到的是缺省情况下的感受。
    {}匹配
    帮助避免出现{}不匹配的语法错误,只要注意代码缩进,这个功能可有可无,有了反而碍眼。
    fold 强大的fold功能,这个只有gvim才能比较,ep,ue都没有这个功能。如果直接看看jedit的源代码,可以了解jedit作者的使用fold的方式。使用得当,阅读代码会十分方便。
    markers 应该比较有意义,ctrl+t X 定义mark,ctrl+y X ,转移到mark,X 可以时任何键,这是最快的使用方式;还有更加灵活的方式,
    但是这是我最喜欢的方式
    不支持文件拖放
    clipboard 的增强,应该是个不错的想法,不过没有试过。
    Find & Search
    jedit不支持whole word方式,目前可以采用regexp方式来解决这个问题
    regexp 在jedit里面使用的非常顺利,可以可以incremental search bar ,方便书写regexp时,可以立即看到regexp的查询结果,帮助调试和修改regexp,非常方便
    相反,urtraedit和editplus 使用起来不是那么方便,不知道是不是对regexp支持不同,而且没有incremental search .
    不知为何,没有whole word的支持,目前最强大的还是ue,可以多文件替换。
    为了将word中的一个表格导入形成一个干净的标签的html,采用regexp方式
    比如替换

    主题: 广告时间,推广一下本人最favorite的代码编辑器:jedit

    基于java/swing开发的程序员编辑器,跨平台,高度可订制,插件丰富。

    jedit: http://jedit.sourceforge.net/ 最新版本v4.3pre7
    plugins: http://plugins.jedit.org/list.php 共有近200个插件,大部分都用于程序开发

    默认界面

    本人定制后工作环境

    默认jedit只能使用jre能够找到的字体,可以通过编辑jre的fontconfig.properties来组合想要的中英文字体组合,但是 无论如何配置中文的行距总是偏大,每屏显示代码行数不够,所以我自己用工具拼凑了个自用字体,中文使用mingliu,英文使用courier new

    下载地址:http://61.135.153.24/files/pi1ot2.ttf
    或者中文使用simsun,英文使用courier new的:
    http://61.135.153.24/files/pi1ot.ttf

    高度可订制的界面与功能选项

    代码折叠效果与选项

    auto compelete效果,基于当前buffer的文本自动完成

    HTML/XML代码的TAG配对提示/属性补全,要求XML插件

    搜索功能,支持含目录的REGEXP搜索

    丰富的自带macro,和自己写的模拟F3键find next的macro

    附带几乎所有编程语言的语法高亮mode

    jdiff插件效果

    本人日常使用的插件:
    code browser 显示代码结构,基于ctags,ctags能分析的语言,code browser就支持
    code lint 自动代码风格检查
    jdiff 文件比较
    ftp client 集成在文件列表窗口的ftp client
    buffer tabs 类似ultraedit的文件tab列表
    console 控制台输入输出界面
    xml html/xml文件编辑支持
    retest REGEXP测试工具
    archive zip文件浏览工具
    buffer list 打开文件列表
    highlight 高亮指定字符串
    jtidy html格式化工具
    navigator forward/back按钮
    white space 显示缩进格式

    jedit plugins中最丰富的就是java开发用插件,本人不做java开发,就不介绍了。

    2007年8月9日星期四

    Visual Assist X 模板功能(AutoText)的一些修改


    首先需要找到模版文件,通常的目录:

    Program Files\Visual Assist X\Templates\Cpp.tpl

    用 UltraEdit 打开,我们可以分析一下该文件的格式:

    #in:
    #include "?

    0x0C

    蓝色的 #in 表示当你输入 #in 时,红色的冒号是分隔符,黑色的 #include "? 是 Assist 会自动为你填充的内容。其中红色的 0x0C 是分隔符。还有一些系统自带的变量,例如:%DATE%, :%MONTH%, :%YEAR%, %FILE_PATH%等,可以根据字面含义自己理解。

    格式很简单,不过自己带的模版比较少,我加了几个自己喜欢的:

    1 新建一个源代码文件时,描述该文件的一些信息是个很好的习惯, Assist 自带了 Insert file header,可是却不好用,通过研究发现是中间的空格在搞鬼,所以把它修改成了

    fileheader:
    /********************************************************************
    created: %DATE%
    created: %DAY%:%MONTH%:%YEAR% %HOUR%:%MINUTE%
    filename: %FILE%
    file path: %FILE_PATH%
    file base: %FILE_BASE%
    file ext: %FILE_EXT%
    author: %1
    version: 0.0.1

    purpose: ?
    *********************************************************************/
    0x0C

    2 写函数时,最好把函数的功能,输入参数和返回值等信息都写全了,以后别人看代码,也方便好多。

    /*-:
    /*
    * name: %1
    * params:
    * none
    * return:
    * none
    * notes:
    * none
    * author: %2 %DATE% %HOUR%:%MINUTE%
    */

    0x0C

    3 通常写注释时我喜欢用 /* 注释内容 */,所以也增加了下面这个模版。

    /*:
    /* ? */

    0x0C



    详见 http://www.wholetomato.com/products/features/autotext.asp

    2007年7月27日星期五

    C++程序员常用工具集

    ■...开发环境

      ---->Turbo c

      DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:)

      ---->Visual C++ 6.0/7.0

      稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。

      ---->BCB

      Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE,速度和稳定性稍逊,但对c++标准支持的程度较好。


    ---->Cygwin

      Windows平台下的C++编译器,基于gcc,又完全兼容Window特有的东西,比如对winsock的支持。从[url]http://www.cygwin.com[/url]可以找到有关Cygwin的详细信息。

      ---->Dev-c++

       Windows平台下,一个类似VC、BCB的c++ IDE开发环境,属于共享软件。界面亲切优雅,size也不大,其4.9.x版有中文语言支持,无需汉化。编译器基于gcc,完全支持STL。但是对于规 模较大的软件项目,恐怕难以胜任。可以从:[url]http://www.bloodshed.net/dev/devcpp.html[/url]找 到有关Dev-c++的有关信息。

      ---->Source Insight

      有着和Dev c++一样漂亮的界面,提供代码的编辑和察看功能,具有丰富的语法加亮功能,可以像VC一样自动弹出成员函数的提示,并具有快速方便的函数跳转功能(但是 跳转速度似乎有点慢)。只是默认设置不适合时,需要仔细的调整和修改。无法查找经typedef之后的名字。

      ■...辅助

      ---->Visual Assist

      VC IDE环境下的辅助编程工具,能识别各种关键字、函数、成员变量,自动给出tip,并自动更正大小写错误,标示拼写错误等。是VC开发的良好伴侣。

      ---->Understand for C++

      一款c/c++IDE编程的辅助工具,支持反向工程,代码导向和一些统计功能,从[url]http://www.scitools.com[/url]可以找到有关Understand for C++的详细信息。

    ■...程序编辑器

      ---->EditPlus

      一款很不错的文本编辑软件,功能强大却又十分轻巧。支持不同语言的语法加亮,还有Project组织功能,具有丰富的自定义功能。通过设置User Tool,可以和其他语言编译器结合,形成一个简单的IDE。

      ---->Ultra Edit

      功能和EditPlus相当,通过脚本文件提供的配置功能可以定制编辑环境,但自6.0版以后一直没多大变化,就编程而言,自定义设置没有EditPlus方便。

      ---->EMACS

      公认的世界上功能最多,最复杂的文本编辑器,其实也可以当作程序员用的编辑器。

      ---->Visual Slick Edit

       一个功能强大的程序员用编辑器。最值得一提的是其定制功能,很好用,可以和EMACS相比。自带了一套PCODE解释器,用c的语法,还可以挂接动态 库。配合mingw一起使用很方便。从[url]http://www.slickedit.com[/url]可以找到有关SlickEdit的详细信 息。

      ---->IQEdit

      全功能的程序员用编辑器,界面很漂亮,从[url]http://pwksoftware.com[/url]可以找到有关IQEdit的详细信息。

      ■...UML/建模

      ---->Rational Rose

      强大的建模工具,早已“家喻户晓”,功过自然不必多加评说了。从[url]http://www.rationalsoftware.com.cn[/url]可以找到有关Rational Rose的详细信息。

      ---->Visual Modeler

    MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品,是Rose的简化版。
    ---->Visio

      Microsoft的建模工具,感觉更人性化一些,但功能没有Rose多、强、专,支持正向的代码生成,以及对代码的反向工程。

      ---->Together

       另一款功能强大的建模工具,用java编写而成,口碑不错,不过速度稍稍慢了一些。从[url]http: //www.togethersoft.com[/url]可以找到有关Togather的详细信息,另外,以下网址提供了一个有关Together的教 程:    [url]http://www.cc.puv.fi/~tka/kurssi[/url] ... /together/TCCGuide6

      ---->Visual UML

      支持多种语言类型,比如:VC、VB、 DELPHI、CORBA IDL等,可以直接从UML设计图生成代码,简单易用,完全适合Personal use,界面也很清爽。从[url]http://www.visualObject.com[/url]可以找到有关Visual UML的详细信息。

      ---->SmartDraw

      通用图表制作软件,可以用来制作组织机构图、流程图、统计图表等。随带有图库,基本满足制作各类图表的需要。从[url]http://www.smartdraw.com[/url]可以找到有关SmartDraw的详细信息。

      ---->PlayCase

      国产面向对象的建模软件,兼容UML和IDEF,轻量级软件,只是界面看起来有点简朴,乃是高展先生用Delphi完成的。

      ■...版本控制

      ---->ClearCase

      Rational的版本控制管理软件,功能强大,可以控制多种类型的文档,甚至包括Word、Excel、PowerPoint文档。但使用复杂,不易上手,且不是免费软件。

      ---->CVS

      为基于Web的分布式协同开发提供了版本控制管理手段,且是免费软件,可以通过脚本定制功能。但在权限控制方面功能相对较弱。
    ---->VSS

      微软的版本控制管理工具,功能相对简单,适合于小型团队开发,将其整合到微软的其他开发工具中,使用起来十分方便。

      ---->SourceOffSite

      微软为开发人员提供的远程访问VSS数据库的工具,使数据库得以远程更新,以支持远程办公。其他的版本管理工具还包括:PVCS、VCS、RCS等。

      ■...XML

      ---->expat

       用于读取和处理XML文档的c函数库,最初是James Clark的个人作品,简单轻巧,且速度快。但支持的编码方式有限,最遗憾的是不支持中文。从[url]http: //expat.sourceforge.net[/url]可以找到有关expat的详细信息。

      ---->xml4c

       IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,适合于大规模的xml应用。若只是很小范围的应用,则非最 佳选择,毕竟,你需要“背负”约12M左右的dll的沉重负担。从[url]http: //www.alphaworks.ibm.com/tech/xml4c[/url]可以找到有关xml4c的详细信息。

      ---->Xerces c++

       Apache的XML项目,同样是c++实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是目前只支持少数的字符编码,如 ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。从 [url]http://xml.apache.org/xerces-c[/url]可以找到有关Xerces c++的详细信息。

      ■...测试

      ---->CppUnit

       一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,从JUnit移植而来,JUnit是Java语言的 单元测试框架。从[url]http://cppuint.sourceforge.net[/url]可以找到有关CppUint的详细信息。

    ---->Rational ROBOT

      Rational的自动化测试工具,通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能,有助于对GUI软件进行功能测试;其VU方式的脚本录制功能,有助于测试某些软件的数据通讯功能。

      ---->Rational Purify

      同样是Rational的自动化测试工具,不需要被测程序的源代码,可以用来检查内存访问错误、Windows API调用错误等,以完成软件的可靠性测试,属于白盒测试。

      其他的Rational测试工具还包括:TestFactory、PureCoverage、TestManager等。

      ■...日志

      ---->log4cpp

       一个用于日志记录的c++函数库,可以将内容以定制的方式记录到不同的目的地,比如:文件、控制台syslog等,同时还可以通过控制记录级别来屏蔽掉 某些无关记录。从[url]http://log4cpp.sourceforge.net[/url]可以找到有关log4cpp的详细信息。

      ■...注释

      ---->Doc++

       注释文档生成工具,根据源程序中的文档注释,可以输出TeX和HTML格式的文档。除了支持c/c++语言外,还支持IDL和java。仅提供命令行使 用方式。从[url]http://docpp.sourceforge.net[/url]可以找到有关Doc++的详细信息。

      ---->Doxygen

       注释文档生成工具,较之Doc++功能更为齐全,可以生成包括HTML、PDF、RTF在内的多种格式的文档,并有GUI界面,除了支持c/c++语言 外,还支持IDL、java、PHP、c#等。从[url]http://www.stack.nl/~dimitri/doxygen[/url]可以 找到有关Doxygen的详细信息。

    【转】学习C/C++ 使用什么编译器?

    不知不觉,学习编程已经有一段时间了,回想一下,走了不少弯路,也许现在走的仍然是弯路,编程是个非常注重实践的技术,因此不管是谁,想要学好,上机练习是必须走的路.

    有道是“磨刀不误砍柴工”, 选择一个合适的学习环境,会事半功倍.

    虽然,程序设计这东西,是没有捷径可走的,但是少走一些可以轻易避开的弯路,还是会有所好处的.

    以一个菜鸟的眼光,我认为,选择编译器主要看编译器的特点和你的需求,而不是追赶潮流.

    现在对编译器的定位: 学习C/C++的语法和标准库

    作为一个新手,我的需求是

    1 功能不要太多,免的我看的眼花缭乱,鼠标到处乱点

    2 尽可能的支持当前C/C++标准

    3 可以很方便的编辑代码

    4 调试程序要简单方便

    5 占用尽量少的内存和硬盘以及CPU

    6 跟我的系统兼容性要好

    上面的条件似乎挺合情合理的,我不是很有把握.你说呢?

    细细的想了想, 常见的编译器先作个列表出来,并且大致介绍一下


    Turbo C

    如果我说它是世界上最经典的C语言编译器之一,有人抗议吗?

    最古老的C语言编译器之一,1989年诞生的, 有17年历史了,对当前的C语言标准(C99)

    自然是不能很好支持的了,总不能要求它未卜先知,支持10年后的标注吧

    TC 是DOS下经典的工具之一, 正因为是DOS下的产物,16位时代的东西,所以现在在高版本

    的Windows(win2000, winXP 以及更新的版本) 下面,兼容性不是很好,很多人在运行这个

    程序的时候, NTVDM.exe 会占用100%的CPU,当运行TC编写的图形界面的软件的时候

    甚至会有死机的现象.由于生在DOS时代,编辑代码在现在看来自然不怎么方便,它既不支持

    语法的高亮度显示,又不支持鼠标的操作.

    优点是占用硬盘空间很小

    关于TC的更多资料
    请去 Borland公司的博物馆 参观
    Borland称之为" Antique Software" (史前软件)


    Turbo C++

    又一个经典的作品,跟Turbo C相比,进步了很多,比如可以鼠标操作菜单了,但是毕竟还是16

    位时代的东西,跟现在32位的是没法比的.

    很遗憾, Turbo C++ 不能编译任何一个现代 C++ Style的C++源代码.

    光 using namespace xxx 就把它枪毙了, C++的标准库 STL 它一个都不支持,

    毕竟它也不能未卜先知去支持多年后的标准.




    Borland C++

    这是Borland 公司的又一个系列的杰作,处在过渡时间的产品(16bit向32bit过渡)

    支持DOS下的编程,也支持Windows下的,OWL更是名噪一时,是个不错的工具,只不过现在

    也很老了,很老很老了, 对C++标准的支持,高版本的还可以,比如 Borland C++ 5.5,

    编辑代码还算方便.体积也不算很大


    C++ Builder

    Borland是个相当牛的公司, C++Builder可以说是C++ RAD开发的最佳工具,

    没有人会质疑它的RAD能力,从UI到底层,它都有着赵不错的表现,不过体积稍微有点大

    虽然安装的时候可以定制,装的小一些


    GCC(g++)

    各种常见平台下面都有GCC的影子, Windows,Linux,Unix,BSD,Solaris.........

    这个工具强大到让人汗颜,不过新手不容易上手.

    对标准的支持是目前最好的



    LCC for win32

    小巧的工具,对标准支持也不错,我觉得唯一的不足之处就是调试的时候,添加的watch

    列表里 i和j 太像了,简直分不清


    VC++6.0

    Windows时代经典工具之一,对C++标准支持是相当的不好,很多bug,不过都修复了,

    需要安装补丁,菜单一大堆,功能也是一大堆


    VC2005

    .NET时代的产品, 对C++的标准支持非常好

    调试起来也很方便,不过太大了,还要装个.net frameworks才能跑


    DevC++

    严谨的说,这并不是一个编译起,而是个外壳,在你和编译器之间协调,交互.

    它的后台编译器是GCC,所以对标准支持也不错.编辑代码也很方便,调试也很方便

    体积也不大,10M左右.界面很简洁,官方就有中文版.支持很多扩展,比如Insight_sought,

    OpenSSL, MySQL数据库接口..............

    50多个可以使用的扩展, 默认不带那些东西,如果你不感兴趣,就当作不知道



    MinGW Studio

    这个跟上面一个差不多,也是外壳,GCC做后台编译器,只是需要建立工程,新手可能不会

    但是最培养软件开发的意识是不错的


    Rhide

    TC一样的界面+GCC的编译器



    C-free

    也是一个外壳,只不过做的相对逊色了一些,比如要求系统支持8.3文件名格式

    还要注册,比较麻烦,虽然不贵


    TC for win
    win tc
    windows tc
    .................

    这个系列的本质全部都是TC, 外观上看似windows的, 其实跟上面的一样, 只是个外壳

    一个皮而已.



    通过简单的介绍, 对开发环境应当有一定的印象了.

    如果你的要求跟上面6条差不多,相信你已经作出选择了

    DevC++和MinGWStudio

    除了他们还能选谁呢?

    这两个工具在网上很多

    下载很容易 感兴趣就找下来试试

    改天我写个简单的使用教程, 新手只要半个小时就可以使用自如了


    如果非要排除他们选择其它的, 那么VC2005和C++ Builder 也不错

    总之,千万不要选择Turbo C, TC++, tc for windows, win-tc 等

    因为太古老了,太不适合学习了, 他们不是基础性的东西,如果是基础性的,

    就算是1000年前的, 也是需要学的.



    常见的观点

    使用Turbo C可以接触底层的编程,不会埋葬在一些封装里
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    使用别的工具也可以进行底层的编程, 人家只不过提供了多一种选择, 你可以不用那些东西

    自己从头实现



    TC简单, 适合初学者
    ~~~~~~~~~~~

    TC是简单, 但是DevC++也很简单,跟TC相比,唯一复杂一些的地方

    就是保存代码的时候,需要指定文件名, 不像TC,有noname.c

    我不信你就不需要保存两个或者两个以上的程序

    难道你只写一次?



    TC可以进行图形编程,别的不行(graphics.h)
    ~~~~~~~~~~~~~~~~

    上面提到的工具,没有不支持图形开发的, 不要忘记, Windows, ie浏览器,

    Word 等等都是C/C++开发出来的(有部分是VB开发的).

    TC的图形库接口 graphics.h , 不是C/C++标准里的, 标准里是没有图形接口的

    而支持这个 graphics.h 的编译器, 就TC一个, 超过50种的C/C++编译器,就TC系列支持

    这个.




    匆匆写下此文,希望有人因此少走一点弯路

    那些思想保守, 迂腐守旧的人们, 推荐别人使用TC的时候, 请三思而后行.

    ps0: 上面的环境我都用过一段时间, 有所大致的了解

    ps1: 如果没有怎么用过那些工具的, 没有发言权

    ps3: 欢迎辩论 有疏漏之处 还望指正

    ps4: 看过的请留言, 无论是支持还是批评 甚至漫骂 我都会保留