Git 小檔案

Git 是一個罵人的字, 意思大概是蠢蛋, 由 Linux 的作者 Linus Torvalds 所命名. 說到 Git,  總有些人不熟悉, 但是講到它的競爭對手 CVS, Subversion 大家應該就有點感覺了吧!

Git 算是個分散式的版本管理系統, 和笨重的 SVN 相比, 它只記錄 content 的變化, 而不以檔案為管理的對象. 基本上 Git 由 blob object (file's content)、tree object (directory)、commit object (tree's history)、和 tag object (metadata 的 container) 所構成.

因為 Git commit 的動作可以在 local repository 就完成, 所以可以同時 maintain 一個量產的版本, 一個或多個的 branch 開發新 feature, 卻不用為每一個 branch check out 到一個 local 的目錄. 等到連上了網路之後, 做一個 push 的動作, 才把 local 的東西 commit 到 server.

Git 可以對所有的 object 做 SHA-1 的 hash, 把 hash value 當作 object 的名稱. 因此一段 code 從 A.h 搬到 B.h, 就等效於一個 object 搬家, 加上對應的 object 跟著改變 (object 支援 zip 的壓縮). 反觀 SVN 中, 這意味著 A.h 和 B.h 獨立地改變了. 若下次只 check out A.h, compiler 就會報錯.

只靠這樣粗淺的了解, 我覺得 git 至少比 SVN 節能減碳,少用很多硬碟空間 – 不必為每顆 IC 建一棵樹. 但不知道全靠 metadata 來維繫的 "假的 branch" 是不是比較容易毀損呢? 目前看到 Git 不如 SVN 的地方就是它沒有 Windows 的版本. 如果這個東西做出來, SVN 咳咳, 可就要 bye bye 了. 請看迴響 1, Git 也有 Windows 版囉!

[ref]

1. http://en.wikipedia.org/wiki/Git_(software)

2. http://ihower.tw/blog/archives/2591

3. http://ihower.tw/blog/archives/2620

4. https://peepcode.com/products/git-internals-pdf (賣 9 USD)

我看 (one out)

經由小魚的推薦, 我也很快掃瞄完這 20 本漫畫. 哇! 份量著實不少呢! 就算是 "詐欺遊戲" (作者同樣是甲斐谷忍), 好歹也會出現個傻傻的女主角, 但是在這本漫畫裡, 除了一個胖胖的黑人大嬸出來過幾次之外, 就只剩一堆打棒球的男人和奸詐的球團老闆了. 於是我可以體會到難看的電影 "菜鳥總動員" 為什麼要把綾瀨遙宣傳成主要演員了,儘管她的戲分比胖大嬸還少呢!

這個故事的剛開始有點悶, 從來沒有拿到過職棒總冠軍的老將兒島弘道獨自跑到琉球做 "自主訓練" 時, 碰到了天才詐欺師的投手渡久地東亞. 可以想見老老的兒島已經過氣了, 高潮不會在他的身上. 渡久地雖然有點頭腦, 但是球速不快, 大概 128 Km/Hr, 以他當主角能畫個幾集? 就算是中華職棒的盲劍客遲早都可以把他打下場, 那麼還會有什麼火花呢? 這就是我覺得悶的原因.

但是看著看著, 詐欺師的火花就迸出來. 首先他投身的太平洋聯盟 L 球團的老闆就是個混蛋, 因為有了更討厭的對象, 渡久地就沒那麼討厭了, 哈哈! 萬萬料想不到, 渡久地東亞把球團搞破產了, 自己變成了老闆. 接著更討厭的對象變成中央聯盟 G 球團的老闆. 想不到職棒的大黑手也鬥不過他. 整個球界都動搖了, 這個故事的規模的確不是我在看第一集時, 可以從渡久地在路邊球場玩 one out 遊戲維生的場景中想像到的.

憑著一步一腳印, 當然不可能在一個球季裡面變出花樣. 渡久地靠的就是賭博, 然後靠著比對方多算一步, 讓對手掉進陷阱. 不管是他的投球內容、與 Lycaons 隊 簽的合約, 或是和對手的三連戰、五連戰, 都充滿了騙術和反騙術 (因為別人也在使詐術). 結果主角雖然不是每戰皆捷, 但是輸都輸得有規畫, 能夠為未來的勝利打下基礎. 即使這個故事的舞台放在我們太熟悉的職棒而顯得不夠真實, 不過還是很有意思.

