日文形容詞文法整理

 日文的形容詞分為 い型 和 な型 兩種, 主要的特色在於時態的變化, 這是中文或是英文所沒有的. 以前胖, 現在瘦, 用中英文都相當單純. 但是日文就必須改變形容詞的語尾來表示時態.

い型和な型的形容詞有些不同, 如果是い型, 唸法是訓讀 (日式的, 用中文去猜也猜不到那種). 比方說大小, 顏色有關的形容詞都是い型. 我把它想像成自古就存在的說法.  な型比較混亂, 唸法包括訓讀, 音讀 (比較像中文的那種), 以及外來語.

い型的過去式與否定變化如下表, X 表示語幹.

X + い →過去式→ X +  かっだ

 否定

  過去否定
 X + くない  →過去式→  X+ くな + かっだ

[note] 促音的輸入用 ltu.

例子:

大きい → 大きくなかっだ = 以前不大.

升級到敬體的方法:

(1) 後面再加 です, 例如 大きい → 大きいです 

(2) 用 ありません, 例如 大きない → 大きありません 

 

大きい+です  →過去式→ 大き+ かっだ+です

 否定

  過去否定
 大き+ くない+です  →過去式→ 大き+ くな+かっだ+です

[特例] 良い(いい) 以前有提過 ,因為剛好有兩個い, 後面那個 い配合い型公式, 但前一個い也要改成よ. 綜藝節目 "天才衝衝衝" 裡面, 常常有人唱這首, "愛人呦依呦依呦, よいよいよ,…", 還滿好記的.

 いい →過去式→ かっだ

 否定

  過去否定
 くない  →過去式→ くなかっだ

 な 型形容詞的時態據說和名詞一樣. 但是看了網路上的參考資料, 似乎沒有打包票. 總之, 它和い型一樣, 要先去な這個語尾再變化.

[常體]

 X (だ) →過去式→ X + だった

 否定

  過去否定

 X +  じゃない

 →過去式→

X + じゃなかった

[敬體]

X+です →過去式→ X+でした
否定   過去否定

X + ではありません

X + じゃないです

→過去式→

X + ではありませんでした

X + じゃなかった

所以下面四組可以排列組合使用.

では ありません
では ない
じゃ ありません
じゃ ない

下面四組也可以排列組合使用.

では ありませんでした
では なかった
じゃ ありませんでした
じゃ なかった

希望沒記錯, 好難的日文啊!

重要參考資料: http://el.mdu.edu.tw/datacos//09422012021A/activity22.pdf

 

藍光光碟機的加密方法

在藍光的光碟片上, 有著多重的保護機制. 隨然他們已經被有心人士破解了, 但是對於 BD player 或是 BD disk 的生產廠商來說, 卻是一個不得不繼續維護的規格, 以免問題變得更嚴重. (謎之音: 會更嚴重嗎? 有抓不到的片子嗎? 僅存的功能應該說是維護正版的尊嚴吧!)

無論如何, 我們來回顧一下 BD 的保護機制. 大致上有下面三種:

AACS (Advanced Access Control System) – 主要的保護機制.

BD+ – 使得每個 title 都有唯一的 scramble 方式. Content code 存在光碟片上.

ROM Marks – 存在光碟片上, 這些加密的資料用來給 AACS engine 生成 key (金鑰). 必須是取得授權的 BD 光碟機才能夠讀出上面的資訊, 用 bit-by-bit 也無法複製此部分.

其中比較重要的顯然是 AACS, 我就先把它做個描述. 接著再補充 BD+ 的部分.

 AACS 主要是使用 128 bits AES 來加解密影音的內容, 其中需要許多步驟來生成最後的 key, 而不是大剌剌地把 key 放在某個地方. 其步驟大致如下:

1. 從光碟片的 Media Key Block (MKB) 的一堆 key 中取出符合這個 BD player 的 key. 若是某支 key 已經被 hack了 (compromised), 新版的藍光光碟就不會再存放這支 key.

