2012年8月17日 星期五

如何增進工程師效率–Revision Control With Git

Revision control (RC, 版本控制) 有沒有用或是否重要,要吃過苦頭才知道。當你修改一些設計犯了錯想要回頭,或是要做一些 optimization 的實驗。如果有好的 revision control, 就像有一幅地圖,可以清楚而且有效率的 navigate 如何前進或後退。

有時和工程師談到 revision control, 得到的反應是用不到或是真的需要學一個新的 tool 嗎?  其實他們有一套私有的 revision control, 例如 copy 到不同的 file 或 directory,  用日期或 v1, v2..  來做版本控制。私有的問題是 (i) 簡單但容易有人為的錯誤;(ii) 很難和別人 share 和溝通。多半是單幹戶的方法。

雖然已經有許多的 revision control tool, 我發現 git 是最適合我 (as a designer) 時 revision control.  原因是:linux built-in revision control tool (事實上 linux 本身也是用 git 做 revision control);  可以簡單到單幹戶都可以自己取代私有的 revision control ; 但也非常適合一個 team project 的 revision control.

 

Git 三招走江湖

image

Git 的操作參考上圖。比起其他的 RC tool, 除了一樣的 working directory 和 repository 外,多了一個 staging area.

第一招:Create First Revision

Only 3 command

  • git init
  • git add .
  • git commit –m “init version”

Before start, first setup

  • .gitconfig in your root directory
  • .gitignore in your project directory

 

第二招:Check-in New/Modified Files/Directories

Add new files

  • git add <file/.>    -->  from working area to staging area
  • git commit –m “check-in message”   -->  from staging to repository

Modified files

Method 1: same as above

Method 2:

  • git commit –am “check-in message”  --> from working area to staging area and repository

git ci -am 不包括 new files

git add or git commit –m  only apply to 本目錄及其下所有子目錄

Always use “git status” to check

 

第三招:Checkout Repository

回復原狀 (repository to staging area and working area)

  • git checkout -- .

Staged, but not commit

  • git reset <file>   -->  staging area to working area

要撤消 Commit, 但維持 working directory

  • git reset --soft HEAD~1  -->repository to staging area

 

    2012年8月2日 星期四

    Group Theory–我的經驗

    前前後後花了後次時間自習 group theory,  每次都像是新的開始,之前學的統統忘了。前一兩次是 algebra approach, 從 definition (group/ring/field), more definitions (abelian, subgroup, normal subgroup, coset, conjugate, homophism, autohomophism, direct product, …), and theory (Lagrange, Sylow, Galois, …).  學的迷迷糊糊,因為從來用不到,最後統統忘掉。

    再來是從 permutation 著手,搭配 Rubik cube, puzzle-15, etc. game 方面的應用,依然不得要領。

    比較起來, linear algebra 雖然也很抽象, 但因為比較常用 (eigenvalue, eigenfucntion),倒不致於完全忘光。

    最近從 geometry symmetry 著手,開始比較有一些感覺。如 cyclic group, dihedral group, symmetry group.  不過也止於一些 geometry 的對稱群,沒有更深的領悟。無法和之前 algebra approach 的一堆 definition 和 theory link 在一起。

    這次看了 Carter 的 visual group theory 的 video, 非常有感覺。Carter 用 Cayley diagram visualize symmetry,同時用 Cayley diagram 來解釋 group product, normal subgroup, quotient group.  One picture more than a thousand words!    http://web.bentley.edu/empl/c/ncarter/vgt/index.html   另外YouTube 和 Google book 都有相關的資料。

     

    Cayley Graph

    Group theory visualization 的根本是 Cayley graph (or Cayley diagram).  Cayley diagram 包含兩個部份:node 表示 group element.  Arrow 表示 group generator 的作用。

    數學上的定義請參考:http://en.wikipedia.org/wiki/Cayley_graph

    我們的重點是如何用 Cayley graph  直覺式的看穿 group 的結構和理解 group theory 中的 definition 和 theory。

    以下的一個例子是一個簡單的化學分子,有三個 branch。它的對應 Cayley graph 如右。Generator 是一個 120 度順時針旋轉,每一次的操作都保持原來的形狀。在 group theory 中這是一個 cyclic group with order 3, or C3 group。

    image     image                         

     

    常見的對稱 Group 以及 Cayley Graph

    Cyclic Group, Cn : 看圖就可以理解這是旋轉對稱所對應的 group 和 Cayley graph.

     

    imageimage

     

    Dihedral Group, Dn : 下圖是正三角型所有的對稱操作,也稱為 D3 group。 Dn group (正 n 邊型/regular polygon) 包含了旋轉對稱+鏡像對稱,比起單純的 cyclic group 多了鏡像對稱。因此 Dn group Cayley graph 中的 node 多了一倍。Dn group 有兩種 generators, 對應旋轉對稱和鏡像對稱。兩種 geneator 的 arrows, 分別用 greenblue arrows 來表示。鏡像對稱是正->負-> 正->負.. 因此 arrow 是雙向的,圖中就省略了雙向箭頭。

    image

    Dn group 的 Caley graph 如下。光看 Cayley graph 就知道 Dn group 是 non-abelian group, why?

    image

     

    Abelian Group :  Abelian group 的特點是所有的 group element 符合 commutating rule, ab = ba.  Non-abelian group 在 quantum physics 扮演了關鍵的角色,例如 Yang-Mills theory.  

    從 Cayley graph 可以容易的判斷是否為 Abelian group.  我們可以証明 group element commutes 等同於 group generator commute.  如果只有一個 generator, 如 cyclic group, 一定是 Abelian group.  兩個 generator 以上,可以用下圖來判別。如果所有不同顏色的 arrow 交換都指到同一個 node, 是 Abelian group.  只要有任何 arrow 交換指到不同的 node, 則是 non-abelian group.   所以上述的 dihedral group 是 non-abelian group. 

    image 

     

    除了 cyclic group 以外,下列各圖都是 Abelian group

    image image  image image 

    相反的,以下都是 non-abelian group.

            

    由圖就可以看出來,Abelian group 都是 grid 的結構。所有的 arrows 都是垂直或水平 (除了端點的 arrow 要繞回另一端外)。Non-abelian group 的 arrow 則非直角或相互交錯。.

     

    Symmetric Group and Alternating Group,  Sn or  An 

    Dihedral group 表徵兩維平面的正多邊型的對稱。對於三維空間的正多面體 ( 如正三角錐,cube, etc.  i.e. regular polyhedron),顯然有更多的對稱操作。它們對應的對稱 group 為 symmetric group 和 alternating group.

    image

    Symmetric group, Sn : 包含 n! permutation (S3:6, S4:24, S5:120, …).  S3 = D3

    Alternating group, An : 包含 n!/2 even permulation (A4:12, A5:60, …)

    Tetrahedron: 有兩種對稱操作? (都是面旋轉120度?)。12 個 node, 是 A4 group

    image

    Cube: 有旋轉對稱和鏡像對稱。24 (8x3) node, 是 S4 group

    image

    Octahedron : 有旋轉對稱和鏡像對稱。24 (4x6) node, 是 S4 group

    image

    Dodecahedron : 60 node, 是 A5 group

    image

     

    Icosahedron :  60 node, 是 A5 group

    image

     

    除了上述五種正多面體以外,不存在更多的正多面體,這是古希臘人就已經知道的事。意即不存在 S5 (含) 以上正多面體的對稱群。這和 5 次方程式(含)以上無根式解有密切的關係,Galois 就是有此洞見而創建了 group theory。S5 (含) 以上的 symmetric group 也稱為 non-solvable symmetry group. 

    追蹤者