我覺得這本漫畫裡面最重要的元素就是: 團隊合作. 畢竟球賽贏球不能只靠一個人. 但是什麼才是團隊合作? 什麼才是獲得勝利的元素? 書中的看法和普通人並不一樣.

這麼說吧, 兒島弘道本身已經做得很好了, 但是球隊不會贏, 為什麼? 因為其他人太弱. 如果打算倚賴弱小的隊友, 就算大家再合作也是枉然的. 因此, 團隊合作的前提是要有一個強力的團隊. 但是某些團隊成員太強了, 就會讓其他原本以為自己也很優秀的人, 感覺到失去舞台以及與他人合作的動力, 類似故事中的新 M 隊.

因此最佳的隊形, 並不是把各隊的第四棒都挖到同一隊去的日本 G 隊或是美國 Y 隊. 而是極少數的超級巨星 + 幾位明星 + 龐大的優秀後備部隊組成的一二軍結構. 只要在二軍狀況好, 就可以填補巨星和明星坐不滿而留下來的一軍空位. 

另外, 團隊合作還有一大特徵, 就是人人都奮勇爭先, 但是不致超越區域聯防的默契. 萬一遇到失敗, 也不互相責怪. 連敗的球隊, 總是不免互相責怪隊友, 這就是沒有團隊精神的徵兆. 即使球隊是成功的, 對於有功勞的球員, 老闆在敘薪的時候挑三揀四, 也是令人不願意出力的元凶. 像是教練自己叫投手保送把對方塞成滿壘, 年底的時候卻拿責失分太高來當作減薪的藉口, 這樣球員當然只好假裝受傷, 讓別的笨蛋去執行戰術.

故事中 L 球團老闆當初就是為了省點小錢才會和渡久地簽定以失分和出局數計價的合約, 最後導致輸了幾百億. 這個嘛, 當老闆就是要捨得銀子才行啊! 人家說世界上最難的事就是把別人的錢放到自己的口袋來. 做老闆的人唯有反其道而行, 做到員工認為老闆最難做之事, 然後他們才會肯為老闆做花錢都買不到的成果啊!

但錢怎麼給也是有學問的. 書中有一段剛好是渡久地接手老闆之後, 取消了所有球員原來的契約, 然後將門票的價錢由 2,000 円漲到 3,000 円, 多出來的 1,000 円就是球員的薪水, 分成 5 份由球迷票選來決定誰可以得到薪水(MVP ticket).

雖然這樣做滿有趣的, 但是事實上沒辦法做到. 因為球員就算有暴利可圖, 也要養家活口. 如果受傷一整季, 像小王那樣, 就準備喝西北風了. 再說後備球員雖然有機會一場球賺一億, 但是若十月才上場的話, 前幾個月要吃什麼? 如果到了客場, 對方球迷只要惡搞一下, 把票都投給 L 隊失誤最多的球員, L 隊的士氣就大亂了~~~ 呵呵!

我看 «超智遊戲» (one out)

經由小魚的推薦, 我也很快掃瞄完這 20 本漫畫. 哇! 份量著實不少呢! 就算是 “詐欺遊戲" (作者同樣是甲斐谷忍), 好歹也會出現個傻傻的女主角, 但是在這本漫畫裡, 除了一個胖胖的黑人大嬸出來過幾次之外, 就只剩一堆打棒球的男人和奸詐的球團老闆了. 於是我可以體會到難看的電影 “菜鳥總動員" 為什麼要把綾瀨遙宣傳成主要演員了,儘管她的戲分比胖大嬸還少呢!

這個故事的剛開始有點悶, 從來沒有拿到過職棒總冠軍的老將兒島弘道獨自跑到琉球做 “自主訓練" 時, 碰到了天才詐欺師的投手渡久地東亞. 可以想見老老的兒島已經過氣了, 高潮不會在他的身上. 渡久地雖然有點頭腦, 但是球速不快, 大概 128 Km/Hr, 以他當主角能畫個幾集? 就算是中華職棒的盲劍客遲早都可以把他打下場, 那麼還會有什麼火花呢? 這就是我覺得悶的原因.

