安装了一个Eclipse 3.0

以前一直都在用Eclipse 2.1,现在因为有个插件只支持3.0所以下了个最新的版本,来说说我感觉到的几个变化吧:

  1. 界面华丽了很多,图标更像IDEA的风格,而且没感觉速度有什么降低;
  2. 可以用快捷键Ctrl+M最大化和还原Editor了,能节省我很多鼠标操作;
  3. 虽然缺省设置是自动补齐括号的,但似乎对大括号不起作用;
  4. 可以按两次Ctrl+O显示继承来的方法;
  5. 原先用来删除一行代码的Ctrl+E功能变成了呼出Editor下拉列表,好象和Ctrl+F6有点重复,现在删除一行代码的快捷键是Ctrl+D;
  6. 代码可以折叠,但我感觉作用不明显,因为利用原来提供的功能已经足够快速定位到任何代码了;
  7. 代码格式化的功能有所改进,对比较长的代码还能够格式化得比较好看;
  8. 自动生成Getter/Setter可以指定代码插入的位置;
  9. 重构改变量名的时候不必须先保存文件了,我记得在2.1会要求先保存;
  10. 解除注释不是Ctrl+\而是和注释一样Ctrl+/,我本来是喜欢这种方式的,现在已经被2.1带走了;另外好象2.1里没有/* */的注释方式?
  11. 从一个类里向另一个类里复制代码,会自动增加这些代码需要的imports,很贴心和实用的功能。

这些大部分都是JDT部分的改变,可能最大的不同还是在结构上,比如RCP支持等等。不过我目前只是把它当IDE来用,现在机器上两个版本都在,因为2.1已经很好了而且用了那么长时间,实在不忍心就这样扔掉,另外2.1的外观我也很喜欢,显得很专业,即使在3.0里我也是切换到显示方形Tab的模式。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/12/23/80887.html

[翻译]什么是OWL本体

译注:本文是对文档A Practical Guide To Building OWL Ontologies Using The Protege-OWL Plugin and CO-ODE Tools Edition 1.0第三章的翻译,并省略了其中的图片。Protégé是一个斯坦福大学开发的本体编辑器,为开放源码软件,具有优秀的设计和众多的插件,是目前使用最广泛的本体编辑器之一。

什么是OWL本体

  我们使用本体(Ontology)来获取某一领域的知识,本体描述该领域的概念,以及这些概念之间的关系。目前有很多种不同的本体语言,它们各有千秋,而W3C(World Wide Web Consortium)目前的最新标准是OWL。和Protégé一样,OWL让描述各种概念成为可能,与此同时,它还提供了其他很多功能。它具有更丰富的操作符——例如与、或和非;它立足于一个不同的逻辑模型(logical model),该模型能够更好的定义概念,可以用从简单概念构造出复杂的概念,不仅如此,该模型还允许你使用推理机(reasoner)来检查本体中的陈述(statement)和定义(definition)是否一致,或者判断出哪个概念更适合于哪个概念,从而帮你维护一个正确的本体等等,当允许一个类(Class)拥有多个父类的时候,这一点至关重要。

一、三类OWL

  可以把OWL分为三个子语言:OWL-Lite、OWL-DL和OWL-Full,主要的分类依据就是它们的表达能力。其中,OWL-Lite是表达能力最弱的子语言,OWL-Full具有最强的表达能力,而OWL-DL的表达能力则在它们之间。我们可以认为OWL-DL是OWL-Lite的扩展,而OWL-Full是OWL-DL的扩展。

1.1 OWL-Lite

  从语法上来说,OWL-Lite是三个之中最简单的一个,当你的本体中类的层次结构很简单,并且只有简单的约束(constraint)时适合使用它来描述本体。例如,在需要把一个已存在的辞典(thesauri)移植到另一个差不多简单的概念层次时,OWL-Lite可以做得又快又好。

1.2 OWL-DL

  和OWL-Lite相比,OWL-DL的表达能力要丰富许多,它的基础是描述逻辑(Description Logics,即DL的由来)。描述逻辑是一阶逻辑(First Order Logic)的一个可判定的变种(译注:不一定准确,原文decidable fragment),因此可以用来进行自动推理,计算机从而可以知道本体中的分类层次,以及本体中的各种概念是否一致。

1.3 OWL-Full

  OWL-Full是OWL的三种子语言中表达能力最强的一个,适合在那些需要非常强的表达能力,而不用太关心可判定性(decidability)或是计算完全性的场合下使用。不过也正是由于表达能力太强这个原因,用OWL-Full表示的本体是不能进行自动推理的。

