在 Google Docs 試算表中用 SQL 語法
之前用 Microsoft Excel 或 OpenOffice Calc,時常會想在寫函式時使用 SQL 語法。因為你在試算表中,最常用得功能之一,就是統計並計算出原始資料工作表 (Sheet) 中的數值。
例如,你可以用 SUMIF, COUNTIF, FILTER 等公式,去統計、過濾查出某一種類別的加總或平均。可是這樣一來,你得寫好一行公式,然後把他拉開複製到每一個儲存格 (Cell) 中,有時參照 (cell reference) 沒寫好或無意中拉錯一格計算範圍,你就算錯所有資料。偏偏這種錯誤很容易在不停重複複製儲存格時發生。
所以你就想,為什麽不讓我直接 SELECT * FROM cells GROUP BY 來拉資料就好?可是這些試算表軟體,都只讓你從其他 Data Source 中拉資料時,才能用 SQL 語法。但是把手上的資料匯入 Microsoft Access 或 OpenOffice Base 又很脫褲子放屁。
最近為了方便分享資訊給其他人,常改用 Google Spreadsheets 編輯。發現 Google Spreadsheets 有一個 Query function,可以讓你在試算表中用類似 SQL 得 Google Visualization API Query Language.
Query Language 本來的設計是讓你可以從線上資料庫中撈資料,以便整合到 Google Chart Tools / Interactive Charts (aka Visualization API) 中,如此你可以把自己的資料接出來 (Google I/O 2009 – Implement Your Own Visualization Datasource) 餵給 Visualization API。
而 Google Spreadsheets 的 Query function 則是整合了 Query Language,讓你直接把試算表當作 Data Source! 所以你可以直接用 SELECT *,把另外一個表格中資料全數複製。你也可以用 GROUP 跟 aggregation functions 如 avg(), count(), sum() 把一個表格中的資料統計算好列出來!非常方便,過去要重複好幾次計算,甚至那種千行以上的工作表都可以瞬間就處理好,出錯得機率也小了許多。
Youtube 上有一則非常好的示範 -
雲端備份
我記得幾年前 (應該是 2002-2005 間),為了妥善保存自己在 Debian 上的各種工作資料,希望能夠用比較加密過的方法,將資料寫到光碟中。當時的想法是利用類似 cdbackup 與 mcrypt 等工具,將資料以自訂的檔案格式與加密演算法存到光碟中。
這種方式有幾個好處。
- 第一,由於格式完全自訂,並非 ISO/CDFS,因此一般電腦軟體是無法辨識解讀的。
- 第二,即便 Image 被強取出來,還是要猜出所用得演算法與金鑰,才能解壓出原始檔案。
- 第三,當時光碟平均儲存成本比硬碟低,可以多燒幾份異地備援。
壞處是,幾年前資料頂多幾百 Mb,備份燒錄進 CD or DVD 還沒有問題,但是現在媒體資料、程式碼等等幾乎都是動輒幾 G 以上,用光碟實在太慢、太麻煩了。而且這個方法不支援循序備份,每次都是完整備份。由於太慢、太麻煩,你可能幾天或幾周才做一次備份,偶爾備份間的空窗期就會漏掉重要資料。備份重點就是隨時有一份最新的重要工作文件的副本阿。另外一個問題是,沒有良好的備份紀錄管理工具 (archive viewer),所以你每次想查檔案就得重新解開整片光碟才能找到。
第三個問題是,光碟其實是非常不保險的儲存媒體。過個幾年,當時備份用的光碟,可能就變質而無法讀取。更糟糕的是自訂的格式,沒有考慮容錯 (Error detection and correction),所以更難從變質、損壞的 CD 中把資料取出來。若不幸,你買到一批塗料品質不佳的光碟片,或功率老化的光碟機,那幾年後才後悔都已經來不及了。
重新調查了新的備份方式,目前改用的其中一個方法是 duplicity,duplicity 有幾個特色符合我的需求
- 用 GnuPG 加密與簽章壓縮檔。
- 支援循序備份,並用 rsync 來傳送備份檔案。
- 備份檔中用標準的 tar 跟 rdiff 產生的 delta 檔。
- 支援多種備份的網路檔案協定 – local file storage, scp/ssh, ftp, rsync, HSI, WebDAV, and Amazon S3
所以如果你願意的話,你可以花一點小錢,把已 PGP 加密過到檔案,傳到 S3 上做雲端備份。
這樣就不用擔心一些線上備份服務 (Dropbox, Ubuntu One, SpiderOak),用一些曖昧不明的加密方式或根本不加密的方式儲存你的檔案。
預設使用方法很簡單,就是 duplicity /home file:///tmp/home 這樣即可使用。你若太懶,只是一般使用者不想下指令的話,也可以裝 Déjà Dup,操作超簡單,只需滑鼠點點點就可以設定備份的目錄,跟要儲存的位置。還原也是利用視覺介面點選後,就可以解壓縮出來。
當然,技客如你,可能會需要複雜一點的手稿,來儲存各種不同分類的檔案,這裡僅分享一個我自己用得小 Script.
Time Management by Randy Pausch
我一直對於時間管理議題相當感興趣,無論是 GTD 方法論,或各種各樣的日式時間、檔案管理大師的方法學。之前認真研究筆記本等,某種程度也是為了能得取得最佳的時間管理工具。
對相關議題感興趣的主要原因之一,是我對於時間管理的能力還相當有待加強。老是覺得,如果從小時候就開始培養這些觀念,或許會相對更有成就一些。另外一方面,則是人必須不停的嘗試調適自己的管理技巧與方法,以求得最佳的方法。所謂時間管理,沒有一體適用的方法,每個人都要試著找到最適合自己的方法。
週末花了點時間看了已逝的 Randy Pausch 博士在 2007 的演講 – `Time Management‘. 相較於 Randy Pausch 的另外一場演講 Achieving Your Childhood Dream,Time Management 的演講相較比較少人注意。Achieving Your Childhood Dream 甚至出版了相當受到歡迎的書籍 《The Last Lecture》 (《最後的演講》)。
這場演講的珍貴處,不在於這是 Pausch 教授在得知自己只剩下幾個月的生命,進而提醒你生命的寶貴。
事實上這是 Pausch 教授長久以來的實務時間管理經驗,Google 上甚至可以找到他在 1998 年依照同一份主題所進行的演講。從他在電腦科學的學術領域的成就以及平衡的家庭生活看來,他的時間管理技巧顯然有其傑出之處。更厲害的是 Pausch 教授依然能夠在生命的最後幾個月,站上講台演講,並適度幽默的開玩笑,讓整場演講依然趣味盎然。
總之,從 Pausch 教授的演講中,我重複驗證一些已經使用的方法,並學到了一些平時未能注意的小技巧。以下是自己簡短備忘與感想,我建議你觀看原始演講與簡報,才能找到適合自己的方法
- 將時間視為金錢一般的數字,管理它。我其實心中藏有一個小小地費率表,告訴自己作這件事情的時薪是多少,整件事情價值多少錢。
- 電話的使用方式,盡可能使談話簡短,宣告議題,站著講電話都是很有效的方法。
- 所有做的事情都有「機會成本」,你不為重要的事情「找」時間,必須透過放棄不重要的事情「製造」時間。
- 把握創造力與最佳思考時間,把剩下的時間拿去安排會議、電話跟處理其他瑣事。
- 降低把你拉出 flow (zone mode) 的干擾,降低外力介入的次數、時間。不要隨時檢查電子郵件信箱,電子郵件的目的是讓你可以晚點處理訊息,有空做更重要的事情。
- 養成紀錄時間使用日誌 (Time Journal Data)的習慣。除了四五年前開始利用筆記本與試算表紀錄日誌外,近一年來我已經改用 Hamster 追蹤每分每秒的工作項目,因此可以追蹤分析每日、每週、每月的工作狀態。已經養成每月檢視工作目標與分析工時分配的習慣。我甚至裝 Sleep cycle alarm clock 來分析睡眠狀態,你知道,睡眠其實是我不在電腦前最長得活動之一,了解睡眠週期與品質當然也很重要。我甚至有點偏執希望有一套設備可以偵查我的腦波、血糖、血壓,這樣我就可以科學的分析自己在自己在何種生理狀態時,會產生最佳的思考效率與生產力。但我朋友鄙視的說我已經快變成 Borg 了。

- 避免延宕行為。延宕 – 壓力或罪惡或緊急下所造成的生產力損失或失信行為,肇因緊張、非現實時間感或不確定目標。延宕時常造成更昂貴的代價。
- Procrastination is the thief of time by Edward Young, Night Thoughts, 1742
- Work expands so as to fill the time available for its completion, Parkinson’s Law, Cyril Parkinson, 1957
- 正確把工作委任給他人,而不是把工作傾倒 (dumping) 給他人。設定「目標」、「死線」、「後果」並施予其「尊重」、「責任」、「權力」與「挑戰」。
- 會議不要超過一小時、關掉電話、鎖住門。寫下會議紀錄,重點是工作項目、負責人與死線。
- 「碰」每封信、每張紙、每筆資訊一次!不要把他們積在桌上或收件夾。
- 殺掉電視。(我已經這樣做許久)
- 不要破壞陳諾,如果有必要,重新協商新的日期。(這點還要努力)
- 演講中的推薦書 《與成功有約》 (The Seven Habits of Highly Effective People), 《一分鐘經理人》(The One Minute Manager).
影片、中文字幕與簡報可以在 MyOOPS 開放式課程 取得,可於 Youtube 線上觀看影片。
給 HTML5 Video 用的字幕系統
在試著分享軟體專利的荒謬性字幕時,試著想要把影片跟字幕嵌入到網頁裡面,方便大家點開就可以直接看。試了幾個線上服務,如 Youtube, Vimeo, blip.tv 等等,發現他們要嘛限制播放時間,否則就是不支援字幕系統。
實在不想耗費時間剪接,後來發現軟體專利的荒謬性影片擺在 Internet Archives,而且直接用 HTML5 Video Tag 播放,轉念就試試 JavaScript 吧。很快找到 j^ 的 jquery.srt.js,這之小程式會自動下載跟解讀 SubRip (*.srt) 格式的字幕檔,然後在影片播放的同時,依照時序自動更新字幕,就算使用者快轉也會自動跳到新位置,相當方便。效果可以看軟體專利的荒謬性一文的影片。
必要的話,也可以稍微修改,讓字幕直接浮在影片位置上,顯示會更接近一般播放軟體,可能更美觀。
所以 JavaScript with HTML5 又多解決一項 Flash 可以辦到的事情啦。![]()
Updated, 2010-05-16 14:00: 理想中的多國字幕系統,可以參考 Ilias Ismanalijev 的嘗試。除了用 jquery.srt.js 外,也有一Timed Text (TT) Authoring Format 規格可用。詳情可見 Silvia Pfeiffer 在 HTML5 Video Accessibility 上的相關推展。
軟體專利的荒謬性
雖然有些朋友專職從事專利或軟體專利的撰寫、管理工作。但是我必須承認,我實在厭惡軟體專利制度。實在也很不願的被迫撰寫軟體專利,來助長這種錯誤的制度。過去有段時間,時常查閱特定領域的軟體專利,當時即發現幾乎大部份的習知技術 (prior art)都早以含糊不明的文字廣泛的登記為專利了。而且,這些專利註冊者,十有八九並非實際利用其創意經營生意。
於是,你幾乎沒有任何辦法撰寫一套不違反專利的軟體。但你若想經營一套生意,唯一保護你自己的方法是更賣力註冊其他的專利,用更模糊的字眼申請專利,於是你便能在受到威脅時,以攻為守。為了能夠長久在產業中存活,你不得不花費資源投資在專利開發上,而不是提供服務或製造產品。專利制度不再是鼓勵創新,而成為繳交給大企業的變相稅金。
《軟體專利的荒謬性》是由自由軟體基金會所贊助的紀錄片,片中適當剪輯了幾個專訪,正好在半小時內,完整的頗析關於軟體專利的問題與觀點。相當值得你花半小時時間來了解。
Patent Absurdity 影片授權為創用CC 姓名標示-禁止改作 (CC-BY-ND) 3.0. 作者請見關於此紀錄片。感謝阮一峰進行簡體中文字幕翻譯,我將其轉成正體中文,並花了點時間調整了一下文字,歡迎下載使用,並給予指教。授權同阮一峰先生採 CC-BY 3.0。
歡迎轉錄影片與字幕。
你若無法觀看影片,請安裝支援 HTML5 Video 播放功能瀏覽器,如新版 Firefox 3.6,或使用 Flash 版本。
Recovery BIOS of aOpen XC Cube EZ945-P
I should not blog about this, but it’s actully spent me too much time on fixing the computer. And the customer support of aOpen did nothing for me but simply waste me time. So I decide to share some experience with you, then you don’t need to be pissed off by useless DrOpen web site.
I got a aOpen XCCube EZ945-P, and I was trying to refresh the bios due to the problem of booting from USB pen. However, it seems the BIOS EasyFlash tool from aopen web site has some problem on Windows. At the middle of reflashing process, the computer frozen. And if you understand the basic of PC, you will know that killed the BIOS and computer.
The good thing is the easyflash tools only flash the ‘system block’ but not the ‘boot block’ of BIOS, which means that you can still boot up computer and it will try to runin the Operation System on the floppy. (If you still have floppy disk driver)
The problem is I don’t have one, the other problem is the model use a special cable for floppy disk driver, which I can’t find it. Since the model is a AIO (all-in-one) model, it use a smaller connector for saving space on motherboard. So, I need to find a floppy disk driver and the cable. The driver is easy part, you can still purchase used driver from Y!Bid or Rutuen (they are ebay in Taiwan). For the cable, I need to get one from aOpen.
It sounds very good that aOpen have a self-help and tech-support cernter called `DrOpen‘, I thought I can get support from that website. It turnes out, it does not help at all. When I tried to consult the website for a procedures of recovering BIOS and where I can purchase the cable. And bascially the customer support agent (Niño) ask me these things
- He asked what’s my part number and serial number? # I asked for cable and bios image, and they asked me the numbers to confirmed I am a cusomter?!
- He think I have successfully upgrade the BIOS, because I can still hear a beep after boot. And he asked me to check the video adapter is connected properly by checking the FAQ. # He has no idea about how BIOS works, so he think beep means the BIOS is ok. And my model is All-In-One, the video chip is designed on-board! That’s the most stupid suggestion I can get.
- And he suggest me to download the BIOS file from their website, and then boot into dos, when I see the dos prompt, type the name of flash tool to reflash BIOS. # Since the BIOS is corrupted, you don’t get VGA display at all, where you can see and type in dos promopt!?
- At the end, he never tell me where I can purcahse the cable, and if you check the other issue in the DrAopen knowlodge base, they always suggest you come back to reseller for asking the cable. WTF.
So, I need to fix it by myself. The first thing is to get the cable and floppy disk driver. After asking about 10 sellers of this model, I finally get one seller can sell the cable for me. (it’s expensive then the driver!)
Then I tried to download the BIOS images from aOpen website, and I found out they customized a tool named IFC or WIFC, which help you reflash BIOS in DOS or Windows. And I can tell you the tools simply does not work! Here is my solution
- Most modern BIOS has a recovery system. If you failed on reflashing, it usually can be recovered from floppy disk. But you will lost VGA output and keyboard before you recover the BIOS.
- You will need a floppy disk with DOS installed. You can use FreeDOS. It’s free, powerful and provides DOS-compatible operating system. You can download the image and dd it into floppy disk, if you are using Linux only like me.
- After you installed freedos on floopy, you need to change configs a little bit. By default, freedos will boot into a menu system, which let you install freedos into hard disk. You can change it by modfiying fdconfig.sys. I changed it like this to run autoexec.bat
SHELL=A:\COMMAND.COM A:\ /E:2048 /F /MSG /P=A:\AUTOEXEC.BAT
- Then you will need the BIOS image, for my model there is a file named IFC14.BIN. Don’t use IFC14.exe, it does not work. You will need AwdFlash to reflash the image, which can be download from Softpedia. Then you have the reflash command written in autoexec.bat like this
AWDFL882.EXE IFC14.BIN /py/sn/Sb/cc/R
- The options of AwdFlash can be check by /?. You can change it whatever you like. Ok, we are all set, reboot and wait for it to reboot. The system sould be load into DOS and reflash the BIOS for you.
Good Luck, and wish you can also fix you BIOS as I did. ![]()