約耳跟松本

又是整整一個月沒有更新的狀態了,沒有跑去生小孩,花了比較多時間在運動閱讀和手機上,但這些都不是沒有更新的理由。不更新是不需要理由的。很感謝大家的不離不棄,不過大部分訪客都應該是Google Sony那台W320才跑進來的,本站虛無飄渺的題材,已經讓本站的關鍵字走向不可預知的答案上了!

 

約耳這系列有兩本 - 趣談軟體和續談軟體。趣談的內容比較偏向工程師對軟體設計開發的兩三事,續談的語氣就比較偏向管理者對於專案管理和創業經驗分享。也許是從作者的blog的文章中收集成冊出的書,所以內容編排方面比較單元化,就像看小叮噹一樣,沒有看到上一話也不會影響到閱讀的樂趣。

在提到松本這一本之前,我不得不說一下,我之前一直以為Ruby之父是高橋征義,這再次證明記名字絕對是我人生最弱的項目之一。書的標題很長,但簡單來說就是用一種不是工具書的方式。而是以先介紹軟體設計概念,而後面在輔以Ruby語法的範例,從頭到尾貫穿的一本書。

對於軟體工程師來說,這三本都是很值得花時間閱讀的書。就像我之前看過的程序員修練之道,懶惰是好的程序員具備的特質之一,使用機器的時間成本絕對遠低於使用人腦的時間成本,約耳這兩本談軟體的書,對於一成不便的工作流程也許會讓你有新的想法和作法。

松本這本,我不得不很靠北的說,這根本是我這幾年在軟體開發上跌跌撞撞的編年史,讓我們來看看本書章節:

.物件導向與抽象化
.多重繼承的問題與Mix-in
.基於原型與基於類別的物件導向概念
.靜態語言與動態語言的差異
.Duck Typing與Metaprogramming
.區塊和閉包的強大威力
.設計模式與開閉原則
.Ajax與JavaScript
.Ruby on Rails與MVC
.開放類別與Monkey Patching
.字碼問題與Unicode
.正則表達式與「鬼車」
.整數、浮點數、位元運算
.程式最佳化技術與平行程式設計
.程式弱點與攻擊手法
.程式的時間問題
.資料的永續性與XML
.函數式程式語言的特性
.記憶體管理與垃圾回收機制
.程式碼產生技術與Ruby的擴充方式
.開放原始碼的精神與選擇授權的觀念

從物件導向、中介編程、設計模式等軟體設計概念,到字碼、時區、i18n這些比較實務上會遇到的問題,本書全部都有提到。這裡頭寫的主題90%我都有在這幾年遇到過,不管你會不會寫Ruby,我都覺得有入手一看的價值。

最後,我發現我只要不認真去構思章節,胡亂寫就會寫很順,越是想要認真寫些什麼,反而就寫不出什麼,這跟我在籃球場上的表現還真像啊!該是去公司練投的時間到了!各位掰!

有人來信問我考SCJD的心得,我懶得來信回了,因為我之前很認真打了一篇回信給其他人,但也是肉包打狗還不如寫在部落格自嗨,至少有人會看到。心得就是,想證明自己有一定的英文及軟體設計的實力,請當作是自己給自己的試煉去考。這證照對於找工作有沒有用,多少也許有一點但要看你找的是不是Java相關的工作,像我找韌體的話,這張跟大便一樣。然後,強者是不需要用證照來找工作的,直接用實戰經驗和業界名聲就被挖角挖到老了。以上!

星海爭霸2 - 自由之翼 劇情遊玩心得

剛剛全破劇情了!寫點東西記錄一下當作日記!

一代是我高中時出的,不過那時候電腦遊戲都還是原文的,認識的人只有老馬在玩吧,因為我實在對於人神蟲的故事設定很沒有共鳴,當時我反而是比較著迷在終極動員令這款遊戲。

第二次重新認識星海,是在大一後期,宿舍同學玩膩了世紀帝國後,大家就開始換玩星海爭霸換換胃口。還記得大家總是直接將檔案拷貝過去安裝就可以使用了,我對這類遊戲總是苦手,生產就忘了進攻,進攻就忘了生產,但在同學都會依據實力分配團隊3v3的情況下,當時我還是從這款遊戲得到了不少樂趣。

還記我那時換上一顆好一點有重低音的電腦喇叭,坦克架起來的砲擊音效,到現在回想起來還是經典中的經典。

官網這次是真的很佛心,網路上可以免費下載完整版本,公測開放所有功能,一毛錢都沒有收,我實在找不到一個理由說服自己拒絕去重新體驗星海爭霸的魅力。

說暴風雪是推動電腦換新的幕後英雄,真的是完全不誇張。當我用我四年前買的C2D E6300 + NV 7300GT的配備開啟遊戲,我還以為我裝錯檔案,裝到第一代的星海爭霸,當下真的是恨不得馬上衝去NOVA換掉我的CPU和顯示卡。建議的預設值全部為低,連遊戲角色的單位圖示都是2D的(用腹語說話 –.. – ),曾經嚐試把特效調高,但FPS=5~10這種數字是沒辦法玩即時戰略的,最後只有把3D模組調高(相同單位也會有稍稍不同的模組行為),然後單位圖示開成3D(講話嘴巴會動),這樣的設定值在單人劇情玩下來,FPS都有30+以上的水準。

