Jim’s blog

May 31, 2005

最近有點累

【11:53 pm By Jim】

今天比較郁悶,好不容易抽空到招行幫Sam轉帳。第一間,嘩!這麽多人;跑到第二間,還好,人不算太多。我的電子證書過期了要重新申請,還要開通自助轉帳,這樣以後需要的話就可以在ATM上直接轉了,人慢慢多了起來,本來想著把錢在櫃台上一並轉的,想想也算了,自助服務開通了待會再在ATM上轉就好了,這個想法沒過一會就讓我郁悶了。B招行櫃台人不多,ATM排隊的卻一堆堆;於是俺很是輕鬆的回到了A招行,因爲那對公的多,ATM上人很少。5分鍾後我下巴掉了下來,ATM上轉帳的收款方居然也要開通相應的服務才能接受ATM上的過帳….先生…麻煩您,幫我問候一下這個系統的設計者的娘親,順便再問問,他的腦子曾幾何時是不是進過水了…….謝謝。

於是我不得不再跑去C招行,直接在櫃台上把帳給轉了,這時發現城市發達還是有好處的,兩個相鄰的十字路口上,有三間招行,對了,還有四間KFC,MD。

回來啓用新的電子證書後,在系統內給招行留了言,把這些缺點和不滿說了一通,簡單點說就是很客氣的把他們罵了一頓,天氣熱,心火盛,人比較煩躁~

Spam

【11:52 am By Jim】

TMD,打開郵箱,這樣的垃圾一堆

May 30, 2005

生日的電子銀行

【11:42 pm By Jim】

連續四天,累死我了。

晚上吃完例牌的牛肉面+綠荳,去一品軒給Sam訂了個蛋糕,Counter的那個湘潭妹子咯咯的笑個不停,使勁的給我推薦一些心形的蛋糕,還說我真體貼真細心什麽的,大哥,拜托,憲法可沒有規定說訂蛋糕給Suprise一定就是對戀人的好不好,真受不了。我訂了這個:


生日啊生日,兒童節生日的人叻。寫上了Annie的名字,告訴小姐6月1號晚上9點後送過去,那樣Sam剛好回到家,Suprise ̄_ ̄ 這樣他就可以和Annie兩人一起浪漫一番了,媽的,我對朋友真好,自己先感動一下

晚上時間比較趕,沒來得及去櫃台幫Sam轉帳,回來後又發現以前backup的招行電子證書已經過期了,網銀用不了了,氣死,明天還得抽空去招行一趟,轉帳,申請新的電子證書,郁悶,以方便爲目標的不方便的電子銀行~

滿載

【1:21 am By Jim】

白天上課,晚上打球,半夜宵夜,滿載了,累死了。

進程線程了一個早上,餓得半死,馬上跑了去家家外甥打燈籠-照舅(舊),牛肉面+綠荳,這個我怎麽好像怎麽吃都不煩的叻?奇怪的叔叔~

回到課室眼前一亮,睡得東倒西歪的挨踢精英中,赫然出現了一個MM,一個PLMM,一個穿超超超短褲的PLMM,一個穿超超超短褲的長腿PLMM,一個穿超超超短褲的雪白長腿PLMM,一個穿超超超短褲的雪白長腿長髮PLMM,Oh..My…這這這是怎麽回事?福利嗎?

結果後來才知道人家是學IELTS的,走錯了

下午繼續進程線程調度,調了一天,有些暈,最近大概是休息不夠,真的有點累了,於是我決定晚上去打球,只有在球場,我才會一種說不出來的平靜感覺,什麽也不想,很舒服。

回去隨便的結束了一個吃飯的進程….天,計算機學傻了。吃完飯就和Sam去了體育館,高人的舊場還沒整修完,繼續所謂的“新”場,碰到了很多熟人,熟了的人帶來了幾個新面孔,幾個190cm上下的矮子,據說是廣體籃球專項的,嗯咯,暉的帥弟叻。可惜水平實在是…….白長那麽高了。

打完球後狂餓,上次帶Sam吃了沙縣的小吃後他狂愛,於是今晚的宵夜成了沙縣雲吞、蒸餃+潮洲砂鍋粥,趕場子似的。

