顯示具有 書籍 標籤的文章。 顯示所有文章
顯示具有 書籍 標籤的文章。 顯示所有文章

星期日, 12月 29, 2024

書本購入:SRE 工作現場直擊,Stable Diffusion

 

這兩本書是這次去臺北天瓏書局買的。Stable diffusion和 SRE 都是我相當陌生的領域。 研究 Stable Diffusion 是希望有一天能畫自己的 Saber 老婆,無限 Saber 製光想都覺得香。SRE 則是為以後維護自己醫院內的服務做準備。這本書看起來算是最白話的入門書了。

全文連結

星期四, 4月 11, 2024

閱讀「投資別再情緒化!讓數據說話 用科學方法讓本金百倍奉還」

連結

這幾天看完這本,是淺顯易懂的好書,用直白的語言講量化交易的心得,並且提供了最基本可用的指標。遺憾是沒有 sample code 不過這也讓書變得更薄。

讀完這本感覺可以找 reference code 開始做 MVP 跑回測了 XD

全文連結

星期四, 6月 23, 2022

讀書:程序員進階心法:快速突破成長瓶頸

博客來

書本其實並沒有單一的主題,而是將有關程序員成長的方方面面,從入行、職業路線的進階,為人處事、找工作、如何寫好代碼等都全部帶到,而且都有足夠深度。感覺是長期累積的心得文集。有人說這本書應該可以多讀幾次,每次都能感受不同的醍醐味。

全文連結

星期四, 6月 09, 2022

高等數學同濟七版

亞馬遜連結

最近很多研究活動在數學上撞牆,只好拿書回來念。目前快唸完第三章,做了點習題。目前學起來還算舒服,連我這奔四並且數學倒退到初中程度的大叔都勉強能跟上,有些東西跳著看,例如三角函數或曲率這累跟我本行沒半毛錢關係、業餘研究很可能也用不到的就不客氣的跳了。

這書知乎評價看來普通,有人說這套「如果你不是美食家,也不是嚴格控制營養攝入的運動員,只是想舒舒服服吃頓飯,同濟版高數還是很不錯的。」不過我只是想用最短時間,快速學過自學工科需要的數學,應該也夠用了。未來想更進一步再換更好但更花時間的教材吧。不想學數學的工程師不是個好醫生(?)




全文連結

星期六, 4月 23, 2022

Basics of Linear Algebra for Machine Learning: Discover the Mathematical Language of Data in Python 讀後感

書本簡介

本書完全從學習 ML/DL 的應用角度出發,內容非常淺,還有大半篇幅是 python 代碼。如果是正經學習線性代數這本書不夠,但對非工科出身,在工作之餘為了 ML/DL 才回頭研究的人來說,這本就合適,最起碼可以快速鳥瞰跟 ML 相關的內容,也不會迷失在 ML 相對用不到的細節裡,200+ 頁的篇幅也很快可以看完。以後需要學更多東西再找別的書補完。





全文連結

星期三, 2月 02, 2022

「超速學習」閱讀心得


 

一直對「如何學習」很有興趣,這本讀完感覺不錯,決定用它寫心得,寫心得的同時也是運用其中的技巧,鞏固內化書本上的知識,也方便未來的自己提取技巧不用整本重讀。

這本書重要概念大概如下:

後設學習

確定「為什麼、做什麼、及怎麼做」,「怎麼做」可以切分成「概念、事實、程序」。後設學習可以佔整體計畫的 10% 時間。後設學習可避免學習毫無目的性,在無限的知識中沒有效率的「漫遊」

專心致志


講拖延症、專心的重要性和專心的技巧。

實質上我認為最好的技巧,也是書本沒有講的,是每天花時間冥想。冥想可以實際上改造大腦。變得可以忍受工作和學習中的難受、沉悶和從根本上控制住分心(掉舉)。

直截了當


用「最短路徑」去達成學習目標,例如學語言,就直接去需要該語言的生活環境,學工作技能就從做中學。

反覆操練

其實覺得這個名字不完整,因為書中的例子還包含很多「分而治之」(divide and conquer)的技巧,例如學音樂把譜分段,並針對不會的困難段落反覆練習。

提取記憶

用測驗、回想...來鞏固記憶,不是學完就算了。

