lbom

          小江西

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            18 隨筆 :: 21 文章 :: 69 評論 :: 0 Trackbacks

          2009年3月5日 #

          昨日年終總結(jié)會,公司總裁給出IT產(chǎn)業(yè)未來發(fā)展的幾個新趨勢,值得我們這些從事軟件工作的人員沉思,現(xiàn)對他的發(fā)言摘錄如下:
          1)管理虛擬化:有形的組織型管理和虛擬的IT流程管理相結(jié)合管理模式;
          2)制造虛擬化:由生產(chǎn)線工人和由程序控制的機器人相結(jié)合的生產(chǎn)模式;
          3)渠道虛擬化:由實體銷售店和虛擬的網(wǎng)上銷售相結(jié)合的渠道管理模式;
          4)服務(wù)虛擬化:實體保養(yǎng)維修和遠(yuǎn)程診斷,軟件更新相結(jié)合的服務(wù)模式;
          5)組織虛擬化:垂直的組織機構(gòu)和橫向的項目型組織機構(gòu)相結(jié)合的企業(yè)組織模式。
          posted @ 2014-01-24 22:28 lbom 閱讀(286) | 評論 (0)編輯 收藏

          今天,花費1個小時,研究了一下在Windows下,使用Telent登錄至UNIX的腳本,現(xiàn)將其貼下,以供下次使用(tt.bat)

           

           

          @echo off
          echo set sh=WScript.CreateObject("WScript.Shell") >telnet_tmp.vbs

          echo WScript.Sleep 3000 >>telnet_tmp.vbs
          rem ----------------UNIX IPAddress
          echo sh.SendKeys "open 10.0.18.100{ENTER}" >>telnet_tmp.vbs

          echo WScript.Sleep 3000 >>telnet_tmp.vbs
          rem ----------------userID
          echo sh.SendKeys "root{ENTER}" >>telnet_tmp.vbs

          echo WScript.Sleep 3000 >>telnet_tmp.vbs
          rem ----------------password
          echo sh.SendKeys "root{ENTER}" >>telnet_tmp.vbs

          echo WScript.Sleep 3000 >>telnet_tmp.vbs

          echo sh.SendKeys "ls {ENTER}">>telnet_tmp.vbs

          start telnet

          cscript //nologo telnet_tmp.vbs

          rem del telnet_tmp.vbs

           

          posted @ 2011-10-10 16:02 lbom 閱讀(4030) | 評論 (1)編輯 收藏

          1)啟動LiveWriter客戶端

          2)添加Blog帳戶:

          image image

          3)設(shè)置日志類型:

          image

          4)連接測試

          posted @ 2010-09-25 18:02 lbom 閱讀(314) | 評論 (0)編輯 收藏

          很久沒有動手寫WebService了,這次,借項目間隙,對系統(tǒng)進(jìn)行一個小改造,將一部分功能使用WS進(jìn)行封裝,為下一步異構(gòu)系統(tǒng)集成打下基礎(chǔ)。

          但在WS化時,由于日久生疏,一個小小的WS化變動,卻花了整整好幾天時間!為此,狠下以來,將其過程進(jìn)行記錄,以便下次參考。

           

          WS整體流程:

          clip_image001

          以下分別介紹:

          1、設(shè)計和實現(xiàn)WebService服務(wù)端功能組件,用于統(tǒng)一處理針對本應(yīng)用系統(tǒng)所需進(jìn)行WebService化的邏輯實現(xiàn)。并將系統(tǒng)邏輯處理中的對象轉(zhuǎn)成序列化后的String對象,以符合WebService交互標(biāo)準(zhǔn)。

          clip_image002

          2、根據(jù)SBPApi.java,生成WSDL等:通過Eclipse右鍵菜單中的WebService-->Create Web Service項。完成后,會在web目錄下建立wsdl目錄和SBPApi.wsdl,在WEB-INF目錄下建立(改寫)server-config.wsdd等文件,并完成對web.xml的修改。其操作流程示如下:

          clip_image003

          3、根據(jù)SBPApi.wsdl,生成WebService客戶端開發(fā)包和部署文件:

          1)為不影響已有項目,可另建java Web項目;

          2)將wsdl目錄復(fù)制至新項目對應(yīng)的web目錄下;

          3)通過eclipse已提供的webService插件(右鍵)功能,生成客戶端開發(fā)包所各文件。此時,所生成的文件與服務(wù)端對象文件結(jié)構(gòu)一至。

          clip_image004

          4)調(diào)整關(guān)聯(lián)引用文件,將其調(diào)整至客戶端開發(fā)包,從而避免與服務(wù)器端的引用路徑重復(fù)而引發(fā)不便,并將服務(wù)器SDK中已有文件刪除。

          clip_image005

          5)建立客戶端的快速使用代理SBPClient.java,對WebService服務(wù)端交互工作的SBPApiSoapBindingStub.java進(jìn)行客戶端封裝,并根據(jù)服務(wù)端中交互對象進(jìn)行反向工程,其示例結(jié)構(gòu)如下:

          clip_image006

          6)將clientApi下的所有文件打包后,加入測試項目進(jìn)行測試。此時,因客戶端所使用的服務(wù)端對象未包含在WebService客戶端開發(fā)包中,因此需要將服務(wù)端對象也一同打包。

          7)測試。

          4、開發(fā)環(huán)境:Eclipse3.3.1.1 + JDK1.5.06 + Apache Axis version: 1.4

          posted @ 2010-04-02 15:45 lbom 閱讀(2169) | 評論 (4)編輯 收藏

          在一次基于多線程的編碼測試中,發(fā)現(xiàn)繼承Runnable接口的線程實現(xiàn)類在運行時并未按預(yù)計啟動多線程,經(jīng)分析和比較后,找出問題所現(xiàn),現(xiàn)將其記錄下來,以供分享。

          Java中,多線程編程中的線程編寫,有兩種方式,即擴展Thread基類或繼承Runnable接口;例如:

          public class T extends Thread {

          public void run() {

          ……

          }

          }

          public class R implements Runnable {

          public void run() {

          ……

          }

          }

          對于擴展Thread的實現(xiàn)類T,可以使用T.start()來啟動此線程;如

          public static void main(String[] args) {

          Thread t = new T();

          t.start();

          }

          但對于繼承Runnable接口的實現(xiàn)類R,因接口中并沒有提供直接啟動線程的start()方法,只有一個線程主邏輯運行的run()方法。此時,如執(zhí)行run(),會因為R.run()只是作為此線程實現(xiàn)類的一個方法,并未在主線程之外,啟動另一個線程,從而導(dǎo)致R.run()阻斷主線程繼續(xù)向下執(zhí)行;并未達(dá)到多線程運行的目的。

          錯誤啟動代碼如下:

          public static void main(String[] args) {

          R r = new R();

          r.run();

          }

          那么,如何使用另外線程來啟動繼承Runnable接口的實現(xiàn)類呢?以下就是它的正確的使用方式:

          public static void main(String[] args) {

          R r = new R();

          Thread t = new Thread(r);

          t.start();

          }

          此時,需注意,在主線程執(zhí)行時,需等待子線程執(zhí)行,否則,當(dāng)主線程結(jié)束后,子線程也將結(jié)束。

          posted @ 2010-03-10 16:48 lbom 閱讀(1583) | 評論 (2)編輯 收藏

          需求:

          系統(tǒng)A與系統(tǒng)B分別部署在不同域的兩臺服務(wù)器中,但它們的身份都統(tǒng)一在身份認(rèn)證服務(wù)器中;身份認(rèn)證信息以Session方式存貯于各自系統(tǒng)中,并輔以cookie進(jìn)行使用。

          當(dāng)用戶在A系統(tǒng)登錄后,訪問B系統(tǒng)時,由于是跨域訪問,導(dǎo)致身份信息不能正確的傳遞到B系統(tǒng)中,從而致使用戶需在B系統(tǒng)中重新登錄。

          clip_image001[6]

          解決方案:

          處理這類跨域訪問時,我們最先使用從B系統(tǒng)向C通過HttpRequest(類AJAX請求)的方式獲取身份信息,此方式好處是同步處理,方便用使用;但其限制諸多,如需設(shè)置信任站點、用戶訪問確認(rèn)等,甚至,在對應(yīng)用服務(wù)器作了一次安全升級后,根本無法訪問了。因此,需另行開辟途徑,于是,在同事建議下,我們使用IFrame內(nèi)嵌跨域驗證網(wǎng)頁,來解決此問題。

          1、原理設(shè)計:用戶在訪問B系統(tǒng)時,先使用一內(nèi)置的iframe,并將iframe的src指向身份認(rèn)證服務(wù)器系統(tǒng)代理驗證接口;如果用戶已經(jīng)在A系統(tǒng)中進(jìn)行過登錄,即A域了中已存在著身份認(rèn)證信息后,身份認(rèn)證服務(wù)器中也將具有其身份信息將其附帶著身份認(rèn)證信息后重定向訪問B系統(tǒng)代理接口;B系統(tǒng)代理驗證接口在接收到由A系統(tǒng)傳遞而來的身份認(rèn)證信息后,通過身份認(rèn)證服務(wù)器驗證后,在B系統(tǒng)所在域重建身份認(rèn)證信息。

          2、實現(xiàn)邏輯貼碼:

          1)B系統(tǒng)代理驗證接口:

          (1)IFrame邏輯貼碼:

          clip_image002[6]

          (2)JS檢測是否通過認(rèn)證邏輯貼碼:

          clip_image003[6]

          2)身份認(rèn)證服務(wù)器端接口(JSP):

          clip_image004[6]

          3、注意事項:

          1)由于身份認(rèn)證中心使用cookie作為身份標(biāo)識,因此,需要用戶在瀏覽器中允許使用cookie的設(shè)置;

          2)由于在iframe中進(jìn)行跨域重定向,因此需在IE安全中的跨域瀏覽子框架項設(shè)為啟用:

          clip_image005[6]

          4、源碼文件:

          ……

          posted @ 2010-02-08 17:55 lbom 閱讀(3500) | 評論 (3)編輯 收藏

          在windows下進(jìn)行j2ee項目開發(fā)和部署時,常需要對系統(tǒng)存在問題進(jìn)行更深入的分析。由此,實時的javacore就是分析的最佳方式之一。但如何以最方便直接的方式產(chǎn)生javacore文件,就是這項工作必需做的準(zhǔn)備工作了。

          1、通過dos窗口,進(jìn)入至jdk安裝目錄下的bin目錄中;

          2、運行jconsole.exe,并設(shè)置信息輸出的目標(biāo)文件,以便于分析,否則將直接輸出至屏幕上;

          image

          3、連接正在運行的目標(biāo)jvm;

          image

          4、連接后的jconsole如下:

          image

          5、通過通過Ctrl+Break組合鍵,產(chǎn)生javacore至指定文件中。

          6、下一步就是對所產(chǎn)生的javacore文件進(jìn)行具體的分析和使用了。

          posted @ 2009-12-10 15:00 lbom 閱讀(2358) | 評論 (2)編輯 收藏

          某日,公司進(jìn)行年度一次的體檢!

          在連續(xù)查出10個脂肪肝后,醫(yī)生對第11個進(jìn)來檢查的人說:“等會,我們的B超機好像出問題了,等檢修后再進(jìn)行”

          這是一個真實的事件,我們這些IT行業(yè)的從業(yè)人員,多坐少動,壓力大,時間長,導(dǎo)致體質(zhì)差的邊醫(yī)生都懷疑機器了!

          唉!

          posted @ 2009-10-29 15:32 lbom 閱讀(333) | 評論 (0)編輯 收藏

          一、項目建立及應(yīng)用實現(xiàn)

          1、建立J2ME項目

          clip_image001

          2、在完成開發(fā)后,進(jìn)入Application Descriptor編輯界面

          clip_image002

          3、因默認(rèn)情況下,Application Descriptor文件中未定義MIDlet啟動對象,因此需使用EditPlus或記事本等文本編輯器,編輯Application Descriptor文件(位于項目根目錄下),并添加以下項目,如:

          clip_image003

          4、運行Application Descriptor編輯界面中的Lanuch as enumlated Java ME JAD,進(jìn)行測試

          clip_image004

          5、在步驟4之后,會在項目根目錄下的.mtj.tmp中生成LaunchFromJAD子目錄,其中的worm.jad和worm.jar即是手機程序的安裝文件

          clip_image005

          6、將worm.jad和worm.jar復(fù)制至手機中,運行worm.jad進(jìn)行安裝后,即可使用

          二、問題分析:

          1、如報【文件不完整】錯誤,則檢查worm.jad中的項目是否完整。在Eclipse中使用Lanuch as enumlated Java ME JAD測試通過,并自動生成的此文件,一般都是完整的,不需作任何修改。

          2、如報【版本錯誤】,則檢查您在Eclipse中使用的的模擬器版本是否是您手機所支持的,出現(xiàn)此錯誤后,將模擬器版本調(diào)低試試。其位置如下

          clip_image006

          三、開發(fā)環(huán)境:

          1、java JDK1.6.0_10;

          2、EclipseV3.3.1.1;

          3、sun公司J2ME-WTK開發(fā)包:sun_java_wireless_toolkit-2_5_2-ml-windows.exe

          4、Eclipse移動應(yīng)用開發(fā)包:eclipseme.feature_1.7.9_site.zip

          posted @ 2009-10-15 17:50 lbom 閱讀(1477) | 評論 (0)編輯 收藏

           

           

          消息中心產(chǎn)品簡介

          產(chǎn)品簡介

          XXX產(chǎn)品框架中,我們根據(jù)產(chǎn)品發(fā)展規(guī)劃和業(yè)務(wù)領(lǐng)域需要,使用基于JMS技術(shù),通過應(yīng)用WEBService,開發(fā)了消息中心中間件(簡稱MC)。通過消息中間件,我們可以實現(xiàn)各系統(tǒng)間的異步數(shù)據(jù)交換和事務(wù)處理、執(zhí)行不需前臺使用人員干預(yù)的如后臺業(yè)務(wù)和數(shù)據(jù)同步工作,也可用來處理一些受到安全和其它一些因素制約,導(dǎo)致無法直接通過數(shù)據(jù)庫或應(yīng)用系統(tǒng)進(jìn)行處理的受限業(yè)務(wù)。

          消息中心中間件,包括消息總線和消息客戶端兩部分:消息客戶端負(fù)責(zé)業(yè)務(wù)類消息實例的產(chǎn)生、發(fā)送消息實例到消息總線、接收從消息總線轉(zhuǎn)發(fā)而來的消息實例、將收到的消息實例交由其載體應(yīng)用系統(tǒng)進(jìn)行與之對應(yīng)的業(yè)務(wù)處理等活動;消息總線負(fù)責(zé)接收從消息客戶端產(chǎn)生并發(fā)送而來的消息實例、消息重建、根據(jù)消息配置進(jìn)行消息實例重建,將重建后的消息實例轉(zhuǎn)發(fā)至對應(yīng)的消息客戶端等活動。

          消息客戶端與XXX各應(yīng)用系統(tǒng)集成在一起,并通過應(yīng)用系統(tǒng)開放WEBService端口進(jìn)行消息的發(fā)送和接收等,從而避免單獨部署和發(fā)布所帶來的困難和額外資源消耗。消息總線可單獨部署,也可和消息客戶端一樣,與XXX應(yīng)用系統(tǒng)集成部署,在XXX產(chǎn)品框架下,有且只需要一套消息總線即可滿足需要。消息配置中心,其作用包括配置和管理消息中心各組成部分的部署方式和訪問信息,以此將消息中心各部有機的聯(lián)系起來;同時,各消息業(yè)務(wù)應(yīng)用,也使用配置文件進(jìn)行配置化管理,并與消息中心各組成部分進(jìn)行關(guān)聯(lián)配置,從而形成一個統(tǒng)一且開放的整體;其它的如性能優(yōu)化處理、日志記錄等也在配置中心進(jìn)行配置和管理。

          應(yīng)用現(xiàn)狀

          在消息中間件V1.0版本開發(fā)完成后,我們即將其投入實用。在XXX各分子系統(tǒng)這近一年時間的運行和使用過程中,消息中心很好的完成了預(yù)定任務(wù),其可靠性、可擴展性和適用性得到很好的驗證。以此為據(jù),通過使用消息中心,開發(fā)出基于消息中心的客戶化應(yīng)用和業(yè)務(wù)活動也在持續(xù)的增加中,到現(xiàn)在為止,已經(jīng)有包括網(wǎng)絡(luò)檢測、信息同步、配置更新、電子目錄樹更新、權(quán)限同步等諸多應(yīng)用是基于消息中心應(yīng)用開發(fā),并很好的使用在XXX各分子系統(tǒng)的測試和內(nèi)網(wǎng)正式環(huán)境中。

          問題出現(xiàn)、描述、分析與處理記錄

          問題出現(xiàn)

          在XXX系統(tǒng)正式接入外網(wǎng)后,通過對業(yè)務(wù)進(jìn)行跟蹤,發(fā)現(xiàn)外網(wǎng)用戶(系統(tǒng))所產(chǎn)生的消息實例無法正常的到達(dá)指定的消息總線及消息客戶端。最主要的體現(xiàn)是權(quán)限同步消息應(yīng)用無法正常完成的問題,導(dǎo)致外網(wǎng)用戶權(quán)限未得到及時更新。對此過程中消息中心所涉及部分進(jìn)行分析發(fā)現(xiàn):所有的權(quán)限同步消息實例在產(chǎn)生后,不能正常的將此消息實例發(fā)送至消息總線,分析失敗原因,只有一種,那就是”connect time out”。從此信息可看出,應(yīng)該是外網(wǎng)系統(tǒng)所發(fā)出的消息無法通過WEBService送達(dá)指定的消息總線接收端所至。但從內(nèi)網(wǎng)發(fā)出的同一類消息,其發(fā)送和接收卻又都是正常的。

          分析過程記錄

          1、先分析我們系統(tǒng)的整體部署方式,如下圖所示:

          根據(jù)外網(wǎng)用戶可正常登錄和訪問系統(tǒng),并可通過系統(tǒng)準(zhǔn)確及時的發(fā)出執(zhí)行指令操作,完成其所需的業(yè)務(wù)活動來看,網(wǎng)絡(luò)方面和系統(tǒng)和硬件方面都不存在問題。

          2、在外網(wǎng)環(huán)境下,直接進(jìn)行各消息客戶端和消息總線的服務(wù)的檢測,所發(fā)請求都能夠正確的到達(dá)指定目標(biāo),WEBService的響應(yīng)也正常且正確,也就是說,各應(yīng)用系統(tǒng)加載的消息服務(wù)運行也正常。

          3、根據(jù)本次檢測需要,另行開發(fā)消息中心專用檢測工具,為本次和今后的行的消息中心檢測和問題分析,作好更充分的準(zhǔn)備。

          4、通過檢測工具,發(fā)現(xiàn),外網(wǎng)環(huán)境下,消息客戶端和消息總線之間不能夠聯(lián)通,從而找到問題所出:即不知是何原因,導(dǎo)致外網(wǎng)消息與外網(wǎng)的消息總線間聯(lián)絡(luò)不通!

          5、對外網(wǎng)用戶消息產(chǎn)生和發(fā)送的過程和邏輯實現(xiàn)進(jìn)行分析:我們發(fā)現(xiàn),為了滿足應(yīng)用系統(tǒng)外網(wǎng)訪問的需要,我們對消息系統(tǒng)配置信息中服務(wù)地址的ServerName進(jìn)行了偽處理,即在運行時,根據(jù)用戶瀏覽器的請求頭來判斷用戶使用的是哪一個WEB服務(wù)器地址,并將此地址動態(tài)的代替消息配置中的各ServerName信息,從而保證各使用用戶只能夠訪問其指定的WEB服務(wù)器,從而避免因WEB服務(wù)器的不匹配而影響其訪問速度、處理效率等故障的發(fā)生。此方式已在我部門多套同時服務(wù)于內(nèi)外網(wǎng)絡(luò)的系統(tǒng)中得到可靠的驗證。

          那么,會不會因為ServerName在動態(tài)解釋過程中,因多并發(fā)情況下,因后訪問者將前訪問者的ServerName改寫而導(dǎo)致錯誤的解釋,即將不同網(wǎng)絡(luò)用戶的消息地址進(jìn)行張冠李戴而導(dǎo)致消息無法正常發(fā)送呢?

          分析消息中心各部分WEBService生成和使用機制:因系統(tǒng)的并發(fā)性要求較高,在高峰期其在線用戶可達(dá)3000人,并發(fā)用戶在300以上,且系統(tǒng)穩(wěn)定性要求極高。為提高系統(tǒng)的性能和穩(wěn)定性,在系統(tǒng)啟動時即將消息中心各部的WEBService連接進(jìn)行創(chuàng)建和緩存,以提升消息中心資源利用率,并提升其訪問性能。

          當(dāng)存在多網(wǎng)絡(luò)用戶訪問時,可能因消息中心存貯的WEBService連接并不是其用戶所使用的那個網(wǎng)絡(luò)的WEBService服務(wù)地址,此時,消息肯定是無法送達(dá)至此用戶所需要的目標(biāo)的。因此,報”connect time out”錯誤就成必然的了。

          既然已找到問題的可能原因,我們立即進(jìn)行著手分析和解決:根據(jù)部署要求,我們對對消息服務(wù)連接服務(wù)進(jìn)行了升級,即將服務(wù)請求進(jìn)行分類處理和實現(xiàn),并在消息配置中對所使用的部署方式、代理實現(xiàn)后,交由測試人員進(jìn)行部署和測試。

          測試結(jié)果:令人失望的是,此問題依然存在!在通過外網(wǎng)WEB服務(wù)器訪問的系統(tǒng),其消息還是無法發(fā)送至消息總線。由此得知,此種分析方向是錯誤的!

          至此,好像已經(jīng)走入了死區(qū),能想到的方式都已經(jīng)想到了,但問題到底出在哪呢?

          問題解決

          在一次與同事聊天的過程中,忽然想到一個問題,那就是:我們的消息的產(chǎn)生和應(yīng)用都是由應(yīng)用系統(tǒng)和與之集成在一起的消息客戶端自動產(chǎn)生和處理的,此過程中完全不受人工干預(yù)和影響。而應(yīng)用系統(tǒng)是部署在應(yīng)用服務(wù)器中,WEB服務(wù)器僅是用來處理用戶的HTTP請求à將此請求轉(zhuǎn)發(fā)至對應(yīng)的應(yīng)用服務(wù)器后à將應(yīng)用服務(wù)器的響應(yīng)返回給用戶。

          在此過程中WEB服務(wù)器并未對用戶業(yè)的http請求進(jìn)行過任何業(yè)務(wù)上的處理!那么,問題會不會出在WEB服務(wù)器端呢?檢查一下消息中心的配置不管是使用ServerName還是寫死IP和域名,我們的消息中心配置的地址都是指向WEB服務(wù)器。而在應(yīng)用系統(tǒng)發(fā)現(xiàn)消息時,其所在位置是應(yīng)用服務(wù)器。而應(yīng)用服務(wù)器是無法直接訪問部署于外網(wǎng)IP中的WEB服務(wù)器的,當(dāng)然,消息無法發(fā)送至目標(biāo)就成為必然了。

          既然已經(jīng)找到問題,那就動手,將消息中心的配置信息指向應(yīng)用服務(wù)器后,重啟應(yīng)用系統(tǒng)后測試,問題果然解決!

          通過應(yīng)用服務(wù)器進(jìn)行后臺自動處理的,進(jìn)行HTTPWEBService活動,其目標(biāo)必需是它能夠訪問的有效地址!這個問題在以前也曾經(jīng)碰到過,只是由于時間隔得太久,且這些場景應(yīng)用出現(xiàn)太少,而導(dǎo)致再次發(fā)生。

          補充與心得

          1、    基于應(yīng)用系統(tǒng)或后臺自動觸發(fā)的一些業(yè)務(wù)邏輯,如其中存在著系統(tǒng)間相互訪問或遠(yuǎn)程調(diào)用等,必需以應(yīng)用系統(tǒng)自身為根,進(jìn)行連接測試;通過外層包裝或其它代理,進(jìn)行訪問時,必需先剝離過外層包裝或其它代理后,再進(jìn)行連接測試,并以測試結(jié)果,作為決策的依據(jù)!此舉適用于各類系統(tǒng)的架構(gòu)設(shè)計和邏輯實現(xiàn)過程中。

          2、    基于中間件產(chǎn)品應(yīng)用,及時開發(fā)與之配套的檢測和使用工具,是一件必不可少的工作,此舉將為后期的實施和問題分析節(jié)省大量的工作量。

          posted @ 2009-10-07 17:06 lbom 閱讀(1493) | 評論 (0)編輯 收藏

              幾天前,偶爾和鄰居聊天,她說要去買頂蚊帳過夏,不由的也動了心。是啊,在小時候,那家不是用蚊帳來保證漫長夏的良好睡眠呢!現(xiàn)在隨著科技發(fā)達(dá),家家戶戶,特別是城市住戶都已經(jīng)將蚊帳扔掉而改用蚊香或蚊片了。
              于是等夫人下班回家,和其商量,卻是死活不同意,理由如下:1)影響臥室美觀;2)擠占空間;3)拆洗不便。。。。。。
              沒辦法,為了達(dá)到目的,我只得絞盡腦汁,想出各種理由,以期望能夠說服夫人:
              1)身體牌:我對蚊香有過敏,因此,在夏天,我們是不能點蚊香的;再說,各種滅蚊產(chǎn)品其主要成份都有毒性,不管其含量多少,都對身體無益。
              2)經(jīng)濟(jì)牌:在重慶,一年有6個月的夏天,以每晚一片滅蚊片計算,一年下來,加上電熱滅蚊器最少需要投入120元以上才能保證夏季無憂,三四年下來,就可以買個較好的蚊帳了;再說,滅蚊片用久后,還得防止蚊子產(chǎn)生的抗藥性;但使用蚊帳卻不需要用電,一年下來,其電費也能節(jié)約不少,還可防止可能因電熱滅蚊器散熱不良而導(dǎo)致的用電風(fēng)險的發(fā)生;
              3)環(huán)保牌:在臥室支個蚊帳,即溫馨又浪漫,還無滅蚊產(chǎn)品的各類化學(xué)合成的氣味,最環(huán)保不過了;
              4)衛(wèi)生牌:在床上支個蚊帳,將有效的減少灰塵降落,也免了蜘蛛等小蟲在晚間不意間打擾我們的安眠,多好的一件事!
              。。。。。。
              啰啰嗦嗦,直說的口干舌燥,并許下一堆好處之后,終于換來老婆的點頭。于是二話不說,拉上夫人,直奔商場,在東挑西比之后,買下一款合意的落地式蚊帳。
              至此,我的環(huán)保蚊帳計劃就此實現(xiàn)!
           
              所以,回歸和懷舊,并不都是倒退!
          posted @ 2009-05-26 09:43 lbom 閱讀(294) | 評論 (0)編輯 收藏

                  在一周前,項目組碰到一個大問題:NTKO Office Activex控件在上傳文件及提交頁面信息時,其提交的頁面元素輸入中文值變成了無法識別的、也不屬于已知編碼中的任何一種編碼格式的亂碼;但在NTKO Office Activex控件包裝項目組提供的的測試項目中,此問題并未出現(xiàn),因此判斷是項目兼容性所導(dǎo)致。
                 在項目組功能開發(fā)員和控件包裝組成員進(jìn)行近一周的努力后,也未解決此問題。最后,此問題交由我來做最后分析和處理。
                 經(jīng)過三天時間對問題項目的分拆、組裝、分析、測試后,終于找到問題所出,現(xiàn)將此過程進(jìn)行記錄,以備參考:
                  1)以控件包裝組測試項目為基準(zhǔn),建立項目級測試項目,并保證在此測試項目中不存在兼容性問題;
                  2)檢測web.xml:將問題項目的web.xml代替測試項目中的web.xml,未出現(xiàn)兼容性問題,從而排除因web.xml的差異而導(dǎo)致的兼容性;
                  3)測試問題項目中的項目依賴:將問題項目的項目依賴關(guān)系復(fù)制至測試項目中,發(fā)現(xiàn)兼容性問題未出現(xiàn),從而排除項目依賴導(dǎo)致的兼容性;
                  4)檢測支持包:將問題項目中的支持包(各jar)代替測試項目中的支持包,未出現(xiàn)兼容性問題,從而排除因支持包的差異導(dǎo)致的兼容性,也就排除了各servers,servlet,listener等導(dǎo)致的兼容性問題;
                  5)檢測js支撐:將問題項目中的所有相關(guān)js文件取出,代替測試項目中的相關(guān)js文件,未出現(xiàn)兼容性問題,從而排除因js支持文件的差異導(dǎo)致的兼容性;
                  6)檢測css支撐:將問題項目中的所有相關(guān)css文件取出,代替測試項目中的相關(guān)js文件,未出現(xiàn)兼容性問題,從而排除因css支持文件的差異導(dǎo)致的兼容性;
                  7)檢測tld,xml文件:將問題項目中的tld,xml文件取出,代替測試項目中的tld,xml文件,未出現(xiàn)兼容性問題,從而排除因tld,xml的差異導(dǎo)致的兼容性;
                  8)至此,正常解決的兼容性措施都已用完,還是未找到問題所出!如何辦?
                  9)開始使用非正常手段進(jìn)行排查:
                      <1>對比檢查.project和.classes未發(fā)現(xiàn)異常,從而排除基本項目配置導(dǎo)致的兼容性;
                      <2>將問題項目的web項目設(shè)置文件(.settings)代替測試項目的web項目設(shè)置文件(.settings),問題出現(xiàn)了!繼續(xù)排隊分析,發(fā)現(xiàn)問題出現(xiàn)在文件org.eclipse.wst.common.component中,
          問題項目的設(shè)置為:
                                              <?xml version="1.0" encoding="UTF-8"?>
                                              <project-modules id="moduleCoreId" project-version="1.5.0">
                                                 <wb-module deploy-name="XXX_IC">
                                                 <wb-resource deploy-path="/" source-path="/web"/>
                                                 <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
                                                 <wb-resource deploy-path="/WEB-INF/classes" source-path="/test"/>
                                                 <property name="java-output-path" value="build/classes"/>
                                                 <property name="context-root" value="XXX_IC"/>
                                             </wb-module>
                                             </project-modules>
          測試項目設(shè)置為:
                                              <?xml version="1.0" encoding="UTF-8"?>
                                              <project-modules id="moduleCoreId" project-version="1.5.0">
                                                 <wb-module deploy-name="test">
                                                 <wb-resource deploy-path="/" source-path="/web"/>
                                                 <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
                                                 <wb-resource deploy-path="/WEB-INF/classes" source-path="/test"/>
                                                 <property name="java-output-path" value="build/classes"/>
                                                 <property name="context-root" value="test"/>
                                             </wb-module>
                                             </project-modules>
          且無論如何修改"XXX_IC",都會導(dǎo)致兼容性出現(xiàn),最后沒辦法,將下劃線"_"去掉,奇跡出現(xiàn)了。
                  原來NTKO Office Activex控件在提交數(shù)據(jù)時,是通過scoket模擬Http進(jìn)行文件和頁面元素的提供,如提交的頁URL完整路徑中包含了"_"等字符時,將導(dǎo)致無法識別,從而導(dǎo)致兼容性的產(chǎn)生。
          posted @ 2009-05-15 22:13 lbom 閱讀(1509) | 評論 (2)編輯 收藏

           

          從小到大,椰子已經(jīng)吃過很多次了,但在這些吃椰子有經(jīng)歷中,我只知道一種吃法:開孔à插吸管à喝椰汁à丟椰殼à完事!

                 但在今天,事情有了些變化,于是產(chǎn)生的椰子的第二種吃法。

          我和夫人在散步時,順便準(zhǔn)備到超市買點水果,看到水果區(qū)的椰子又大又好且正在打特價。心中一動,就挑了個大的,買回家準(zhǔn)備細(xì)細(xì)品嘗一番。在按通常吃法吸光椰子中的水汁后,突然想起,我們平時很喜歡吃超市中的一種叫椰角小吃的,又甜又韌很有嚼勁,但椰角是長大哪的呢?不會是椰子樹上的另一種產(chǎn)品吧!看著椰子開口的硬殼下面的白色軟組織,我們就突發(fā)奇想,這白色軟組織會不會就是那椰角呢?

          說動就動,先用刀將空椰子殼砍開,發(fā)現(xiàn)其內(nèi)層確實是一層約0.8cm厚的白色果肉。小心的切下一小塊嘗一嘗,味道淡淡的,很有韌勁,確實就是那椰角的源料。這就是我發(fā)現(xiàn)的椰子的第二種吃法了。

          在生活中有很多事:你沒經(jīng)歷,就不會想到;當(dāng)你想不到時,美好的事情就可能錯過!
              這就是生活。

                                                                                              2009/5/5

          posted @ 2009-05-05 22:31 lbom 閱讀(2373) | 評論 (2)編輯 收藏

           

          在我們公司的軟件研發(fā)體系中,存在著三種截然不同的軟件開發(fā)方式。而我,作為公司最老同事之一,也是這三種開發(fā)模式的親歷者,曾不只一次的被公司同事問過我關(guān)于這三類方式之間的異同點。于是利用空閑時間,對其進(jìn)行一番整理、分析和對比。

          1、全能型

          部門經(jīng)理在接到項目之后,將此項目交給部門內(nèi)的熟練程序員后,此程序員就自動被委任其為項目經(jīng)理。從此開始,程序員將根據(jù)項目售前方案和銷售合同內(nèi)容,在項目進(jìn)行過程中分別擔(dān)當(dāng)起項目經(jīng)理、功能設(shè)計師、數(shù)據(jù)存貯設(shè)計師、程序員、測試員和項目實施人員等諸多角色。并在項目進(jìn)行的過程中,帶領(lǐng)少量其它程序員和輔助資源來完成此項目的所有工作。

          此類項目其功能單一且不復(fù)雜,只是為了幫助用戶提升某一項工作的工作效率或解決客戶在其工作中的一些問題,如工作日志信息的采集和分析業(yè)務(wù)項目、辦公用品的申請和領(lǐng)用等。它們因為其涉及范圍小,使用人員不多,從而具有項目總費用少、開發(fā)和實施周期短、對性能要求不高的特點。

          在此類開發(fā)模式中,程序員由于其工作的全面性,使他們在進(jìn)入項目組后,能夠得到很快且全面的提升,并會在與客戶交往的過程中,建立起良好的客戶關(guān)系處理經(jīng)驗,為其今后的成長和發(fā)展打開良好的基礎(chǔ)。

          由于項目需要,程序員需要掌握全面技能,容易造成其在項目開發(fā)過程中需要全面的接觸項目管理及人際關(guān)系、需求分析、數(shù)據(jù)庫及對象設(shè)計、人機交互和用戶體驗設(shè)計、系統(tǒng)設(shè)計和開發(fā)、測試和系統(tǒng)提升、應(yīng)用實施和售后維護(hù)等諸多截然不同的領(lǐng)域范圍;所以,作為此類程序員,其工作壓力之大,事務(wù)之復(fù)雜、綜合素質(zhì)要求之高,是其它模式的程序員所無法對比的,這也是造成此類項目按時完成率極低、尾款回收困難、項目售后工作難做、用戶滿意度差、二次項目獲取困難的根本原因。

          同時,由于程序員被大量的非開發(fā)性事務(wù)所干擾,造成他們無法專心致力于專業(yè)技能的學(xué)習(xí)和提升,也就無法造就一支高效率、高穩(wěn)定性、配合默契的開發(fā)隊伍,這也是造成公司內(nèi)此類人才大量流失的重要原因。

          2、英雄型

                 部門經(jīng)理在接到此類項目后,按項目所涉及的領(lǐng)域范疇,將其按領(lǐng)域進(jìn)行分工。以企業(yè)信息協(xié)同系統(tǒng)為例,我們將進(jìn)行如下分工:門戶信息的獲取、聚合、交互和展現(xiàn)工作交給專職于門戶開發(fā)的程序員;內(nèi)部郵件系統(tǒng)的分析、設(shè)計、和實現(xiàn)將給郵件開發(fā)程序員;日程和事務(wù)的設(shè)計交給日程開發(fā)程序員;工作流應(yīng)用工作交由工作流客戶化開發(fā)程序員等等。

                 在此類型的開發(fā)模式中,程序員將會是某一領(lǐng)域內(nèi)的英雄式人物!由于他長期且相對穩(wěn)定的負(fù)責(zé)著這個有限領(lǐng)域范圍內(nèi)的一切事務(wù),可以幫助他在一定時期內(nèi)進(jìn)行系統(tǒng)而穩(wěn)定的業(yè)務(wù)研究和分析工作,進(jìn)而成長為此領(lǐng)域內(nèi)的業(yè)務(wù)專家。而且,通過持續(xù)的對其工作進(jìn)行迭代式開發(fā)、升級和完善,可使此產(chǎn)品在產(chǎn)品品質(zhì)、適用性和用戶體驗等方面得到穩(wěn)定的提升,進(jìn)而提升了整個產(chǎn)品的品質(zhì)。

                 如果此領(lǐng)域內(nèi)的工作產(chǎn)品能夠得到合理的規(guī)劃和實現(xiàn),進(jìn)而將其進(jìn)行單獨的封裝、應(yīng)用集成和推廣,就有可能形成一個具有相當(dāng)競爭力的產(chǎn)品,從而為公司獲取新的銷售機會和利潤點。

                 但是,此類開發(fā)模式中的分工也容易造成程序員涉及業(yè)務(wù)領(lǐng)域單一和適應(yīng)性窄的缺陷:由于其長期面對和研究著單一業(yè)務(wù)領(lǐng)域內(nèi)的業(yè)務(wù)活動,而無法更多的接收和參考來自于用戶、企業(yè)和其它行業(yè)內(nèi)的非它業(yè)務(wù)發(fā)展需要和趨勢,從而對其在產(chǎn)品領(lǐng)域內(nèi)的發(fā)展產(chǎn)生限制,并造成其產(chǎn)品方向上的不準(zhǔn)確或錯誤定位;由于其長期的在單一領(lǐng)域內(nèi)工作,并在此領(lǐng)域內(nèi)獲得了公司內(nèi)的認(rèn)可,這也將限制他在領(lǐng)域間的流動性。當(dāng)公司或部門的產(chǎn)品方向和需要調(diào)整和改變時,此類程序員就需要被迫改變甚至放棄其在原領(lǐng)域內(nèi)的所有積累而重新開始,從而造成巨大的浪費。

          3、專業(yè)型

                 項目經(jīng)理在接到項目之后,根據(jù)項目組成員的能力、特長職業(yè)規(guī)劃,對他們進(jìn)行適當(dāng)且專業(yè)化分工:由業(yè)務(wù)規(guī)劃人員負(fù)責(zé)項目的需求收集、業(yè)務(wù)規(guī)劃和需求分析;由系統(tǒng)架構(gòu)師對系統(tǒng)的進(jìn)行技術(shù)構(gòu)架和支撐性技術(shù)的規(guī)劃和引進(jìn);由數(shù)據(jù)庫專員負(fù)責(zé)數(shù)據(jù)庫對象的設(shè)計和性能調(diào)優(yōu);由功能分析員在人機交互人員輔助下負(fù)責(zé)功能設(shè)計和人機交互模式;由業(yè)務(wù)邏輯實現(xiàn)專員根據(jù)功能設(shè)計進(jìn)行高性能的業(yè)務(wù)邏輯處理實現(xiàn)和外部接口的設(shè)計和實現(xiàn);由頁面開發(fā)人員負(fù)責(zé)實現(xiàn)人機交互;測試人員負(fù)責(zé)對系統(tǒng)進(jìn)行全過程的測試和質(zhì)量監(jiān)督;專業(yè)化實施人員可快速高效的進(jìn)行系統(tǒng)實施和在線維護(hù),售后服務(wù)工作也將由專人負(fù)責(zé);

                 通過恰當(dāng)和合理的分工,將軟件研發(fā)過程中的各個環(huán)節(jié)進(jìn)行拆分,從而將復(fù)雜的軟件工程分解成一個個相對獨立且又緊密關(guān)聯(lián)的工作項,從而有效的降低了軟件開發(fā)過程中的困難度和風(fēng)險性;項目經(jīng)理把分解后的工作項交給項目組中的合適項目成員,并根據(jù)項目組成員的能力、工作難度和工作量,制定出科學(xué)的項目計劃;同時,項目組成員在項目經(jīng)理的協(xié)調(diào)和管理下進(jìn)行密切的分工合作,此舉即能調(diào)動項目組成員的其工作積極性,又能使他們將工作、興趣和個人職業(yè)成長規(guī)劃進(jìn)行有效的結(jié)合,從而使其在技能、收入和社會認(rèn)可度等諸多方面得到快速成長,達(dá)到人盡其材,材盡其用的目的。通過使用專業(yè)的人做專業(yè)的事,公司將在人員分工、資源使用和業(yè)務(wù)拓展等領(lǐng)域走向?qū)I(yè)化、規(guī)模化,最終成為專業(yè)且強大的產(chǎn)業(yè)實體。

                 但此開發(fā)模式也具有相當(dāng)?shù)木窒扌裕∑湟唬绾魏侠淼睦庙椖拷M資源?項目組成員因其性格、能力和興趣各有不同,如何能將他們按項目分工和角色組成需要,進(jìn)行專業(yè)化訓(xùn)練和培養(yǎng);其二,因項目組成員長期單一職能的工作,與其它環(huán)節(jié)的交叉和交流都受到限制,對其未來的全面發(fā)展和綜合成長都很不利;其三、各角色之間的分工、合作與工業(yè)化生產(chǎn)中的生產(chǎn)線相似,那么,建立與之相適應(yīng)的質(zhì)量保證體系,保證各工序之間生產(chǎn)產(chǎn)品的質(zhì)量,從而從事實上提升軟件產(chǎn)品的整體質(zhì)量?

                 通過對這三類開發(fā)模式的分析,我們可以看出,它們各有合理性,也又具有的相當(dāng)?shù)木窒扌浴?/span>

                 全能型開發(fā)模式是早期的CS類項目開發(fā)的主要模式,其適用于哪些規(guī)模小,程序員少的小規(guī)模IT開發(fā)企業(yè)進(jìn)行小型項目的開發(fā)中。但對于那些工期較長、業(yè)務(wù)范疇廣、復(fù)雜度較大的項目,此種開發(fā)模板將采用將導(dǎo)致風(fēng)險最大化,失敗幾乎是其唯一的結(jié)局。

                 英雄型開發(fā)模式,因項目組成員領(lǐng)域化的分工和合作,使它在通用型復(fù)合類產(chǎn)品開發(fā)中具有優(yōu)勢。通過對產(chǎn)品的各組成部份進(jìn)行持續(xù)的改進(jìn)和迭代性開發(fā),使產(chǎn)品在功能、性能、用戶體驗等方面得到持續(xù)的改善和提升,從而有利于產(chǎn)品拓展并在此過程中做大做強,最終取得競爭優(yōu)勢。但此開發(fā)模式也將導(dǎo)致項目組成員之間的工作協(xié)調(diào)、技術(shù)互用等方面存在諸多不便;另外,因領(lǐng)域的專業(yè)性和不可替換性,也就限制了公司在處理關(guān)健人員的流動性方面存在諸多困難,并在核心競爭力的保證方面存在著很大風(fēng)險。

                 專業(yè)型開發(fā)模式,通過對人員進(jìn)行專業(yè)化分工,從而在軟件開發(fā)過程中最大的利用了人力資源,提升軟件的生產(chǎn)效率,并降低了軟件的從業(yè)門檻。此方式在新形式下的項目開發(fā)和產(chǎn)品研發(fā)中都具有相當(dāng)?shù)母偁幜Γ惨子欣诒WC公司的核心競爭力。但采用此種開發(fā)模式時,需要完善內(nèi)部的人員激勵機制,保證各角色的從業(yè)人員都有與之適應(yīng)的職位規(guī)劃和發(fā)展模式,并能根據(jù)項目組成員所處階段的需要,提供相應(yīng)的技能培訓(xùn)和交流機會,從而促進(jìn)其成長,激勵其上進(jìn)。

                 總之,采取何種開發(fā)模式,要根據(jù)公司的實際業(yè)務(wù)情況,發(fā)展規(guī)劃和人員構(gòu)成,進(jìn)行科學(xué)的分析之后,再采取行動、從而得到具有延續(xù)性和競爭性,并與自身相匹配的軟件開發(fā)模式。

                                                                         2009/4/20

          posted @ 2009-04-21 21:52 lbom 閱讀(1881) | 評論 (2)編輯 收藏

                   

          今天,在陪夫人逛街回來的路上,看到一幕慘劇的發(fā)生:一位中年男子,從家中跳樓而下,墜落于堅硬的水泥地面上,當(dāng)場身亡!

          人生為何?為已?為親?還是為他?

          人生為已,就應(yīng)該珍惜自己的生命,為自己這短暫的一生中,充實、幸福和快樂的活著,而不能因為暫時的挫折、失敗而絕望和放棄;人生漫漫而無現(xiàn)存路,需要自己去探索和開拓,在此過程中,必然會經(jīng)歷曲折和無法避免的挫折。但是,不經(jīng)歷風(fēng)雨,如何能見彩虹!挫折過后,往往就伴隨著一段平坦的直道;人生艱難,生活、事業(yè)、家庭、社會各種矛盾在我這會聚,理不清也扯不斷!既然如此,何不干脆看開,將不可調(diào)和的矛盾進(jìn)行暫時地休眠,讓時間這個解決矛盾的最好的潤滑劑來慢慢解決它。

          人生為親,為父母:他們含辛茹苦的將你從無到有、從幼養(yǎng)成,而你卻要在他們需要照顧和看護(hù)的年齡離他們而去!你忍心嗎!為妻:相汝以沫幾十年、同床共枕伴一生!鍋碗瓢盆一屋住,酸甜苦辣是生活。你就忍心在她人生路中間,正需你堅強的肩膀作支撐時,卻拋下她一人孤苦的走在這漫長的人生路上,你安心嗎?人生為子:父親是兒女的榜樣和偶像,他們需要借助你那成熟的智慧來打開事業(yè)的大門,也需要你那豐富的閱歷來開拓自己的人生路,更需要你成功的經(jīng)驗來保護(hù)雛鳥并解決初飛時所遇到的種種風(fēng)險!在這種關(guān)鍵的時候,你卻拋棄了他,你放心嗎?

          人生為他,為朋友兄弟:有多少美好時光值得回憶,有多少美妙經(jīng)歷值得回味,又有多少坎坷擔(dān)當(dāng)值得珍惜!你就此離開,從此兄弟聚首少一人,朋友舉杯缺一環(huán)!為事業(yè):你正值人生當(dāng)年,恰逢事業(yè)當(dāng)期,失敗你經(jīng)歷,成功應(yīng)有你,酸甜苦辣都嘗遍,還有什么過不去?為社會:當(dāng)今社會多少不平事,何必事事放我心!不必為人先,也不全落后;比上我不足,哪我就比下,實在比不過,阿Q一把也不錯!

          生命如此脆弱,稍有不慎就將墜落:走在路上被車撞死,走下樓下被東西砸死,乘車墜橋而死,去醫(yī)院被錯藥藥死,上班被累死,下班被煩死,既然如此,何必再來一個自己尋死呢!

          請珍惜生命,愛護(hù)自己!

           

          20090330于家中

          posted @ 2009-04-13 15:51 lbom 閱讀(138) | 評論 (0)編輯 收藏

                  項目組使用潤乾報表已一年多了,說實話,潤乾報表在國內(nèi)同類產(chǎn)品中屬于非常不錯的最好的報表開發(fā)和應(yīng)用產(chǎn)品。相應(yīng)的支持也比較到位,使用人員及交流社區(qū)也開展的很合適。在這先給它們作個廣告!!!
                  在項目中使用潤乾報表,對數(shù)據(jù)進(jìn)行專業(yè)的報表應(yīng)用和開發(fā),我對其作簡單總結(jié):
                  1)對其服務(wù)器運行系統(tǒng)進(jìn)行項目性客戶化開發(fā),從而利用項目中的權(quán)限管理和模塊,實現(xiàn)對報表進(jìn)行訪問控制。否則,這對企業(yè)級應(yīng)用將是一個非常大的考驗。
                  2)潤乾報表自帶的參數(shù)生成模塊、報表運行載體的樣式、風(fēng)格都極其簡陋,與項目的實際風(fēng)格可能存在很大的差距。因此必需對其進(jìn)行深入的擴展和開發(fā)。我們項目組的經(jīng)驗就是單獨開發(fā)參數(shù)生成模塊和潤乾報表載體,如此才保證了報表中心與項目的用戶體驗和交互性的一致性。
                  3)為了更好的利用項目組資源,我們將潤乾報表開發(fā)人員獨立出來,形成專門的報表開發(fā)團(tuán)隊。此團(tuán)隊負(fù)責(zé)根據(jù)業(yè)務(wù)的需要,利用潤乾報表開發(fā)工具進(jìn)行報表開發(fā),即開發(fā).raq報表文件。此部份人員可從項目組的普通成員和新進(jìn)人員中進(jìn)行培養(yǎng),而無需占用大量的項目組中中高級開發(fā)人員資源,從而節(jié)約了項目組的資源。
                  4)潤乾報表對過JSP標(biāo)簽包含在jsp頁面中進(jìn)行加裁我運行。我們稱此jsp頁面為潤乾報表運行載體。我們根據(jù)潤乾報表的運行載體進(jìn)行了科學(xué)的分類,并根據(jù)分類開發(fā)出統(tǒng)一的報表運行載體頁面(jsp)。從而避免針對每個報表文件而開發(fā)與之對應(yīng)的運行載體。此舉也大為減少了項目組的JSP開發(fā)人員的工作量。
                  5)建立潤乾報表運行專用配置文件,將報表參數(shù)生成模塊、運行載體及潤乾報表三者之間的關(guān)系進(jìn)行配置化管理,并以此為紐帶,將潤乾報表開發(fā)人員、JSP開發(fā)人員(開發(fā)報表運行載體和報表參數(shù)生成功能)聯(lián)系起來。

                   在開發(fā)過程中,我們碰到并解決了如下問題:
                   1)填報類潤乾報表在進(jìn)行數(shù)據(jù)驗證時,其提示信息(以js的alert("...")方式提示用戶)成亂碼顯示:此問題是由于潤乾報表在V4.1以后,統(tǒng)一使用UTF-8作編譯編碼。因此,要解決此問題,需要將項目的編碼也改成UTF-8
                   2)在潤乾報表的參數(shù)賦值需按序依次進(jìn)行賦值,而不能采用參數(shù)名進(jìn)行統(tǒng)一賦值。因為,如果在潤乾報表的SQL中使用了重復(fù)的參數(shù)進(jìn)行賦值時,會報參數(shù)找不至的錯誤。
                   3)在參數(shù)生成模塊中將中文參數(shù)值傳遞給潤乾報表時,會導(dǎo)致少量的參數(shù)值在傳遞過程中發(fā)生改變,如“機油”變成了“箕油”。此問題是由于在urlEncode和urlDecode的bug導(dǎo)致,請在開發(fā)時需特別注意。我們是通過自己對信息進(jìn)行加碼和解碼來解決此bug。
                   4)潤乾報表的運行環(huán)境與應(yīng)用服務(wù)器的編碼方式有關(guān):我們項目和報表中心的編碼方式為UTF-8,但運用服務(wù)器(WAS6.1)的編碼方式為GBK時,通過參數(shù)生成功能將中文參數(shù)傳遞給潤乾報表時,會出現(xiàn)亂碼問題。在將WAS的輸出和運行編碼改成UTF-8后,才解決此問題。


          posted @ 2009-03-05 23:08 lbom 閱讀(8015) | 評論 (24)編輯 收藏

          主站蜘蛛池模板: 天等县| 巫溪县| 崇文区| 广水市| 镇雄县| 灵石县| 阳曲县| 汤原县| 宜城市| 丹阳市| 宝应县| 昌吉市| 织金县| 江西省| 沁源县| 万盛区| 长治县| 遂溪县| 洪洞县| 聊城市| 柏乡县| 松阳县| 遵义市| 新营市| 福安市| 灵山县| 革吉县| 衡水市| 长兴县| 枣庄市| 安阳县| 聊城市| 获嘉县| 淅川县| 潍坊市| 朝阳市| 吉木萨尔县| 文昌市| 上虞市| 河西区| 北海市|