2. 從 ROM Mark 所保護的區域取出 Key Conversion Data (KCD), 和 step 1 的結果生成 AES-G.

3. 從 Sequence Key Block (SKB) 取出 data 加上 Volume ID 和 step 2 的結果生成新的 AES-G.

4. 用 step 3 的結果來解 disk 上的 title key, title key 受到 ROM Mark 的保護.

5. 用 AACS 的 public key 來驗證 title key 是否合法. 如果合法, 就用 title key 來做 disk 的解密.

除了 title key 的機制之外, 不合法的 BD player 與 BD 光碟機也都有黑名單. 這個黑名單會放在新版的藍光光碟片上. BD player 與 BD 光碟機要互相查詢對方是否在黑名單裡面.

這些保護機制雖然已經層層把關, 但是 user 仍然有可能從類比輸出或是數位輸出把影音內容 "備份" 起來. 為了防堵這個漏洞, AACS 另外有 4 個方法來阻止 "小偷".

1. Analog Sunset — 類比介面的落日條款. 2010 年開始, AACS 所保護的內容只能有限制地輸出. 到了 2013 年, 就不允許再有類比輸出了.

2. Image Constraint Token — 如果 BD 裝置有類比輸出, 視訊方面要受限在 52 萬畫素以下. 也就是 1080p 顯示器上 25% 的大小.

3. Digital-Only Token — 完全禁止 video 在類比輸出上面播放的技術.

4. Audio WaterMark – 嗯, 終於講到 audio 了.

Audio watermark 的做法是在 audio bit stream 的聽不到的部分, 載入一些 data. 這樣大家應該可以知道為什麼 Dolby, DTS 要狂推 192 KHz 這種超級高頻了吧! Audio watermark 又可以分為  “theatrical” 和“consumer” 兩類. 前者表示劇場級的音效, 只要看到這個就表示這個音源是非法的, BD player 會立刻停止播出. 第二種表示音源受到 AACS 的保護, 如果沒有偵測到合法的 AACS 系統在運作, 也是立刻喊 "卡"!

最後介紹一下 BD+, 原先我們的同仁認為它是一次性的檢查, 所以沒有 implement 相關的硬體. 雖然它的確不需要硬體, 不過它可不是個省油的燈! 如果沒有預留足夠的計算量, 它也可能會成為運算的瓶頸.

BD+ 要做三件事:

1. Media Transform function: 把光碟上的資料讀出來, 在 BD+ Virtual Machine 上面做 descramble. 特別的是, descramble 的 code 不是 BD player 管的, 而是存在藍光光碟上的. 而Fix-table 是存在 AV bit stream 裡面的. 只要 playback, BD+VM 就會運作, 不是只做一次喔!

2. Counter Measure: 和 AACS 不一樣的地方在於, AACS 看到被 hack 的 BD player 會直接拒絕和它溝通. 但是根據 BD+ 的概念, 若是一台 BD player 被破解了, 這台 BD player 總會去播其他的新 BD 光碟, 而新的光碟上面就會針對這家被破解的 BD player 特別給予 "更正"! 因為 BD VM 的 code 是參考光碟上面的, 也就是 content-specific.

3. 如果第二招也無效, BD+ 採用 Native code 來做 counter measure. 如果播放的時候, BD+ 偵測到這個 BD player 已經被 hack 過, 而 native code 又存在的話, 它會改 run native code 而不是被 hack 過的 code.

基本上, 只有在 playback 的時候, BD+ VM 才會去監視 BD player 是否合法? 而 BD+ VM 偵測的方法則是專注在 memory footprint 上面, 不會竄改 BD player 的設定, 也不會收集客戶的私人資訊, 這是據說 BD+ 比較優異的地方.

[reference]

http://www.dell.com/downloads/global/vectors/brcp.pdf

 

該換火星塞的徵兆