意見回饋


我想這是自學者最欠缺的。其實有人潑冷水比自己「十年磨一劍」好的多。

我學專業技能之所以能有進度,很大是因為學長姐,臨床同仁甚至病人會給「回饋」。做了錯誤的判斷就會從回饋得到「重拳」,就會一直進步。

但「重拳」太重也可能把人擊垮,可能必須在「不痛不癢的回饋」和「太重的重拳」中間拿一個度。

保留記憶

書中提出了幾種技巧來克服「遺忘曲線」的問題。淺見比較有用的方法是「過度學習:超越完美的練習」和「記憶法」。考專科的時候不自覺的用了這些技巧。

培養直覺

覺得翻譯為「技能直覺化」比較好。將學到的技能內化為直覺。

個人經驗上這是個水磨功夫,只有不斷反覆熟悉技能、接受回饋,試著簡化提取要點才能題取出技能的「神髓」才能內化為直覺。

例如當年自學軟體重構的相關知識,書都會教「何時該重構」,但實質上我不是用背的,而是很多次栽在充滿壞味道上的坑以後,對坑的感知因為大量經驗內化形成直覺,跟本不用背,也不會忘記,甚至書本講的「何時該重構」也只是印證了我的經驗而已。

勇於實驗

書中提到各種實驗技巧,在不會太痛苦的前提下,擴展現有的技能樹使之更全面,跨出舒適圈。


看完這本書以後,覺得最無腦的技能入門方式其實是去上針對性、有提供測驗的線上課。線上課除了最後兩步(培養直覺、勇於實驗)外幾乎都涉獵到了。至於後兩者也只能技能稍微入門後再自己反覆錘鍊、內化和擴展了。

全文連結

星期六, 11月 14, 2015

Rootkits: Subverting the Windows Kernel

書本連結 困頓時期的小確幸讀物。之所以讀這本書主要是玩 DLL hook 想要對安全更深的了解。以快速瀏覽不查 code 為前提看完。內容整理清楚,深入淺出,可以清楚理解思路。幾個缺憾: 1. 這是 2005 年的書,很多內容都已經過期 2. 書中同時涉獵眾多不同主題,每個主題都只能點到為止。對系統和漏洞的進一步了解,想要紮深基本功的話可能還需要別的書(望向厚厚 Windows internals) 不過最重要的問題是最近根本沒有時間體力打開 IDE 寫程式囧 全文連結

星期三, 8月 20, 2014

Computer Networking: A Top-Down Approach (6th Edition)

Computer Networking: A Top-Down Approach (6th Edition)
上次 CPPGM 小確幸系列因為要準備考試和工作負荷不了,日常生活的IT小確幸就換成念書。今天在中午 meeting 快 Hypoxic-Ischemic Encephalopathy 的情形下把這本書除習題和後文 reference 外全掃完了XD

全文約八百頁,算淺白易懂。跨了不少 topic。不過可能由於是入門用 introductory course 的原因,不少東西看得出都寫得極為簡略而且有所保留,比如用一個 chapter 同時介紹密碼學 + SSL、IPSec (本來以為 Bruce Schneier 老大的密碼學入門已經極簡了,沒想到還可以更簡),不過從整體性的角度來看網路大有幫忙,比之前支離破碎亂學完整的多。

下本小確幸系列還不確定要選哪本書 XD

全文連結

星期四, 6月 02, 2011

How debugger works

這本書最主要內容是debugger工作原理的入門。看完之後我還是不會用SoftICE或OllyDBG或IDAPro ,因為這本書的內容不包括任何特定debugger的操作方法,它介紹的是debugger為了實現除錯的功能:像插入breakpoint、進行Step over step into或是對優化過的程式進行除錯等等必須進行哪些事情。比如進行step over其實是debugger不斷的對code進行patch,不斷插入和拿掉暫時性的breakpoint。或是程式經過優化以後,使用者想看的某個變數其實已經被compiler幹掉了,debugger此時要怎麼對使用者給交代etc.

雖然這本書已經成書十幾年,書中的cutting edge technology都已經變成standard甚至快過期的東西,但書上提到的debugger工作概念還是可以套到當下的軟體。書本最大的缺點就是缺乏細節和實作,什麼都只講大概。對於debugger工作「理論」有興趣的人應該算夠,但如果是要實際寫個debugger的話看這本書就不足了。 全文連結

