2008年3月20日
今天客戶方服務器上突然有一個功能保存了,查看日志信息后發現,錯誤信息:
Could not instantiate class XXX from tuple at AliasToBeanConstructorResultTransformer...
Google了很久才發現有可能是HQL語句中別名的問題,具體原因未知,現在處理辦法是,將下面的語句中的別名去掉:
StringBuffer hql = new StringBuffer("select new ContractItem(l, "
+ " pi.unitPrice, " + " pi.currencyType, " + "pi.currencyTypeDisplay," + " pi.units, "
+ " sum(pi.quantity + pi.adjQuantity), " + " pp, " + " pi.task) "
+ " from PurchasePlanItem pi " + " join pi.purchasePlan pp"
+ " join pi.priorList l " + " where l.supplierNo = ? "
+ " and pp.id in (");
具體是否可以解決,還要看一會兒的部署情況。
上篇文章中我簡單闡述了軍工企業信息化遇到的困境,而我們公司(西安融智軟件有限公司www.xardmu.com)則主要是面向軍工企業進行軟件產品的研發和定制項目的開發的。
在產品實施和項目研發過程中,我們的前端技術人員需要做大量的瀏覽器兼容性的工作。痛苦至極啊~而且,即便完成了兼容性的修改,瀏覽器端的JS解析又變成了巨大的瓶頸!例如我們有一個項目為了提高用戶使用的時的方便性,使用了EXTJS4,結果在IE6下性能極其低下。我們的P8是一個項目管理軟件,需要使用到基于EXTJS的Gantt組件,但是此組件在IE6下十分不穩定,而且經常導致IE6崩潰。
介于上面的種種問題,我們開始尋找從瀏覽器上解決問題的方法,例如使用FireFox或者Chrome,因為軍工企業都有域,所以通過域安裝一款軟件是十分容易的。經過權衡,我們決定使用Chrome做為我們軟件的入口。
在企業內部署Chrome其實有三種方式:
1.直接使用Chrome的某一個版本,對此版本進行精簡和簡單的參數配置,或者內置一些自定義的插件,直接進行部署。
優點:技術門檻較低,只需要簡單的精簡安裝文件和配置參數即可。
缺點:無法通過統一的策略管理局域網內所有的部署情況和策略。
2.使用Google提供的Chrome商業版,通過Google提供的商業版可以輕松定制自己企業內部的Chrome,并生成分發文件,同時可以通過配合域策略完成對局域網內的客戶端的行為進行限制。
優點:此版本是11年放出的,一直和多個大型企業緊密合作,相信不久將會形成更加完善的方案,從而在企業級應用市場站穩腳跟。
缺點:需要在線安裝。
3.使用Google的Chrome Frame,一個讓披著IE外殼的Chrome,擁有Chrome的所有性能,只是披著IE的外殼而已。
優點:對于較老一些的企業,而且企業內部又擁有大量的IE時代產物的企業,絕對是一個好選擇。
缺點:需要在線安裝。原有軟件代碼需要修改,才能在用戶瀏覽時使用Chrome模式。
看到痛苦了吧?都需要在線安裝。看來下一步只能開始研究Chrome的源碼,修改并編譯屬于自己的瀏覽器了。。。
最近在做項目的過程中,有些時候需要用Oracle的BLOB/CLOB類型存儲一些很長的文章,一直不知道怎么來進行相關的檢索,經過不懈的努力,終于能夠解決這個問題了。查詢語句如下:
select count(*) from 表名 where dbms_lob.instr(表名.列名, utl_raw.cast_to_raw(convert('關鍵詞','utf8')), 1, 1) > 0;
需要注意的是,這個解決方案只能查詢BLOB/CLOB中存儲的是經過處理的字符串。
本方法在Oracle 10g上測試通過
轉自http://commandos.blog.51cto.com/154976/128732
作為一個技術人員,誰不知道構架?
前一段時間公司找開發人員談心,有位領導問一位開發人員,大致對話如下:
A:“你了解咱們現在產品的構架嗎?能不能談談你對構架的看法?”
B:“… …”
A:“說說看吧~”
B:“我不懂構架!構架是什么?咱們現在的產品還有構架呢?”
作為一個有3年工作經驗,2家公司經歷的VC程序員來說,我覺得,這幾年的積累是白做了!這樣的思想永遠都只能停留在寫程序上~
一個產品沒有構件,就如同一個人沒有靈魂一樣!他不是沒有,只是你沒有去思考,沒有去發現他而已!
我記得袁洪剛說過,“一個偉大的產品背后一定有一個偉大構架師!”,我堅信這一點~產品好壞一方面決定于對現實問題的解決程度,另一方面是構架的好壞!
幾年前,中國的軟件公司里面很少出現構架師/架構師這樣的角色,這幾年開始有改觀了,越來越多的人開始認識到很多錯誤的問題,其實從一開始就是錯的。很多事情并沒有謀定而后動。一味的追求簡單,到最后變成了下線很簡單了!
說自己不知道構架的開發人員有兩種,新手和沒有思想的新手,拼命的同時我們也應該停下腳步想想,抬起頭看看天空。別總把經驗的缺失都歸結于時間的長短,更應該想想自己是否真的積累過。
Wazaabi 2.0 基于 Eclipse3.4/EMF/GEF 的動態界面設計和現實組件,依賴EMF進行界面描述,依賴GEF進行界面顯示。
比較起XUI,XSWT,它的設計器更加的完善,功能比較1.0版本也有很大的提高,而且作者也提出了使用EMF進行數據綁定的思路和實現。
麻煩的是它本身只提供了Fill和Row兩種布局,Button、Text、List、Label這些基本控件。還好作者的文檔功底不錯,簡單幾張圖就把自己的設計思路描述的清清楚楚,高手所為,贊一個!
在它基礎上可以很簡單的進行擴展,而且比擴展VE要簡單的多~這是我喜歡的!現在對它的使用本人還是處于觀望態度,一方面等待它的持續更新,另一方面等待E4的激動人心的放出!
有興趣的朋友可以看看http://www.wazaabi.org/index.php?title=Main_Page
明顯第一種構架比第二種構架好很多,但是我們偏偏在第二種構架上面掙扎了半年的時間。
總是有各種各樣的接口和推辭說業務太復雜,客戶催的太緊,沒辦法把業務放到服務器上,成本太高了!已經是2009年了,10年前大家就意識到維護是關鍵,業務一定要封裝,不能分散于客戶端… …10年后的今天我們竟然還在掙扎!完全沒有思想,完全沒有設計,完全沒有接口,完全沒有OO… …!!!
項目告一段落我要拼命的重構,徹底抽離公共業務,徹底剝離特殊業務,我要OO,我要接口,我要設計,我甚至還要SOA!
我錯了!我認錯!可是為什么公司還有那么多的人還是不認錯呢?做了10年的產品,10年前的東西竟然比10年后的東西還好用!做了10年還是死纏爛打在10年前的原型之上~他們比我更悲哀~
粗心大意,老犯錯!
今天上午在調試EJB3調用WebService時一直遇到MySQL報出的這個問題。郁悶壞了,只是執行了一句update而已,就導致這樣錯誤… …
經過半個小時排查,終于找到問題所在了。原因是分布式事務引起的。
場景描述:
EJB3操作A表-->調用WebService-->WebService操作B表
在操作A表的時候需要等待WebService的調用,如果沒有異常,則可以提交事務,如果出現異常,則不能提交事務;
在操作B表的時候需要處理異常;
一個簡單的分布式事務,一般情況下是沒有問題的~但是由于我的粗心大意,做成了EJB3也在操作B表,這樣就導致了表被鎖死的情況出現~真是郁悶啊!
以前我們的產品重啟RCP應用程序的時候都是找到本地路徑的EXE程序,然后使用:
1
Runtime runtime = Runtime.getRuntime();
2
runtime.exec("cmd.exe /c " + excuteStr );
重新啟動應用程序,太復雜,而且上次打開的參數都會丟失。
今天早上翻看了一下Eclipse的org.eclipse.update.ui CVS,找到了:
PlatformUI.getWorkbench().restart();
使用這個重新啟動RCP應用程序,非常的方便,而且參數都在,即使在開發環境下也一樣沒有問題!
VE已經死亡很久了,整個Eclipse社區中,最悲壯的真的要屬VE了。
偉大的目標,沒落的貴族!記得去年在北京的時候,經常有朋友問我VE怎么安裝。呵呵VE2.0開始安裝真的很復雜,偌大的Eclipse-WIKI里面還真的沒有寫多少關于VE安裝的內容。
去年下載過VE的源碼,打算在VE的基礎上做一個自己的設計工具,但是研究了很久,發現CVS上的源碼都過于陳舊了,然后就再也沒有關注過它了。
很久沒有真正的關注過Eclipse了,今天上來看看,發現VE真的回來了!
現在VE的領導者是深圳的亞松(在西安有分公司,我還真想去試試... ...),而亞松最讓我崇拜的大牛就是Yves YANG,呵呵,EclipseWord的大牛哦!
我在自己公司的產品里面也引入了建模的概念,下一步就是根據模型來生成界面,再下一步就是改造VE,讓二次開發人員開發起來更容易更加簡單。
祝福VE,希望有了亞松,VE會更好。
預告下一個系列文章:
企業信息系統建模的思考;
新VE源碼分析;
我見過最好的軟件界面繪制工具http://www.balsamiq.com/
真正能達到又快又好!
做人何懼艱險,豪情不變年復一年,做人有苦有甜,善惡分開兩邊,都為夢中的明天!
上面這段簽名是抄老莫的,每讀一次都會有不同的體會。
沒有維護Blog已經有兩個多月了,這兩個月一直在北京出差,已經待了兩個月了,還得再待一個月!每次出差離開西安總是感覺不舒服,而且從心里要好長時間才能適應,所以就一直沒有維護Blog。
晚上和一位美女吃飯,聊天中突然聊到了這個問題,仔細想想為什么做什么都覺得沒有意思?為什么會不適應外界環境的改變?為什么覺得一切都不爽?
是因為沒有了激情,最近缺少了激情!缺少了創造的激情,缺少了生活的激情,缺少了工作的激情,缺少了寫Blog的激情... ...
重拾激情,這才是重要的!做人何懼艱險!人生路上本來就充滿了艱險,要勇敢面對,無論是失意還是快樂... ...何必在乎得失,終究一切都會過去!抓緊時間,去實現自己夢想!
老版本的Eclipse多國語言項目只維護到3.2.1版本,以后就再也沒有維護了,我覺得主要的問題是,語言包太大,一個包中會有多種語言,對于RCP版本的產品漢化起來很不舒服,明明我只要中文,結果要加入N個語言進來,而且還是20M的包~
Eclipse的http://download.eclipse.org/eclipse/downloads/最近剛剛放出一個叫做Babel project的項目,這個項目就是在解決國際化的問題,這個項目旨在為每一個插件提供獨立的單語言包,這樣在做RCP項目的時候,可以根據需要,打不同的包就可以了~!
周五的下午測試了一下,漢化率絕對在99%以上,而且很多地方的漢化還是很到位的~再有哪些客戶看不懂的地方的了~
只是有一個很小的麻煩,就是RCP原來的異常對話框中的內容,每一句后面都會有\n,莫非多國語言的時候\n被轉義了?
希望可以得到改進!
Neil Bartlett的當下工作就是完成《OSGi in Practice》,今天他在Blog中已經放出了本書的一個預覽版本(第二章)。一下是書的目錄:
Introduction
First Steps in OSGi
Bundle Dependencies
Introduction to Services
Example: Mailbox Reader GUI
The Whiteboard Pattern
Declarative Services
The Extender Pattern
Integrating Third-party Libraries
Building Web Applications
從PDF的授權看是“署名的,非商業的,可流傳的”,我估計這本書上市的時間應該很近了,而且官方的PDF版本也會同步推出的~
喜歡的朋友可以下下來看看,寫的很詳細,個人認為是本好書,而且此作者應該是Eclipse基金會的人,所以對OSGI的理解也不錯有什么問題~
ps:連接地址:http://neilbartlett.name/blog/osgibook/
SQL文件中有Functions,Type,那么在sqlplus中要start直接執行SQL文件怎么辦?例如:
CREATE OR REPLACE FUNCTION strcat(input varchar2 )
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING strcat_type;
將上面的Functions寫入SQL文件中,然后在sqlplus中用start執行此文件,后果是此Functions并沒有被創建到數據庫中,在后面加上commit;也是沒有用處的,提示的效果是SQL并沒有結束,sqlplus并沒有真正執行。
這怎么辦?Google了老半天,也沒有人寫到這個問題,但是看看人家寫Functions和我寫的有一點點區別,修改一下!
CREATE OR REPLACE FUNCTION strcat(input varchar2 )
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING strcat_type;
/
在Functions最后一行加上一個/,再執行就OK了~看來sqlplus是把/作為一個Functions或者Type的結束符了!大家注意了!
Shell.open()非常重要!
今天在做SWT中顯示OCX控件,照著Demo寫的,但是不知道為什么每次執行到:Variant pVarResult = auto.invoke(dispIdMember, rgvarg);
JVM都會直接退出~error如下:
# # An unexpected error has been detected by HotSpot Virtual Machine: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x73d321b9, pid=3696, tid=2208 # # Java VM: Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode, sharing) # Problematic frame: # C [MFC42.DLL+0x21b9] # # An error report file with more information is saved as hs_err_pid3696.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # [error occurred during error reporting, step 270, id 0xc0000005] |
尋便了網絡也沒有解決辦法,剛開始以為是JVM版本的問題,于是換了3個版本都是同樣的問題~真是郁悶!
最后通過和Demo代碼的比較,發現Demo中有一句shell.open(),注釋掉此句,Demo也是引起JVM退出!在代碼中加入shell.open(),搞定!
原來這個open方法還有這么多的玄機啊,但是javadoc上卻只字未提!
早上看到Google的人肉搜索的招聘廣告,興沖沖的發了郵件,申請,結果:
尊敬的朋友,
非常感謝您在4月1日積極參與谷歌人肉搜索志愿者招聘,這是谷歌于2008年4月1日"愚人節"推出的讓大家"會心一笑 暫解煩憂"的小笑話,在此謹祝大家"愚人節"快樂,天天快樂。
如果您對谷歌公司招聘感興趣,歡迎進一步登錄我們的招聘網站尋找自己真正心儀的職位。http://www.google.cn/intl/zh-CN/jobs/
谷歌肉搜組
Dear Friends,
Thank you very much for your interest in the job positions of Google's "Grassroots search" volunteers on April 1. This is a joke that Google China does on April 1, 2008 to give you some light-hearted mood. Hope you laughed because of it :-). Here, we want to wish everyone "Happy April 1st day and Happy Everyday."
Google Grassroots Search Engineer and Product Group
暈~被欺騙了!寫的跟真的一樣的:
關于人肉搜索
什么是人肉搜索?
人肉搜索與刺青、美白、護膚、減肥等直接在人肉上施行的種種行為無關。顧名思義,人肉搜索就是利用現代信息科技,變傳統的網絡信息搜索為人找人,人問人,人碰人,人擠人、人挨人的關系型網絡社區活動,變枯燥乏味的查詢過程為一人提問、八方回應,一石激起千層浪,一聲呼喚驚醒萬顆真心的人性化搜索體驗。人肉搜索不僅可以在最短時間內揭露某某門背后的真相,為某三某七找到大眾認可的道德定位,還可以在網絡無法觸及的地方,探尋并發現最美麗的叢林少女,最感人的高山牧民,最神秘的荒漠洞窟,最浪漫的終極邂逅…… 人肉搜索追求的最高目標是:不求最好,但求最肉。
谷歌為什么要創建人肉搜索引擎?
谷歌自進入中國市場以來,一直致力于根據本地需求改進用戶的搜索體驗。谷歌很早就意識到,自發的、分散的、有意或無意的人肉搜索行為早在中國互聯網誕生之初就存在并茁壯成長著。中國互聯網界發生的幾乎每一起重大事件,尤其是娛樂性事件,都有可能成為人肉搜索技術的試金石。為了豐富人民群眾的業余文化生活,為了使廣大網民在最短時間內趕超人肉搜索的世界水平,谷歌決定投入巨資打造亞太地區最大的人肉搜索引擎。
谷歌人肉搜索引擎有哪些特點?
- 規模最大:第一期工程擬招募人肉搜索志愿者2500萬名,完成后將成為亞太地區最大的人肉搜索引擎。
- 創新最多:256項專利技術,1024篇相關論文,4096次用戶調研,65536輪預覽版測試。
- 領域最全:搜索范圍涵蓋娛樂、影視、體育、社會、名人、百姓、歷史、地理、物種、太空等領域。
- 速度最快:平均查詢響應時間32秒。
- 挖掘最深:曾在預覽版測試中,用時128秒,成功定位了中國大陸生產的第一只自動沖水馬桶。
人肉搜索招聘需求
人肉搜索志愿者管理專員
組織和領導以志愿者為核心的超大規模人肉搜索團隊,整合來自數千萬搜索志愿者的小道消息,從茫茫人海中發掘信息背后的奧秘。嚴格管理,制止人肉搜索過程中可能出現的扯皮、造假、謠傳、起哄、攻訐、謾罵等不文明行為,創造合理、有序、創新、務實的人肉搜索新秩序。
能力要求:
- 博士以上學歷
- 管理學、傳播學或相關專業畢業
- 掌握五種以上方言
- 有八卦主義精神和凡事不著調作風者優先
請將您的中英文簡歷以文本或HTML的格式發至renrou-jobs@google.com, 并在郵件的標題中注明“人肉搜索志愿者管理專員”。郵件正文請使用中文,所有英文信息請以附件形式提交。
人肉搜索志愿者(兼職)
在業余時間為人肉搜索引擎奉獻智慧、汗水和好心情。利用谷歌研發的人肉搜索平臺,與其他數千萬志愿者并肩工作,使用并行人肉計算的方式,對疑難問題堅持不動搖、不軟弱、不拋棄、不放棄的肉骨茶原則,為廣大網民提供第一手的,帶有人情味兒的,具有震撼力和可傳播性的搜索結果。
能力要求:
- 學歷不限,專業任選
- 有強烈的好奇心和求知欲
- 對常人無法獲取的信息有敏銳的感知能力和打破砂鍋問到底的堅定信念
- 自備聯網電腦一臺,電話機一部,粉筆若干,餐巾紙一箱,《八卦人物風云榜》16開大字本一套共40冊
請將您的中英文簡歷以文本或HTML的格式發至renrou-jobs@google.com, 并在郵件的標題中注明“人肉搜索志愿者(兼職)”。郵件正文請使用中文,所有英文信息請以附件形式提交。
致獵頭公司:對于未簽約的獵頭公司提供的簡歷,谷歌將不支付任何費用。
此次RAP放出了draw2d_in_RAP的Demo,主要展示的是draw2D在RAP框架上的應用,還沒有下載真正的Demo試用,但是從視頻上看,好像是融合了flex來做圖形展示和拖拽,有興趣的朋友可以看看Demo的代碼,然后告訴我~
上次e4放出的基于web的IDE就使用flash作為代碼展示和編輯的編輯器,看來Eclipse社團也感覺到純的js基本上不能完成任務了。
Demo下載地址:http://www.innoopract.com/fileadmin/user_upload/Bilder/Films/draw2d_640x480.mp4
關注過上一篇文章的朋友,基本都對最后說到的微軟要支持SWT的開發提出了不少自己的看法。
下面我們再來看看來自cnBate.com的新聞:
Java程序員們可能會經常遇到Windows下的UI問題,Java程序總是和Windows的外觀統一不起來,特別是Vista,難度更高.
而現在,微軟微軟宣布它將為Eclipse基金會提供了標準的widget工具,這意味著Java將與Windows Presentation Foundation實現互通,允許應用程序原生采用Windows VIsta的外觀.
這也是微軟未來開放計劃的一部分,微軟認為一個日益開放,透明的方式正在出現.之前,微軟還成立了Linux的互操作性實驗室,并與JBoss,Zend Technologies等公司實現了技術合作.
|
微軟真的在開源,不但支持了Linux,而且還來關注SWT,而且還有微軟最近在收購Yahoo!,它最近非常關注開源事業,也許他真的要攪局,也許他真的是想做些事情,也許幾年之后微軟搖身一變真的變成了一個開源斗士了!
微軟更換了首席構架師,他的做事風格在改變,我想微軟是在向開源界證明自己的實力,是想讓人們相信自己,也許過幾年微軟還果真出了一個開源版本的windows了~
早上,習慣性的打開GoogleReader,看看世界的變化。發現Planet Eclipse上已經有參加EclipseCON2008的朋友把Eclipse4.0(簡稱e4)Demo地址以及一些截圖放到Blog上了~我們就來欣賞一下Eclipse的巨大變化吧!

呵呵,是不是很可怕,一個基于web的開發工具?我在Eclipse的Wiki上已經看到這個截圖的Demo了,但是還沒有時間試用~
此次放出的e4的demo基本上都是swt的調整,比方說可以使用swt來做flex,使用swt來做DOJO~,從這些方面就可以看到Eclipse正在向基金會想想的那樣為e4提供一個基于web應用的平臺,我想這個平臺應該就是RAP了~而且從Demo上看,e4將會大大的涉足到web應用領域中,期待他們為我們帶來再一次的驚呼!!!
http://wiki.eclipse.org/E4/Running_the_demos (e4的demo)
還有一個令人振奮的消息,不知道是好事還是壞事-----微軟已經決定進入Eclipse基金會,并打算開始資助SWT項目了。