从制造到创造
软件工程师成长之路
posts - 292,  comments - 96,  trackbacks - 0
配置环境
WINDOWS XP SP2
JDK 1.6
TOMCAT 6.0
ECLIPSE 3.3
LOMBOZ 3.3

一. JDK(JDK1.6)的安装与配置
(1) 在JAVA官方网站下载JDK工具包(JDK1.6)
http://java.sun.com/javase...

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

(2) 执行安装文件,如图
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片



(3) 配置JAVA运行环境:
【开始】-【控制面板】-【性能和维护】-【系统】-【高级】或者右键单击【我的电脑】-【属性】-【高级】
点击在新窗口中浏览此图片

进入【环境变量】界面,选择【系统变量】中的【Path】选项
点击在新窗口中浏览此图片

在【变量值】项的初始端输入您的JDK安装目录(%JAVA_HOME%\bin,%JAVA_HOME%为JAVA安装目录)至bin目录,注意:不要忘记分号。
点击在新窗口中浏览此图片

(4) 测试
【开始】-【运行】-【cmd】-【java -version】可以查看您当前的JDK版本
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

在C盘根目录中创建一文本文档,键入以下语句(如图),并保存为JAVA文件,注意:CLASS类名与保存的文档名必须一致,且大小写敏感。
点击在新窗口中浏览此图片

在命令行模式中测试刚刚编写的JAVA文件(如图),运行成功则显示Hello World!
点击在新窗口中浏览此图片

二. Tomcat6.0的安
(1) 下载Tomcat安装包
http://tomcat.apache.org/d...

点击在新窗口中浏览此图片

(2) 执行安装文件,如图
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

(3) 测试(测试结束后关闭Tomcat服务器)
在%TOMCAT_HOME%\bin目录下执行tomcat6w.exe(%TOMCAT_HOME%为Tomcat安装目录),点击Start启动Tomcat服务器。
点击在新窗口中浏览此图片

打开浏览器,在地址栏中输入:http://localhost:8080 运行成功则出现如下画面
点击在新窗口中浏览此图片

PS:示例中的Tomcat为Windows Service Installer(.exe)程序,安装成功后无需再进行额外配置。

三. Eclipse(Eclipse3.3)与Lomboz(Lomboz3.3)的安装
(1) 下载Eclipse与Lomboz合包(Eclipse与Lomboz版本号必须匹配,否则会引发错误)
http://forge.objectweb.org...

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

(2) 执行程序(解压后直接使用,无需安装),如图
点击在新窗口中浏览此图片

注意:Lomboz3.1版本以上在Eclipse首选项界面中均不会再有【Lomboz】选项
点击在新窗口中浏览此图片

四. Tomcat插件的安装与配置
(1) 下载TomcatPluginV321.zip,鉴于官网无法访问,可以去百度、谷歌搜索,以下地址仅供参考
http://d.download.csdn.net...(需要先注册)

(2) 将TomcatPluginV321.zip解压缩到eclipse安装目录中的plugins文件夹下

(3) 在命令行模式中重新启动Eclipse(以-clean模式启动)
点击在新窗口中浏览此图片

(4) 配置Tomcat version与Tomcat home(参照自身的安装路径)
打开Eclipse,选择【Window】-【Preferences】-【Tomcat】
点击在新窗口中浏览此图片

五. 集成环境测试(JSP程序)
创建一个新项目
打开Eclipse,选择【File】-【New】-【Project】-【Web】
点击在新窗口中浏览此图片

输入项目名Test,点击Finish
点击在新窗口中浏览此图片

创建服务器,选择【File】-【New】-【Other】-【Server】
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

创建JSP文件,选择【File】-【New】-【Other】-【Web】
点击在新窗口中浏览此图片

输入文件名
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

编辑JSP文件,如图
点击在新窗口中浏览此图片

打开服务器,右击选择Start
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

运行服务器,选择【Run】-【Run As】-【Run on Server】
点击在新窗口中浏览此图片