星期日, 10月 31, 2010

星期日, 1月 03, 2010

我的老爸是阿宅

這是最近覺得比較有趣的一部漫畫,目前出了六集連載中。故事是男主角九年前被學姐逆推,自己有了女兒都不知道,直到有一天女兒突然出現在他面前要求一起生活(母親被逼債中)....這位父親就必須馬上從重度御宅轉換到父親。漫畫內容以溫馨和小搞笑為主,但主線有點小感傷:以後母親還完債要來接她的時候,要跟父親?還是母親呢?

看完也有所疑問,阿宅真的都那麼色嗎?還是因為我不夠宅所以才沒發現?XD 全文連結

星期六, 7月 04, 2009

書

之前看得很開心的Heavily commented linux kernel,可能得放棄了。畢竟現在開始真正處理病人,有空也得拿出大量的時間分給醫學書(光華盛頓就淹死人啊QQ),所以休閒娛樂用的電腦書可能會換本比較不需要那麼多集中力的吧....

醫學小書,最近有很多猶豫不決要不要買的

1.麻州英文版(中文版實在是....)
2.華盛頓外科手冊(其實有surgical recall了,而且其實這本可以用電子資源查到,但是不能放口袋還真的不大方便....)
3.婦產科小兒科小書各*1(survival guide怕不夠用)
4.ICU book(不知道能不能借到?) 全文連結

星期三, 1月 14, 2009

中文版Harrison

最近這陣子有點時間,拿起了這本課本來看一些章節。原本想說跟傳說中的聖經作伴會是個枯燥無味、令人畏懼的寂寞旅程,沒想到唸起來卻充滿歡樂。倒不是因為我頭腦燒了突然愛上醫學這門鳥科目,而是因為這本書的翻譯。佛教徒看了義理深奧的佛經,可能會抬頭流淚、讚嘆「偉哉!世尊」,我看中文Harrison也會抬頭流淚,可是喊的是「天啊這翻譯什麼鬼啊!!j偉哉!臨時工讀生!」

「低血鈉可以發生在AVP缺乏和腎衰竭」越看越不對,AVP缺乏怎麼會低血鈉?結果英文版是「AVP降低時的低血鈉要考慮腎衰竭」,中文版不知道在翻些什麼東西。但往好的想,這錯誤至少不到文字完全讀不通的地步。後來看到的錯誤就越來越奇妙了。「增強的遠端氯離子再吸收,可以導致腎素性醛固酮減少症研究成果中的多數」阿鬼這真的是中文嗎?去查了一下英文版,原來工讀生先生把「Clinical finding(臨床徵候)」翻譯成「研究成果」,「解釋」翻成「導致」,一個值得千古傳唱的好句就這麼誕生了。我就在滿滿的笑意,X意、淚水和不知從何而來的疲勞中繼續唸書....

那至少流程圖沒問題吧?上面的decision tree只要丟給眼睛博士就可以正確的翻譯,應該是人間最後一片淨土才對。但是某個圖表卻硬生生的把primary "hypo"aldosteronism翻成原發性醛固酮「增加」症。阿真奇怪,工讀生就算混到文章直接給眼睛博士翻譯,也不應該會出現這種錯誤才對,這個錯誤到底從何而來委實令人百思不解。其他林林總總的有趣翻譯隨便又可以看到一堆,「Physical examination(理學檢查)」可以翻成「力學檢查」,啊是要測試病人會不會發勁喔?然後剛剛又看到「尿液不能鹼化的時候可以使用hazardous」,原來現在西醫有種藥叫做大災難啊~是可以把難搞的病人佈置成意外身亡嗎?喔不是,英文版應該是「可以使用Acetazonamide」才對,驚鴻一瞥後面有一句說如果同時有怎樣怎樣會「may make this approach hazardous」,原來是工讀生複製貼上貼錯了,ㄎㄎ。

不過整體而言,中文版還是比較好念一些,雖然我的英文因為看電腦書的關係已經算OK了,可是頭腦翻譯英文,久了還是會累,累了書就看不下去,特別面對一本高達392個chapter的怪物的時候。所以還是看中文版好了,看中文版總比不看好啊~而且念中文版還有看不完的笑點,疲累的時候可以提昇精神,而且看中文版可以訓練不斷懷疑的好習慣XD

