2007/6/21

不舉 的左手

應該是職業傷害的關係,長久以來,我的肩膀總會覺得酸痛,還常常落枕,最近,左手肩膀又開始出毛病了,現在在左手上胳臂跟肩膀的連接處不是酸痛而是有一點刺痛,這是不是五十肩的症狀?我開始試著在沒事的時候將左手往上舉高,也稍微繞繞肩膀,不知道會不會有幫助。

不僅僅肩膀有問題,我可以感覺得到,因為長期低頭面對電腦銀幕的關係,我的脖子兩側因缺乏運動而覺得很緊,這或許是靜態工作者的原罪。現在的社會要求「專業」,但專業的成份得要一分努力一分收穫,得花時間培養這種專業,而經過了這麼久的時間,讓我們的生活養成習慣,可以為了一個搞不清楚為甚麼的bug,一直坐著想辦法解決問題,這是一種不可避免的惡性循環。

公司提供健康檢查的機會,希望大家注意身體健康,但治標不能治本,其實得要更積極地要求工程師,每1~2小時,就強迫離開電腦銀幕,離開座位10分鐘,看看窗外遠方,讓視線與心情暫時跳離一行一行的程式碼。

ps.
才剛解決weblogic與tomcat中,getRealPath的差異(以getResourceAsStream取代),又發現Hibernate 3跟weblogic中舊版的ANTLR相衝這個大問題,得儘快解決。

weblogic這麼昂貴的AP server,在我們的伺服器上卻得耗掉200~300MB的記憶體,速度很慢跑不大動,每一次重開Server就得花掉5 mins(還是Tomcat好用多了),又遇上Hibernate的大問題,真的很麻煩,功能多了反而問題更多,這似乎又是軟體的另一樁原罪。

2007/6/14

Anti-Hack 的解決方案

