裝 mplayer-mt 改善解碼效率

用 multi-threaded 版本可以將解碼的程式丟到多顆 CPU core 上跑,善用多 CPU 的資源,這樣看 1080p 才不會痛... (家裡的 AMD X2 4000+ 得這樣設,不然原來的版本解不動)

主要有兩個步驟要做,首先是加 ppa 並且安裝 mplayer-mt:

sudo apt-add-repository ppa:longinus00/mplayer-mt
sudo apt-get update
sudo apt-get upgrade # 已經有 mplayer 的 case
sudo apt-get install mplayer # 沒有裝 mplayer 的 case

然後是設定 smplayer 要他在用 mplayer 時加上參數: 參數是「-lavdopts threads=4」。

不過寫完才發現我這張 video card 有硬解可以用... XD

Ubuntu 11.04 使用者測試結果

Ubuntu 的 mailing list 上有人將 Ubuntu 11.04 系統拿給 11 個使用者測試 (並且觀察),並將結果 post 上來:「Default Desktop Experience for 11.04 - User testing results」。

如果你仔細讀,會看到很多很驚人的 User Experience 問題,是 geek 沒辦法想到的 (因為反射動作就會避開這些問題),像是下面的敘述描述了 slash 與 filename 衝突的問題:

9/9 easily saved their LibreOffice Writer document. (P1 recovered amazingly well after trying to save "Letter to Mr Smith 08/04/11", and getting the vile response "Error stating file '/home/ubuntu/Documents/Letter to Mr Smith 08/04': No such file or directory").

這個方法應該要試著套進現在的模式...

關於 Android 授權 (License) 的爭論:Linus Torvalds 的說法

昨天提到的「header file 與 GPL(v2) 的「衍生作品」...」,Linus Torvalds 也跑出來講話了:「Android: Sued by Microsoft, not by Linux

It seems totally bogus. We've always made it very clear that the kernel system call interfaces do not in any way result in a derived work as per the GPL, and the kernel details are exported through the kernel headers to all the normal glibc interfaces too.

他也不認為 header file (也就是提到的「kernel system call interfaces」) 會造成 GPLv2 內所提到的 derived work。

Ubuntu 上跑 VirtualBox 連接 USB 裝置...

Ubuntu 10.10 系統內的 VirtualBox 是 OSE 版本 (Open Source Edition),先到 VirtualBox 官方網站下載對應的 deb 檔:「Download VirtualBox for Linux Hosts」,像我的電腦是跑 10.10 amd64 版本。

接下來是把系統內的 VirtualBox 移除:

apt-get purge virtualbox

移除完畢以後將剛剛下載的 deb 檔安裝進系統:(後面的檔名自己變更)

dpkg -i virtualbox-4.0_4.0.4-70112~Ubuntu~maverick_amd64.deb

然後把自己加到 vboxusers 這個 group 內 (我是直接改 /etc/group),改完後重新登入,然後:

  • 在 Guest OS 關機狀態下,設定允許讓 Guest OS 使用的 USB 裝置。
  • 將 Guest OS 內的 Windows XP 開機後,安裝 VirtualBox 提供的 Guest Additionals。

接下來就可以用 IE 到網路銀行安裝 ActiveX,然後測試讀卡機是否正常運作...

header file 與 GPL(v2) 的「衍生作品」...

Slashdot 上看到 Richard Stallman 在 2003 年 1 月對於 GPLv2 header file (當時只有 GPLv2,沒有 GPLv3) 對於作品是否有「感染力」的看法:「RMS On Header Files and Derivative Works」,也就是「如果我用了 GPLv2 的 header file,是否我的 code 因此就要使用 GPLv2」的問題。

Richard Stallman 在找了律師談過之後,引用 header file 不足以成為 GPLv2 裡面定義的「衍生作品」(Derivative work):

Our view is that just using structure definitions, typedefs, enumeration constants, macros with simple bodies, etc., is NOT enough to make a derivative work.

這篇剛好回應最近有人質疑 Android 因為使用 GPLv2 header file 而軟體本身使用非 GPLv2 授權的問題:「Android Faces Serious Linux Copyright / Copyleft Issues with GPL」:

Google used Linux headers, but did not release Android under the same GPL2 license, which is the most basic precept of GPL. (Android is released under the Apache Commercial License.)