還有.Net的書等我挑戰呢,都還沒打開...... 全文連結

星期六, 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++ (大囧) 全文連結

星期二, 7月 29, 2008

Flash ActionScript 3殿堂之路

博客來書本簡介

雖然本座程度甚差,但我看過的中文書裡面可以讓我有淋漓暢快,擊節讚賞的感覺不多,用手指頭都可以數出來(作家侯捷大師系列、深入淺出嵌入式系統....),在其中屬於實作型,而不是講理論的更少,所以這本書本座絕對要用網誌記他一筆,留作永恆的紀念(噁)

看這本書的理由是想學好flash,想學好flash的理由有兩個:最近嘗試接一些程式設計的案子(我媽說當作社會經驗也好...),flash這塊處於蠻特殊的位置。一般使用flash的多是美工設計人員,美工設計人員據說會用Actionscript 2的就很罕見了。而一般程式設計師對於flash AS如時間軸、視覺設計等一般OOP不常見的設計方法多感生疏(因為那些東西是為了美術的需求做出來的....)。所以根據ptt CodeJob某大大的說法,擅長Flash + AS3的似乎比會PHP + MySQL的還難找。而現在有不少人對於用Flash + AS3開發有興趣,所以會flash我認為是有價值的技術。

第二個理由就是雖然我曾經使用Flex開發學校需要的病理瀏覽程式,不過感覺我對AS的架構、Flex / Flash的Class library、MXML等掌握的感覺都不是很好,看doc基本上都像霧裡看花,能用但是總覺得無法確實掌握他設計的動向(說實在C++的STL還好懂點=.=)。我曾經很有勇氣的把Flex SDK裡面的Class Library拿出來看,但很軟弱的看大約1000行我就決定放棄了,看不懂orz

遇見這本書的過程算碰巧,大約四點半的時候我妹和我媽都要用點腦,然後看The C++ programming language的STL又看的有點煩(sort、partial sort、istream、ostream、type traits....真的很繁瑣orz,雖然我還是一定會把它看完),想看看附近的何嘉仁有沒有開,結果雖然有颱風假,可是他卻沒有休息,所以我就進去找書。找書的目標是flash,不過純粹就只是想看看flash作為一個美術工具要怎麼使用,看AS的目的也只是純粹想研究怎麼用AS操作影片而已。然後「啊,有專門講AS的書啊」很巧的打開了這本。

雖然沒有全部看完,這本書的特色,就是作者同時懂AS「程式」和「美術」的兩面。一般的AS書有兩種,第一種,給100個範例,「如何製作動畫滑鼠」「如何讓畫面下雪」然後給code sample,這樣是可以學會怎樣製造出一個會動的東西,但總覺得只學了個皮毛,Flash/Flex那華麗的物件樹要怎麼解釋?為甚麼Adobe在研發AS3的時候要放棄和AS2的相容性?統統不知道。第二種書就很正規的講變數使用、流程控制、異常處理、物件導向的封裝、繼承,Flex內建的class怎麼用等等,視覺設計則用「快快樂樂拉範例」帶過,但這樣只能算是語法的講解,學的也不是很深。

這本書講的如何深?譬如一般的AS書不會講解Flex Class Library基底類別的由來,這本書卻揭開歷史,「這些基底類別原本在Flash的AS2中都屬於MovieClip這個類別,可是因為他介面太過龐大,所以被分割成好幾個抽象類別,根據能不能作為容器分一次,子類別再根據XXX分一次....和.Net的YYY比起來,我認為Flex 的工程師,在這裡做的比較好,理由zzzzzz」(相對的,一般的書跟你講講最下面的class怎麼弄就謝天謝地了)。一般的書會講視覺設計,AS就講的不深,AS講的很多,視覺設計就馬馬虎虎。但這本書卻可以頗開Flash本身畫元件的順序、座標軸系統、向量圖點陣圖的顯示,可以比較AS2和AS3 rendering的不同,Flash包出來的影片,怎樣弄到flex裡面用......從前覺得美工用的flash AS和程式設計用的AS好像是兩樣截然不同東西,經過這位作者講解就能夠通盤的整合了。