前天開始, 車子開起來怪怪的. 怠速的時候沒有甚麼感覺, 但是起步或是倒車的時候, 就覺得引擎在抖動. 這個震動感傳遍全車, 但只要車速快起來, 那種感覺也就消失了.

上網看了一下, 似乎沒有人反映過同樣的狀況. 我比較常遇到的是怠速的抖動, 沒見過這次的情形, 更不知道會進場大修? 車子會爆炸? 還是隨便小修就好? 旁邊的親朋好友有人猜引擎積碳, 配電盤老化或是空氣濾髒了…, 只有最不懂車的老婆提到她唯一認識的零件 – 火星塞.

即使她以為火星塞只有在發動的時候會點一次, 類似熱水器那樣. 然而, 不懂不表示錯! 最後請福特的技師把車子牽去檢查後, 答案揭曉 – 真的就是火星塞在作祟!

我的車是四缸的, 其中有一缸的火星塞已經完全毀損了, 因此只有三缸在運作. 怠速的時候, 因為轉速很低, 所以出力不平均的現象並不明顯. 至於低速的時候, 可能恰好比較容易共振.

大家日後遇到類似問題時, 可以往火星塞的方向去想. 一顆火星塞的售價在 250~450 NTD 之間, 既然是屬於老化問題, 建議一次同步更換 4 顆.

下圖右邊第二顆, 就是已經看不到尖尖的頭那顆火星塞.

非死不可之怕柔

Facebook 近來真是相當地紅, 很多遊戲都在上面加入口, 用免費的形式導引潛在的消費者走到他們 "有料" 的網站去! 雖然一開始大家都不願意花錢, 但是多多少少會有人願意拿新台幣去買 XX 幣吧! 這些遊戲網站大概都賺翻了~~~

在一片墮落聲中, 我無意間也發現一個比較令人興奮的角落. 什麼? 不是 "不可犯罪的乖乖水" 啦! 而是怕(Puzzle) 區. 所以本篇的標題叫做 Facebook's Puzzles. 在這裡面, Facebook 放了一些演算法的題目, 讓大家去討論, 切磋. 包括 2 個  "試吃" 題 (Hors d'oeuvre), 7 個點心 (snack), 5 個正餐 (meal), 和 3 個吃到飽 (buffet). 

http://www.facebook.com/careers/puzzles.php

說實在的, 這些題目即使本身是 NP-complete, 但是只要方向想對, 程式寫起來快, 執行速度也會很快! 反正是電腦在跑, 不要寫錯 code 就好. 拿最後一題吃到飽的 facebull 來說吧, 其實它就是 traveling salesman 問題的搞笑包裝版, Face Bull 也明顯地取材自 Red Bull. 我在修清大的計算幾何學時, 期末作業的自由創作就是選了這個題目. 基本上不可能的路就不要走, 整體就會節省很多的時間. 我後來發現 Viterbi 的想法和我差不多, 只不過 Viterbi 是用在通訊, 而且當時還沒有寫進教科書.

此題正規的解法, 首先要處理檔案 parsing 的問題, 把有問題的輸入濾掉, 把有用的資料整理出來. 第二步就是設計一個能夠走過所有路徑, 卻不會重複的演算法. 這個部份簡單無比, 就是一個 recursive 的 function, 加上一個 local 變數做 mutex. 什麼展開都不需要, 考慮到展開所有可能路徑, 建表…等等那就太複雜了. 

計算每一條路徑時, 要順手把走過的 node 記錄下來, 根據 depth-first 的 search, 原先記住的東西就會保持有效, 包括走過哪幾個 node? 已經累計的 cost 有多少? 下次遇到任何 node 累積 cost 超過 minimum cost, 就可以直接 return. 這是我以前做 OCR (Optical Character Recognition) 時一定要用的加速大法.

採用上面的步驟, 就算不是最佳 solution, 結果也不會太差. 我抓了 Facebook 上的討論區某人丟出的測試檔, 看起來一瞬間就解出來了. Code 裡面還包括一個因為偷懶才用上的 bubble sort 都可以跑這麼快, 主程式的品質應該不算太劣等.