吃完上山頂走了一會,Sam忽然說了很多關於結婚的東東,當然這丫除了幸福的東東也就沒什麽好說的了,我似乎已經沒什麽感覺了,可能是因爲壓根就沒有這打算了吧。

May 28, 2005

碧波盪漾的528

【11:38 pm By Jim】

原來十塊的排骨面還沒有八塊的牛肉面吃得飽,我可憐的兩塊錢啊~

還是第一次在家家看到川妹子,長沙人的地方看到重慶人感覺有些怪怪的。
於是中午吃面的時候就裏一層川外一層湘的被層層美女圍著,碗內剁椒片片,碧波盪漾;碗外唇紅齒白,波濤洶湧。如果再待久一點,恐怕我的剁椒排骨面加上我不止的鼻血就要成毛血旺了。這裏居高不下的離婚率原來是事出有因的,其實只要夏天隨便往街上一走就會明白了,罪惡的夏天啊…….阿彌陀佛~

May 27, 2005

JSP中文問題的解決方案

【11:28 pm By Jim】

JSP很贊,這點地球人都知道。對於小型項目,可以像PHPASP一樣作爲純腳本語言使用,極大的提高開發效率;大中型的項目,有Servlet做爲filter、controller,組件有JavaBeanEJB,再結合XML,成爲了靈活而強大的J2EE,再加上它的平台無關性,Wooooo….這個世界清靜了。

好了,YY完畢,該批鬥它了,靈活和強大的另一面,也正意味著它的門檻高,很難學(當然如果你只用JSP,就當我沒說過好了,不過我想你不會那麽笨吧…);另一方面就是localize的問題,發明Java的是使用26個字母的人,不是使用雙字節中文的我們,所以本地化問題也就順理成章的成爲了我們使用JSP的其中一個障礙。

要解決JSP的中文問題,首先就要先了解JSP。我們知道JSP需要Container來裝載運行,Container的其中一項重要功能就是把JSP轉換成Servlet然後編譯成class執行,也就是說JSP本質上就是Servlet,一個純正的B/S(Browser/Server)架構,所以要解決它的中文問題,就得從Browser和Server這兩個方面入手,然後Browser和Server要通信對不?那就是要傳遞了?Yeah,所以這個中間環節也不要忽略,現在先來總結一下我們需要面對的問題:

  • Client端對中文的處理:Browser
  • Server端對中文的處理:Server
  • Browser/Server間交互的處理

好了,現在可以著手解決問題了。要正確的顯示某種字符集,那就得對各各環節統一編碼。對於中文,我們可以使用國內的GB2312GBK(非標准)、GB18030這幾種編碼,繁體?別擔心,GBKGB18030可以兼容BIG5。但是,GB2312太小,GBKGB2312的擴展而不是標准編碼,GB18030太新,並沒有獲得廣泛的支持,所以現在國內使用最廣泛的還是GB2312。Poor~如果有幸又很不幸,你的系統有法國、德國、俄羅斯、日本、韓國….的用戶使用,那麽情況會更糟糕些,Hey,別擔心,可以解決的,我們有Unicode:)

目前Unicode在Web端使用的最多的是UTF-8,它可以保證系統對多語言的正確處理,下面就來看看怎樣用它來解決煩人的中文問題。

(1)Client端對中文的處理:Browser
把它放在第一位是因爲它最簡單最好解決,不至於把人嚇跑:)
只需要在你的頁面內指定Encoding,告訴Browser使用哪種Encoding顯示就行了,一行代碼可以搞定。

 <%@page contentType=”text/html; charset=UTF-8″%>

上面的代碼加在首行,它告訴Browser,該頁面的內容類型是“text/html”,使用“UTF-8”字符集顯示,用於視圖層,這條代碼是JSP頁面專用的,和靜態頁面中meta的content、charset作用是一樣的。

如果你想保險些,可以連meta也用上,沒有問題。

(2)Server端對中文的處理:Server
Server端的處理也很簡單,只需在頁面的起始位置加上:

 <%@page pageEncoding=”UTF-8″%>

指定Server端使用“UTF-8”編碼集來處理JSP內的Java代碼(其實也就是Servlet)。

(3)Browser/Server間交互的處理
做完上面的兩步,你的JSPServlet就可以使用UTF-8編碼集進行正確的中文處理了,但還僅限於獨立、沒有交互的單個JSPServlet。系統需要交互,所以最後我們要解決的就是頁面間的交互問題。