除此之外,作者文筆生動、妙筆生花也是推薦理由之一,「這個MovieClip,介面有一百多個function,懂OOP的就知道這多麼臃腫不堪,設計錯誤,MovieClip這個class是從哪裡來?往上一看赫然是原始天尊:Object!!」(文字可能有所出入,但原始天尊原文一定有XD),免除了教科書常見的枯燥氣息,閱讀十分愉快XD


明天再去看wwwwwwwwwwww。 全文連結

星期四, 6月 26, 2008

Programming Applications for Microsoft Windows

看這本書的動機是因為我完全不會Win32下的程式設計,從高中到現在,我一直只是活在C++標準函式庫裡的乖寶寶。雖然大一有和DL、DNA、Twsam、神Kochi一起組隊去比趨勢百萬程式設計競賽,不過那時大家都只能算是瞎子摸象,基本上實際上的Win32可能沒有人會,所以才會出現我加了個Mutex鎖住某資源讓程式可以動,Kochi就會很驚訝,還是說我會蠢蠢的認為GUI其實不必main thread也會自己動,就在main thread裡很豪氣的開了while(1)等怪事。可能是因為大家都寫ACM寫習慣,ACM只要用C++制定出來的function就好,真正的系統呼叫全部被包在那些包裝精美的ANSI function下面,這多棒啊.....

不過後來覺得這樣子不是什麼好事情,光靠Console Application + 萬年ANSI library想吃遍天下似乎是很愚蠢的行為,明明就天天在用Win32的東西,可是卻不知道他們要怎樣寫出來,想一想就有點賭爛,所以就決定打開了這本書。

我手頭上的Win32 Programming其實還有Charlie Petzold先生寫的Programming Windows,內容大概就是怎樣開視窗,怎樣拿畫筆在上面畫畫,寫的都是一些wxWidget百萬年前就包起來的事情,相對的這本Programming Applications for Microsoft Windows寫了非常多很炫的東西,比如這本書會告訴你Structed Exception Handling(請勿和C++的Exception搞混)怎麼運作,如何無痛學會DLL hooking,輕輕鬆鬆讀別人的Process,快快樂樂Muiltithreading,基於對高技術含量書本的飢渴心態我就選了這本來唸。

唸得結果出乎意料的順,本來想說沒學過Windows Message Loop等基本概念閱讀會有點困難,不過這些東西似乎太過基本,有時書本稍微提到,只要自己稍微根據那一丁點稀薄的作業系統知識想一下還是大概可以知道Code怎麼運作,Win32的架構裡面也沒提到太複雜的東西,什麼DCOM等一大堆奇怪的服務統統沒有提到,反正就是集中火力攻打可能比較容易死人的地方,如多執行緒的同步,DLL & Address Space等,閱讀過程相當愉快就是。雖然唸了以後可能還是無法空手寫出一個Win32 application(基本的開Window,叫MessageBox這本書沒教,要回去翻查理先生的書XD),但唸完還是覺得值回票價。

下本書會回到C爸爸的The C++ Language,先把Exception、Template等當初根本不碰的東西弄熟。 全文連結

星期日, 5月 11, 2008

Linkers and Loaders

終於把這本書看完了,這本書花的時間比我想像中得多,原本看這本書的厚度,想說大概兩三下就看完了吧,結果因為這本書編排和內容的選擇都頗糟的關係所以就看了很久。

這本書的內容在講些什麼呢?說明怎麼把一個原始碼編譯成一個物件檔的書多到數不完,稍微深一點的語言書(如The C++ language)都會提到某段code被compile之後會變成什麼樣子。但說明如何把很多分原始碼編出來的物件檔變成一份執行檔的書,市場上有名的好像就只有這本。一直以來,我一直都無法把C++的那些原始碼,和書上看到的記憶體定址那些東西連結在一起,也就是我對上游的原始碼到最下游的二進位碼,以及二進位碼如何和山頭林立結構各不相同的CPU合作,被作業系統放到記憶體執行這個過程,中間一直有一些想不通卻又不知道如何形容的空洞感和蒼白感,看了這本書講如何把很多物件檔修修改改連結在一起,以及執行檔如何經過即時性代碼修改放到記憶體執行,雖然還是不知道個別的細節,但整體的概念大概是有了。