但是看著看著, 詐欺師的火花就迸出來. 首先他投身的太平洋聯盟 L 球團的老闆就是個混蛋, 因為有了更討厭的對象, 渡久地就沒那麼討厭了, 哈哈! 萬萬料想不到, 渡久地東亞把球團搞破產了, 自己變成了老闆. 接著更討厭的對象變成中央聯盟 G 球團的老闆. 想不到職棒的大黑手也鬥不過他. 整個球界都動搖了, 這個故事的規模的確不是我在看第一集時, 可以從渡久地在路邊球場玩 one out 遊戲維生的場景中想像到的.

憑著一步一腳印, 當然不可能在一個球季裡面變出花樣. 渡久地靠的就是賭博, 然後靠著比對方多算一步, 讓對手掉進陷阱. 不管是他的投球內容、與 Lycaons 隊 簽的合約, 或是和對手的三連戰、五連戰, 都充滿了騙術和反騙術 (因為別人也在使詐術). 結果主角雖然不是每戰皆捷, 但是輸都輸得有規畫, 能夠為未來的勝利打下基礎. 即使這個故事的舞台放在我們太熟悉的職棒而顯得不夠真實, 不過還是很有意思.

我覺得這本漫畫裡面最重要的元素就是: 團隊合作. 畢竟球賽贏球不能只靠一個人. 但是什麼才是團隊合作? 什麼才是獲得勝利的元素? 書中的看法和普通人並不一樣.

這麼說吧, 兒島弘道本身已經做得很好了, 但是球隊不會贏, 為什麼? 因為其他人太弱. 如果打算倚賴弱小的隊友, 就算大家再合作也是枉然的. 因此, 團隊合作的前提是要有一個強力的團隊. 但是某些團隊成員太強了, 就會讓其他原本以為自己也很優秀的人, 感覺到失去舞台以及與他人合作的動力, 類似故事中的新 M 隊.

因此最佳的隊形, 並不是把各隊的第四棒都挖到同一隊去的日本 G 隊或是美國 Y 隊. 而是極少數的超級巨星 + 幾位明星 + 龐大的優秀後備部隊組成的一二軍結構. 只要在二軍狀況好, 就可以填補巨星和明星坐不滿而留下來的一軍空位. 

另外, 團隊合作還有一大特徵, 就是人人都奮勇爭先, 但是不致超越區域聯防的默契. 萬一遇到失敗, 也不互相責怪. 連敗的球隊, 總是不免互相責怪隊友, 這就是沒有團隊精神的徵兆. 即使球隊是成功的, 對於有功勞的球員, 老闆在敘薪的時候挑三揀四, 也是令人不願意出力的元凶. 像是教練自己叫投手保送把對方塞成滿壘, 年底的時候卻拿責失分太高來當作減薪的藉口, 這樣球員當然只好假裝受傷, 讓別的笨蛋去執行戰術.

故事中 L 球團老闆當初就是為了省點小錢才會和渡久地簽定以失分和出局數計價的合約, 最後導致輸了幾百億. 這個嘛, 當老闆就是要捨得銀子才行啊! 人家說世界上最難的事就是把別人的錢放到自己的口袋來. 做老闆的人唯有反其道而行, 做到員工認為老闆最難做之事, 然後他們才會肯為老闆做花錢都買不到的成果啊!

但錢怎麼給也是有學問的. 書中有一段剛好是渡久地接手老闆之後, 取消了所有球員原來的契約, 然後將門票的價錢由 2,000 円漲到 3,000 円, 多出來的 1,000 円就是球員的薪水, 分成 5 份由球迷票選來決定誰可以得到薪水(MVP ticket).

雖然這樣做滿有趣的, 但是事實上沒辦法做到. 因為球員就算有暴利可圖, 也要養家活口. 如果受傷一整季, 像小王那樣, 就準備喝西北風了. 再說後備球員雖然有機會一場球賺一億, 但是若十月才上場的話, 前幾個月要吃什麼? 如果到了客場, 對方球迷只要惡搞一下, 把票都投給 L 隊失誤最多的球員, L 隊的士氣就大亂了~~~ 呵呵!

大陸互聯網電視牌照小檔案