Ubuntu 10.10 amd64 版

把桌機換成 Ubuntu 10.10 Desktop amd64 版,比以以前有一堆東西要自己設定,裝好到現在還沒遇到問題,本來預期的問題也都隨著時間而解決了:

  • Linux amd64 下 rmvb 的支援,不論是內建的 Totem 還是 smplayer 都沒問題,而且 smplayer 還可以加速播放 (聲音頻率不會跑掉),跟之前在 Windows 下用 KMPlayer 的模式一樣...
  • Linux amd64 下 Flash Player 的支援也已經 okay 了,目前版本也已經是 10.2,該有的都有了...

繼續研究...

換 Ubuntu 的 mirror site...

Zeroplex 遇到類似的問題 (參考「NCHC for Ubuntu sources.list」這篇),放在台大的 tw.archive.ubuntu.com 常常連不上,所以就換掉 mirror site 了。UbuntuDebian 相同,都是用 APT,所以就是換掉 /etc/apt/ 下面的設定。

Zeroplex 使用的是 http://free.nchc.org.tw/,我則是用 http://ftp.twaren.net/。換完後再 apt-get update 一次就可以了。

在 Debian 上使用 CPAN 時要如何與系統的 lib*-perl 合作...

因為對 FreeBSD 還算熟悉,所以在 FreeBSD 上遇到 Ports 內沒有的 CPAN module,我會做一個新的 port 出來 send-pr,但對於 Debian 的熟悉度沒有 FreeBSD 高,想了老半天想不到什麼好方法,在 #perl.tw 上問了這個問題,不過還是沒有滿意的答案...

然後想到,在 Stack Overflow 上面說不定有人問過,丟一些關鍵字後有兩筆相關討論可以參考:(至少是可行的解法)

有人是建議自己 compile 一個 Perl 出來裝到 /usr/local 下 (於是就可以惡搞到底),有的人則是建議用 dh-make-perl 做 .deb 出來用,但還是會有很多問題...

再想看看好了,真麻煩...

Debian 重開機後維持 iptables 設定值的作法

標題所提到的問題在 lenny 以及更早的版本沒有標準解,一般 Google 到的解法是在 /etc/network/if-up.d/ 裡面放一個 script,當介面起來的時候會跑 iptables-restoreiptables 的規則倒回去,這是「會動」的方法,但我不喜歡這種 hacking...

剛剛找到 iptables-persistent,在 squeeze 以及 sid 都可以裝,雖然沒有文件,但看了一下程式很快就可以理解他的用法。

apt-get install iptables-persistent 安裝完畢之後,理論上就會把 script 裝好,並且把目錄建好,接下來只要跑 iptables-save > /etc/iptables/rules 就可以把目前的 iptables 設定倒進去。

這個方式看起來會是比較好的作法...

AWS EC2 推出 Amazon Linux AMI (Beta)

Amazon Web Services 推出了 Amazon Linux AMI (Beta),讓想要用新版 Linux kernel 的人可以在 EC2 上測試:「Announcing the Amazon Linux AMI」。

包括了 32bits/64bits 以及 S3/EBS boot 的版本 (所以總共四種版本),基本的系統都是 Fedora。其中 EBS 版本可以直接用 t1.micro 跑起來,以目前跑起來的版本 uname -a 可以看到:

Linux domU-12-31-38-02-55-4B 2.6.34.6-54.21.amzn1.i686 #1 SMP Sun Sep 12 06:48:07 UTC 2010 i686 athlon i386 GNU/Linux

依照 kernel.org 的資料可以看到 2.6.34.6 是 2010/8/26 釋出,算是蠻新的版本了...

接下來就是要找方法把 EC2 上 Fedora 系統換成 Debian,這個倒是有不少文件,像是:「Building EC2 Images from Scratch with ec2ubuntu-build-ami」...

Update:依照 Eric Hammond 的說法,不建議使用 ec2ubuntu-build-ami 這個 script 產生 AMI,參考他在 9/18 的回覆。目前建議的方式是「Building EBS Boot and S3 Based AMIs for EC2 with Ubuntu vmbuilder」以及「Building EBS Boot AMIs Using Canonical's Downloadable EC2 Images」這兩篇。