2006年2月9日
時間和日子在無知無覺中過去,問自己收獲了什么?
每天無所事事。
列個標(biāo)題,挖個坑,希望每天能來挑一點土。
《解讀eclipse_3.50_galileo 源碼》
從第一次使用eclipse(大概是03年的事,那時比較好用的是2.1版還是1.4版已記不清了)就想看看這么巧妙的一個玩意兒是怎么實現(xiàn)的,一直懶散無度,從未下手。
這段時間用SWT做個小工具,是邊找邊抄,為什么要那么寫,不知道--真是有違一慣的作風(fēng)。
每天下班后,都不是為什么奔忙著,網(wǎng)頁?網(wǎng)游?都不知道自己看了些什么,玩了些什么。
eclipse 的jar很多,核心的是core.runtime和osgi(早些版本里,是沒有osgi的),core.runtime比較小,就幾個類,先攻擊小的少的--毛主席真是偉大的軍事家呀。
敬禮,睡覺去。
前言
一直想學(xué)習(xí)C,在剛知道有計算機的時候就想學(xué)習(xí)C,上學(xué)時,偷上計算機專業(yè)的課,學(xué)了半年Turbo C,學(xué)到指針時,暈了,也就沒有下文。工作之后,時有心血來潮之時,但還是沒怎么學(xué)習(xí),Java還是比較簡單,Java幾乎占據(jù)了工作全部,更少有學(xué)習(xí)C了。用Java,研究到Java的核心,發(fā)覺還是得學(xué)C,學(xué)呀,學(xué)吧。
今天也是一時的心血來潮了,趁著有股勁,開始動手,記錄一下,以期待和方便下次來潮。
寫出的代碼,得編譯才可以運行,這個編譯環(huán)境,得先搭起來。VC、Visual Studio,都微軟的東西,有點抵觸,也有些大,不安裝了,手工配一套環(huán)境吧。
網(wǎng)上搜了一下,Windows系統(tǒng)配C的編譯環(huán)境,得要MinGW或者cygWin,以前都下載過,但一直不知道它們本身是個什么東西,再查,知道大概:二者均基于GCC(GNU Compiler Collection -格努編譯套件),再加一些基本的類庫。去各自的官網(wǎng)分別下載安裝,感受:cygWin更象是一個linux的模擬器,把linux環(huán)境下的GCC給模擬出來,其它的就都一樣需要基本的編譯器、類庫,其它的如make工具。使用的時候,個人取向選擇minGW,在環(huán)境變量中指向{$minGW}\bin,gcc和make就可以在cmd中運行了。
寫個簡單的hello world源程序,gcc一把,生產(chǎn)可執(zhí)行文件,運行,結(jié)果出來,OK!
注,下載minGW時,我選擇了自動安裝下載,一個個的下載,點來點去,累的慌。
單獨下載minGW,要如下幾個包,再分別解開放在同一目錄中。
gcc-core | C語言編譯器 |
gcc-c++ | C++語言編譯器 |
mingw-runtime | MinGW的運行時庫(這個必須安裝) |
win32api | win32的API函數(shù)頭文件和連接庫 |
binutils | MinGW的匯編器和連接器等基礎(chǔ)工具 |
gdb | MinGW中的調(diào)試工具 |
mingw32-make | Make工具,用以更好的管理你的項目 |
make解后,沒有通常的make.exe,只有一個mingw32-make.exe文件,其實,把這個文件改名為make.exe就行。
1978:第一個關(guān)鍵的年份
1988:雖然是第一個十年,但十歲的生日沒多少印象了,更多的是開始注意的第一個年份。
1993:初中結(jié)束了,
1997:高中結(jié)束了,
2000/06/30:大學(xué)畢業(yè)了,世紀(jì)之交呀!
2000/08/03:子身跑到汕頭的一個小鎮(zhèn)開始第一份工作,真正的人生地不熟。到目的地時,身上只有20塊錢了,還是年青的老板給我付的“摩的”費。
2001/11/03:混到一份跟自己所學(xué)專業(yè),所做的工作一點也不相關(guān)的工作,毅然一個人跑到北京。首都呀!當(dāng)時天很冷,比我想象的要冷,下車后把能穿的都穿上,不知象什么熊。打22塊錢的車找到公司,競?cè)贿€沒到上班時間。
2004/06/xx:一個傷感的月份,也注定要離開這個做了好幾年有公司。
2004/08/04:換了一個比較遠的公司,在朝陽,自己租住在西直門。
2005/02/28:一個沒有29日的月份,還沒開始工作,就沒有選擇的離開了。
2005/07/03:
2006/07/03:換了一份工作,不知什么感受。
與Velocity的第一次見面,是03年,有個新同事推薦使用,因當(dāng)時我在做別的項目,也沒怎么仔細了解,簡單的知曉類似如模板一類的東西。之后有過幾次接觸,但,都沒花時間仔細看,前段時間,幫朋友做一個小東西,覺得用個模板做,會省很多事,想到Velocity。東西很小,做完了都沒時間看Velocity,今天正好有時間,研究研究。
Velocity是apache下的一個開源項目,其網(wǎng)址:http://velocity.apache.org/;下載地址:http://velocity.apache.org/download.cgi,可直接下載源碼,也可通過SVN獲取源碼。
在eclipse中創(chuàng)建一個web應(yīng)用工程,把Velocity的源碼拷到j(luò)ava資源目錄下,自動編譯后,報幾個錯,拷貝下載的Velocity源碼lib目錄下的commons-collections-3.1.jar、oro-2.0.8.jar、commons-lang-2.1.jar這個三類包到web應(yīng)用工程的lib目錄下即可。
準(zhǔn)備就緒,就寫個例子跑跑試試。寫一個hello.vm的模板文件,創(chuàng)建一個對應(yīng)的Servlet,就可以運行了。兩文件源碼貼出如下:
hello.vm
<html>
<body>
#set($greet = "你好哇!")
Hello!$name, $greet
</body>
</html>
HelloServlet.java
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context;
import org.apache.velocity.servlet.VelocityServlet;
public class HelloServlet extends VelocityServlet {
protected Properties loadConfiguration(ServletConfig config)
throws IOException, FileNotFoundException {
Properties p = new Properties();
String path = config.getServletContext().getRealPath("/");
if (path == null) {
path = "/";
}
p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
p.setProperty("runtime.log", path + "velocity.log");
p.setProperty(Velocity.INPUT_ENCODING, "GBK");
p.setProperty(Velocity.OUTPUT_ENCODING, "GBK");
return p;
}
public Template handleRequest(HttpServletRequest request,
HttpServletResponse response, Context ctx) {
Template template = null;
try {
ctx.put("name","Velocity");
template = Velocity.getTemplate("/hello.vm");
} catch (Exception e) {
e.printStackTrace();
}
return template;
}
}
創(chuàng)建servelt要注意的幾個地方。
1、新建的Servlet要擴展Velocity的VelocityServlet
2、在servlet中要實現(xiàn) public Template handleRequest(HttpServletRequest request,HttpServletResponse response, Context ctx)
A)把要返回到頁面上的數(shù)據(jù)放到context中對應(yīng)到指定鍵值(鍵值名為對應(yīng)模板中定義的變量名)
B)引入指定模板文件
3、導(dǎo)入配置文件的方法protected Properties loadConfiguration(ServletConfig config),是否實現(xiàn),是可選的 ,其作用在后面說明。
發(fā)布運行后,訪問http://localhost:8080/vt/HelloServelt,就可看到結(jié)果了。
運行起來,看到結(jié)果,是覺得很簡單,其運行過程,就要跟蹤看源碼才能知道了。
看源碼,先看的,肯定是VelocityServlet.java。發(fā)現(xiàn)源碼注釋中,這個類已不推薦使用,推薦使用Velocity的一個子項目tool中的VelocityViewServlet.java,我沒有當(dāng)tool子項目,就先看這個“過時的”實現(xiàn)。
VelocityServlet.java,擴展了HttpServlet,實現(xiàn)了doGet、doPost、init基本方法,前兩個方法都直接調(diào)用新實現(xiàn)的doRequest方法,這些都是很常規(guī)的操作。
doRequest方法做如下幾件事:創(chuàng)建上下文、設(shè)置響應(yīng)內(nèi)容文件類型、獲取模板(調(diào)用每個請求中的具體實現(xiàn))、合并數(shù)據(jù)做出響應(yīng)、出錯處理及資源清理。看到這兒,整個請求和響應(yīng)過程很清晰,并沒什么特別的處理。
接下來,看看它的初始化做了些什么事。就做了三件事,超類初始化、自己的初始化、緩存內(nèi)容類型數(shù)據(jù)。自己的初始化,也就是(i)導(dǎo)入配置信息,(ii)根據(jù)配置信息做初始化設(shè)置。導(dǎo)入配置信息,是根據(jù)指定的幾個地方,獲取配置數(shù)據(jù)(在提供的樣例中,重載了它的獲取配置數(shù)據(jù)的方法,自己靈活的寫入一些配置信息);根據(jù)配置信息做初始化的工作,應(yīng)用單例設(shè)計模式,保證初始化工作的處理唯一。
VelocityServlet自已的初始化,調(diào)用另一個類org.apache.velocity.app.Velocity的init( Properties p )方法,就看看Velocity里做了些什么。Velocity里全是靜態(tài)方法。主要有如下幾個方法:
1、初始化;2、預(yù)演傳入的數(shù)據(jù)(發(fā)現(xiàn)在應(yīng)用中沒有使用,只在單元測試代碼中引用到);3、合并數(shù)據(jù)和模板;4、設(shè)置/獲取屬性;5、操作信息提示(不過,都不推薦使用了),整個的看下來,有兩點:1、主要的還是初始化和數(shù)據(jù)合并了;2、這個類只是一個中轉(zhuǎn)類,所有的方法,最終都是調(diào)另一個類org.apache.velocity.runtime.RuntimeSingleton的方法。
打開RuntimeSingleton的代碼,看一看,發(fā)現(xiàn)它同Velocity類差不多,類本身不做實際的處理操作。它與Velocity不同的是,它是申明一個靜態(tài)的實例,再調(diào)用這個實例,個別地方(init())加了同步控制。如此處理體現(xiàn)它這個類的名字--單例,核心的還是這個靜態(tài)實例org.apache.velocity.runtime.RuntimeInstance。
到RuntimeInstance,就開始接觸到Velocity的處理核心了。
寫到這兒,突然沒有寫下去的沖動了,暫切休息一下。
抽時間看了一下Velocity子項目tool下的VelocityViewServlet的源碼,比VelocityServlet要實現(xiàn)的好多了,與struct接合的比較好。
Velocity,不僅僅適合于web應(yīng)用,還可以作生成SQL、XML的模板,內(nèi)容比較多,待一一挖掘。
在網(wǎng)上看到“
蓋茨北大演講遭開源人士抗議”一事,對開源兄的行為,我選擇不置可否,但對軟件而言,我選擇開源。
現(xiàn)在的局面是,商業(yè)化的軟件比開源的軟件,要活地滋潤、舒展多了,所以也會發(fā)生這次事件。
為什么會出面這種局面?為什么需要開源?在這里我不闡述自己的觀點--持有同感的人都有自己的想法。
開源如果想要活得不那么艱難,我想:需要一個良好的商業(yè)模式支持。
開源不是免費!
開源要生存發(fā)展,也需要營養(yǎng)供應(yīng),不能僅靠一部分懷開源激情的人或者組織無償奉獻能支撐起來的。
linux、jboss的生存模式算是比較成功的,但還不能夠同商業(yè)化軟件相比較,還需要更充足的營養(yǎng)源。
這二者的模式也是一定范圍內(nèi)有效,不能做到推而廣之。
開源軟件生存模式的探索之路還很廣,還很遠,需要有志之士共同努力。
上次看centric crm,是一年多前的事了,這一年中,忙忙碌碌的,都不知道做了些什么,但還是一直關(guān)注crm的相關(guān)信息。
年初,有個朋友需要一套CRM軟件,我就給他推薦centric crm,但他不懂技術(shù),希望我?guī)退愀悖@就應(yīng)了下來,又一次開始認真的看centric crm。
[溫故而知新]
看以前貼的關(guān)于centric crm的blog,心有慚愧,希望產(chǎn)生誤導(dǎo)的影響不會很大。
今天作一些更正,算是補償。
1、獲取centric crm源碼,得先注冊,注冊地址:http://www.centriccrm.com/Register.do
? 先輸入你的郵箱地址(登錄用這個);
? 個人名稱可隨便填寫;
? 注冊成功后,密碼會發(fā)送到你郵箱中,
2、官方用SubVersion管理centic crm的源碼,可以當(dāng)一個subverion的客戶端,指定到要下載版本的鏈接,
輸入注冊的郵箱和密碼,就可以獲取源碼。
現(xiàn)在有4.0和4.1兩個版本,subverion鏈接分別如下,
4.1源碼:https://svn.centricsuite.com/webapp/branches/branch-41
4.0源碼:https://svn.centricsuite.com/webapp/tags/rel-200611151353-402
我使用eclipse,裝了個SVN插件,配好后,直接check out成eclipse的項目。
SVN eclipse plugin是subclipse,插件獲取網(wǎng)站:http://subclipse.tigris.org/update_1.2.x
3、源碼獲取下來目錄如下圖