網路上有好評有壞評的繁體中文語系,我個人還蠻喜歡的,由其是小護士的配音真的是無法形容的經典,明明就有醫護艇可以生產,但遊戲結束時總是滿滿的護士海。口傑 口傑!

礙於小弟手殘外加沒太多時間沉迷於遊戲的關係,我只有用普通難度把單人劇情走了一遍,這次主程式的劇情放在人類身上,所以少數幾關卡以玩到神族以外,絕大部分的場景都是人類(被?)屠殺蟲族的設定,單人劇情也導入一些預先購買單位技能和建築物技術的設計,可以玩到看到的單位跟技能應該都比多人正規戰來得豐富。酒吧中類似雷電的小遊戲和劇情後期微控少量單位的ARPG玩法,讓人期待網路上神人運用這套編輯器會作出什麼樣的小遊戲。然後,電視播的新聞記得每關結束去開來看看,還蠻爆笑的。

劇情就不捏他了,之後還會分別有蟲族和神族的資料片,對我來說,最好的選擇應該是十年後三包合成一包賣的時候在買吧,到時電腦也不怕跑不動,小孩也不用喝奶了,畢竟我現在頭上還有兩包賣不掉的暗黑2和一包魔獸3在擺著生灰ㄌㄟ。

不想浪費時間的程式設計師之道(中) – Input & Process


(照片來自於型男飛行日記的劇照)

我不是什麼很牛逼的程式設計師,不像電影裡頭演的電腦駭客,一坐在電腦前手指就開始不停地在鍵盤上飛舞。我也不像網路上的一些大師,隨時都在玩最火熱的技術在開發,知悉所有框架介面用法和規格定義。

我大部分的時間都是在電腦前追蹤自己或是別人寫出來的蟲子,更多的時間是用Copy Paste別人的程式碼然後做些小小的修改,能碰到新東西的機會並不多。想要擠出些多餘時間來精進自己專業知識,有效率地快速完成老闆交付的工作就是我努力想要達成的目標。

這篇文章是自己這些年實作下來的野人獻曝文,文章會寫得很簡短直白,我自己正在用的工具程式也會附在文內,參考書目寫在最後面。按照我的工程師思維,本系列文分成以下四個部分:

  • Precondition :營造一個好的工作環境。
  • Input:決定要做哪些工作。
  • Process:利用一些方式有效率地工作。
  • Output :工作告一段落之後。

歡迎大家留言討論,也許是您自己另外又寫一篇完整文章來分享自己的作法(歡迎留下您的文章連結),那就更棒了!

Input

人生沒有全拿這種事

"人生沒有全拿的"是我自己常對自己說的一句話,人的時間有限,但是慾望無窮,我們只能挑出幾個想要的目標來完成。工作也是一樣的道理,根據"重要"和"緊急"這兩個參數,就可以將工作分成四個優先權等級。

  • 重要 + 緊急
  • 重要 + 不緊急
  • 不重要 + 緊急
  • 不重要 + 不緊急

我習慣上是事情一來就分類後,按照約定時間或結案時間填入Google Calendar中,然後把最近幾天需要完成的工作填寫到To-Do List上。To-Do List也許只是一張放在桌面上的紙或是一張貼在螢幕旁的便利貼。要作的事情寫下來,寫的東西放在固定的位置,隔天很容易就能切換回原來的狀態,有了這份安心感,回到家大腦也不會被尚未完成的工作所佔據。

寫到這邊,其實我覺得這部分用Filter反而比較貼切! XD

Process

學習

三分鐘念完一本書

閱讀時不是逐字逐句讀懂才往下讀下去,不要求第一次就完全讀懂,第一次用快速掃描的方式將整本書翻完,閱讀的同時用直覺將重要的部分折頁。第二次閱讀針對折頁部份劃線或是筆記,爾後有空就翻這些重點部分,這些重點在不斷地反覆閱讀下,很容易內化成自己的基本常識。

說起來很玄,但舉個例子,有人問Kobe執行最後一擊會不會特別緊張。他回答說"這些投籃我每天都練習很多次了,對我來說這就跟打噴嚏這種身體反應一樣。你打噴嚏會緊張嗎?"

紙上談兵

記錄我會選擇不需要花太多時間的方法,因為人容易抗拒丟棄花時間作出來的東西。所以我選擇的工具都是,很容易完成,很容易修改,當然也不會排斥丟掉重新寫一份。

我大多使用純文字格式作些簡單的記錄,理由是不會有轉換或沒有辦法開啟的問題。

需要創意發想或是整理想法的時候我會使用心智圖(XMind),好處是圖形容易激發人的聯想力,另外不論是軟體還是用筆畫都很方便重新調整架構。

需要作投影片的時候,我會選擇高橋流投影片,同樣有簡單意修改的特性,當然視狀況最後我會修改成比較比爾蓋茲流的投影風格,但相對來說來是簡潔許多。

程式碼是程式設計師最好的朋友,但在時間許可的情況下,我還是比較喜歡用UML工具(ArgoUML)來設計自己的架構或是了解其他人寫的程式碼。UML產出的圖形可以作為設計時的參考,也可以保留作為設計文件的概念圖。

待續…

參考書目: