| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 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 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
開始并沒有關注這么一個購物搜索的東西,以為只是上網按關鍵詞查查東西,昨天無意中看了說明,發現它遠遠不是這么簡單的東西。它有著一般購物搜索無法相提并論的強大功能,那就是——條形碼搜索。
攝像頭對于強大的 Nokia S60 系列手機來說,早已成了標配,掃描條形碼等功能,也早就成為手機很容易完成的功能了,但是卻很少有人把條形碼和網絡進一步結合。有道購物搜索是我看到的第一個完成這樣功能的軟件。其實用起來很簡單,手機有個能自動對焦的攝像頭和能上網就行了,拿攝像頭對準商品條形碼處掃描一下,然后會自動上網搜索相關產品,甚至連拍照鍵都不用按了,一切都是自動完成的。產品數據庫也比較豐富,拿身邊的小東西隨便掃了下,水溶C100,益達木糖醇,各種書籍(書籍的數據庫應該是最全的,手邊的書全部都能找到)。
這是一個相當有創意的產品,當然,這個條形碼數據庫也不是容易得到的,但是這個數據庫和后臺有道搜索結合,就形成了一個非常完美的應用方式,這應該是我看到的讓我眼前一亮的手機軟件之一了。
為了在家里唱K,去拷了個24000首的歌庫,然后配置隨盤送的后羿禮光卡拉OK軟件。或許這個軟件太專業了吧,以至于想隨便配配就能玩不是件容易的事情。用我機子里裝的 KMPlayer 是根本都放不出來的,音樂視頻都是沒有的,然后拿各種播放器一個個試。用了暴風影音(老版本的,新版是垃圾),完美解碼,默認安裝的情況下都是可以出視頻的,聲音是完全沒有的。無奈,只得逐一試下各個選項了,最后發現只有 MPEG2 音頻編碼器設置成 SPDIF 的時候,才會有聲音。之前在網上找的各種解決方案都要注冊,注冊后還沒給你個有效的解決方案,要你重裝系統什么的,還是靠自己吧。估計是做這套軟件的人比較菜,初始化聲音只用了默認的一種音頻解碼方案,而且你還得恰好裝了這個解碼器才行,否則,一個個試吧。
用了軟件以后,就和歌廳的選歌界面很像了,不然這么多歌曲,用手工選也是很痛苦的事了。
另外,我用創新 Audigy ZS 聲卡 + 得勝 TS-6310 無線麥克風 + 黑鉆雙子星XP 音箱 + 軟件歌庫,基本能做一個小小的家庭卡拉OK 中心來玩了。
為了編譯方便我把 servlet-api.jar 和 jsp-api.jar 和其他 jar 包都放在一起,在 ant build 的時候就會一并被拷到 Web 項目的 WEB-INF/lib 下,不過這次因此出現了一個 jsp 頁面的編譯錯誤,所有的 jsp 頁面打開都會在頁面上報編譯錯誤,后臺無任何信息。考慮到 jsp 頁面的編譯可能和 jsp-api.jar 有關,于是將 WEB-INF/lib 下的 servlet-api.jar 和 jsp-api.jar 移走,問題解決。
后來發現放在里面的這兩個包是 tomcat5.5 的,是 JSP 2.0 規范的,而部署的服務器是 tomcat 6.0 是 JSP 2.1 規范的,兩者可能有一定的沖突,才導致這樣的錯誤。
在用 SVN 的時候出現了這樣一個小問題,害得我折騰了半天,一個小小的 s 卻是罪魁禍首。
因為項目路徑切換,需要從 https://server/trunk 切換到 https://server/tag/1, 不過在文檔中后者寫成了 http://server/tag/1,恰好 SVN server 用 HTTP 和 HTTPS 都是可以訪問的,所以沒覺得這個東西有什么錯誤。不過使用 SVN 做 switch 操作的時候卻總是出現 https://server/trunk is not the same repository as http://server/tag/1,感覺很奇怪,問了一下相關負責人,當時也沒有發現什么問題,不過還是沒法操作,最后無意中把 http://server/tag/1 換成了 https://server/tag/1,一切 ok。
被這個問題折磨的比較郁悶了,可能是 SVN repository 不能在 HTTPS 和 HTTP 之間切換吧。
其實嘛,瀏覽器對大多數人來說,都是每天必用的軟件了,不過在國內來說,其實也沒啥懸念,IE 占據了絕大多數的份額,在加上個挑戰者 Firefox 在占據著國內微不足道的份額,在加上 Google Chrome 以及其他份額更少的諸如 Opera 之類的,估計一百個人也找不到一個在用吧。
不過嘛,國內倒是有個不大一樣的地方,我們國人比較善于做殼,于是我們有很多“國產瀏覽器”可以用,最著名的或許要算 Maxthon 遨游了,當然這也是我最喜歡的瀏覽器,也是我上網閑逛必用的瀏覽器,當然了,Maxthon 這個東西嘛不是太穩定,有時候會出現一些莫名其妙的問題,于是換標準的 IE 來用。當然用 Maxthon 也有用 Maxthon 的道理,一個是同步收藏夾,一個是手勢功能,當然還有若干細微的功能也挺不錯,彌補了 IE 的不足吧。不過 Maxthon 不能用 IE 的 Toolbar 和 Plugin 之類的,而獨創了直接的一套插件體系可謂是一大敗筆,于是很多時候為了一些功能,不得不用回 IE,Maxthon 只能成為我瞎逛的首選了。
說到后起之秀 Firefox 嘛,其實說實話,我對它并不感冒,因為它的速度實在不敢讓人恭維,或許 Firefox 讓我唯一感冒的東西是 Tor 和 Firebug 吧。更多時候我選擇用 Chrome 來替代 Firefox,因為 Chrome 夠快,不得不承認,Chrome 是最快的瀏覽器,特別是在對 JS 的處理上,大大優于前兩者。而且啟動還有個訪問頁面列表的大縮略圖,對于我這種懶得輸網址的人來說,可謂是大大的方便,于是 Chrome 成了我逛技術類網站的首選了。
在Java世界里打拼也好幾年了,也看到了各種不同技術的浮浮沉沉,倒是發現了一個簡單的規律,最簡單的東西往往是最有用的,簡單的軟件也是種美。
在 Java Web 領域,曾經有無數各種各樣的框架,Struts1/2,JSF,Echo1/2,Tapestry,Wicket,等等等等了,這么多不同的框架代表了兩個不同的方向,除了 Struts 這個是基于請求的,其他幾個都是算是事件驅動的,但是后面幾個在整個市場上所占的份額也趕不上 Struts 一家。HTTP 請求本來是很簡單的,而 Struts 就是基于這樣簡單的概念,但是卻有無數人希望重現 VB 時代的那種拖拖拉拉的編程方式,希望用事件驅動一切,但是大部分人都失敗了。失敗的原因也其實不那么復雜,有的是不夠成熟,像 JSF 這樣被 Sun 官方大力推崇的框架,但 Ajax 出現的時候,JSF 中想靈活的用 Ajax 都成了一種奢望,有的是資料太少了。像 Echo2 這樣的框架資料,少的跟珍惜保護動物似的。
當然也不是沒有成功的,微軟憑借其強大的開發實力,和開發工具的配合,加上沒有給 ASP.net 用戶更多選擇余地,取得了無人匹敵的成功。但是這個成功在 Java 世界是不會擁有的,Java 世界沒有微軟這樣的巨頭,Java 世界中拿得出手的幾個開發工具,Eclipse,Netbeans,IDEA,在所見即所得的開發上遠遠的落后于 Visual Studio。相比微軟帝國,Java 世界多的是中小型的,開源的工具產品。規模上都遠遠落后于微軟,Java 世界唯一可走的路便是簡單了。對 Java 世界來說,簡單不僅僅是種美,更是生存之道。
起初作為 Java 世界 PK 微軟產品的重頭戲,EJB 在學院派的力捧下誕生了,EJB 似乎從來都不打算讓人活的輕松,一個簡單的東西非得搞的復雜無比才行。而且其持久層 Entity Bean,似乎連基本功能都沒能實現,更別談大規模使用了。EJB 1/2 的時代是開發人員永遠無法忘卻的噩夢。
Java 世界也從來不缺活躍分子,Rod Johnson 這個有種音樂家氣質的牛人憑借自己多年的積累,推出了 Springframework,這樣一個基于 IoC 和 AOP 兩個概念的簡單易用的框架,完成了很多起初只有 EJB 才能完成的工作,Spring 也一夜成名,成為 Java 世界使用最為廣泛的輕量級應用框架。
幾乎是同時,來自澳洲的小帥哥 Gavin King 也在用一種與眾不同的方案去替代現有比較復雜的 Java 持久化方案,最后他的 Hibernate 也成為替代原有 EJB 持久化方案的選擇。相對簡單的 Hibernate 也取得了巨大的成功。
其實這樣的例子在 Java 世界也非常多,以至于后來來自于 Ruby 開發社區的 Ruby on Rails 的出現,給了 Java 開發者當頭一棒,原來還有更簡單的做法哦。于是 Java 世界慢慢的開始對多種腳本語言進行支持,包括 Ruby,以及后來自創的 Groovy。以此去打造類似 RoR 那樣簡單的開放方式。
生活其實是很簡單的,軟件開發其實也是一樣,用簡單的方式,去打造簡單的軟件,Java 世界用無數失敗的教訓證明了這一點。像我呢,也喜歡用這樣簡單的方式去工作,最喜歡 IDEA 去寫代碼,最喜歡 Struts2 + Spring2 + Hibernate3 這套組合,最最喜歡的是簡單,因為簡單是最美的工作方式。
為了實現工作流中對腳本的支持,簡單的玩了一下 BeanShell,這個小小的嵌入式 Java 代碼解釋器可以將 Java 語言像動態腳本一樣執行,幾行命令,它就能把一段 Java 代碼給玩轉。
工作流中有個這樣的簡單案例,當一筆單子金額大于 50萬時,應該將任務分配給 Senior Agent 處理,否則交給 Junior Agent 處理,我們用 BeanShell 簡單模擬這段腳本。
public static void main(String[] args) throws Exception {
Interpreter i = new Interpreter();
i.set(”price”, 1000000);
i.set(”user”, “”);
i.eval(”if(price > 500000)\n” +
“user = \”SeniorAgent\”;\n” +
“else \n” +
“user = \”JuniorAgent\”;”);
System.out.println(i.get(”user”));
}
運行結果是打印出了:SeniorAgent
可以看出,BeanShell 用非常動態化的方式,完成了我們一個簡單的案例的處理,這里,我們只需要將需要解析的 Java 語言的腳本交給 BeanShell 的 Interceptor,并把腳本中用到的參數值傳入,就可以了,最后,我們把運算結果賦給一個變量,然后獲取變量結果,就可以了。
看到 Developer Works 網站上有一篇 BeanShell 實現公式管理的文章:http://www.ibm.com/developerworks/cn/java/l-formula/index.html,可以參考一下。
From: http://www.steadyxp.com/archives/851.html
服務器上用 HttpClient 遠程調用另一臺服務器的一些資源,但是用 netstat 查看經常出現了很多的 CLOSE_WAIT 的連接,最后追查原因,是因為 HttpClient 的 method.releaseConnection() 并不是強制釋放連接,為了減小連接數,使用了如下解決方案。在 HttpClient 完成請求后的 finally 塊里面這么寫。
} finally {
if (method != null) {
try {
method.releaseConnection();
} catch (Exception e) {
logger.error("-------> Release HTTP connection exception:", e);
}
}
if (client != null) {
try {
((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
} catch (Exception e) {
logger.error("-------> Close HTTP connection exception:", e);
}
client = null;
}
}
從淘寶第一個開始屏蔽百度以來,國內很多主流的 SNS 網站和大型的內容性質的網站都開始或即將開始屏蔽百度了,這些網站包括校內網、海內網等國內主要SNS網站,以及搜狐博客、51.com等網站。從SNS社區的說法,他們屏蔽搜索引擎是為了保護用戶的隱私,但更多的是在保護自己的利益,比如說淘寶是在保護其極為客觀的商品信息,而SNS是在保護對其最有價值的用戶信息,特別從搜狐博客來看,更多的是希望提高其搜狗搜索的內容價值,總的來說,東西絕非單純,純粹是一種商業上的運作了,淘寶網敢第一個站出來跟百度斗,其他預謀已久的各大SNS網站跟著后頭就跟著殺出來了。
這段時間百度又跟三鹿奶粉事件牽扯上了一些不清不楚的關系,搞的百度最近也疲于解釋這些事,當然大家也不會真的相信這種解釋了,因為百度在搜索結果人工干預上已經受到非常多的人的抱怨,我們也完全相信百度能干得出這樣的事情,具體是因為這次風險大還是嫌錢少了沒有去做,我們就不得而知了。
附一些主要網站的 robots.txt 文件,證明一下百度是如何被屏蔽的。
http://www.xiaonei.com/robots.txt
# Robots.txt file from http://www.xiaonei.com
# All robots will spider the domain
User-agent:BaiduSpider
Disallow:/
http://blog.sohu.com/robots.txt
User-agent: Googlebot
Disallow:
User-agent: baiduspider
Disallow: /
User-agent: Nutch
Disallow:
User-agent: *
Disallow: /
http://www.taobao.com/robots.txt
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
From: Steady Blog 國內主流SNS開始屏蔽百度
看到在 DBA Notes 的文章(支付寶 + Firefox)說支付寶已經開始支持 Firefox 了。
目前支付寶對 Firefox 支持的說明:
1. 支持 Windows 平臺的 Firefox ,支持版本:Firefox 1.5、2.0、3.x;屆時還將提供自動安裝功能,現在準備嘗試的用戶可以到 Mozilla 站點上下載支付寶安全控件(AliPay Security Control)(也歡迎廣大 Firefox 愛好者在留言中給我們提一些反饋意見);
2. 目前在 Windows 平臺下的 Firefox 下暫時還不提供對安全證書的支持,但是對安全證書的支持已經提上日程;
3. 對 Linux 平臺下 Firefox 的支持已經在內部測試中,預期近期內即可發布;
可以說,這個是網銀及電子支付業務的一大進步,支付寶可以說是第一個支持 Firefox 瀏覽器的支付解決方案,是第一個沒有使用 ActiveX 實現的解決方案,同時,據支付寶方面的說法“我們目前所開發的 Firefox 插件,未做任何修改,就可以較正常運行在蘋果的 Safari,和 Google 的 Chrome 瀏覽器上。經過分析發現,除了接口方案稍有區別,其大體的結構,還有頁面的Embed 標簽等都是兼容的,相信經過后續的改進,為 Firefox 所開發的安全控件和所修改的頁面,只花很小的代價就可以運行在蘋果和谷歌的瀏覽器上”,對于這方面技術的研究,不光是實現了一個功能,更重要的是,證明了在于非 IE 瀏覽器下同樣可以實現類似 ActiveX 的功能,這樣為 Firefox 和 Chrome 瀏覽器的后續發展提供了有力支持,雖然我用的最多的是 IE,但是 Firefox 和 Chrome 都有令我舍棄不得的好用功能,我想在多家瀏覽器競爭中,我們會得到更多更好的東西。阿里巴巴是一個重視技術,重視創新,有遠見的好企業,贊一個,相反,在相同的電子支付領域,國內多數主流銀行的網銀服務在這方面幾乎不做任何技術創新,改進現有蹩腳的產品,讓用戶長期忍著去用他們讓人作嘔的產品,相比較而言,阿里系的主要產品后面都有 UED 的工作,因為用戶才是他們最重要的。
From: Steady Blog - 支付寶終于支持Firefox了