星期六, 8月 30, 2008

讀完The C++ Programming Language

剛剛終於把第一章到第25章全部唸過一遍,只剩下後面Appendix還沒看而已。

C++提供很多很棒的東西,這些東西在書中寫了出來。書本前面寫一些語言提供的功能,如流程控制、例外、樣板等等。後面開始提供「設計的方法」。很多OOP的原則,和一般常見的問題,書本都提到如何用C++提供的物件導向和樣板來解決。甚至還有一個章節提到如何管理你的團隊(「C++一個吸引人的地方就是code reuse,可是很多公司的文化都懲罰讓程式碼可以重複利用的行為,比如以程式碼的行數來作為薪水的依據......」)。

書中提到的設計方法我認為是全書的精華,至於前面教你怎麼用迴圈之類的部份,說實在有點太過瑣碎,等寫程式碰到問題再回來讀個人認為就可以了。C++很多功能的存在都是為了書後面提到的設計方法,所以讀通這些才能把C++的力量發揮到最大,不過很多東西都寫得很抽象,需要花時間思索(這時醬料系的書就顯得不錯,一直背就好,根本不需要動腦o~"~o),沒有一點經驗可能根本看不懂它在寫些什麼.....

接下來挑戰熱血卉張的template metaprogramming,沒學過template programming &
Modern Design,別說你學過C++ (大囧) 全文連結

星期四, 8月 28, 2008

星期一, 8月 25, 2008

權限物件備忘

Modified Preorder Travasal Tree本體完成,單元測試完成,現在要加上權限物件的wrapper。介面不會區分「權限,使用者」,純粹表達成許多樹的許多節點間的關係。雖然會暴露底層是tree structure,但好處是介面的簡單化。可以的話一個class希望弄到只有三個主要public method(搭配幾個跟特殊usage有關,一次抓一堆node的method)。目前草擬介面如下。tree structure為模仿phpgacl的ARO group的概念。但可以擴展到包含ACO,AXO。

use case:
1.能給增加/減少節點,介面:addauth($type,$child,$parent),範例addauth("使用者","d8888","管理者")
2.增加/減少"path",也就是ACL的抽象化,介面addpath($path,$value),$path為許多$node的集合,範例$path:("使用者"=>"d8888","論壇權限"=>"版主","討論版"=>"電腦版"),addpath($path,true)
3.取得某path的返回值,並在有ambiguity的時候指定優先順序陣列,介面GetResult($path,$priority),$path可以指定一個到所有的tree structure,碰到無定義,無法解決的ambiguity以Exception解決,ambiguity時Exception包含所有的可能path
4.提供一簡單的介面,可以客制化編輯tree structure和ACL
5.提供filter,可以在呼叫addauth的時候對參數動手腳,比如傳入使用者名稱的時候,可以自動查table分別他的群組,如此一來可以達到權限物件可以整合現有表單的作用。

接下來會研究memcached,以及phpgacl的source code 全文連結

星期日, 8月 24, 2008

星期三, 8月 20, 2008

疲累

如果問開學後最淚目的事情是什麼,那就是調整時差。暑假習慣了兩三點睡下午兩點才醒來的美好夜生活,突然間六點半就得起床,七個半小時的時差大概和台灣到美國的時差差不多。所以有時候碰到朋友會戲稱我到了美國,時差超美國的!

剛好最近coding遇到一點小瓶頸,就整個人廢掉陷入思考的狀態orz 全文連結

星期一, 8月 18, 2008

除錯

轉眼間樹狀結構已經寫完了,現在開始進入單元測試。可是一進入單元測試,馬上就發現作為底層的SQL物件功能上有重大的缺陷。於是開始設法修改SQL物件。

但大幅修改物件,結果是原有的介面可能不敷使用。特別是我原有的SQL物件只支援簡單的"select * from table1 where c=2;"這種簡單的Query,查詢條件連大於小於都弄不出來,突然間要想辦法讓一樣的介面做出"select * from table1 where a>2 and (b=1 or b=2);"這種稍微複雜一點的功能頭就開始痛。有點想乾脆做一個新的function,但這意味著code開始疊床架屋,Select1(),Select2()開始出現,所以目前還是決定利用php對於參數型別檢查的寬鬆之處,來在不破壞相容性的情況下塞入新的使用方式(假如參數不是陣列,則老方法,假如參數是陣列,則......)。不過這也代表同一個模組裡面的code flow變得很複雜,測試和除錯都不容易。(現階段就發現很多沒跑過的code branch有很離譜的錯....)

一邊改SQL物件一邊除錯,自己開始思考:把SQL弄成物件,吃陣列參數是否有所必要?固然把SQL弄成物件有不少優點:比如因為傳入的是陣列而不是字串,所以在操控query的時候可以不必使用骯髒的字串操作,可以用乾淨、好閱讀的關聯陣列。query的過濾可以完全自動化進行,並且用優雅的方式條空。不過底層需要把關聯陣列轉成字串意味著效能的降低,用固定的陣列吃下SQL query,也意味著能夠進行的操作種類減少,日後這種不斷硬塞介面的事情還有可能不斷發生,而且以SQL query來說,其實長期弄熟了以後,「優雅」帶來的可讀性上升以及進而帶來的錯誤發生率下降就沒有那麼顯著。所以有點想是不是把原有的SQL物件整個扔了,改用adodb之類stable的東西順路支援所有的database。不過這牽涉到一大堆苦力,所以還在考慮中,等測試profiling幹完再說盃。

SQL物件除錯完成以後,在上面的樹狀結構則應該沒什麼大礙,基礎的單元測試已經完成,接下來應該可以專心針對樹狀結構除錯。再把權限系統的功能疊上去。 全文連結

星期五, 8月 15, 2008

權限系統重寫

不知道是不是自己特有的壞習慣,每隔幾個月或是幾年就會覺得自己先前寫的東西很爛,想把程式抓起來重寫。雖然自己明明就是屬於超弱的那群....

之前看phpgacl看起來還蠻喜歡的,可是仔細閱讀API以後,還是覺得它還有一些不符合自己需求的地方,舉例:

1.phpgacl不能直接利用現有的table,一定要call API一筆一筆匯入他的table變成他自己的格式,才能使用權限系統的功能。譬如說系統有一張使用者列表和兩張群組列表,那程式設計師就一定要想辦法把這些表格全部都用API塞進phpgacl裡面去,才能使用群組、權限的功能。(原段落有點誤會phpgacl,刪掉XD),期盼能寫出「table XXX自動屬於一般使用者群組」這種東西,不過有點難度XD

2.衝突的解決。在phpgacl的架構下,可以把一個ARO(使用者)指定到不同的群組下,但不同的群組可能有不同的權限,可能A群組可以做某件事情,但是B群組不能做,要是一個使用者同時屬於A和B群組那他的權限就會發生疑義,phpgacl此時會自動使用最新修改的權限,但這不一定適用所有應用的需要。比如使用者Joe同時屬於「一般使用者」和「水桶」兩個群組,前者可發文,後者不能發文,理想上應該設定「水桶」的「不能發文」為優先,但phpgacl不能這樣做。

3.缺乏Exception,或許phpgacl不用Exception有他的考量(比如效能,etc),可是不使用Exception很多特殊狀況就只能由phpgacl自己吞下去,可是這不一定是程式設計師想要的,像「衝突的解決」就是一個狀況。

4.個人覺得ACO、ARO、AXO的分法有點麻煩,造成介面稍微複雜一點,而且導致認證被限定在最多三維。同時只有使用者的ARO這邊可以設定群組,權限ACO本身不行,可是這不一定符合實況(比如應該要可以設定「論壇」可以被「一般使用者」「回文」,但「論壇」的子節點「置頂文章」例外),三維的認證可以支援到「人」「權限」「對象」,但三維有時候還是不夠用,比如論壇管理者可能會想要設定「正常」時,所有的「一般使用者」都可以發文,但「論壇唯讀」的時候「一般使用者」不能對論壇進行寫入,只有「管理者」可以。三維認證且ARO不支援群組設定的phpgacl就比較麻煩。

5.其實是最重要的原因,就是自己寫一個東西,總是成就感比較高=口=


目前按照這篇給的演算法,開始從最底層的樹狀結構開始重寫中.... 全文連結

星期三, 8月 13, 2008

星期日, 8月 10, 2008

這幾天

首先,在Niconico似乎再也找不到好的麥當勞傳教動畫了,也有一些不錯的梗,可是跟最終鬼畜和信仰風化曲兩大神作比起來,只能說無論是違和感、細緻感、洗腦感、電波感....都相差太大。神作不是天天有可以理解,可是難道要另覓他梗或是只有少數好片可以看嗎@@...

再來是惡魔城終於全破一次了。就設計上來說,逆城的怪物當然比正城強很多。可是由於逆城有逆天的寶具,比如像我手上拿的這把閃亮亮之無限真空劍,打一般王只要連發,王常常連一次都沒辦法攻擊就掛了XD(某號稱大魔王最高輔佐的死神講完台詞後不到二十秒就.....現在打王有時都先存檔,禮讓三十秒看王使用所有攻擊後再載入秒王XDDDD),甚至打最終王可以完全不用補血道具只變霧偶爾閃躲。有點後悔把掉寶機率改高撿了這把劍,當然爽度是滿點啦,可是遊戲變得比風之谷還無腦....orz 全文連結

星期三, 8月 06, 2008

惡魔城:月下夜想曲

因為Twsam消失到蠻荒叢林所以不能打世紀,這幾天只好翻別的遊戲出來消磨,結果最近就沉迷在這款大作裡面。這款遊戲已經出了十年,應該可以用力捏下去了XD

劇情概要很簡單,有個壞人叫Dracula,簡稱德古拉或是多拉Q拉,想用邪惡的力量影響世界,而主角是德古拉和人類生下的孩子:Alucard,阿魯卡多,和吸血鬼獵人李希特殺進他的城堡想阻止他。

開始後印象最深的劇情就是死神,阿魯卡多一開始有一大堆神兵利器,可惜和死神一講話馬上裝備被扒個精光,令人扼腕,這比主線劇情還要讓人印象深刻orz。

再來就是這個遊戲可以說只有「一關」,就是巨大的惡魔城(還有逆惡魔城),你要在裡面繞來繞去,不過會有一些傳送點幫你,當然也會有地圖(因為關卡太大了.....)。我光把表惡魔城(整個遊戲的一半地圖)走完就花了五六個小時orz

遊戲的主要打法乍看是ACT,阿魯卡多使用各式各樣的武器一路打怪殺怪朝向目的地前進。但其實這款遊戲加入了非常多RPG的要素,比如主角打怪等級可以提昇,城中散落各式各樣的武器,有些還會附帶特殊功能,而某些特殊功能又可以帶來特殊劇情(如裝備「可以粉碎所有刺針的鎧甲」後,才有辦法通過某條走廊觸發劇情,拿到通向Good End的必要道具),武器也不是掉在地上隨便你撿。有些武器或是道具會擺在一些難以到達的地方,這時候就需要解謎,比如某個重要道具擺在很高的地方拿不到,主角就要想辦法弄到可以變成蝙蝠的魔導器等等。總之要動頭腦的地方很多,不是用手指亂按就可以了。

遊戲的自由度甚高,劇情也多樣。在故事的設定中(有雷),吸血鬼獵人李希特打倒德古拉以後會被暗黑法師洗腦,成為表惡魔城的城主,如果不去觸發劇情,想辦法拿某些特殊道具,那主角完全不會知道李希特只是被洗腦,而和他決戰的時候也只有將他殺死一途,殺死後惡魔城會垮掉,也算是遊戲破關,但這算是Bad End,而且女主角瑪利亞會傷心離開。但假如拿到某些道具,那就可以在特殊地點換到可以識破邪惡法術真相的神聖眼鏡,跟李希特決戰的時候就會看到他頭上有個球,不斷輸出黑暗能源操縱李希特,這時只要把那個球打壞,就會看到暗黑法師的影像出現且消失,同時李希特也會醒來,玩家也可以找到逆惡魔城的入口,去打真正的壞人。(當然以上的文章都不考慮利用程式bug的打法)

目前我剛好在逆惡魔城的入口,共花了五六個小時,明天繼續打XD 全文連結

星期日, 8月 03, 2008

星期五, 8月 01, 2008

嘴炮打得很大聲 視病猶親好典範

[新聞] 長庚副院長 私通女病患生子

【丁牧群、陳怡靜、劉昌松╱台北報導】醫界驚爆已婚名醫與女病患通姦生子醜聞。長庚醫院台北院區副院長兼長庚大學醫學系主任黃燦龍,被女子謝雪霞指控,二十三年前幫她進行手術後兩人發生婚外情,她幫黃燦龍生下一子後,他竟視母子如敝屣,更嚴辭拒絕兒子認祖歸宗。私生子難忍生父情絕,日前向法院提起確認親子關係訴訟,希望認祖歸宗。
黃燦龍(五十六歲)台大醫學院醫學系畢業後,先後擔任長庚大醫院主治醫師、一般外科主任以至長庚醫院台北院區副院長兼該醫學院醫學系主任,專長胰臟外科聞名醫界。

名醫爆通姦
爆出通姦醜聞的名醫黃燦龍,坦承和女病患發生性關係,但不承認私生子。

---

這段新聞部份節錄,重點是下面這篇

黃燦龍


日前嚴長壽先生曾感嘆表示,「國內醫師是考試最棒的學生,但考卷沒考愛心,學生被灌輸讀醫是為了高地位與收入,沒有人告訴他們當醫師是為了救人…」。對於嚴先生的親身經歷,醫界應有所省思,但也期待國人了解醫學教育界這些年來的努力。

例如以面試訪談作為招收醫學系新生的評估方法之一,在國內已經實施多年。在面試期間的各種場合中,由側面評估,或是利用單面鏡來觀察受試學生對需協助者的反應。這種觀察的優點,是受觀察的學生並不知情,因此自然不做作,評估考試委員也可以較客觀地評核受試者的真正能力與表現。本系近兩年來採行上述方式,已能更客觀的了解受試學生的愛心本性、同儕互動性、對旁人的關心度、以及對需要幫助者的關心度等。我們認為只要各校能用心篩檢,將可藉此淘汰本性不適合成為未來有愛心醫師的應考學生。

---

還有

曾批趙建銘逐名利
黃燦龍相當重視醫學倫理,醫療人球邱小妹事件中,他曾批評值班總醫師未親自看診是失職、不敬業。前總統陳水扁女婿趙建銘涉及內線交易,他還把趙當成活教材要學生警惕,他說:「要追求名利搞金錢遊戲,就不要行醫。」他甚至把「模擬劇」融入考題,安排路倒病人上場,並用單面鏡觀察六十多名不知情考生反應,剔除沒愛心的考生。
黃燦龍多年來致力一般外科敗血及胰臟等疾病研究,於國內外發表專科論文及著述兩百多篇,更獲獎無數。一名不具名長庚醫師說,學生到山地鄉義診時,黃常去探視,更曾帶著妻子一同前往,看起來夫妻感情很不錯,沒想到竟然也捲入桃色風暴。長庚學生昨表示,這是黃的私事,以後還會上他的課。
---

超視病猶親的啊!!XD

我想到昨天跟學長吃飯,學長講的:「你看那個XXX,說年輕醫師沒愛心、怕吃苦的,他當年在醫院裡紅包收最多.....」

真奇怪,一樣是高唱醫學倫理的,有人可以SARS的時候防護衣讓別人自己再進去,也有人說一套做的又是另外一套,嘴炮大老和好醫生怎麼可以差這麼多? 全文連結