[源碼check out到eclipse后,把整個項目編碼方式改為UTF-8,因源文件注釋中有些時間戳是中文簡體字,不設(shè)成UTF-8,就顯示為亂碼,看起來沒什么大礙,但若修改源文件再保存就會彈出編碼格式不正確錯誤信息]
bin:暫沒看這個目錄中的內(nèi)容
doc:基本文件目錄
??? Binary EULA.rtf:版權(quán)申明的文件;
??? CRM Installation and Setup.pdf:安裝配置文件,描述的比較簡單;
??? db-schema.html:庫表設(shè)計說明文件,了解centric CRM表結(jié)構(gòu)這個文件最佳參考資料
lib:項目需要的jar文件目錄
pref:特定情況下需要的配置文件目錄
src:源碼基本目錄
??? src目錄內(nèi)有下面四個主要目錄:
??? java:java源文件目錄
??? web:web展示源文件目錄
??? sql:庫表腳本文件目錄
??? testcases:單元測試文件目錄
??? src目錄內(nèi)有下面四個主要文件:
??? build.xml:項目編譯、發(fā)布的ant配置文件
??? home.properties.example:build.xml的輔助文件樣例,定義一些基本路徑信息,如:服務(wù)發(fā)布目錄
??? master.properties:build.xml的輔助文件,定義系統(tǒng)的一些屬性配置
??? README.txt:比較詳細的安裝配置文件(我就是看這個文件進行安裝配置的,有時間可以把安翻譯成中文)
4、開始安裝配置
??? 1)安裝需求Java JDK,就不用說了,1.4以上都可以,1.4以下行不行,我也沒試,有興趣的朋友可試試,測試結(jié)果能告之當(dāng)是感激了。我裝的是JDK 5.0。
??? 2)應(yīng)用服務(wù)用tomcat 5.0,5.5都可以(不過tomcat5.5得在JDK5.0上才能運行起來),Jboss、Weblogic、WebSphere、Resin也可以運行。我用Tomcat 5.5.3。
??? 3)數(shù)據(jù)庫支持DB、MSSQL、MySQL、Oracle等,具體信息可看README.txt。我用的是MySQL 5.0.21。驅(qū)動jar是MySQL官網(wǎng)下載的 mysql-connector-java-5.0.4-bin.jar。
??? 4)還需要有ant工具,申明是要1.6的,我用eclipse自帶的1.6.5。
??? 5)centric CRM中用到WebServices,可去下載一個,
??? 下載地址:http://apache.downlod.in/ws/axis/1_4/axis-src-1_4.zip。
??? 解開zip包,把webapp下面的axis目錄拷貝到$tomcat/webapps/目錄下。
??? 準(zhǔn)備好上幾步要求的,可以開始配置build.xml運行的兩個屬性文件。
??? 復(fù)制home.properties.example文件為 home.properties,相關(guān)屬性做如下修改:
##?The?following?properties?can?be?set?instead?of?using?environment?variables
##?Declare?the?webapp?server's?directory?to?compile?using?web?app?server?libraries
##?based?on?the?webapp?type?configured?in?build.properties
## 設(shè)置Tomcat安裝路徑
CATALINA_HOME=D:/java/tomcat5.5.3
#GERONIMO_HOME=/path/to/geronimo?or?websphere?ce
#JBOSS_HOME=/path/to/jboss
#WEBLOGIC_HOME=/path/to/weblogic
#WEBSPHERE_HOME=/path/to/websphere
##?CENTRIC_HOME?can?be?used?to?compile?directly?to?the?webapp's?deployment
##?directory?(for?development),?or?to?any?directory?for?later?generating?a?.war
## 設(shè)置centric CRM 發(fā)布到tomcat中的路徑
CENTRIC_HOME=D:/java/tomcat5.5.3/webapps/centric
#CENTRIC_HOME=/path/to/weblogic/domain/autodeploy/directory
##?At?times,?scripts?will?need?to?install?or?upgrade?fileLibrary?documents?when
##?deploying?from?source
## 設(shè)置項目中配置文件存放目錄
CENTRIC_FILELIBRARY=D:/Project.java/Centric?CRM?4.1/fileLibrary
##?To?skip?web?based?GUI?the?fileLibrary?must?be?in?the?WEB-INF?folder,?useful
##?for?development
## 設(shè)置配置文件發(fā)布目錄
CENTRIC_FILELIBRARY=D:/java/tomcat5.5.3/webapps/centric/WEB-INF/fileLibrary
##?If?using?Axis?Web?Services,?then?declare?the?webapp?home?so?that?the
##?Centric?CRM?descriptors?can?be?installed?with?"ant?ws"
## 設(shè)置axis在tomcat中的發(fā)布目錄
AXIS_HOME=D:/java/tomcat5.5.3/webapps/axis
? ??
??? master.properties 相關(guān)屬性做如下修改:
##
## NOTE: Do not edit "master.properties" -- edit a copy of it
## These settings are used by ant for the build and installation process
##
## PART 1: Are you reading the instructions? (required)
## The following is a control, uncomment the following line after modifying
## these properties... we just want to make sure you're paying attention and
## the build process doesn't do something it shouldn't!
## 確認修改過此配置文件標(biāo)識
PROPERTIES=configured
## PART 2: Deployment settings (required for compiling)
## Default language setting: even though any locale can be specified, the
## following have Centric CRM translations and supporting database data
## args="de_DE,en_US,es_VE,fr_FR,it_IT,ja_JP,nl_NL,pt_BR,ro_RO,ru_RU,sl_SI"/>
SYSTEM.LANGUAGE=en_US
## Web server debug level:
## Extended debug information can be displayed in the web server's log file
## Comment out for no debugging, especially production server
DEBUGLEVEL=2
#DEBUG=true
#DEBUGLEVEL=lines,vars,source
## Specify the web server to build/deploy against (required):
## Use catalina for Tomcat
## Use geronimo for WAS-CE or Apache Geronimo
## All others untested but planned for
## 指定Web Server 應(yīng)用服務(wù)類型
WEBSERVER.TYPE=catalina
#WEBSERVER.TYPE=geronimo
#WEBSERVER.TYPE=jboss
#WEBSERVER.TYPE=weblogic
#WEBSERVER.TYPE=websphere
## A self-signed SSL Certificate will be generated with the following parameters,
## which can then be added to Tomcat's SSL configuration and/or
## signed by an authority
## Common name should be a domain name
## Ex. *.yourcompany.com or www.yourcompany.com
KEYSTORE.COMMONNAME=127.0.0.1
KEYSTORE.ORGANIZATION=Company
KEYSTORE.ORGANIZATIONALUNIT=Unit
KEYSTORE.CITY=City
KEYSTORE.STATE=State
KEYSTORE.COUNTRY=US
KEYSTORE.VALIDITY=1000
## Force users to use SSL in Centric CRM
## The web server must be configured for SSL if this option is set to true as
## Centric CRM will redirect non-secure URLs to the secure URL
FORCESSL=false
## PART 3: Database installation settings (required for database installation)
## Uncomment and set the connection information for your specific database
## NOTE: The gatekeeper URL includes your database name, the site URL does not;
## The ant script will insert the database name after the specified url
## DB2
## CREATE DATABASE centric USING CODESET UTF-8 TERRITORY US pagesize 32 k
#GATEKEEPER.DBTYPE=db2
#GATEKEEPER.DRIVER=com.ibm.db2.jcc.DB2Driver
#GATEKEEPER.URL=jdbc:db2://127.0.0.1:50000/centric
#GATEKEEPER.USER=db2admin
#GATEKEEPER.PASSWORD=
#SITE.DBTYPE=db2
#SITE.DRIVER=com.ibm.db2.jcc.DB2Driver
#SITE.URL=jdbc:db2://127.0.0.1:50000/
#SITE.USER=db2admin
#SITE.PASSWORD=
## POSTGRESQL
## createdb -E UNICODE centric_crm
#GATEKEEPER.DBTYPE=postgresql
#GATEKEEPER.DRIVER=org.postgresql.Driver
#GATEKEEPER.URL=jdbc:postgresql://127.0.0.1:5432/centric_crm
#GATEKEEPER.USER=postgres
#GATEKEEPER.PASSWORD=
#SITE.DBTYPE=postgresql
#SITE.DRIVER=org.postgresql.Driver
#SITE.URL=jdbc:postgresql://127.0.0.1:5432/
#SITE.USER=postgres
#SITE.PASSWORD=
## MySQL
## CREATE DATABASE centric_crm CHARACTER SET utf8 COLLATE utf8_general_ci
## 指定數(shù)據(jù)庫類型及連接配置
GATEKEEPER.DBTYPE=mysql
GATEKEEPER.DRIVER=com.mysql.jdbc.Driver
GATEKEEPER.URL=jdbc:mysql://127.0.0.1:3306/my_centric_crm
GATEKEEPER.USER=my_centric_crm
GATEKEEPER.PASSWORD=crm
SITE.DBTYPE=mysql
SITE.DRIVER=com.mysql.jdbc.Driver
SITE.URL=jdbc:mysql://127.0.0.1:3306/
SITE.USER=my_centric_crm
SITE.PASSWORD=crm
## MS SQL SERVER
#GATEKEEPER.DBTYPE=mssql
#GATEKEEPER.DRIVER=net.sourceforge.jtds.jdbc.Driver
#GATEKEEPER.URL=jdbc:jtds:sqlserver://127.0.0.1:1433/centric_crm
#GATEKEEPER.USER=centric_crm
#GATEKEEPER.PASSWORD=
#SITE.DBTYPE=mssql
#SITE.DRIVER=net.sourceforge.jtds.jdbc.Driver
#SITE.URL=jdbc:jtds:sqlserver://127.0.0.1:1433/
#SITE.USER=centric_crm
#SITE.PASSWORD=
## CodeGear's InterBase (formally owned by Borland) www.codegear.com
## Do NOT put the database in the centric file library, or at least the root,
## as the build.xml copies its prefs into there using the same name as your database file!
## "e:/centriccrm_db" is only an example
#GATEKEEPER.DBTYPE=interbase
#GATEKEEPER.DRIVER=interbase.interclient.Driver
#GATEKEEPER.URL=jdbc:interbase://127.0.0.1:3050/e:/centriccrm_db/centric_crm.ib
#GATEKEEPER.USER=sysdba
#GATEKEEPER.PASSWORD=masterkey
#SITE.DBTYPE=interbase
#SITE.DRIVER=interbase.interclient.Driver
#SITE.URL=jdbc:interbase://127.0.0.1:3050/e:/centriccrm_db/
#SITE.USER=sysdba
#SITE.PASSWORD=masterkey
## FIREBIRD SQL
#GATEKEEPER.DBTYPE=firebird
#GATEKEEPER.DRIVER=org.firebirdsql.jdbc.FBDriver
#GATEKEEPER.URL=jdbc:firebirdsql:127.0.0.1/3050:${CENTRIC_FILELIBRARY}/centric_crm.fdb
#GATEKEEPER.USER=sysdba
#GATEKEEPER.PASSWORD=masterkey
#SITE.DBTYPE=firebird
#SITE.DRIVER=org.firebirdsql.jdbc.FBDriver
#SITE.URL=jdbc:firebirdsql:127.0.0.1/3050:${CENTRIC_FILELIBRARY}/
#SITE.USER=sysdba
#SITE.PASSWORD=masterkey
## DAFFODIL DB EMBEDDED
#GATEKEEPER.DBTYPE=daffodildb
#GATEKEEPER.DRIVER=in.co.daffodil.db.jdbc.DaffodilDBDriver
## YOU MUST EDIT THE path in the following line to where you want the database
## created.
## The user and password must be set to daffodil
#GATEKEEPER.URL=jdbc:daffodilDB_embedded:centric_crm;create=true;path=/home/fileLibrary/centric_crm/daffodildb
#GATEKEEPER.USER=daffodil
#GATEKEEPER.PASSWORD=daffodil
#SITE.DBTYPE=daffodildb
#SITE.DRIVER=in.co.daffodil.db.jdbc.DaffodilDBDriver
#SITE.URL=jdbc:daffodilDB_embedded:
## YOU MUST EDIT THE path in the following line to where you want the database
## created.
## Ex. Use the same path as Centric CRM's deployed file library, then the name of
## the database, then end in daffodildb
## The user and password must be set to daffodil
#SITE.APPEND=;create=true;path=/home/fileLibrary/centric_crm/daffodildb
#SITE.USER=daffodil
#SITE.PASSWORD=daffodil
## ORACLE
## During installdb, use XE (or whatever you add under gatekeeper) for the
## database name since the install has not been adjusted for Oracle yet
#GATEKEEPER.DBTYPE=oracle
#GATEKEEPER.DRIVER=oracle.jdbc.driver.OracleDriver
#GATEKEEPER.URL=jdbc:oracle:thin:@//127.0.0.1:1521/XE
#GATEKEEPER.USER=
#GATEKEEPER.PASSWORD=
#SITE.DBTYPE=oracle
#SITE.DRIVER=oracle.jdbc.driver.OracleDriver
#SITE.URL=jdbc:oracle:thin:@//127.0.0.1:1521/
#SITE.USER=
#SITE.PASSWORD=
## Derby
#GATEKEEPER.DBTYPE=derby
#GATEKEEPER.DRIVER=org.apache.derby.jdbc.EmbeddedDriver
## YOU MUST EDIT THE path in the following line to where you want the database
## created.
#GATEKEEPER.URL=jdbc:derby:/home/fileLibrary/centric_crm/derbydb;create=true;upgrade=true
#GATEKEEPER.USER=centric_crm
#GATEKEEPER.PASSWORD=
#SITE.DBTYPE=derby
#SITE.DRIVER=org.apache.derby.jdbc.EmbeddedDriver
## YOU MUST EDIT THE path in the following line to where you want the database
## created.
#SITE.URL=jdbc:derby:/home/fileLibrary/centric_crm/
#SITE.APPEND=;create=true;upgrade=true
#SITE.USER=centric_crm
#SITE.PASSWORD=
## PART 4: Advanced configuration (optional)
## Web-based configuration is recommended and is the default setting
##
## If you uncomment the following CONTROL line then you must configure the
## remaining parameters yourself. You will also have to create a new Centric
## CRM user and password before using Centric CRM.
##
## If you DO NOT uncomment the CONTROL line, then the first time you use
## Centric CRM, you will be presented with a configuration wizard which will
## assist you in defining these parameters and creating a new Centric CRM
## user and password.
##
#CONTROL=BYPASS_WEB-BASED_APPLICATION_SETUP
## The following are methods for working with multiple development databases
## The APPCODE must be the same for the following Gatekeeper prefs and Site prefs
GATEKEEPER.APPCODE=centric
SITE.APPCODE=centric
## Define the web address used in communications when using a single development
## database
#WEBSERVER.URL=127.0.0.1:8080/centric
## Define the web address used in communications when using multiple development
## databases
#WEBSERVER.ASPMODE=true
#WEBSERVER.PORT=8080
#WEBSERVER.CONTEXT=/centric
## The server's default timezone for new users (using standard Java names)
SYSTEM.TIMEZONE=America/New_York
## Default currency for all users
SYSTEM.CURRENCY=USD
## Default country for all users
SYSTEM.COUNTRY=UNITED STATES
## External Servers used by the system
MAILSERVER=127.0.0.1
FAXSERVER=127.0.0.1
FAXENABLED=false
PROXYSERVER=false
PROXYSERVER.HOST=
PROXYSERVER.PORT=
## Apache Axis Web Services
## 指定WebService 服務(wù)路徑
AXIS.WEBAPP=/axis
AXIS.HOST=127.0.0.1
AXIS.PORT=8080
## Asterisk integration
ASTERISK.OUTBOUND.ENABLED=false
ASTERISK.INBOUND.ENABLED=false
ASTERISK.URL=
ASTERISK.USERNAME=
ASTERISK.PASSWORD=
ASTERISK.CONTEXT=from-internal
## XMPP/Jabber integration
XMPP.ENABLED=false
XMPP.CONNECTION.SSL=false
XMPP.CONNECTION.URL=
XMPP.CONNECTION.PORT=5222
XMPP.MANAGER.USERNAME=
XMPP.MANAGER.PASSWORD=
## LDAP integration
LDAP.ENABLED=false
# Validate username OR email against LDAP: username|email
LDAP.CENTRIC_CRM.FIELD=username
LDAP.FACTORY=com.sun.jndi.ldap.LdapCtxFactory
LDAP.SERVER=ldap://127.0.0.1:389
# Search by attribute, otherwise composite DN: true|false
LDAP.SEARCH.BY_ATTRIBUTE=true
LDAP.SEARCH.USERNAME=cn=admin,ou=IT,o=COMPANY
LDAP.SEARCH.PASSWORD=
LDAP.SEARCH.CONTAINER=o=COMPANY
LDAP.SEARCH.ORGPERSON=inetOrgPerson
LDAP.SEARCH.SUBTREE=true
LDAP.SEARCH.ATTRIBUTE=mail
#LDAP.SEARCH.BY_ATTRIBUTE=false
#LDAP.SEARCH.PREFIX=cn=
#LDAP.SEARCH.POSTFIX=,o=COMPANY
## Define the system's email address
EMAILADDRESS=Centric CRM <noreply@127.0.0.1>
## Timed events, definitely turn on for a production server
CRON.ENABLED=true
## Connection Pool Settings
CONNECTION_POOL.DEBUG=false
CONNECTION_POOL.TEST_CONNECTIONS=false
CONNECTION_POOL.ALLOW_SHRINKING=true
CONNECTION_POOL.MAX_CONNECTIONS=10
CONNECTION_POOL.MAX_IDLE_TIME.SECONDS=60
CONNECTION_POOL.MAX_DEAD_TIME.SECONDS=300
## Layout Settings
## Template replaces the following files which MUST exist:
## CSS:
## template1.css
## template1-8pt.css
## template1-10pt.css
## JSP:
## template1nav.jsp
## template1style.jsp
## template1styleNoSession.jsp
## template1styleContainer.jsp
LAYOUT.TEMPLATE=template1
LAYOUT.JSP.WELCOME=welcome.jsp
LAYOUT.JSP.LOGIN=login.jsp
#LAYOUT.JSP.LOGIN.LOGO=<img src="images/centric/logo-centric.gif" width="295" height="66" alt="" border="0" />
#LAYOUT.JSP.LOGIN.TEXT=Centric CRM
## Max Imports that can run concurrently
IMPORT_QUEUE_MAX=1
## Opportunity behavior
# OPPORTUNITY.DEFAULT_TERM=52
# OPPORTUNITY.DEFAULT_UNITS=W
# OPPORTUNITY.MULTIPLIER=52
# OPPORTUNITY.CLOSE_PROBABILITY=25,50,75
完成上述兩文件的修改后,打開eclipse的ant視圖,
??? 運行:
ant deploy 完成項目的編譯發(fā)布工作。
下一步是創(chuàng)建庫表,可運行 ant installdb 創(chuàng)建庫表。
??? 運行 ant installdb前,先在啟動MySQL,創(chuàng)建一個表空間及用戶,
???
CREATE DATABASE my_centric_crm CHARACTER SET utf8 COLLATE utf8_general_ci;
??? GRANT ALL PRIVILEGES ON my_centric_crm.* TO my_centric_crm@"%" IDENTIFIED BY "crm";??? 創(chuàng)建庫表時,若出現(xiàn)類似"
Specified key was too long; max key length is 765bytes"的錯誤,是因為標(biāo)識"UNIQUE NOT NULL"的字段長度>255(255=765/3)了。MySQL數(shù)據(jù)庫的unique類字段長度限制比較短,視不同版本,有的限制為765個字節(jié),有的限制為1000個字節(jié),UTF是占用3個字節(jié)位的,所以在這個限制上還要除以3。centric CRM的mysql庫腳本中,unique類字段的長度是設(shè)為300長字符的,出現(xiàn)上述問題一個可行的妥協(xié)辦法是修改腳本unique類字段的長度。
建完表后,可以啟動tomcat服務(wù),運行 ant ws 激活WebService,應(yīng)用服務(wù)配置安裝完成!
通過 http://localhost:8080/centric,第一次進入centric crm系統(tǒng)。
??? 第一次進入系統(tǒng)時,是一個登錄界面,用戶是dhvadmin,密碼是admin,登錄進入,是一步步的系統(tǒng)參數(shù)設(shè)置操作,操頁面提示,就可完成設(shè)置。最后是創(chuàng)建應(yīng)用系統(tǒng)公司名稱和管理員用戶密碼的界面,再次使用系統(tǒng)時,就以管理員名稱和密碼登錄,對系統(tǒng)進行設(shè)置及添加管理其他用戶。(至此,告一段落。)
有一段時間沒寫blog了,個中的理由就是這段時間心情浮躁,沉不下來。
畢業(yè)后參加工作已整整6個年頭了。從一個只知道找父母要錢花,不知道社會是什么樣的“弱冠”到現(xiàn)在剛開始意識到要靠自己養(yǎng)家糊口,照顧父母的準(zhǔn)“而立”,要考慮的事情比以前復(fù)雜的多了,這段時間工作也是動蕩的,沒有一個穩(wěn)定的基礎(chǔ)考慮自己要考慮的問題,愈是浮萍一樣的沒有根。
今,得空閑一會,瀏覽blog,看到一個blog,它的公告圖片上是一個漂亮的小女孩,它的ICO是卡通的唐老鴨,抑郁的心情忽的開闊了。想那小女孩肯定是作者的女兒,唐老鴨肯定是作者女兒的所愛。如果年青的媽媽,她的blog上放這些,是很容易理解的,而作者是一個大老爺們,他的blog上放這些與“大老爺們”身份有巨大的反差,但正是這種反差,讓我看到一位父親對女兒的喜愛。
粗讀王永強的
解析管理信息化的“十大陷阱”?,最有同感的是“買方?jīng)Q定性陷阱”。
???中國信息化的現(xiàn)狀說:鄧小平提出建設(shè)有中國特色的社會主義,或許是因為中國的政治宣傳力度比較強,企業(yè)的發(fā)展管理策略也帶上“特色”,信息化就自然而然的要有自己的特色,如果拷貝另一企業(yè)的信息化經(jīng)驗成果,就是沒有特色--你用你的槍,我用我的炮。
???企業(yè)信息化軟件實施說:信息化是一把手工程,如果一把手支持稍有松懈,所有的工作就有可能失敗,原因什么呢??縣官不如現(xiàn)管,現(xiàn)管的人不支持,這工作就開展不了。而上一個新系統(tǒng),對于現(xiàn)管的人來說,就如同是一次革命,牽扯到的利益太多,稍有一點不均衡,不滿意的人出來了,你的工作就得暫停一下。所以,新系統(tǒng)必須考慮到企業(yè)的實際情況,現(xiàn)有的模式,你再先進、再科學(xué),也得適合我的腳,我才穿。
???信息化系統(tǒng)提供商說:我們是公司行為,先生存,再發(fā)展;客戶要什么東西,我們就做什么東西;先做項目,再做產(chǎn)品。????
???圈內(nèi)流傳消息說:中國軟件不如印度,更比不上歐美。歐美做內(nèi)核,簡單重復(fù)的勞力就支援第三世界發(fā)展,換句話說是中國幫外國做產(chǎn)品,但沒有自己的產(chǎn)品,而且作為勞動關(guān)系雇員還不如同桌。
???在這條“生態(tài)鏈”中,誰是誰非?作為一個局外人看其中的問題很清楚,但身處某一個鏈節(jié)中時,沒有誰能是我這是問題。如果企業(yè)說,我要一個產(chǎn)品,不要項目,這樣,中國肯定會出現(xiàn)一些響當(dāng)當(dāng)?shù)漠a(chǎn)品;如果系統(tǒng)提供商說,我有非常好的產(chǎn)品,可以做實施,不做項目,產(chǎn)品有吸引力應(yīng)能取到市場的一杯羹。
在web.xml文件中,可以發(fā)現(xiàn)
<servlet-mapping>
<servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name>
<url-pattern>/JSON-RPC</url-pattern>
</servlet-mapping>
所有的請求提交到這個Servlet后分發(fā)處理并做出響應(yīng)。
JSONRPCServlet.java中實現(xiàn)了init()和service(),
init() 中只是取了些配置參數(shù)作了相關(guān)設(shè)置;
service() 中實現(xiàn)了請求處理;
1.從session中創(chuàng)建/獲取JSONRPCBridge對象;
2.把提交的數(shù)據(jù)裝入一個JSONObject對象中;
3.用JSONRPCBridge對象的call方法處理JSONObject對象并返回JSONRPCResult對象。
這個處理較ajax-buffalo 中的處理單調(diào)了不少。
再來看看JSONRPCBridge.java是如何構(gòu)建的。
1.內(nèi)置6個內(nèi)部類:CallbackData、ClassData、LocalArgResovleData、MethodCandidate、MethodKey、ObjectInstance;
2.還有一些輔助處理的方法,比較多(提取為一個或者多個輔助類比較好);
3.核心的就是call()方法了。運用的是java反射機制,進行方法調(diào)用。這個方法寫的也比較長,沒仔細看,只看到有它兩個可取的地方,一個就返回對象的序列化,另一個是對不同異常,給出相應(yīng)返回的處理比較細致,這樣有利于找到異常在什么地方,估計是原因引起的。
在客戶端的處理,是把各方法、對象串連在一起,封裝后,便于應(yīng)用。
它把請求的數(shù)據(jù)對象化再以串的形式提交,后端再做一個反向操作,方便了數(shù)據(jù)處理。這種方式比ajax-buffalo 中把數(shù)據(jù)組織成一個XML結(jié)構(gòu)的數(shù)據(jù)包提交、處理效率高。
--沉浸在技術(shù)之中,如同喝高度白酒,比較麻醉人。
工作中,遇到比較復(fù)雜的SQL語句,也挺費時間的。今天有時間就研究一下,找到如下幾個資源鏈(比較懶,也懶得COPY,避嫌抄襲)
http://www.51one.net/study/Oracle/list1.htm
學(xué)習(xí)兩個關(guān)鍵字的用法,intersect(取交集),minus(取差集)
(select?a.name from a) intersect (select b.name from b)
(select?a.name from a)?minus (select b.name from b)
{重學(xué)高等數(shù)學(xué),全還給老師了,現(xiàn)在自己去要回來,上Google:)
并集:A和B相加的全部;交集:A和B相交疊的部分;差集:并集-交集;補集:如果集合B是集合I的子集,我們把I看作全集,那么I與B的差集I-B,叫做B在I中的補集}
SQL語句優(yōu)化技術(shù)分析
http://www.pconline.com.cn/pcjob/other/data/oracle/0501/536463.html
避免用
?避免使用 |
?替代方法 |
field?in(a,b,c) |
?field=a or field = b or field=c |
field?is null /is not null |
?field > ' ' 、field > 0 |
?select * from a???
?union
?select * from b
先取兩表,再合并
|
?select * from a
?union all
?select * from b
簡單的將兩個結(jié)果合并后就返回
|
? |
? |
1kg?
1kg代表什么?
一公斤么?對!
一公斤什么?
#¥%@&×。
這里(http://www.1kg.cn)有一個答案,一公斤的書籍文具。
這是一項民間發(fā)起的公益旅游活動,它通過傳遞-交流-分享三個簡單的步驟帶給旅游者豐富的旅游體驗,受惠的是每一位參與者的心,更多的是千萬雙渴望知識的眼睛。
早上剛發(fā)現(xiàn)的國產(chǎn)Ajax實現(xiàn),現(xiàn)在版本是1.2,其網(wǎng)址是:http://www.amowa.net/buffalo。
當(dāng)下buffalo-1.2.zip 4,770KB ,
解開,發(fā)現(xiàn)項目配置文件是eclipse(切喜!eclipse,my love。),
導(dǎo)入eclipse中,紅色的報錯:三個類庫變量沒找到,是web服務(wù)要的三個包servlet-api.jar、jsp-api.jar、jasper-runtime.jar,在tomcat對應(yīng)目錄可以找到。其實還有第四個類庫變量--junit.jar,只不過eclipse中自帶的有,如果不用eclipse,找到這四個jar包引入。
項目是以java文件為主的,有一個war目錄是演示用的web應(yīng)用代碼目錄,web應(yīng)用項目得自己建,這個感覺不爽,雖然它有一個build.xml文件可以打web應(yīng)用包,但想調(diào)試跟蹤,還是缺一步(我站在研究的角度,如果應(yīng)用的話,加入那幾個包,看看使用方法就可以了)。
首先研究了一下ApplicationServlet.java
1.這個Servlet初始化時,創(chuàng)建/獲取了一個服務(wù)倉庫(ServiceRepository);
2.所有的請求、響應(yīng)都封裝成一個自定義的請求上下文本(RequestContext);
3.根據(jù)請求的路徑調(diào)用不同的RequestWorker;(這一點好,又不好)
4.剩下的就是worker開始工作了,初始化、校驗、處理。
重要的也是“處理”,現(xiàn)在看看worker的結(jié)構(gòu)。
接口類:interface RequestWorker 定義三個基本方法。
抽象類:abstract class AbstractRequestWorker 實現(xiàn)初始化和校驗這兩個基本方法,另實現(xiàn)一些其它方法。
具體實現(xiàn)類:ViewWorker、BuffaloWorker、UploadWorker 當(dāng)然,你也可以寫自己的worker
當(dāng)?shù)捻椖吭创a中,ViewWorker、UploadWorker的處理方法中都是拋出UnsupportedOperationException,想處理的話,你也可以加。現(xiàn)在重要的講講BuffaloWorker的處理。
1.通過封裝的請求上下文件(RequestContext),獲取服務(wù)倉庫(ServiceRepository);
2.通過請求的相對路徑(此方法感覺欠妥),獲取相應(yīng)的服務(wù);
3.有了“業(yè)務(wù)處理方法”、“業(yè)務(wù)請求”后,就是調(diào)用“粗麻布調(diào)用(BurlapInvoker)”處理余下的工作了。
前面寫的是一些流程,沒什么復(fù)雜的東西,這最后的 invoker,是比較核心,也很經(jīng)典的處理。在這里,我也不多寫了,再寫下去,大家也一路的看下去,沒什么感覺。相信看完了 invoker的實現(xiàn),一定能學(xué)到不少東西。
下次看看前端是怎么實現(xiàn)的,今天到此為止,休息一會!
一、下載
下載網(wǎng)站:http://freshmeat.net/projects/json-rpc-java/?branch_id=49217&release_id=214415
下載地址:http://freshmeat.net/redir/json-rpc-java/49217/url_zip/json-rpc-java-1.0rc2.zip (版本1.0rc2)
解壓后有三個文件夾、三個文件:
src jsonrpc的核心代碼
test 演示用的java代碼
webapps 演示用的web代碼
build.xml ant文件
jsonrpc.jar 編譯好的jsonrpc核心包
jsonrpc.war 編譯好的演示web包
二、安裝運行
1、如果不想用javaIDE編譯發(fā)布,配置好ant 和tomcat,用ant運行解壓后的build.xml,把jsonrpc的demo發(fā)布到tomcat中,啟動tomcat,打開http://127.0.0.1:8080/jsonrpc/ 就可以看到演示了。
不過,build.xml文件要做一點適應(yīng)的改動,
<property name="tomcat" location="../jakarta-tomcat-5.0.19"/>中的location值要設(shè)置為tomcat的安裝目錄
如
<property name="tomcat" location="D:\java\Tomcat5.0"/>
2、用javaIDE的話,我是用eclipse 3.01+myeclipse 3.84
新建一個空的web項目,
web root folder=webapps,
context root url =jsonrpc,OK。
(這兩個值可以用默認設(shè)置,但用默認設(shè)置后面改動比較多,所以就迎合它自己的口味)
把解開的src和test目錄放到新建項目的根目錄中,webapps/jsonrpc目錄下的內(nèi)容拷貝到項目webapps目錄中,eclipse自動編譯,會報一些錯誤,是因為test/src中有一部分java源碼未作為java文件編譯,鼠標(biāo)右鍵點擊項目圖標(biāo)->屬性->Java編譯路徑->資源->添加test/src目錄到資源中,確定OK。
jsp文件沒有因java文件的重新編譯而更新所以還會顯示一些紅色的錯誤,就得手工讓它再編譯一次,鼠標(biāo)右鍵點擊項目中webapps目錄->myeclipse->運行校驗,OK,剩下的是一些警告信息,如果你不想看到它們,可以去程序中一個個的去掉。
在eclipse中發(fā)布jsonrpc、啟動tomcat服務(wù),大功告成。
簡單的看了一下它的設(shè)計實現(xiàn)過,明天接著寫。
近日忽有興致想讀錢鐘書的《圍城》,一時沒時間去買書,就在網(wǎng)上搜了一下,果有電子版的。
先看前言,說得多的是第幾次印刷,又改了幾個錯漏--對于這一點,象他們那一輩人給我們的印象都是這樣,事不分巨細,都特別認真,再一次感受到他們的這種精神,也增加我接著往下看的興趣。當(dāng)讀到第一章時,就發(fā)現(xiàn)有幾個字明顯是打詞組時帶出來的,很簡單就能處理的事情,就留它一個結(jié)疤在這兒,讀得很不順暢,有幾處的用詞,意思上差不多可以說過去,但感覺很繞口,為增加讀下去的興致,就自己給自己找借口:錢老那時的白話文跟現(xiàn)在的有差別。不過,讀到第三節(jié)時,實在沒有興致了。累呀!
前兩天網(wǎng)上有關(guān)于張海迪的提案事件,事情也是沸沸揚揚的,實情是什么樣子的我不知道,但大部分人應(yīng)是認同張海迪的為人。事件中就提到新聞報到提用人名,要經(jīng)當(dāng)事人同意這一點,我想,如果是一個認真的人,這件事情是應(yīng)該去做的,人云亦云的轉(zhuǎn)抄不去實究更是不該做的事情。
現(xiàn)在的人難道都這么浮躁么!
剛看了《Jboss創(chuàng)始人Marc Fleury:我要為開放源代碼辯護》的文章,第一反應(yīng)就是要為Marc Fleury鼓掌!
我不是計算機專業(yè)科班出身,對計算機知識的理解都是基于興趣愛好--我喜歡,我就做。記得上大學(xué)前填報志愿時,好多同學(xué)都是沒有考慮第一志愿就填的計算機專業(yè)(因為他們都喜歡,甚至癡狂),我也非常喜歡計算機,也想跟他們一樣,但瞬間的冷靜一想,基于計算機會是每一個人的基本工具,懂計算機是必然的事,就報了其它專業(yè)。雖然不是學(xué)計算機,但課余時間幾乎都是在學(xué)計算機知識上面,還經(jīng)常去旁聽計算機專業(yè)的課。我學(xué)習(xí)編程,都是看著寫好的例子一句句的琢磨,最后就知道怎么用那些方法,關(guān)鍵字,雖然是很原始的學(xué)習(xí)方法,但還是比較有效的--這也許就是我支持開放源碼的“第一”原因吧。
爾后,也接觸到很多軟件,對那些軟件,或多或少有自己的想法,希望能去完善它們,但大部分是編譯過的,想完善它們只能是隔靴撓癢的事。有一部分軟件也提供二次開發(fā)的接口,也有相應(yīng)的開發(fā)接口文檔,但發(fā)現(xiàn)問題是在它原有程序里的,就沒辦法。為此,有一段時間特別熱中于反編譯,覺得那是僅次于做黑客的事情,隨后,無奈的知道這是觸犯一些商人權(quán)利的事(現(xiàn)階段這些商人創(chuàng)造社會財富,也給制定法律的政府交稅,個人還是無法超越在法律之外的)。對此,只有噴墻。
后來,發(fā)現(xiàn)開源軟件不僅免費使用,更重要的是它的源碼是對所有人開放的,這無疑點亮了我學(xué)習(xí)開源軟件中的編程精華、設(shè)計思想的光明之路,也促使我更偏愛使用開源軟件。
在google上查到兩款java的開源ETL工具
Kettle(
http://www.kettle.be/)和
Octopus(
http://www.enhydra.org/tech/octopus/index.html)
先看Kettle
下載kettle的源碼(也可以下載BIN的),在eclipse中啟動,出現(xiàn)配置Repository的小窗口,在這小窗口中配置的Repository,輸入口令后老報口令錯誤(可能是沒配置好),就直接點No Repository進入主窗口,這就開始ETL工作了。
待繼。。。
媒婆=政府
女方=企業(yè)
男方=IT公司
現(xiàn)在,男方擺出什么家當(dāng)來,可以讓媒婆一上門,女方就高興的嫁過來呢?
第一眼,感覺有很大的空間,可show的東西很多,隨便挑一個都成,但要確定一個具體的東西時,張開口不知說哪一個了。
企業(yè)信息化?這個題目還是太大。
ERP?是大火過后的冷靜,廣大中小企業(yè)一直也是作避上觀。
SCM?政府對企業(yè)這方面的東西好象沒說話的實質(zhì)內(nèi)容。
CRM?政府做的工作是招商引資,投資環(huán)境,切實的工作還是得企業(yè)自己搬磚砌墻,牽強的說有點表親關(guān)系。
換個思路,現(xiàn)在的女方最看中的是什么呢?看她關(guān)注什么。
企業(yè)價值最大化,是任何一個企業(yè)追求的目標(biāo),怎么樣才能實現(xiàn)企業(yè)價值最大化呢?
提高生產(chǎn)效率、提高產(chǎn)品質(zhì)量、提高服務(wù)質(zhì)量、提高管理執(zhí)行力、提高企業(yè)競爭力;
擴展市場、提高市場占有率、維系老客戶,發(fā)展新客戶、提升企業(yè)品牌價值;
控制成本、減少不必要的支出;
怎么就感覺這些都是站在書堆里說的話呢!
企業(yè)公共關(guān)系?
寫程序也有幾個年頭了,對程序中變量、方法、目錄之類的東西命名,總要花點時間--讀書的時候不認真,對不起在上面講課的老師。對一些命名規(guī)則也了解一些,也努力那去做,不過,表意的關(guān)鍵字就沒有什么規(guī)則好參照,只有自己找資料根據(jù)業(yè)務(wù)找最接近的單詞來表述,每每這個時間,就想要努力學(xué)習(xí)英語。
今天看了幾個政府的網(wǎng)站,點到其中的鏈接,看了半天,愣是沒看明白那鏈接中路徑表達的是什么意思,英語太差,慚愧!后來看到網(wǎng)站中欄目分類的名稱,一個個的對一下,原來是每個漢字的拼音首字母的組合,一個字,累!爾后看到網(wǎng)站上還標(biāo)明“中文簡體版”、“中文繁體版”、“英文版”。點進繁體版看看,繁簡轉(zhuǎn)換得不錯,但鏈接的路徑描述還是那樣,看來是技術(shù)處理的不錯;點進英文版瞧瞧,內(nèi)容跟中文版的完全不一樣,是另做的一套網(wǎng)站內(nèi)容,這時的鏈接路徑描述還可以看出是什么意思來。
今天這事,我想到以前接觸的一些項目,其中的表意命名也是這么處理,甚至數(shù)據(jù)庫的字段名也按這個“規(guī)則”處理,我想他們工作的時候也是煞費了一番苦心呀。以前還看到一個牛人寫的程序,程序中的命名全是漢字,在他的那個編輯器中,還一點問題沒有,而且也能跑起來,但把代碼一移到其他人的編輯器中,就“萬里江山一片紅”--漢字命名的全報錯,后來那GG一拍屁股走人,他的代碼沒人能接過來,只有“咔嚓”,項目頭頭無奈、老板心底流血。
如果在程序中用漢字作變量不出問題的話,估計漢字命名會很風(fēng)靡。但電腦是洋人發(fā)明的,它認識它媽媽的語言很親切,對于漢字,它也經(jīng)常頭痛,怎么辦呢?要用它,就得遷就它--這是我們中國程序員的無奈。
計算機是死的,人是活的,說不定哪天,中國出了一牛人,讓計算機認識漢字跟認識英文一樣暢通無阻,那時中國程序員就有福了!這只是個期望,現(xiàn)在還沒有出現(xiàn)這種情況,我們還沒能改變計算機,只有改變自己--跟兩個人談朋友一樣,總得有一個人改變,讓兩個人相處的更和諧!
經(jīng)過eclipse的好幾個發(fā)布版本,最先用順手的是2.1,之后就一直用它。
記得第一次聽同事介紹eclipse時,說了很多eclipse的優(yōu)勢,但沒體會,自己也是抱著試試的心態(tài)拷了一個備份玩玩。
Eclipse 2.1 整個文件包才20多MB,比當(dāng)時使用的Jbuilder9來說,Jbuilder真是龐然大物。只要把ZIP包解壓就就可以運行,不用復(fù)雜的安裝。做完相關(guān)配置后,看到如期的界面了,接近windows界面的顏色比Jbuilder的那種界面顏色更易接受。做了一些簡單的應(yīng)用,操作功能跟Jbuilder差不多,但系統(tǒng)配套的代碼開發(fā),eclipse依賴于相關(guān)的插件,插件化是一個好的idea,但eclipse這方面的插件還沒有一個能達到Jbuilder的那種高度的效果。問題是eclipse是免費的,也不能太高要求,想要高質(zhì)量的服務(wù),可以花點錢去買個插件MyEclipse裝上,使用起來還不錯。
時間長了后,Jbuilder快從記憶中消去了(這幾天看到Borland要出賣它的IDE部門,甚是為Jbuilder擔(dān)憂,畢競是一套不錯的產(chǎn)品,也留下過美好的回憶),這期間,eclipse也更新了好幾個版本,從2字頭的到3字頭的,體積變化比較顯著,基于eclipse3.01使用比較習(xí)慣了,也接受它變得“豐滿”。但后面幾個版本還是保持在肥胖的狀況,而且使用方面,新版本的取向在編輯功能,程序調(diào)試的性能大不如前,對此情況,我保持止步不前了。寄希望
版本號 |
發(fā)布日期 |
文件大小 |
備注 |
3.11 |
2005-9-29 |
103.41MB |
|
3.1 |
2005-6-27 |
105.47MB |
|
3.01 |
2004-9-16 |
88.50MB |
|
2.1 |
|
|
|
1.0 |
|
19.32MB |
|
注冊機是什么顏色的?黑色的。看過很多注冊機,都是黑色的界面,挺醒目的。
注冊機、破解碼、散布的注冊碼、激活。。。。。
這些都是搜索引擎中熱門的詞語,因為它們能逾越一些商業(yè)軟件的保護殼,讓復(fù)制者不用花什么代價就能使用那些軟件。
我對開源、共享軟件是比較感興趣的,也愿意在這方面做出自己的努力。特別欣賞Jboss Group,看到他們,仿佛是看到軟件業(yè)最終的發(fā)展方向和模式。但在當(dāng)前商業(yè)軟件為主的狀態(tài)下,特別是一些軟件企業(yè)依靠一份份軟件換來的錢活命的情況下,我們不能做那種下石頭的事吧。
我是一個poor programmer,使用很多free工具,也使用黑色的工具,但我的原則是:自己使用,但不散發(fā)。
我很可憐,也可憐別人,留給自己一點尊嚴(yán)。