配置環境
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 閱讀(1913) |
評論 (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 閱讀(291) |
評論 (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 閱讀(353) |
評論 (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 閱讀(271) |
評論 (0) |
編輯 收藏
1、
正則表達式30分鐘入門教程
posted @
2007-11-29 11:06 CoderDream 閱讀(313) |
評論 (1) |
編輯 收藏
1、
《EJB3.0實例教程》官方網
2、
將 EJB 部署到 WebSphere 應用服務器
3、
Enterprise JavaBeans 入門
posted @
2007-11-28 13:50 CoderDream 閱讀(255) |
評論 (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 閱讀(2173) |
評論 (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 閱讀(678) |
評論 (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 閱讀(353) |
評論 (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 閱讀(514) |
評論 (0) |
編輯 收藏