要對付XSS, SQL injection,How to add validation logic to HttpServletRequest這個網站提供了一個包裝HttpServletRequestWrapper的方式,可以封裝HttpServletRequest,然後再以filter的方式,把這個wrapper套用到 /* 所有網址上。

這篇文章提到的canonicalize與HTMLEntityEncode,我們並沒有採用,其實我還不大瞭解canonicalization的原理,或許在瞭解後會加上去。我們是利用regular expression pattern matching的方式,將一些已知基本的攻擊字元替代掉,也就是這篇文章BadInputFilterValve.java提到的方式,直接用String.replaceAll的方法,將reqest裡的參數都處理掉,把 \" 取代成 " ,把 document(.*)\\.(.*)cookie 取代成 document.cookie 。

2007/5/30

Anti-Hack how to??

最近遇到最棘手的事情,算是要提昇web app的防駭等級,網路上可找到的攻擊資料比較多,Input Validation Modules這個網站還提供視訊的攻防教學,XSS (Cross Site Scripting) Cheat Sheet列出了很多XSS的攻擊檢測方法。

但想要為自己的web app作防駭的時候,卻一直找不到適當的XSS與SQL injection的Regular Expression,用來放在filter上過濾所有user的request parameters,.NET很貼心地提供了 validateRequest設定選項來幫助programmer杜絕駭客,而Java Solution在哪裡,我還找不到......

http://blogged-on.de/xss提供了一個XSS攻擊的遊戲,讓你試著找到XSS攻擊的輸入資料方式,據說有六關,目前我只過到第三關....通往第二關的密碼是:stage2,通往第三關的密碼是:closing_brackets

2007/5/9

日巡者 by 盧基揚年科 & 瓦西里耶夫

這是光明與黑暗之間的競爭,看完日巡者讓我覺得有些故事的情節過程很奇怪,但奇幻、科幻故事就是要在特殊的基本設定上,把不可能的事情寫出來,還要讓讀者覺得理所當然,這就得靠作者過人的寫作功力了。

第一篇閒人莫入,篇名讓我搞不清楚是在講什麼事情。故事的內容是在說,黑暗女巫阿莉莎在「夜巡者」的最後一篇中,沒頭沒腦地非法使用稜鏡之後,這位薩武龍的愛人失寵了,後來在這次跟光明法師對抗,劫走達莉亞的過程中,阿莉莎釋放了最後一丁點的法力,幫助日巡隊成功完成任務,後來才在薩武龍的指引下來到了阿爾捷克營隊,吸收孩子們的惡夢恢復法力。

在營隊的時候,沒有法力的一般人阿莉莎,邂逅伊格爾,兩個人互相吸引,但卻在阿莉莎完全恢復法力的時候,他發現伊格爾也同時恢復了法力,進入幽界,原來伊格爾是個光明法師,他也參與了先前光明與黑暗對抗的戰事而失去法力,伊格爾是來吸收孩子們的快樂情緒。

伊格爾認為黑暗女巫阿莉莎一定是故意設下了陷阱,伊格爾的悲憤讓他失去理智,要求與阿莉莎對決,在最後,阿莉莎呼叫薩武龍的時候,她發現這一切都是圈套,她不過只是薩武龍的棋子,「愛情是偉大的力量」,原以為薩武龍的愛情會幫助她打成平手,卻發現愛情的力量也會生恨,伊格爾的恨意急著想要將對方殺死,阿莉莎終於明白了。

閒人莫入指的應該是黑暗與光明法師對決的時候,應該是閒人莫入的,但迷戀阿莉莎的馬卡爾衝了進來,也付出了代價。

第二篇異界外人,光明界獲得了斯薇塔大法師的協助,頓時使得光明與黑暗之間的實力失衡,幽界為了平衡光明與黑暗之間的拉鋸實力,產生了一個超凡人維塔利,這個憑空出現的超凡人並不清楚他為甚麼這樣,只單純地聽從心裡面聽到的那個聲音的指示,他是鏡子,為了抗衡斯薇塔而產生的鏡子,在途中甚至獲得了「法夫尼爾的指甲」吸收法力。

一連串的違法事件發生了,準備召開法庭做出判決,薩武龍勸安東不要出席,去的話,安東會失去斯薇塔,不去的話,鏡子會吸光斯薇塔的法力,這暫時失去的法力,會平衡黑暗與光明之間的勢力,安東可以得到斯薇塔的愛情,也會停止損失光明法師/朋友的這一連串事件,「要幫助自己,得先幫助敵人」。

在鏡子維塔利帶著跟安東一樣的隨身聽踏入法庭的一瞬間,鏡子明白了,這不過是讓斯薇塔誤認她失去了安東的假象,大審判官雖然心知肚明,但選擇沉默。斯薇塔的法力消失了,安東毫髮無傷的出現,讓斯薇塔喜出望外,薩武龍滿意地向安東致謝,大審判官馬克西姆認定維塔利不受大和約管束,宣告會議結束。

斯薇塔失去了法力,為甚麼不能像伊格爾與阿莉莎一樣,吸收孩子們的快樂情緒來恢復法力,難道大法師比不上一個二級或三級的法師嗎?

第三篇超凡法力的一開始,蓋瑟與安東討論先前審判會議的狀況,安東向蓋瑟說明,如果不讓鏡子毀滅斯薇塔,就是讓她失去法力,要不就是斯薇塔的死,要不就是更多光明隊員的死,最好的選擇,當然是讓斯薇塔暫時失去法力。蓋瑟最生氣的,就是光明勢力無法擴張,而且最近三次鏡子出現的時候,都是站在黑暗那邊。

蓋瑟希望安東帶著伊格爾參加法庭,薩武龍要艾德加出庭,捍衛偷取法夫尼爾的指甲的雷金兄弟會,兩隊人馬都漸漸地推理出,讓法夫尼爾復活的要件與儀式,四個不同膚色的兄弟會成員,一個要跟法夫尼爾交換的艾德加,薩武龍的陰謀當然被拆穿了,但薩武龍似乎並沒有很驚訝,因為大家都已經預見這件事了,究竟薩武龍與蓋瑟兩邊的目的是什麼,可能在第三部才知道結果。斯薇塔成為光明救世主的母親似乎是眾所皆知的事了。

最後是伊格爾與阿莉莎的對決審判,阿莉莎暫時復活,指控薩武龍讓她犧牲,伊格爾無罪,但他也選擇消失在優界中。

2007/5/6

黑夜中散發綠色螢光的 夜巡者 by 盧基揚年科

為甚麼我要說「黑夜中散發綠色螢光」這句話呢?那是因為我在看完這本被譽為近年來最有創意,善惡與光明對立的奇幻小說後,就把書放在桌上,接著看日巡者,後來有一天晚上在書桌前,關了燈準備睡覺的時候,突然發現桌上夜巡者這本書的封面上,標題的三個大字,竟然散發著綠色的螢光,真是特別。

身為光明界的成員,為了維持與黑暗的對立平衡,卻得在黑夜中偵查巡視任何破壞這微妙平衡,違背大和約的事件,一個光明使者卻得生活在黑暗之中,有時候也會搞不清楚自己究竟屬於光明或是黑暗。光明不見得就是為善,他們的行動,不過是眾多選擇中,那項對大家「傷害最小」的決定。

這時候的行動,對某些被犧牲的人來說,光明使者,也是以為惡來揚善。善與惡,就像是光明與黑暗,在日夜交替的過程中,讓人不清楚究竟是白天或是晚上,那麼為善或作惡的分別,也有不得不作的模糊地帶。

「特許憑證」就是一種不得不作的利益交換,光明界期待一個正常運作的世界,而黑暗界的吸血鬼,因為天生就需要人血,因此光明界特地開出特許憑證,讓吸血鬼可以正當獵捕被選中的人類,而夜巡隊存在的目的,就是阻止違法獵捕人類的吸血鬼。小男孩葉格爾雖然沒有作惡的本性,但卻在跟安東討論的過程中,了解這些不可思議的妥協平衡,在斯薇塔接受教育,快速成長的過程中,他也跟安東在面對黑暗巫師的時候,有著善與惡的激烈討論,因為安東說明,在黑暗巫師還沒有作惡之前,夜巡隊並沒有權利能夠對付一個無害的黑暗巫師。

第一篇自己的命運,說的應該是針對安東,因為故事是以安東當第一人稱,描述整個故事的開端,老大明白安東跟斯薇塔未來糾結交織的命運,原本以為日巡隊與夜巡隊是為了葉格爾而來,為了一個未來的大法師而競爭,結果竟然是斯薇塔,雙方不擇手段的競爭過程,讓一個不尋常的小孩葉格爾一針見血地道出「你們都很醜陋」的結語,然而身為光明使者的安東,得依循著光明法則,幫助斯薇塔在短時間內啟蒙成長,這是安東的命運,身為一個光明使者不得不遵循的命運。

第二篇自己人裡的自己人,馬克西姆握著手裡的匕首,當他面對不尋常黑暗界的人,他自稱法官,出面替天行道,為民除害,這是上天賦予他的職責與能力。但當這些被處決的黑暗界的人,都圍繞在安東的身邊,這一切的事件安排,就成了一項陰謀。對安東來說,他得儘快找到這個陷害他的人,對日巡隊來說,得找到這個破壞大和約的光明界兇手,向黑暗界證明自己的清白,避免衝突。

日巡隊老大薩武龍期待對付了安東後,發狂的斯薇塔,而夜巡隊老大蓋瑟希望安東能儘快找到「野人」馬克西姆,證明他的清白。當然在最後,找到了馬克西姆,在法庭中,令人驚訝的是,蓋瑟讓馬克西姆成為高於光明與黑暗勢力的一員,一個嚴厲卻又中立的大審判官。而安東也發現,這個追逐的過程,竟然也是蓋瑟設計,要讓斯薇塔快速成長的一段過程。最後一句話,最讓安東不想聽見的一句話,老大隊安東說,「這裡不需要薩武龍,他在這裡真的沒有任何作用,這完全是夜巡隊自己內部的操練。」

第三篇自己人裡的外人,這應該
夜巡隊所有成員都離開莫斯科到了虎兒的家作客,當安東自己一個人隨著西蒙回到家裏,他竟然發現日巡隊的老大薩武龍在他的家裏,向安東敘述著進一百年來光明勢力的嘗試與夢想,第一次是十月革命,第二次是第二次世界大戰,現在又要再一次,光明勢力希望能再一次促成全球性的社會改革實驗,他告訴安東,斯薇塔並不是要準備領導夜巡隊,而是為了完成奧莉佳沒有成功的使命。

安東認為任何要嘗試改變人類社會的行動,都是必會失敗,不會對人類帶來益處,但蓋瑟認為安東反對斯薇塔肩負的使命,也認為安東無權基於個人利益反對夜巡隊的政策,他不知道行動成功的機會有多大,但他知道在此之前,從沒有過這麼好的機會。

安東需要知道蓋瑟的行動,他要去見薩武龍。然而很奇怪的,在到了莫斯科中心的幽界時,出現了一段小插曲,他發現薩武龍的愛人阿莉莎正非法使用稜鏡,非法使用第三級介入法術。薩武龍向安東提出了第二級法術介入權,交換阿莉莎的違法事證,黑暗法師跟光明法師簽訂了合約。

最後,安東沿途吸收了眾多力量,原本想要以「道德重整術」面對斯薇塔及葉格爾,阻止蓋瑟的行動,但卻將所有吸收到的力量用在自己身上,這讓斯薇塔很驚訝,原本安東有能力阻止這一切,卻將權利交還給斯薇塔自己決定,斯薇塔將葉格爾的命運之書上的字都擦掉了。

薩武龍認定光明界失敗然後離開了,蓋瑟卻說,他剛剛才搞清楚,每一個人都有自己的命運。安東也明白了,這一切都是幌子,在日巡隊專注在斯薇塔身上時,奧莉佳已經拿著另一半的粉筆完成使命,改變了另外一個人的命運。蓋瑟這一切行動,都是為了不損害他的事業前途,還能迫使領導階層撤銷對奧莉佳的懲罰。

沒有絕對的對錯,沒有絕對的善惡,而光明與黑暗的對峙,還在繼續進行當中。