這本書為甚麼說內容糟?首先這本書的作者很強,根據內文推斷他看過的compiler和Linker搞不好比小T打過的電動還要多,問題就是這個人太強了,所以他根本搞不清楚看這本書的人到底缺乏什麼,就很像一個游泳強的人搞不懂初學者到底哪裡不會一樣,因為初學者不會的地方對他來說都理所當然,其實作者太強也沒關係,C爸爸不是很強嗎?他的The C++ Language還不是經典?所以更根本的問題就是這本書的讀者定位不明,雖然這本書最前面就寫說學生很適合看這本書,但學生的等級也可以差很多啊,作者應該言明讀者應該要有哪些prior knowledge才適合看這本書,然後prior knowledge涵蓋範圍內的知識的就不提,超越prior knowledge的就講詳細點。

讀者定位不明,意味著這本書對細節的掌握不好,這本書提到了一大堆CPU和Object Format,SPARC啦,x86啦,ELF啦,PE啦blahblahblah,在有限的篇幅提一大堆format,意思就是每個都沒辦法講的很仔細,偏偏作者又很喜歡烙細節,每個format都拿其中的一些欄位出來講,搭配一些模糊的概念性描述。結果這本書做不到抽象、概念性的講解,因為他拿了很多細節,但這些細節又講的不夠細,統統講一半欲語還羞,沒有明確到能讓初學的讀者看得懂的程度。卡在中間的尷尬地帶,苦的就是像我這種程度不高的讀者了,套一句Amazon上的書評,就是:「Too many omissions to be useful, too general to instruct」

這本書的編排也不對,很多相關的概念或名詞解釋,基本上第一次遇到的時候都應該略為講解,但這本書碰到比較重要的名詞,常常都是「deferred to chapter XX」一語帶過,於是悲慘的讀者就只能看著整個章節一直狂講看不懂的名詞,然後一邊事倍功半的看一邊修正自己猜測出來的定義,然後等一直翻翻到後面作者心情好終於想開始講前面的名詞的時候,才有辦法搞懂前面的章節到底是講些什麼碗糕。於是乎讀這本書的感覺可以引用書中的概念:連結是一個two pass process,第一個pass把所有symbol都蒐集整理起來,第二個pass才實際解讀這些symbol。讀這本書也差不多,讀第一遍是把看得懂的部份看懂,看不懂的部份硬記,讀第二遍的時候因為之前看不懂的部份在後面的章節都有講,就可以把硬記的東西在腦海變成看得懂的語言。讀書的步驟竟然可以和Linking一樣,不愧是Linkers and Loaders,真是偉哉!

其實這種講一大堆零散東西的書,並不是沒有辦法解決讀者因為太零散搞不懂的問題,之前讀過的Design Pattern : Elements of reusable objects其實也是講了一大堆零散卻又相關的Design Pattern,可是我覺得那本書並不會讓我讀得很痛苦,為甚麼?因為那本書最前面的地方有一個叫Lexi的Helloworld,把後面章節會出現的東西用很簡單的方式表達,並且告訴讀者他們怎麼組合在一起,如果那本書少了Lexi這個章節,直接在後面的Pattern講說:這個Flyweight可以和這個XX pattern合作啦,就這樣這樣這樣,那個Command Pattern可以實做成blahblahblah,如XX公司的產品就有。變成這種零碎的樣子我大概也會摔書吧。

回到Linkers and Loaders這本書,這本書只要加一個章節就可以化腐朽為神奇:寫一個會用到DLL的Hello world,然後從compile之後的物件檔一路講到連結,再講到Windows怎麼把他放進來執行,有了這個Example,後面講一大堆不同CPU/作業系統的不同Object file,讀者自然有辦法用先前的範例來比較。簡而言之,講一大堆零碎的東西前,記得給個Helloworld來個整體性的介紹,不要一開始就直接跳到局部去講細節。如果一本C++入門教科書先講一大堆syntax然後把Helloworld放到最後一個章節才講,你覺得這本書會是一本好的入門書嗎?

這本書的綜合評價,我個人還是認為值得讀,畢竟專門講Linking和Loading的書市面上好像就這麼一本,讀完以後對程式從出生到執行會有完整的概念,當然要有心理準備跟一大堆沒碰過的format奮戰,然後一邊讀一邊罵作者就是。