JSP之間的交互是由Container來完成的,而TomcatResin默認使用的都是ISO8859,所以使用雙字節的字符就會出現煩人亂碼,對了,如果將這個默認的編碼另行指定,就可以解決了。JSP中可以用request.setCharacterEncoding來進行指定。只需要在兩個傳遞的頁面內加入:

 <%request.setCharacterEncoding(”UTF-8″);%>

很簡單吧,一行就OK了。不過….也很笨。譬如說,你有一個現成的系統需要進行這樣的更改,裏面又有一千幾百個頁面,那麽你….

Take is easy!有Jim在,我們可以寫一個Filter來解決這個問題:)我寫了一個:

 /*
  * @author Jim
  * @version 1.0
  * RequestEncodingFilter.java
  * ToDo: To filter the parameter sent by jsp pages, encode them into customize
  * encoding instead of system’s “ISO8859-1″ encoding.
  */

 package cn.jwing.cms.common;

 import java.io.*;
 import javax.servlet.*;
 import javax.servlet.http.*;

 public class RequestEncodingFilter implements Filter {
     String charset = null;

     public void init(FilterConfig config) throws ServletException {
         charset = config.getInitParameter(”charset”);
         if (charset == null) charset = “UTF-8″;
     }

     public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException,ServletException {
         request.setCharacterEncoding(charset);
         chain.doFilter(request, response);
     }
     public void destroy() {
     }
 }

把它扔到classes下,在web.xml中加入相應的servlet、filter項就行了,Simple:)

到此爲止,你的系統已經可以正確的處理中文了(其實應該說什麽文都沒問題了),結束?No!還有最基本的一點要說一下,相信無論是高手還是低手,都很有可能在這點上疏忽了,就是Editor/IDE的默認文件編碼!這也是最根本的一點,可別把系統想得那麽聰明,會幫你自動進行轉碼的工作,計算機可是最笨的。如果你編輯産生的文件,根本就不是UTF-8而是系統默認的GBK或是CP1252之流,那麽上面所做的一切,都是無用功。所以在做上面的三步之前,先確認你的Editor/IDE支持並使用UTF-8

最後總結一下,解決方案的四個要點:

  • Browser端Encoding的指定
  • Server端Encoding的指定
  • 頁面間傳輸的Encoding的指定
  • Editor/IDE Encoding的指定

好了,收工~
Good luck

May 26, 2005

AC Sucks

【11:20 pm By Jim】

TMD,老子捧哪隊哪隊就輸,上半場3:0領先完全是壓著Liverpool來打的,簡直就是不同級別的比賽,讓人很難想像Liverpool是怎麽走進Final的,可下半場…….

如果說下半場Gerrard第一粒的入球只是Milan大意之下的意外的話,那麽下半場Milan的表現又算是什麽呢?判若兩隊,我無法想像這是一支站在世界足壇最頂尖位置的俱樂部,無法想像這是衆多出色的頂級巨星合作多年早已默契無間的足壇巨人,但Milan卻讓我們看到了,Suck!

我得承認我不喜歡Liverpool,甚至整個英超,又或者應該說是傳統的英式足球,盡管現今裏面的英式元素已經不算太多了。可是今天Liverpool的表現,是讓人尊敬的,沒人可以想像在歐洲最頂級的冠軍杯決賽上,上半場就給灌3粒球會是什麽樣的一種感覺,絕望?放棄?可在Liverpool的字典裏似乎沒有這些字,如果不看比分,沒人會知道這是一支落後3球的球隊。而Milan在下半場,尤其是被追平之後,完全成了一支業餘球隊,像隻鬥敗了的公雞,加時賽結束的哨聲一響,我已經知道這樣的意大利人是不可能在12碼中勝出的。果然,Liverpool就像它們的不死鳥一樣,憑著頑強的意志和永不服輸的精神,把冠軍杯帶回了英格蘭,Gerrard完全憑著一已之力,挽救了Liverpool,把紅軍送上了天堂。

這是一支讓人敬畏的偉大球隊。

嗯,這個杯,二千九百萬歐元。








Next Page »

This work is licensed under a Creative Commons License .
Get free blog up and running in minutes with Blogsome | Theme designs available here