二、该使用哪一种子语言

  首先,要想确切的知道这三种子语言之间的区别,请参考OWL Web本体语言概要。尽管有很多因素需要考虑以决定该使用它们中的哪一个,但这里是一些最简单常用的原则。

  • 对于OWL-Lite和OWL-DL,考虑OWL-Lite提供的那些简单构造子(construct)是否足以描述你的本体,若是使用OWL-Lite,否则使用OWL-DL。
  • 对于OWL-DL和OWL-Full,考虑在你的应用中,是自动推理比较重要还是高表达能力(例如是否需要元类来建模)更重要,如果是前者,请使用OWL-DL,否则该使用OWL-Full。

  Protégé的OWL插件在编辑OWL-Lite和OWL-DL的本体时不做区分,但可以在选项里选择以OWL-DL或是OWL-Full方式编辑本体。

三、OWL本体的组成

  OWL本体的组成与Protégé提供的本体相似,基本上,只是在对组成部分的称呼有一些分别。例如OWL有个体(Individual)、属性(Property)和类(Class),而Protégé则分别称它们为实例(Instance)、槽(Slot)和类(Class)。

3.1 个体(Individual)

  个体代表(领域中)我们实际感兴趣的那些对象,Protégé和OWL有一个重要的区别就是OWL不使用唯一命名假设(Unique Name Assumption,UNA),也就是说,两个不同的名称可以对应到同一个个体。例如“伊丽莎白女王”、“女王”和“伊丽莎白?温莎”可能都对应同一个人。在OWL里,你必须明确的表达个体之间是否为相同的,否则它们可能相同也可能不相同。

  注:个体(Individual)有时也被称作实例(Instance),个体相当于类的实例。

3.2 属性(Property)

  属性是个体之间的二元关系,也就是说,属性把两个个体连接在一起。例如,属性hasSibling可能会把Matthew和Gemma这两个个体连接起来,而属性hasChild会把Peter和Matthew这两个个体连接起来;属性可以有反向属性(Inverse),例如hasOwner的反向属性是isOwnedBy;属性也可以被限制为只能拥有一个值,即所谓的函数属性(functional);属性还可以是具有传递性(transitive)或是对称的(symmetric)。

  注:这里所说的属性即Protégé中槽(Slot)的概念,在描述逻辑中它们就是角色(Role),在UML等面向对象方法中它们就是关系(Relation),而在GRAIL等形式化表达中将它们称作特性(Attribute)。

3.3 类(Class)

  OWL中的类代表一些个体的集合,OWL使用形式化(数学的)的方法精确描述出该类中成员必须具有的条件,例如,领域中全部猫的个体都属于Cat类。类可以通过继承关系组成层次结构,子类是父类中的特殊情况,例如考虑Animal和Cat这两个类,Cat可以是Animal的一个子类(即Animal是Cat的父类),这就表示了:所有的猫都是动物,所有Cat类的成员都是Animal类的成员,如果你是猫那么你也是动物,Cat类被Animal类所包含,等等。OWL-DL的一个重要特征就是父类和子类之间的(包含)关系可以被推理机自动计算出来。

  注:概念(Concept)这个词有时被用来代替类,实际上,类是概念的一个具体表现。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/12/17/78368.html

让IE浏览器提示下载或直接打开word文档

在很多论坛上看到这样的问题:点击一个指向.doc类型的文件后,怎样不直接在IE里打开,而是弹出一个对话框提示用户想下载还是打开。解决方法很简单,打开“我的电脑”,在菜单里选择“工具”->“文件夹选项”,在对话框里选择“文件类型”这个属性页,在列表中选中扩展名为doc的类型,按下面的“高级”按钮,在弹出的“编辑文件类型”对话框里钩上“下载后确认打开”复选框就可以了。

file

但这只是在客户机上解决了这个问题,以我的经验,在服务端不论以什么样的方式将.doc文件的流发给IE,都将由上面的设置决定是否弹出下载对话框,即使将mimetype设置为application/octet-stream也是如此。没有实验其他浏览器。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/12/15/77380.html

Web应用程序从Tomcat移植到WAS

为了方便起见,示范中心项目一直在Tomcat 4.1+Mysql 4.0的环境下开发。现在客户提出运行环境将是WAS 5.1+DB2 8.0,在移植的过程中发现现有的程序存在两个问题。

1、在Tomcat下类似edit.do?service这样的url,使用request.getParameter("service")可以得到非空值,但在WAS下则得到空值,必须使用edit.do?service=1这样的完整形式。

2、原先有一些不太规则的标签写法,比如下面这个:

<bean:define id="toDel" name="client" property="name" type="String"/>
<html:link action="/delete" paramId="code" paramName="client" paramProperty="code" onclick="<%="return confirmDelete('"+toDel+"');"%>"> 
    <html:img page="/../images/btn_del.gif" width="41" height="16" border="0"/>
</html:link>

在Tomcat里是正常的——当用户点击“删除”时提示“是否确认删除XXX?”,但在WAS里含有这个代码的页面都会无法通过编译,只能把提示内容后面的XXX去掉。我觉得struts内置的标签库对字符串的操作实在有限。