大陸的彩電業去年 (2009/3)推出了互聯網電視, 讓電視可以上 internet 遨遊. 有一度還可以連到迅雷、 PPS, 讓大家有看不完的盜版影視節目 (其中PPS 買了很多正版, 以便和迅雷有區隔). 不過這種美景沒過多久, 就被廣電總局給戳破了.

2009 年 8 月, 廣電總局行文公告列管互聯網電視. 起初使得是釜底抽薪法, 把一些 BT 網站全查封了. 這段期間內, 大家可能忽然都不需要買新硬碟了. 因為沒有 source 可以抓, 硬碟自然就不會爆. 不過這個方法似乎不太好, 連 PC 的玩家也連帶受累啦! 在網路上的人少了, 在真實世界的閒人就多了, 大陸也怕閒人多吧… 曾幾何時, 這些網站又開張了, 硬碟業也喘了一口氣~~~

2010 年 3 月, 廣電總局發放互聯網電視牌照, 告訴這些彩電業者: 互聯網電視可以賣, 也可以上網, 但是不能隨便上. 想看視頻嗎?  從有牌照的集成業者那邊上就對了! 不消說廣電總局發牌的對象仍然是廣電系的子弟兵, 第一波由央視、上海文廣、和杭州華數取得牌照.

但彩電業者就不高興了. 三家內容提供商向彩電企業開出的帳單並不便宜,均攤至每台電視機,將產生數十元到一百多元不等的服務費。若以每台50元服務費、一年銷售300萬台網際網路電視的銷售目標計算,一家彩電企業為購買內容,就要付出1.5億元的成本。[註 1]

不過是建個 portal, 彩電業者也有財力能做這件事. 創維自建的酷開網, 投資不過是幾千萬而已. 於是彩電業聯合向廣電總局抗議: 至少報氣象、玩遊戲不歸廣電總局管吧! 廣電總局接著在 2010 年 4 月再發佈 "互聯網電視內容服務管理規範", 這個公文被解讀為集成可能再適度地開放, 但是內容會抓得緊一點.

2010 年 8 月有小道消息說, 廣電總局再發給 3 家公司集成牌照: 上海廣播電視台、南廣傳媒、和湖南衛視. 算是緩和了彩電業者對於網路視頻牌照有兩三百張 (此處指信息網絡傳播視聽節目許可證) [註 2], 互聯網電視卻只有 3 張牌的不滿情緒. 不過, 既然所有的政令都出自黨中央, 政府不讓你的電視上網, 也可以避免家家都爬牆的恐怖事件發生. 試想, 家家有電視, 接著戶戶都可以上自由門, 翻過網路長城, 那…絕對不是中國政府所樂於看到的.

[ref]

[註1] 彩電廠商疾呼:自建平臺應可申請內容集成牌照

[註2] 經營 IPTV 實際上需要四張執照, 除了廣電總局的 "信息網絡傳播視聽節目許可證", 還有文化部的"網路文化經營許可證", 信產部的 "ICP 證" 和 "移動增值業許可證". 但難拿的是廣電總局的那一張.

3D Object Culling 小註解

假設要畫出 3D image, 那麼只能在單個眼睛成像的近物就不用畫出來, 因為畫了也不會有立體感, 這個砍掉無用訊號的步驟就叫做 culling.

假設綠色線表是兩眼的距離, 紅色線表示螢幕的寬度. Z 要砍到哪裡呢? 根據我女兒在國二學的數學, 左上和右下的兩個三角形 (或是左下和右上) 符合三個角都相等 (AAA) 的相似三角形.

所以

Z / (I / 2) = (D - Z) / (W / 2)

Z / I = (D-Z) / W

Z = D / (1 + W/ I)

對於近在眼前而 “跳出螢幕" 的 object, 只需要畫出藍色的三角形. 螢幕 (W) 超大的時候, Z 可以忽略不計 (case A). 有嚴重的鬥雞眼 (I 0), Z 也會隨之減小 (case B).

不過照公式, 兩眼近到等效只有一隻眼睛的時候, Z 趨近於 0, 反而全部 object 都要畫. 但是此時已經沒有所謂的立體感了 (兩隻眼睛才有立體感), 大家有看出哪裡不對嗎?

我想: case A 中, 交叉點隨著螢幕變大而往左移,  case B 中是眼睛往交叉點移, 所以並沒有多畫. :P