Facebook 怕柔區上面的文章超多的, 只不過大家都用英文討論, 我覺得格格不入, 一點都不想看下去. 畢竟我是為了重拾軟體工程師的初心才來休閒的, 可不想變成練習英文呢~~~

最近有個某某炒外匯公司打電話找我加入投資. 想我這麼清寒貧下, 怎麼炒得起槓桿 100 倍的外匯咧? 但是這給我一個靈感, 就是用 "最佳化找哪些銀行換匯的手續費總和最低, 使得在持有任何一種貨幣時, 換成其他任意貨幣後又換回來的獲利最高 (假設每家銀行承作其中某兩個貨幣轉換的手續費已經是最低)" 和 facebull 也是同一個問題的不同面貌.

對了! 非死不可有一個地方我不太喜歡, 那就是請大家把程式寄給他們評比的郵箱地址:{0xFACEB00C>>2 in decimal}@facebook.com. 傻瓜才會把整支地址貼上去吧! 不過這個小 trick 的難度太低了, 讓人有些失望.  看不懂這個把戲的人, 說不定也可以很厲害啊, 只是有點自信信人而已, 結果就被騙了…呵呵呵!

附上一支 C 語言的程式, 有興趣的人可以往下翻, 這是 Cygwin / GCC 的版本.

繼續閱讀「非死不可之怕柔」

我讀 «群眾心理與走勢預測» (上)

這本書的作者是 Tony Plummer, 算是冷門的作者. 按照書名, 書中似乎會描述群眾心理與走勢預測兩大部分. 不過呢, 其實前者只佔了約  35% 的篇幅. 我就先把群眾心理和 “算術" 的部分整理出來.

作者在一開始就先從人腦介紹起, 表示大腦由腦幹, 腦緣和新腦皮質 (neo-cortex)所組成. 腦幹負責本能行為, 腦緣負責內化外在的世界, 把外在的經驗翻譯為情緒. 因此這個部分和群眾運動的關係最為密切. 而新腦皮質負責自覺與人性.

在第一篇 “群眾非理性行為的原理" 中, 作者對於群眾運動其實有不錯的見解, 他以回饋 (feed back loop) 來描述群眾運動. 若是群眾的情緒獲得養份 – “能源之交換" 或 “資訊之交換", 則群眾的活動力將會增強, 形成一個正向回饋. 反之, 若是收到負回饋, 群眾最後就會瓦解.

比方說, 紅衫軍正在倒扁, 如果他們的資訊完全斷絕, 只能自己唱歌, 演講, 收不到任何新的資訊, 想必撐不了多久. 因此政府對於抗議者的態度往往都是不予理會, 或是派出低階官員去當砲灰, 使得抗議群眾的能量不致高漲! 但是若有人帶來報紙, 有人打開廣播, 有人吃到免費便當,… 如此都可以使得紅衫軍保持在正回饋的狀態.

等到社會上的熱情回饋撐不起這麼多群眾的時候, 任何組織都只剩下漂亮收場和草草結束兩個選擇. 當然, 作者真正關心的群眾運動與群眾心理其實是針對股市. 鼓是群眾只是一個特例, 任何的兩人團體都可以是群眾, 所以這裡的描述當然也適用於一般所認知的群眾.

首先, 群眾運動有生命週期. 在風頭上的時候, 大家都知道要反對美國牛肉進口, 但是若沒有足夠的能量, 運動就會慢慢走向衰退與死亡. 事實上, 沒有一個運動可以永遠地持續下去, 就算是文化大革命, 也只能搞個十年, 不能永遠 “革命" 下去!

後人修正達爾文的演化論, 認為光靠突變不能完全解釋進化. 掠食者和犧牲者之間將會產生互動, 這個交互作用才會決定演化的方向. 否則長頸鹿的脖子愈長愈長, 樹也只好愈長愈高. 自然界的法則到了某個平衡點, 運動總歸要結束!