打开浏览器,在地址栏中输入 http://localhost:8080/Test/Test.jsp 运行成功则显示以下画面
posted @ 2007-12-10 17:35 CoderDream 阅读(1892) | 评论 (1)编辑 收藏
eclispe想必大家都很熟悉了,一般来说,eclipse插件都是安装在plugins目录下。不过这样一来,当安装了许多插件之后,eclipse变的很大,最主要的是不便于更新和管理众多插件。用links方式安装eclipse插件,可以解决这个问题。

   当前配置XP SP1,eclipse3.0.1

   现在假设我的eclipse安装目录是D:\eclipse,待安装插件目录是D:\plug-in ,我将要安装LanguagePackFeature(语言包)、emf-sdo-xsd-SDK、GEF-SDK、Lomboz这四个插件。

   先把这四个插件程序全部放在D:\plug-in目录里,分别解压。如Lomboz3.0.1.zip解压成Lomboz3.0.1目录,这个目录包含一个plugins目录,要先在Lomboz3.0.1目录中新建一个子目录eclipse,然后把plugins目录移动到刚建立的eclipse目录中,即目录结构要是这样的:D:\plug-in\Lomboz3.0.1\eclipse\plugins 

   Eclipse 将会到指定的目录下去查找 eclipse\features 目录和eclipse\plugins 目录,看是否有合法的功能部件和(或)插件。也就是说,目标目录必须包含一个 \eclipse 目录。如果找到,附加的功能部件和插件在运行期配置是将是可用的,如果链接文件是在工作区创建之后添加的,附加的功能部件和插件会作为新的配置变更来处理。

    其它压缩文件解压后若已经包含eclipse\plugins目录,则不需要建立eclipse目录。

    然后在 eclipse安装目录D:\eclipse目录中建立一个子目录links,在links目录中建立一个link文件,比如 LanguagePackFeature.link,改文件内容为  path=D:/plug-in/LanguagePackFeature  即这个link文件要对应一个刚解压后的插件目录。

说明:

 1. 插件可以分别安装在多个自定义的目录中。

 2. 一个自定义目录可以安装多个插件。

 3. link文件的文件名及扩展名可以取任意名称,比如ddd.txt,myplugin都可以。

 4. link文件中path=插件目录的path路径分隔要用\\或是/

 5. 在links目录也可以有多个link文件,每个link文件中的path参数都将生效。

 6. 插件目录可以使用相对路径。

   7. 可以在links目录中建立一个子目录,转移暂时不用的插件到此子目录中,加快eclipse启动。 

   8.  如果安装后看不到插件,把eclipse 目录下的configuration目录删除,重启即可。

 

注意:关于用links方式安装Lomboz插件,在编辑EJB时可能会产生问题,这个将会在有关Lomboz插件的文章中探讨。

posted @ 2007-12-10 17:29 CoderDream 阅读(275) | 评论 (0)编辑 收藏
1、Anatomy of an Android Application(中文翻译)
2、在android平台上测试C/C++程序及库
3、http://www.forwind.cn/category/linux/android/
4、http://www.1android.cn/Default.asp
5、Android开发者论坛
6、Android中文网
7、Android中文文档
posted @ 2007-12-10 17:18 CoderDream 阅读(335) | 评论 (0)编辑 收藏
1、 推荐一个很棒的JS绘图库Flot
2、DroidDraw - Android的界面设计器
3、AppFuse 2.0.1发布
4、MySQL InnoDB数据恢复工具
5、用 AjaxTags 简化 Ajax 开发
6、Java SE 6 Update N Early Access Program
7、JSFUnit - JSF的测试工具
posted @ 2007-12-06 14:27 CoderDream 阅读(254) | 评论 (0)编辑 收藏
1、正则表达式30分钟入门教程
posted @ 2007-11-29 11:06 CoderDream 阅读(298) | 评论 (1)编辑 收藏
1、《EJB3.0实例教程》官方网
2、将 EJB 部署到 WebSphere 应用服务器
3、 Enterprise JavaBeans 入门
posted @ 2007-11-28 13:50 CoderDream 阅读(239) | 评论 (0)编辑 收藏

1、安装Weblogic:
      使用的EJB服务是BEA的weblogic8.1,下载BEA的weblogic8.1,然后安装。安装步骤省略。  
2、定义EJB远程接口(Remote Interface):
       任何一个EJB都是通过Remote Interface被调用,EJB开发者首先要在Remote Interface中定义这个EJB可以被外界调用的所有方法。执行Remote Interface的类由EJB生成工具生成。
  以下是HelloBean的Remote Inteface程序:
package com.leo;
import java.rmi.RemoteException;
import java.rmi.Remote;
import javax.ejb.*;
public interface Hello extends EJBObject, Remote {
//this method just get "Hello EJB" from HelloEJB.
public String getHello() throws RemoteException;
}
3、定义Home Interface
EJB容器通过EJB的Home Interface来创建EJB实例,和Remote Interface一样,执行Home Interface的类由EJB生成工具生成。以下是HelloEJB 的Home Interface程序:
package com.leo;
import javax.ejb.*;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.*;
/**
* This interface is extremely simple it declares only
* one create method.
*/
public interface HelloHome extends EJBHome {
public Hello create() throws CreateException,
RemoteException;
}
4、写EJB类
在EJB类中,编程者必须给出在Remote Interface中定义的远程方法的具体实现。EJB类中还包括一些 EJB规范中定义的必须实现的方法,这些方法都有比较统一的实现模版,编程者只需花费精力在具体业务方法的实现上。
以下是HelloEJB的代码:
package com.leo;
import javax.ejb.*;
public class HelloEJB implements SessionBean{
    public void ejbCreate(){}
    public void ejbRemove(){}
    public void ejbActivate(){}
    public void ejbPassivate(){}
    public void setSessionContext(SessionContext ctx){}
    public String getHello() {
         return new String("Hello,EJB");
    }
}
5、创建ejb-jar.xml文件
  ejb-jar.xml文件是EJB的部署描述文件,包含EJB的各种配置信息,如是有状态Bean(Stateful Bean) 还是无状态Bean(Stateless Bean),交易类型等。ejb-jar.xml文件的详细信息请参阅EJB规范。以下是HelloBean的配置文件:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems Inc.//DTD Enterprise JavaBeans 1.2//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_2.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>com.leo.HelloHome</home>
<remote>com.leo.Hello</remote>
<ejb-class>com.leo.HelloEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
 

6、创建weblogic-ejb-jar.xml
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<weblogic-ejb-jar>
 <description><![CDATA[Generated by XDoclet]]></description>
   <weblogic-enterprise-bean>
      <ejb-name>Hello</ejb-name>
      <stateless-session-descriptor>
      </stateless-session-descriptor>
      <reference-descriptor>
      </reference-descriptor>
      <jndi-name>Hello</jndi-name>
      <local-jndi-name>HelloLocal</local-jndi-name>
   </weblogic-enterprise-bean>
</weblogic-ejb-jar>
7、部署和编译
          EJB的jar包是由class文件和描述文件组成,对于weblogic服务器来说还要增加weblogic-ejb-jar.xml描述文件。编译Java源文并将编译后class和ejb-jar.xml、weblogic-ejb-jar.xml打包到Hello.jar
7.1:创建目录build。
7.2:在build下新建目录META-INF,把文件ejb-jar.xml、weblogic-ejb-jar.xml拷到META-INF下。
7.3:把编译好的class文件拷到build目录下(此时为com/leo/Hello.class,HelloEJB.class,HelloHome.class)。
7.4:打包成jar文件: jar -cvf hello.jar *.* 。
7.5:再将hello.jar文件部署到weblogic服务器中。
8、写客户端调用程序
您可以从Java Client,JSP,Servlet或别的EJB调用HelloBean。
调用EJB有以下几个步骤:
通过JNDI(Java Naming Directory Interface)得到EJB Home Interface
通过EJB Home Interface 创建EJB对象,并得到其Remote Interface
通过Remote Interface调用EJB方法
以下是一个从Java Client中调用HelloBean的例子:
package ejb.hello;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Hashtable;
import javax.ejb.*;
import java.rmi.RmoteException;
/**
* @author Copyright (c) 2000 by Apusic, Inc. All Rights Reserved.
*/
public class HelloClient {
    public static void main(String args[]){
        String url = "rmi://localhost:7100";
          Context initCtx = null;
          HelloHome hellohome = null;
          try {
                  Hashtable env = new Hashtable();
                  env.put(Context.INITIAL_CONTEXT_FACTORY,"com.apusic.jndi.InitialContextFactory");
                  env.put(Context.PROVIDER_URL, url);
                  initCtx = new InitialContext(env);
          } catch(Exception e){
                  System.out.println("Cannot get initial context: " + e.getMessage());
                  System.exit(1);
          }
          try {
                  Object obj=ctx.lookup("Hello");
                  HelloHome home=(HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class);
                  Hello hello = hellohome.create();
                  String s = hello.getHello();
                  System.out.println(s);
         }catch(Exception e){
                  System.out.println(e.getMessage());
                  System.exit(1);
        }
    }
}
  运行HelloClient,可得到以下输出:
  Hello EJB