除去这两点,暂时没有发现其他不兼容之处。想不明白的是,既然Tomcat是Servlet 2.3的参考实现,就应该是最“标准”的,为何还会出现这种情况,是Tomcat有自己的扩展,还是WAS的实现有不足呢?

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/12/12/76093.html

由PPP项目总结的几点项目经验

这些基本都是从老大身上学来的,在PPP项目中起到了积极作用,我认为至少是比较适合六人左右的小项目的。也有的不算是经验,或者说是公认的最佳实践,呵呵。

1、尽可能获得详细的需求,最好把界面先画出来让客户确认,形成文档。毕竟,修改静态的界面比修改程序快多了。

2、有专人负责与客户保持全程接触,此人不设计也不编程。在可能情况下让客户的人员参与项目,项目结束后的维护工作就可以省很多心了。

3、建立两套版本控制,一套负责代码,一套负责文档。交付前,要完全模拟客户环境进行测试,从安装开始。

4、建立bug跟踪系统,专人测试,这一点非常重要,而且测试要尽早进行。PPP项目大多数时间是五人编码,一个测试,测试人员每天都做到晚上10点感觉还是不够用,两人比较好。

5、对于客户提出的需求变化,如果认为不应该修改,要提出原因。但不能对所有的这种要求都否决,可以修改那些不影响模型的。

师兄对研究生课程的评价

北大计算机系研究生该选哪些课程,这些意见值得参考。

必修课

  • 算法:一定要认真记笔记,而且要把笔记内容想透,老师会变着法子从笔记里出题。不要逃课,课本最后的内容也可能考。论文最好早点写,一般考试都会延长半个小时左右,基础知识要弄扎实,不要怕枯燥。两次作业,一次分析设计,一次是NPC问题。
  • OO:枯燥,上课会点名,有个图要早点做(11月),考试也会延长时间。题型比较固定,可以找往届题参考。老师自创的一些观点考试很可能会考到。有一个大程序。
  • 高体:头两个月可能会比较吃力,但题型一般也就是那么几种。程旭老师讲课很有激情(像推销员),前几节课的内容是回顾初级体系结构课程内容。要抓住几个重点(参考往届题目),背的内容居多。

选修课

  • 数据库原理与技术:笔记很多很多,要写一个分析报告,关于目前流行的数据库产品介绍等等。总体感觉不是很值得选。
  • 并行计算:一般是开卷考,主要是理论。袁老师很注重课堂表现。
  • 网络与分布式:新毕业的博士生讲,教材是英文八九百页,很有挑战性的课程。内容非常多,从头讲到尾,有不少新鲜应用,虽然很累但能学到东西。
  • 人工智能:没听说过有人及格。
  • PETRI网:平时分多,不太好混,因为平时表现比较重要。袁老师课讲得好,但PETRI网本身不是很实用。
  • 高级软工:什么都讲,但主要是概念或特点方面的内容,不太涉及具体编程。Java、EJB方面的内容比较多,要做一个程序,如果用Java比较简单。考试给分一般比较高。
  • 信息安全:没必要上,感觉老师不是很负责任(所谓的烂课)。老师总换,有程序和论文各一。
  • 数据库新技术:就是讲数据挖掘。
  • 空间信息系统与辅助设计:讲法比较新颖,每节课有作业。
  • 形式语言与自动机:老师水平不高,但讲得很仔细。
  • 图象处理:考试给分不低,且会划一个比较小的范围,上课轻松。共有5次程序。
  • 并行程序设计:去年作业很多很累,基本上是讲用MPI写并行程序,应该有C++基础。
  • 软件设计工具:多实践多用,考试不累,ROSE、UML培训性质。
  • 先进技术专题:COM技术,潘爱民老师知道得多,但讲起来不一定能听懂(也许一句也听不懂),可以学到一些编程哲学。
  • 图形多媒体(信息中心):比较容易,给分高,老师讲得不好,但内容比较有用。

据说信息中心的课期末不考试只写论文的居多。

我选过的课

补充几个我曾选过的课:

  • 数据库原理与技术和Web Services平时负担都很大。
  • 软件项目管理可以经常逃课,老师不管。
  • 软件设计工具(UML)虽然我平时很认真做作业,而且从不逃课,自认为学得不错,得分却是所有课里最低的。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2004/08/07/30945.html

日志搬家了!

水木blog的skin太少,编辑功能也有问题,干脆趁贴子还少的时候换个地方。

今天下午把帖子导到这里(博客园)又花了一翻工夫,格式上好象不太兼容,代码有些乱,暂时先不管了。一开始都导到文章区去了,不得已又一篇一篇的删,为什么不提供多个条目同时删除/移动的功能呢??

总之,希望在这里能一直呆下去。(什么,dotNet专用?。。我倒@#$%^)