Git rebase 和 merge 合併操作示範錄影

昨天的 Git 教學投影片 還蠻多人按贊分享的,謝謝大家。不過其中少了重要的 live demo 覺得有點可惜,所以來把其中最有趣的一段錄下來好了。第一次錄影加聲音發現還蠻緊張的,獻醜哩。

這是先用 rebase 整理 commit history (包括修改訊息、修改內容、刪除、拆開、新增和調換commit順序),然後再進行 merge 的示範。但誠如我投影片 p117~p118 所說,這是一種追求完美潔癖龜毛的作法,但是看到最後的 commits 線圖這麼漂亮,就覺得值得啦,而且中間的過程很有趣不是嗎? XD (除非一直發生 rebase conflict 情況啦,那就不好玩了,請量力而為 :p)

情境是我們想把 feature/forum 這個 branch 合併進主幹 master,這是合併前:

以下是直接在 master branch 做 merge feature/forum 的合併結果。你會發現 feature/forum 與 feature/chatroom 這兩個分支出現交疊的情況,當合併的分支一多,線圖就容易變得雜亂:

以下是改成用 rebase 整理之後再 merge 的方式,做出漂亮的合併線圖:

ps. 如果有人想練習的話,可以 fork sandbox 這個專案(純粹練習git,是個亂寫的rails專案)。

ps. rebase 也可以參考鴨七的這篇文章

Git 教育訓練課程投影片

Update(7/21): 我把 p117 rebase 和 merge 操作的示範 錄成影片啦 :)

這是最近準備的 Git 教育訓練課程,加上 live demo (一般操作、merge、reset、rebase等等示範) 時間大概是三個小時。其內容主要基於去年的演講,新增了Git內部原理(p36~51)、分支模式(p143)和更多 Tips(p168)內容等等,總頁數從117成長到198… XD

再次感謝 schacon 公開的 OmniGraffle Diagrams 圖檔讓我可以改來用 :>

敏捷開發與 Scrum 分享投影片

Update(2012/7/16): 由於投影片部分內容引用自 ezScrum 課程教材,不適宜公開,非常抱歉。他們的課程非常棒,推薦大家報名 Scrum敏捷方法實作班

這是今天在公司內部講的 “敏捷開發與 Scrum” 投影片(大概花了一個小時講,加上另一個小時實作練習),不是什麼經驗分享演講,畢竟還沒有 Scrum 的實際導入經驗 XD 所以只是東抄西抄整理重點,見笑了。

認識敏捷開發的精神不是第一次,但 Scrum 流程倒是頭一回。上回參加 Teddy 的 Scrum 課程,其中感觸最深的就是 cross-functional team 概念,全部 team members 都要參與 Story 討論與估計,無論其技術或設計背景。而上週末惡補 Scrum 書體會最深的則是 self-organized team 的 empowerment 和 accountable (賦權與當責)概念,可惜我還講的不好就是了。總之,學了 Scrum 流程,再回頭看敏捷宣言又有不同的體悟。

期待之後有更多實務經驗可以跟大家分享囉。

JavaScript,我真是搞不懂你啊!@JSDC.TW 2012

這是我在 JSDC.TW 给的 Lightning talk: “JavaScript,我真是搞不懂你啊!” 的現場錄影。因為投影片其實只是內嵌影片,所以看影片就好了。

講這個題目的目的完全只是娛樂效果(非戰)。因為成為 LT 講者可以免報名進場,所以就厚著臉皮來表演 Wat 看看,聽起來是有得到一些笑聲 XD 如果想進一步知道 JavaScript 為什麼會這樣處理,可以參考 解析 JavaScript,我真是搞不懂你啊! @JSDC 2012 這一篇文章。

Functional Programming for Java Developers 讀書摘要

這是我之前念 Functional Programming for Java Developers 一書的摘要記錄。這本書很薄只有90頁,是一本蠻不錯的 Functional Programming 概念入門勸敗書。

近來 Functional Programming (函數式編程,以下簡稱FP) 的重要性提昇就是為了因應 Concurrency 的需求。CPU 朝向多核架構發展,OOP的程式開發方式物件充滿可變狀態,造成撰寫 Concurrency 程式時陷阱多多。

當然,要寫FP不代表一定要用FP語言,還是可以用現成的OO語言去寫。但就像用沒有OO支援的C去寫OO風格,用專門的FP語言還是比較方便。

為何要FP?

作者說雖然是因為 Concurrency 而學 FP,但是後來卻很享受這種 Paradigm Shift (典範轉移)。OO 被發明因為 GUI,後來人們發現可以用來應用在各種領域上。OO 和 FP 都是工具,各有優缺點,但是現在人們碰到所有問題都用 OO 去解,就像你手上有著搥子,在你眼中什麼都看起來像釘子

FP 不代表比 OO 優越,畢竟 OO 的好處已經被證實且廣泛應用。而是目前時代不同了,OO 的缺點在某些領域已經到了不可忽視的地步,有些挑戰性的問題用 FP 解更為適合,例如:

閱讀全文〈Functional Programming for Java Developers 讀書摘要〉