顯示具有 english 標籤的文章。 顯示所有文章
顯示具有 english 標籤的文章。 顯示所有文章

2010年3月28日 星期日

3/20 和 Scott 閒聊的隨手記

以下列出上週末和 Scott 聊到的東西, 大部份都是 Scott 在講啦, 真是大雜燴啊...

Software

  • Scott 想在 ReviewBoard 按 "ship it" 後照 Linux kernel 社群的習慣, 自動加上 "sign-off-by SOMEBODY", 或是接收對方的 commit。fcamel 提到或許可用 plugin 的方式在 ship it 後接自己操作, 既然都是 python code, 做起來應該不會太難。後來 Scott 查到目前 ReviewBoard 尚無這個功能 (VMWare 內部有, 但和公司 infrastructure 合得太密切, 不能 open source)。短期內不會有這功能。
  • Scott 展示 virt-manager, 和其它家 VMware 比起來, 特色是零設定。裝好 guest OS 後, 會自動設個 domain name 給 guest OS, 於是 guest OS 和 host OS 之間可以用 domain name 連來連去。不足之處是只支援 Linux OS。Ubuntu 上也有, 不過標示成實驗性套件
  • Scott 展示 Remobo, 一個強大的 VPN 軟體。用法和 Skype 差不多, 兩台機器各註冊一個帳號, 互加 「buddy」, 兩者就可以透過 Remobo 中央伺服器指派的區域 IP (7.x.x.x) 互連 。號稱什麼牆都能穿, 看起來滿方便的。而且在 Windows、各家 Linux和 Mac 上都能執行!

Profiler

  • Scott 展示如何用 sysprof 做 profiling。sysprof 是 sampling-based 的 profiler, Scott 說它簡單易用。如果作 embedded 產品,需要在產品上紀錄 profile, 拷貝回開發機器分析的話,還是 oprofile 較好。未來則可能是 perf 的天下。這還是我第一次看到 sampling-based 的 profiler。對這些東西沒有概念, 鴨子聽雷。
  • 承上, 跑 profiler 時需要有 debug info 才能找到細節, 要另外裝含 debug info 的 package。rpm 和 dpkg 都有提供含 debug info 的 package, 。在 Ubuntu 下就是安裝 X-dbg, 比方說 package "python" 的 debug info package 是 "python-dbg"。
  • 承上, 這些 debug info package 不是另外提供一套編譯時有含 debug 訊息的東西, 而是一開始就編好有含 debug 訊息的套件, 再把它拆成 X 和 X-dbg 兩份。X 裡的二進位檔有記錄 debug 資訊要去那裡找。

Testing

  • fcamel 提及近來寫測試的一些心得, 沒聊太深。待有更多經驗後我會寫到 fcamel.twbbs.org 上。
  • fcamel 打算翻譯 "Why are we embarrassed to admit that we don’t know how to write tests?", 已取得原作者許可。Scott 依自己翻譯的經驗, 說「信雅達」三者難以兼顧, 先取雅和達吧。
  • fcamel 聊到 top-down 和 bottom-up 進行 TDD 的思維不同, top-down 時使用 mock 是很有趣的體驗。發覺像 Scott 這類 system-based engineer 似乎不怎麼喜歡 OOP 搞出的一堆新名詞。印象中 Linus 也常開炮轟 C++, 網路上不少討論的文章。

Sharing

  • Scott 建議 fcamel 可以直接到自己常用的 open source 上看看有沒有什麼 issue / bug 可以解, 這樣比較容易找到可以做的事。這建議滿實用的, 比自己用用發現問題更能找到事做。等手邊雜事做完、翻完一篇別人寫的技術文後, 就來試看看吧。
  • Scott 希望 fcamel 可以多放些技術心得到 ITRS Wiki, 但 fcamel 依過去的經驗, 覺得放 blog 比較容易被 Google 搜到, 並且方便討論。過去 fcamel 曾架過 web 個人站、wiki, 觀察它們和 blog 的使用情況, 結論是 blog 較易傳播資訊。
  • fcamel 分享自己玩 micro blog、blog、wiki 和觀察 Google Analytics 的心得。micro blog 又比 blog 更易集中討論。而且從 Google Alert 觀察到 Google 近來索引 micro blog 的速度愈來愈快。plurk 上發的文章, 剛開始是一兩月後才建立索引, 現在已是隔天就建入索引。

Others

  • Scott 展示 cross compiling for Windows on Linux。操作看起來比想像中簡單許多, 不過對我這種一定有灌 Windows 來打 Game 的人來說, 暫時沒這種需求。
  • Scott 推薦用Academic Earth 練英聽, 這個站搜集名大學的課程影片。我稍微看了一下, 有不少有趣的課, 可惜沒附字幕。Scott 另外推薦用 audible.com 買有聲書來聽。這等我功力更高後再來試吧。
  • fcamel 聊到最近 Joel 寫了一系列 Mercurial 教學文, 而且還做得很精美! 好奇 Joel 打什麼主意。聽 Scott 說才知道 Joel 的公司最近在賣 Kiln, 一個含 web 介面的 Mercurial server。

2010年2月20日 星期六

Classification (ML) 和學英文都需要大量的訓練資料

最近聽 TED 練英文發覺有趣的事。TED上的題材五花八門,講者來自世界各地,讓我提早體會到不同發音的問題。若只在單家補習班練英文,大概無法體會到世界各地的腔調。體會歸體會,這樣聽下去能否一次通殺是另一個問題。

在練習聽力的同時,我同時觀察自己怎麼理解這些發音的。這實在是很奇妙的過程,有些音明明和標準發音差了十萬八千里,但是一連串的字彙連起來,卻能立即明白整句在說什麼 (比方 "William Kamkwamba: How I harnessed the wind" );有些字彙即使講得再標準,沒有相關知識也聽不懂 (即使是母語也是如此)。看來重點是前後文和背景知識。

以往學英文時總強調要多背單字,我試過幾次都失敗,我實在不是背書的料,但我深信有需求自然會用。回顧過去失敗的經驗,我發覺用不到的字背再多次也記不起來。更何況,既然 (幾乎) 用不到,背它們做什麼?投資報酬率太低了。反過來說,常用的字一再出現,有時不用查單字也能依上下文推論出它的意思。而且還會模糊地學會它在不同情況的差異,但要仔細地描述它是什麼意思,卻又說不上來。

這樣的學習過程中,我發覺若要增加我認識的字彙,我得聽讀更多內容,才能交差地認得這些單字。像我昨天讀 "2 China Schools Said to Be Tied to Online Attacks" 學到一些單字,其中一個單字是 specialist,意思是專家。今天重聽 "Ken Robinson says schools kill creativity" 又聽到 specialist,我自然就記得了。但若這幾天或幾週內沒再碰到 specialist,我可能會忘記。我得每天花上一小時以上的時間訓練英文能力,才能持續增長我的字彙。

想到這裡,忽然發現這和 classification 認得特徵 (feature) 的方式相似。提供大量的訓練資料和它們對應的分類,learning model 自然會從訓練資料中找到重覆的特徵,分辨出那些特徵和某些分類有關或是反相關。在同樣數量的訓練資料中,若訓練資料的內容相似、特徵類型集中,model 可以更精確地掌握特徵,但也會因此認得較少特徵;反過來說,若想認得更多特徵,得讓內容發散,但很可能學錯特徵。若想同時學得又準又多,只好提供更多訓練資料。

對應回英文字彙也是如此。若我想習得準確且多量的英文字彙,只好持續投入大量時間接觸英文。雖說是理所當然的事,想通後才更甘心地花時間練英文。話說回來,不同的 learning model 用不同方式掌握分類和特徵的關係。強的 model 可以用較少的資料學得又準又多。人腦這麼強大,應當能更有效率地學英文。雖說持續投入時間接觸英文是必要的,也要不斷摸索如何學得更有效率。目前的想法是當我能用自己的話用上這些字彙時,就能記牢它們。所以要試著用這些字造句,或直接重述一遍原文。很土法煉鋼的作法,總比過去坐在那唉唉叫都不動來得好。

附帶一提,人類學習語文時會不斷用上背景知識和前後文,classification 卻缺少這兩項東西,使得這類解法侷限在特定領域,被歸類到 applied AI。我還無法想像如何將人類的背景知識 (或稱常識?) 編入電腦,但至少待電腦的運算能力和記憶體更大之後 (這是可預見的發展),電腦可以認得更廣的前後文 (現今的作法最多只看三個字彙左右),配合更大量的訓練資料,也許會有出乎意料的進展。就像電腦在解決下棋之類的益智遊戲時,並無法如人類用較少的模式掌握情況,但能用較簡單的方式配合大量運算達到更好的效果。

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...