於是作者提出一個時間 – 環境變遷 – 群眾活動指標的三維模型, 表示隨著時間的延伸, 群眾活動指數和環境變遷以擴大的的螺旋形前進. 若是不考慮時間軸, 環境變遷 – 群眾活動指標二維就會是一個蝸牛殼的樣子. 這裡暗含一個玄機, 就是蝸牛殼上帶有 “黃金比例" 這個 “密碼".

在第二篇 “多空交替的動力" 裡面, 作者把多空看作兩隊群眾的較勁. 因此我們同時考慮兩隊群眾運動的發生. 由於此消彼長, 隊群眾的回饋因素恰好相反. 更有趣的是, 某一方的勝利來自於另外一方成員的叛逃! 一般的群眾運動都需要領袖, 股市裡的群眾運動亦然.

股市的領有兩大特點, 其一就是: 唯有已經贏得聲譽的人才能博得群眾的注意. 這件事既使是顯而易見, 但是人們身在其中的時候, 就並不是很容易徹底領悟.

無論哪一種群體當中, 都不容易培樣出 “說了算" 的新領導人, 群眾往往偏好相信舊的大師. 然而, 在所謂老化的組織中舊大師本身往往就是進步的障礙. 因為人們總是認為舊大師一定不會錯, 以至於對於新趨勢反應不及, 就是因為這個道理.

職場上有時候會聽到這種抱怨, 認為自己懷才不遇, 無法主導或影響決策, 其實就是這種 “舊大師" 現象所造成的. 然而, 新人最後仍然可以取得大師的地位. 比方說某些股市分析師以 (新) “末日博士" 聞名, 就在於他們能夠正確地唱衰, 結果也真的被他說中了. 當然, 正常人都不想以唱衰自己的公司或產品來博取名聲, 所以還得謀求更好的方法.

股市領袖的另一個現象是, 如果股市的走勢和大師說得恰好相反, 追隨者就會愈來愈少, 領導者的招牌也會愈來愈暗淡. 這表示特定的個人無法永久領導走勢. 表現在政治上, 可以印證在強人政治終究會瓦解, 一個朝代就算能延續八百年之久, 最後皇帝還是要改姓.

作者又以股價與情緒作成示意圖, 表示情緒的高峰落後於股價的變動, 並稱之為右偏的現象. 換言之, 大家的情緒反應往往落後於真正的股價變動. 如果把這個情緒隨著價格變動的蝸牛殼畫出來, 作者的企圖心就昭然若揭了. 其實作者希望大家同意, 黃金比例與黃金分割, 很適合於描述股市的變動.

如果把一個脈動視為 a-b-c-x-y-z 幾個點的組合. 那麼 bc 將會是 ab 的 2.618 倍, yz 將會是 xy 的 2.618 倍. 2.618 怎麼來的呢? 就是黃金比例的 1.618 除以 “黃金比例的倒數". 若 a-b-c 表示震盪向上, 而 x-y-z 表示震盪向下. 比方說, 整個震盪向上 a-b-c 包含一個先向下測試的跌幅 0.618 倍 (a-b), 以及一個上漲至原來的 1.618 倍的漲幅 (c-a), 期間最大震盪幅度就是 2.618 倍 (c-b).

作者再把 a-b-c-x-y-z 做一些排列組合, 就構成了各種買進與賣出的指標. 比方說在 a 波就反轉下產生一個 x 波, 或者 b 波才產生 x 波, 一直到 z 波才反轉, 這樣就有 6 種波鋒訊號. 相對地, 也有 a 波就上攻等等的 6 種波谷訊號. 總之, 基於作者堅信不移的黃金比例, 我們的技術分析於是有了算術的基礎.

當然我要聲明作者並非傻蛋, 他認為基本分析是有用的, 只不過黃金比例恰好比其他的模型更適合於發展與印證他的理論與觀察. 其他就等到下次再說明了.