下本電腦書是Programming Applications for Microsoft Windows,不能一輩子都讀理論書沒coding啊...XD 全文連結

星期三, 4月 02, 2008

GoF Design Pattern閱讀完了

在醫院有個好處,就是我跟電動被強迫分離,所以讀病歷、讀醫學原文、查房之餘很累的話,除了睡覺或冒著被轟出護理站的風險用公共電腦打逼以外就剩下讀電腦書了,這本書被我讀完就是這個原因XD

過去的C++課本教的都是物件帶來的好處,封裝繼承和多型怎麼克服古早時代functional programming遺留下來的一些問題,把細節藏起來可以如何如何降低耦合性,多型性和Abstract base class如何巧妙的幹掉一長串的if else。但這些都是以「一個類別/物件 v.s 一個function」的角度來分析,從來沒有書以一個系統的眼光來分析眾多物件如何才能有效率的達到分工合作。或許OOP寫久了就會自動學會很多的Design Pattern,至少書中一些Pattern我在替學校寫病理切片瀏覽程式那種小不拉機才三四千行的程式就領悟出來,但把眾多Pattern集合起來,以Pattern為基本單位有組織的來探討Design Pattern這個議題的,這本書似乎算是先鋒。

這本書的結構我認為大概可以分三部份:第一個部份講通用的哲學,如以delegation代替inheritance等,第二部份講一個名為Lex的文件編輯器,書本會舉很多設計上會遇到的難題,比如要如何做到可以輕易加入文件分析的能力(如各種line breaking algorithm),同時又不會把類別的介面改的亂七八糟,舉出問題後會用Design Pattern給個答案,如用Visitor + Iterator可以把文件的分析和文件的儲存分散在兩棵不同的物件樹,個人覺得在讀第一次的時候最難讀的就是這個部份,因為會有很多的Pattern突然凌空打來,在弄懂各個Pattern的同時還要想辦法全部整合在一起。但我也認為這個部份是這本書最最最重要的部份,這個部份弄懂了可以抓出綱要,在讀第三部份就會非常輕鬆。第三部份就是介紹各個單獨的Pattern,他們應付什麼問題?他們解決什麼問題?他們帶來什麼問題?基本上只要讀懂第二部份,第三部份就非常簡單。

讀這本書需要一些基礎的學問,C++/SmallTalk一定至少要會其中一門,而且要懂其物件導向的理念並且用一段時間,只是會宣告變數印Hello World是不算數的。只會一種語言沒關係,我完全不會SmallTalk,SmallTalk講解的部份就全部跳過,但損失其實不多。另外要有一點點資料結構和演算法的概念,雖然這不是這本書的核心部份,但當範例講一大堆Hash啦、SkipList啦,如果完全沒碰過這些相關概念範例就可能看不懂(不過都讀這本了,完全沒碰過資料結構的應該不多吧@@),Compiler則是要懂一點點,後面Intepretor Pattern就完全用Compiler的Parsing Tree來舉例,碰巧自己在台北讀中文書認識一點BNF和Parse Tree generation,所以範例大概還算看的下去。反正書本很多範例都假設讀者會某種東西。沒學過不會妨礙核心解說的閱讀,但是範例會看不懂。

聽Amazon的書評說這本書讀起來枯燥無味,怎麼會呢?跟死背第三代Cepharosporin可以對抗哪些細菌或是人類每天尿液超過三公升有哪二十種可能的疾病這種純死背的東西比起來,大概就像背Win32資料結構 v.s 看金庸小說這種快樂度的差距吧。從這個角度來說,唸醫學不能說沒用,當頭腦經過病態的訓練以後他的能力是會加強滴....

下本電腦書:Linkers and Loaders,Go Go Go! 全文連結

星期三, 3月 26, 2008

The Only Ekg Book You'll Ever Need

唸這本書的原因,首先是因為這個禮拜開始就要到心臟內科見習,如果老師給了一大堆EKG卻看不懂那會浪費頗多難得的學習機會。其次就是因為相對好唸好吸收所以評價非常高。燃燒了一個多禮拜的小宇宙總算把這本唸完了兩三遍。

