| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
31 | 1 | 2 | 3 | 4 | 5 | 6 | |||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
開(kāi)始并沒(méi)有關(guān)注這么一個(gè)購(gòu)物搜索的東西,以為只是上網(wǎng)按關(guān)鍵詞查查東西,昨天無(wú)意中看了說(shuō)明,發(fā)現(xiàn)它遠(yuǎn)遠(yuǎn)不是這么簡(jiǎn)單的東西。它有著一般購(gòu)物搜索無(wú)法相提并論的強(qiáng)大功能,那就是——條形碼搜索。
攝像頭對(duì)于強(qiáng)大的 Nokia S60 系列手機(jī)來(lái)說(shuō),早已成了標(biāo)配,掃描條形碼等功能,也早就成為手機(jī)很容易完成的功能了,但是卻很少有人把條形碼和網(wǎng)絡(luò)進(jìn)一步結(jié)合。有道購(gòu)物搜索是我看到的第一個(gè)完成這樣功能的軟件。其實(shí)用起來(lái)很簡(jiǎn)單,手機(jī)有個(gè)能自動(dòng)對(duì)焦的攝像頭和能上網(wǎng)就行了,拿攝像頭對(duì)準(zhǔn)商品條形碼處掃描一下,然后會(huì)自動(dòng)上網(wǎng)搜索相關(guān)產(chǎn)品,甚至連拍照鍵都不用按了,一切都是自動(dòng)完成的。產(chǎn)品數(shù)據(jù)庫(kù)也比較豐富,拿身邊的小東西隨便掃了下,水溶C100,益達(dá)木糖醇,各種書(shū)籍(書(shū)籍的數(shù)據(jù)庫(kù)應(yīng)該是最全的,手邊的書(shū)全部都能找到)。
這是一個(gè)相當(dāng)有創(chuàng)意的產(chǎn)品,當(dāng)然,這個(gè)條形碼數(shù)據(jù)庫(kù)也不是容易得到的,但是這個(gè)數(shù)據(jù)庫(kù)和后臺(tái)有道搜索結(jié)合,就形成了一個(gè)非常完美的應(yīng)用方式,這應(yīng)該是我看到的讓我眼前一亮的手機(jī)軟件之一了。
為了在家里唱K,去拷了個(gè)24000首的歌庫(kù),然后配置隨盤送的后羿禮光卡拉OK軟件。或許這個(gè)軟件太專業(yè)了吧,以至于想隨便配配就能玩不是件容易的事情。用我機(jī)子里裝的 KMPlayer 是根本都放不出來(lái)的,音樂(lè)視頻都是沒(méi)有的,然后拿各種播放器一個(gè)個(gè)試。用了暴風(fēng)影音(老版本的,新版是垃圾),完美解碼,默認(rèn)安裝的情況下都是可以出視頻的,聲音是完全沒(méi)有的。無(wú)奈,只得逐一試下各個(gè)選項(xiàng)了,最后發(fā)現(xiàn)只有 MPEG2 音頻編碼器設(shè)置成 SPDIF 的時(shí)候,才會(huì)有聲音。之前在網(wǎng)上找的各種解決方案都要注冊(cè),注冊(cè)后還沒(méi)給你個(gè)有效的解決方案,要你重裝系統(tǒng)什么的,還是靠自己吧。估計(jì)是做這套軟件的人比較菜,初始化聲音只用了默認(rèn)的一種音頻解碼方案,而且你還得恰好裝了這個(gè)解碼器才行,否則,一個(gè)個(gè)試吧。
用了軟件以后,就和歌廳的選歌界面很像了,不然這么多歌曲,用手工選也是很痛苦的事了。
另外,我用創(chuàng)新 Audigy ZS 聲卡 + 得勝 TS-6310 無(wú)線麥克風(fēng) + 黑鉆雙子星XP 音箱 + 軟件歌庫(kù),基本能做一個(gè)小小的家庭卡拉OK 中心來(lái)玩了。
為了編譯方便我把 servlet-api.jar 和 jsp-api.jar 和其他 jar 包都放在一起,在 ant build 的時(shí)候就會(huì)一并被拷到 Web 項(xiàng)目的 WEB-INF/lib 下,不過(guò)這次因此出現(xiàn)了一個(gè) jsp 頁(yè)面的編譯錯(cuò)誤,所有的 jsp 頁(yè)面打開(kāi)都會(huì)在頁(yè)面上報(bào)編譯錯(cuò)誤,后臺(tái)無(wú)任何信息。考慮到 jsp 頁(yè)面的編譯可能和 jsp-api.jar 有關(guān),于是將 WEB-INF/lib 下的 servlet-api.jar 和 jsp-api.jar 移走,問(wèn)題解決。
后來(lái)發(fā)現(xiàn)放在里面的這兩個(gè)包是 tomcat5.5 的,是 JSP 2.0 規(guī)范的,而部署的服務(wù)器是 tomcat 6.0 是 JSP 2.1 規(guī)范的,兩者可能有一定的沖突,才導(dǎo)致這樣的錯(cuò)誤。
在用 SVN 的時(shí)候出現(xiàn)了這樣一個(gè)小問(wèn)題,害得我折騰了半天,一個(gè)小小的 s 卻是罪魁禍?zhǔn)住?/span>
因?yàn)轫?xiàng)目路徑切換,需要從 https://server/trunk 切換到 https://server/tag/1, 不過(guò)在文檔中后者寫成了 http://server/tag/1,恰好 SVN server 用 HTTP 和 HTTPS 都是可以訪問(wèn)的,所以沒(méi)覺(jué)得這個(gè)東西有什么錯(cuò)誤。不過(guò)使用 SVN 做 switch 操作的時(shí)候卻總是出現(xiàn) https://server/trunk is not the same repository as http://server/tag/1,感覺(jué)很奇怪,問(wèn)了一下相關(guān)負(fù)責(zé)人,當(dāng)時(shí)也沒(méi)有發(fā)現(xiàn)什么問(wèn)題,不過(guò)還是沒(méi)法操作,最后無(wú)意中把 http://server/tag/1 換成了 https://server/tag/1,一切 ok。
被這個(gè)問(wèn)題折磨的比較郁悶了,可能是 SVN repository 不能在 HTTPS 和 HTTP 之間切換吧。
其實(shí)嘛,瀏覽器對(duì)大多數(shù)人來(lái)說(shuō),都是每天必用的軟件了,不過(guò)在國(guó)內(nèi)來(lái)說(shuō),其實(shí)也沒(méi)啥懸念,IE 占據(jù)了絕大多數(shù)的份額,在加上個(gè)挑戰(zhàn)者 Firefox 在占據(jù)著國(guó)內(nèi)微不足道的份額,在加上 Google Chrome 以及其他份額更少的諸如 Opera 之類的,估計(jì)一百個(gè)人也找不到一個(gè)在用吧。
不過(guò)嘛,國(guó)內(nèi)倒是有個(gè)不大一樣的地方,我們國(guó)人比較善于做殼,于是我們有很多“國(guó)產(chǎn)瀏覽器”可以用,最著名的或許要算 Maxthon 遨游了,當(dāng)然這也是我最喜歡的瀏覽器,也是我上網(wǎng)閑逛必用的瀏覽器,當(dāng)然了,Maxthon 這個(gè)東西嘛不是太穩(wěn)定,有時(shí)候會(huì)出現(xiàn)一些莫名其妙的問(wèn)題,于是換標(biāo)準(zhǔn)的 IE 來(lái)用。當(dāng)然用 Maxthon 也有用 Maxthon 的道理,一個(gè)是同步收藏夾,一個(gè)是手勢(shì)功能,當(dāng)然還有若干細(xì)微的功能也挺不錯(cuò),彌補(bǔ)了 IE 的不足吧。不過(guò) Maxthon 不能用 IE 的 Toolbar 和 Plugin 之類的,而獨(dú)創(chuàng)了直接的一套插件體系可謂是一大敗筆,于是很多時(shí)候?yàn)榱艘恍┕δ埽坏貌挥没?IE,Maxthon 只能成為我瞎逛的首選了。
說(shuō)到后起之秀 Firefox 嘛,其實(shí)說(shuō)實(shí)話,我對(duì)它并不感冒,因?yàn)樗乃俣葘?shí)在不敢讓人恭維,或許 Firefox 讓我唯一感冒的東西是 Tor 和 Firebug 吧。更多時(shí)候我選擇用 Chrome 來(lái)替代 Firefox,因?yàn)?Chrome 夠快,不得不承認(rèn),Chrome 是最快的瀏覽器,特別是在對(duì) JS 的處理上,大大優(yōu)于前兩者。而且啟動(dòng)還有個(gè)訪問(wèn)頁(yè)面列表的大縮略圖,對(duì)于我這種懶得輸網(wǎng)址的人來(lái)說(shuō),可謂是大大的方便,于是 Chrome 成了我逛技術(shù)類網(wǎng)站的首選了。
上午看完變形金剛,這樣的娛樂(lè)大片看了感覺(jué)就是很爽,不用為復(fù)雜的情節(jié)去思考,緊張刺激的情節(jié)中不乏幽默,最有意思是看到我們公司(Cisco Webex)在變形金剛2里做的遠(yuǎn)程戀愛(ài)系統(tǒng)的廣告。在Java世界里打拼也好幾年了,也看到了各種不同技術(shù)的浮浮沉沉,倒是發(fā)現(xiàn)了一個(gè)簡(jiǎn)單的規(guī)律,最簡(jiǎn)單的東西往往是最有用的,簡(jiǎn)單的軟件也是種美。
在 Java Web 領(lǐng)域,曾經(jīng)有無(wú)數(shù)各種各樣的框架,Struts1/2,JSF,Echo1/2,Tapestry,Wicket,等等等等了,這么多不同的框架代表了兩個(gè)不同的方向,除了 Struts 這個(gè)是基于請(qǐng)求的,其他幾個(gè)都是算是事件驅(qū)動(dòng)的,但是后面幾個(gè)在整個(gè)市場(chǎng)上所占的份額也趕不上 Struts 一家。HTTP 請(qǐng)求本來(lái)是很簡(jiǎn)單的,而 Struts 就是基于這樣簡(jiǎn)單的概念,但是卻有無(wú)數(shù)人希望重現(xiàn) VB 時(shí)代的那種拖拖拉拉的編程方式,希望用事件驅(qū)動(dòng)一切,但是大部分人都失敗了。失敗的原因也其實(shí)不那么復(fù)雜,有的是不夠成熟,像 JSF 這樣被 Sun 官方大力推崇的框架,但 Ajax 出現(xiàn)的時(shí)候,JSF 中想靈活的用 Ajax 都成了一種奢望,有的是資料太少了。像 Echo2 這樣的框架資料,少的跟珍惜保護(hù)動(dòng)物似的。
當(dāng)然也不是沒(méi)有成功的,微軟憑借其強(qiáng)大的開(kāi)發(fā)實(shí)力,和開(kāi)發(fā)工具的配合,加上沒(méi)有給 ASP.net 用戶更多選擇余地,取得了無(wú)人匹敵的成功。但是這個(gè)成功在 Java 世界是不會(huì)擁有的,Java 世界沒(méi)有微軟這樣的巨頭,Java 世界中拿得出手的幾個(gè)開(kāi)發(fā)工具,Eclipse,Netbeans,IDEA,在所見(jiàn)即所得的開(kāi)發(fā)上遠(yuǎn)遠(yuǎn)的落后于 Visual Studio。相比微軟帝國(guó),Java 世界多的是中小型的,開(kāi)源的工具產(chǎn)品。規(guī)模上都遠(yuǎn)遠(yuǎn)落后于微軟,Java 世界唯一可走的路便是簡(jiǎn)單了。對(duì) Java 世界來(lái)說(shuō),簡(jiǎn)單不僅僅是種美,更是生存之道。
起初作為 Java 世界 PK 微軟產(chǎn)品的重頭戲,EJB 在學(xué)院派的力捧下誕生了,EJB 似乎從來(lái)都不打算讓人活的輕松,一個(gè)簡(jiǎn)單的東西非得搞的復(fù)雜無(wú)比才行。而且其持久層 Entity Bean,似乎連基本功能都沒(méi)能實(shí)現(xiàn),更別談大規(guī)模使用了。EJB 1/2 的時(shí)代是開(kāi)發(fā)人員永遠(yuǎn)無(wú)法忘卻的噩夢(mèng)。
Java 世界也從來(lái)不缺活躍分子,Rod Johnson 這個(gè)有種音樂(lè)家氣質(zhì)的牛人憑借自己多年的積累,推出了 Springframework,這樣一個(gè)基于 IoC 和 AOP 兩個(gè)概念的簡(jiǎn)單易用的框架,完成了很多起初只有 EJB 才能完成的工作,Spring 也一夜成名,成為 Java 世界使用最為廣泛的輕量級(jí)應(yīng)用框架。
幾乎是同時(shí),來(lái)自澳洲的小帥哥 Gavin King 也在用一種與眾不同的方案去替代現(xiàn)有比較復(fù)雜的 Java 持久化方案,最后他的 Hibernate 也成為替代原有 EJB 持久化方案的選擇。相對(duì)簡(jiǎn)單的 Hibernate 也取得了巨大的成功。
其實(shí)這樣的例子在 Java 世界也非常多,以至于后來(lái)來(lái)自于 Ruby 開(kāi)發(fā)社區(qū)的 Ruby on Rails 的出現(xiàn),給了 Java 開(kāi)發(fā)者當(dāng)頭一棒,原來(lái)還有更簡(jiǎn)單的做法哦。于是 Java 世界慢慢的開(kāi)始對(duì)多種腳本語(yǔ)言進(jìn)行支持,包括 Ruby,以及后來(lái)自創(chuàng)的 Groovy。以此去打造類似 RoR 那樣簡(jiǎn)單的開(kāi)放方式。
生活其實(shí)是很簡(jiǎn)單的,軟件開(kāi)發(fā)其實(shí)也是一樣,用簡(jiǎn)單的方式,去打造簡(jiǎn)單的軟件,Java 世界用無(wú)數(shù)失敗的教訓(xùn)證明了這一點(diǎn)。像我呢,也喜歡用這樣簡(jiǎn)單的方式去工作,最喜歡 IDEA 去寫代碼,最喜歡 Struts2 + Spring2 + Hibernate3 這套組合,最最喜歡的是簡(jiǎn)單,因?yàn)楹?jiǎn)單是最美的工作方式。