posted @ 2007-11-28 13:44 CoderDream 阅读(2156) | 评论 (0)编辑 收藏
ejb3.0开发环境配置
运行环境配置
1、工具下载与安装
      1>下载安装JDK5.0(www.java.sun.com)
      2>下载安装eclipse3.2.x(www.eclipse.org)(如果你下载了JBOSS IDE2.0(内含eclipse3.2.x,这个可以不要)
      3>下载和安装jboss-4.0.5.GA 服务器(记住一定要下载安装版,内含EJB3.0Container,地址:http://sourceforge.net/project/d ... mp;use_mirror=jaist
      4>下载插件JBOSS IDE 2.0(http://sourceforge.net/project/d ... amp;use_mirror=nchc)
      安装JBOSS是要注意几点:
       1>议不要安装在Program Files 目录,否则一些应用会导致莫名的错。
      2>选择带集群功能的安装选项“ejb3-clustered”
      3>在输入配置名称时,输入“all”
      4>在配置JMX时,把所有选择荐都勾上,并输入jmx-console的用户名和密码!
      5》运行JBOSS,进行JBOSS安装目录下,进入BIN目录下,运行 run -c all,如果直接运行run,会报错!(因为你run.bat不知道你运行的是那种配置all,default,还是min)
2、设置环境变量
    JAVA_HOME=JAVA安装目录
   JBOSS_HOME=JBOSS安装目录

3、认识JBOSS目录用途
目录        描述
bin        启 动 和关闭JBoss的脚本
client         客户端与JBoss通信所需的Java 库(JARs)
docs         配置的样本文件(数据库配置等)
docs/dtd        在JBoss中使用的各种XML文件的DTD。
lib        一些JAR,JBoss启动时加载,且被所有JBoss配置共享。(不要把你的库放在这里)
server         各种JBoss配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss
包含3 个默认的配置:minimial,default和all,在你安装时可以进行选择
server/all         JBoss的完全配置,启动所有服务,包括集群和IIOP。(本教程就采用此配置)
server/default         JBoss 的默认配置。在没有在JBoss 命令航中指定配置名称时使用。(本教程没有安装此
配置,如果不指定配置名称,启动将会出错)
server/all/conf         JBoss的配置文件。
server/all/data         JBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ。
server/all/deploy        JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署。EJB、WAR、EAR,甚至服务。
server/all/lib         一些JAR,JBoss在启动特定配置时加载他们。(default和minimial配置也包含这个和下面两个目录。)
server/all/log        JBoss的日志文件
server/all/tmp        JBoss的临时文件
4、EJB部署
   JBoss中的部署过程非常的简单、直接。在每一个配置中,JBoss不断的扫描一个特殊目录的变化:
[jboss安装目录]/server/config-name/deploy。
posted @ 2007-11-28 11:49 CoderDream 阅读(661) | 评论 (0)编辑 收藏


    大多数人学英语只知整天死背词汇表,或昏昏欲睡地听老师絮叨语法。尽管老师常会夸张运用脸部肌肉演示发音,然而仅仅一天之后,所学一切就开始在你脑海中逐渐褪色。这便导致了一个无奈的结果:就算你会读会写,可当你真正面对一个外国人进行电话会议或演讲陈述的实战练习时,你还是傻眼了。
现在EF中国区总裁Peter Winn告诉你:只需掌握了五个基本秘诀,即可轻松掌握单词、词组,真正实现“无痛”学英语。

    1.确定目标,适时褒奖。大多数人把学英语的目的简单地定义为“对未来有益”,其实精准的目标设定更有助于集中精力达成最终结果,其关键在于确定成绩测试方式及时间范围。你需要对自身英语水平做出客观评估,并制定渐进提高的详细步骤。须谨记:衡量学习成果,定要始终使用同一衡量标准,这样才能清楚看见进步空间。另外,设立长远目标倒也无妨,如同“说一口流利的、不带丝毫口音的英语”等等,就是不少人正在使用着的目标。不过,以阶段性目标作为发端容易敲开成功之门,“我希望能与同事进行基本商务对话”,就是一个不错的例子。最后,千万不要忘记,哪怕你获得最微小的进步,也应适时奖励自己,如此可以保证长期的学习激情。

    2.快乐学习,轻松记忆。学习英语,可以脱离教室。研究表明,当人们处于快乐的心境下,记忆力更突出、自信心更富裕。把英语学习同兴趣爱好结合起来。喜欢打网球,就参加英语交流的网球俱乐部;喜欢烹饪,就报名采用英语教学的烹饪培训班;喜欢唱歌,不妨试试在卡拉OK演唱英语歌曲……用眼睛盯着屏幕,用耳朵捕捉一遍遍重复的歌词,辅以熟悉流畅的旋律,这一切让单词记忆变得越发简单。可能最初有点难,但是这会强迫你使用英语。尤其是你正做着自己热爱的事情,学习英语的痛苦也就一扫而光了。

    3. 融入环境,异化自己。建立英语学习自信心的关键无非:实践实践再实践!缺少实践机会和语言环境是目前中国学生面临的最大挑战。当年我学习中文的时候,我和身边朋友定下默契,尽量强迫自己用中文互相交流,即便中文不是我们其中任何一个人的母语。我们大家约定不到万不得已之时,必须一直说英语,甚至对违反默认规则的人实行惩罚措施!虽然刚开始可能会犯很多错误,但随着对英语对话模式的逐渐熟悉,所犯错误也将越来越少。令自己处于一个天然外语环境同样重要,这个环境可以是办公室、俱乐部、健身馆、酒吧、餐厅,诸如此类的场所越多越好。尽量挑选“主动”语言环境,比如俱乐部或派对,在那里你会更有说话的欲望。而像电影院之类的“被动”语言环境,收效往往并不出色。不要害怕犯错——走出门去,找外国人交流。

    4. 寻求帮助,制订规划。学习英语的一个关键步骤,是接受高质量学习指导或参加高端语言培训项目。据我了解,很多学生宁愿选择自学,以及与外国友人实战练习。最终,这些学生的确能够建立充分信心,敢于流利表达自己,但词汇量却相当有限。这就等于缺少了最基本的砖块,无法建起坚实的语言基础。我认识一个女孩,她说话速度很快,却从不注意用词,因此总是表达不够清晰。另外一个学生经常和外国友人一起泡吧,于是连他自己都没有意识到,他的口头英语里夹杂许多酒吧用语,甚至包括hey dude、yeah man 、that rocks!这些粗俗的脏话,就好像他长年在酒吧工作一样。扮演不同的社会角色,必然有完全迥异的英语表达方式,你能想象与国外客户高层管理人员开电话会议时突然冒出hey dude、that rocks这些词句吗?而这些区别只能由一个专业老师指导。一个称职老师会详细分析学生的优势和不足,找到需要辅导的不足所在,强化本身具备的优势,由此制定一个切实可行的学习规划。 学习语言不仅需要流利,更加需要得体!

    5. 承诺自己,态度积极。从来没有确切证据表明,某种特质的某些人更易于或更难于熟练掌握一门语言。相信我,任何人无论年龄、基础,只要具备正确学习态度,都足以学好英语。那些失败过的学生,并不是因为他们不够聪明,而是因为他们没有把学英语当作一种对自己的承诺。你越早制定明确目标和学习计划,就能越快克服重重障碍。当然,最初要让舌头适应陌生的声音和句式,确实有些困难。这并不该让你退却。失败原因永远只有一个,那就是你自己向这些困难投降了。

    遵循这5个简单步骤,你很快会发现词汇量和造句能力迅速提高,而对英语学习信心逐渐增强,与老外对话时逐渐懂得镇定心思。曾经有位老师教育我要“操控”语言,而不是让语言“操控”你。 不知不觉,你会爱上英语,学习也不再感觉痛苦。

posted @ 2007-11-27 17:27 CoderDream 阅读(333) | 评论 (0)编辑 收藏
可能是有些自负的因素吧,我常常觉得《程序员》杂志上的很多观点和我不谋而合。我一般喜欢看的是人物介绍、产品的底层实现方法等文章;对其它的新名词倒不是很感兴趣;最不喜欢的栏目反而是几个人不断的在说各家产品的有什么新技术、新趋势的文章。

在接触《程序员》杂志的这七年,也是我从迷茫走向成熟的七年,至少我能明白我现在在做什么,也能够承担因此而引起的后果,不论是苦还是甜。

这几年来,我也发生了很大的变化,各种生活也逐渐定型,虽然开发不是一个很好的工作,但对我个人来说,技术(特别是开发)仍然是能最发挥我的特点的一个职业。随着年龄的增长,我也能坦然接受自己对这个工作的喜爱,并感受到其中的一点乐趣。

粗粗算来,已经工作快十八年了,接触计算机也有二十年的时间,其中用于编程的时间大概也有十年,在这里将我的几点体会和大家分享一下。如果您是一个程序员、或者打算做一个程序员,或者打算开一个公司从事软件开发方面的工作,希望这些观点能够对您有所帮助。

1、开发规模问题
   
对于目前业内的一些观点,我并不认同。例如在各种报刊杂志上,经常有专家教授唠唠叨叨在说现在的软件开发已经进入工业化时代,要多少多少人团队开发,才能如何如何。但是,基于国内的实际情况,其实许多1000万元以下的项目完全是几个人的小团队开发模式,即使大到规模上市的软件公司,具体到每个定制开发的项目,实际项目组的开发人员,也经常只有不到十个人的规模,三、五个人的情况更是多如牛毛。

再看看国际上,我们所使用的一些著名的产品,如unix系统、C语言、notes系统、java语言、甚至最早的windows、dos很多都是几个人的小组所完成的开发。

至于这些产品的推广完善,所需要的巨大人力资源和开发之初的人力投入完全是两回事。在开发阶段,人多不一定就是好事,甚至肯定要坏事。

这就像生小孩一样,只要一男一女两个人就完全足够,但是,将这个孩子养大成人,除了他的父母,整个家庭、学校、社会等其它各色人等也直接或间接付出了很多。但这个孩子仍然只是他父母开发出来的,其它人只是起一个推波助澜的作用。

2、技术与思想问题

综合分析目前国内的软件开发方法(甚至包括其它IT技术),不难发现,我们总是热衷于技术,而不注重标准。从Basic、C、C++、一直到java、 C#等语言,再到.Net、J2EE等架构,多少技术在我们眼前晃来晃去,有些人也以掌握这些技术为目的,甚至洋洋得意。

其实,冷静下来分析一下其中的核心技术内容,现在的Web开发和早期的CGI方式的Web开发,只有方法上的不同,没有实质上的区别,所遵循的数据标准也没有任何变化。

整天只沉迷于片面的技术,使我们离核心技术越来越远,根本谈不上什么创造性。现在国内很多电子政务的项目在投标时均要求必须基于J2EE或.Net技术,完全拒绝LAMP和其它技术,估计很多美国公司老板做梦都要笑出声来。

重要的是思想而不是工具,就象毛泽东打败蒋介石是依靠思想而不是武器一样,技术并不起决定作用。

3、技术沉淀的重要性

由于不注重核心技术(其实那怕是一个小小的strcpy都是核心技术的一部分),很多公司没有任何技术积累,也没有可重复使用的底层开发库,更谈不上编程方法和思想上的积累。

因为工作的关系,我曾经接触过不少项目,这些项目都是号称采用了何等先进的技术云云,但实际上很多项目即使一个简单的按钮修改都需要在每个JSP文件中逐个修改。看了这样的代码,你真的不能不相信,语言是一个项目中最不重要的技术。


4、面向对象的是与非

我始终认为翻译“面向对象”的那个人是一个典型的老光棍,整天想着找对象,所以就想当然的这么翻译,其实我觉得“面向对象”应该是“面向目的”才对。所谓面向目的,说白了就是黑猫白猫的一句话。

其实“面向目的”(而不是“面向对象”)更多的是一种思想,而不是一个所谓的编程方法。所谓的抽象,固然有其必要性,但到处都是对象的说法,往往只是一些外行说出的内行话。难怪Torvalds对C++批的一无是处。

真正的“面向目的”,就是对一个项目的各个部分采用最适合的方法以达成目的。

5、大道至简

我越来越相信“大道至简”这个哲学观点,从设计产品、系统分析、模块划分,一直到做饭洗菜、吃饭睡觉,甚至到人际交往,这个道理都是相通的。从程序的角度也是如此,一段好的代码大多都是一个简洁的代码。

就像做人一样,简单做人,自己不辛苦,别人也不辛苦。同样一种开发语言、一种技术、一种开发工具、一种框架平台也是如此。

我个人认为C语言几十年不倒的主要原因,主要就是因为其结构简单,扩充方便。n年前玩音响的时候,很多发烧友也一致认为,在价格相当的情况下,一个旋钮最少的音响基本上就是最好的音响,也是同样的道理。

6、责任心和细节

其实大家都知道这一点,但是实际操作起来往往又根本不在乎。做项目需求时,有些人往往只是考虑实现客户要求的功能,而不是从客户要求的内容去思考和分析,甚至因为工作量的关系,故意避开一些问题。但是这些问题仍然存在,最后仍然会逐渐暴露出来,反而自讨苦吃。

其实,对客户而言,能有更好更完善的方案一般都会乐意接受,如果能本着对客户负责的精神,客户才能真正信任你;你和客户谈起价格时也才能有理有据。

很多时候只要负起责任,就会有助于发现所有的问题,并提出一个妥善的解决方法,注意到每一个细小的问题。其实大到卫星上天,小到刷锅洗碗,最根本的关键不是什么技术,而是在高度责任心的基础上对细节的把握。

我曾经在跳蚤市场买过一个七十年代的收音机,是春雷703,一个很古老的上海牌子,其信噪比和灵敏度比现在的集成电路的高出很多,原因无它,每一件细小的功能都做到最好而已。其实看一个程序员只要看他对程序跳格的处理,就可以决定90%的情况。

7、坚持熬下去

前几天看一个关于抗战的记录片,老毛对抗战相持阶段的说法是熬下去,当然是积极的熬法。其实不仅是做程序,做其它事情又何尝不是这样。

如果一天写100行代码,10年下来就是30多万行,记得好像unix最早的代码也不到40万行,30多万行代码,可以做多少事情呀。

有一天和一个朋友谈起代码量,他说最近在招人,要求曾经独立写过1万行代码,我后来仔细算了我开发的MCIS中间件系统,在代码最多时也才5万多行,后来不断调整优化,现在只有4万行不到。再统计一下数据库接口部分,每个数据库接口只有可怜的400行代码不到,但就这简单的400行已经可以完成一个数据库接口应具备的完整功能。

这几天刚好赶上亚洲杯,中国队0-3负于乌兹别克斯坦,又一次在打平即可出线的时候情况下完蛋。看看中国足球队的窝囊,其实就是没有认真对待场上的每一分钟,姑且不论技术和意识,只要场上每个人都能坚持90分钟不停的奔跑拦截,估计在亚洲也可以独立独行。最根本而又最简单的没有做到,又何谈胜利。

总想写一些东西,但因时间的关系,一直拖了下来,这几天刚好朋友约稿,就写一点自己的想法。从职业的角度而言,每个职业都有不同的酸甜苦辣,相比而言,选择一个自己比较喜欢的职业,也确实是一个不错的选择。可能是年龄的关系,我反而觉得生活才是最重要的,当然最好能在工作中保持乐趣,在生活中享受乐趣。在《程序员》杂志7年之际,写下这点东西,希望《程序员》杂志能够成为更多程序员的朋友。
posted @ 2007-11-27 15:15 CoderDream 阅读(499) | 评论 (0)编辑 收藏
仅列出标题
共24页: First 上一页 4 5 6 7 8 9 10 11 12 下一页 Last 

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(9)

我参与的团队

随笔分类(245)

随笔档案(239)

文章分类(3)

文章档案(3)

收藏夹(576)

友情链接

搜索

  •  

积分与排名

  • 积分 - 454313
  • 排名 - 115

最新评论

阅读排行榜

评论排行榜