唸完並且實際給老師的EKG操練過以後,我給予這本書很高的評價,雖然老師還是常常能夠拿出這本書找不到只有電子文獻資料庫才查的到的特殊EKG(昨天老師就拿了某個名稱B開頭,只在泰國運動員才比較看得到的特殊EKG=.=),不過這本書看熟之後,基本上就比較可以認出絕大多數重要的pattern,也才知道怎麼跟老師問問題。不然我和Hapby去心臟內科大概就只能大眼瞪小眼了XD

下個結論,這本書是進入EKG之門必讀啊,將來要換讀恐怖的大書也可以做個準備。 全文連結

星期一, 2月 11, 2008

現代嵌入式系統專案開發實務

不只開發需要速度,讀書也需要速度,唸了萬惡醫學系以後,深深感覺到讀書速度對知識吸收總量的重要性。人的生命有限,讀書速度不夠,首先就不會想讀,就算讀了,下場也是倒在書桌前面還不曉得書本在講什麼,就算拿出無限毅力,硬是讀進去,你會發現那些讀中文書和共筆的懂得比你多很多很多(這是最悲哀的地方)。比如讀內科聖經Harrison還有病理聖經Robbins的時候,自己預習往往讀了一大堆機轉,還是不曉得書本要表達什麼,然後半小時內立刻忘光,往往都是老師粗略講一遍有了架構以後回頭來查才能真的記住。所以現在都學乖,要讀大書以前,一定是先看老師講義或Wikipedia,先大概抓住這個主題到底要講什麼,才會翻開聖經書來唸。

上面是和電腦無關的題外話,但是會想看嵌入式系統的書是一樣的原因,主要是想要透過一些相對省力的方式,來對計算機的架構有個簡單而通盤的瞭解(恐龍書和Linux 0.01核心剖析我就先免了,謝謝)。連續好幾天走路去何嘉仁書局報到就把它讀完了(謹在此感謝萬惡醫學系給我的訓練.....),個人認為這本書很特別,文筆好,內容豐富深入淺出,非常值得讀。

其他的書可能會教怎麼把Embedded Linux移植到ARM CPU的系統上,特定的開發工具要怎麼用。這本書卻是以實務和通則的角度入手,從「要不要接案」一路講到「怎麼結案」,涵蓋領域橫跨作業系統架構、專案管理、軟體工程,兼具理論架構和實際開發經驗,甚至會講一些團隊合作(如:如何讓RD和測試人員不要打架),法律和商業問題等(比如測試還沒完成客戶就急著出貨,要怎麼做未來才沒責任)。書的內容都是實務入手。比如在講記憶體管理的地方,這本書會告訴你為甚麼記憶體要管理,malloc/free怎樣挖記憶體給別的程式,Stack、Heap管不好程式會怎麼出錯(附上系統管理老鳥追bug的悲慘故事),但是這本書不會告訴你現階段最好的演算法它的時間和空間複雜度是什麼。

這本書的行文風格非常輕鬆,不同於一般教科書平鋪直述演算法或程式實做細節的作法,這本書完全是用「講故事」的方法在行文,書本第一章會有一個菜鳥來公司應徵,然後專案經理(「PM老大」)對菜鳥訓話。後面的章節就完全寫成菜鳥和「老鳥」(系統老鳥,韌體老鳥等)對話和人物互動的形式。以菜鳥的學習路程和疑問為時間軸,從不會到會的過程逐步貫串書本的各個主題。生動活潑,輕鬆好懂,舉例,比如談到QA/QC的部份,一般課本可能就直接搬paper出來,講QA/QC怎麼做,ISO怎麼規定。這本書卻是講一個故事:PM老大剛從QA/QC人員的會議回來,對菜鳥抱怨「今天腦袋被那些不懂實況的QA/QC人員強姦一整天,現在(頭腦)還在痛」然後菜鳥就會問,PM老大就會開始帶理論,QA/QC為甚麼重要,精神是什麼,一般作法是什麼,然後講這些理論為甚麼在人員少、工時趕、客戶刁的情況下不適用,他的專案中怎麼變通。

這本書是我在寒假讀完的第一本電腦書,比ITOA好讀多了,ITOA只把圖論前的東西大部分看完而已,還早得很orz 全文連結