dsbfvyrewtedsbfvyrewtejasgfiwufkslk
cxbkfegyusahdjffcghnlukeytliwjasgfiwufkslk
jasgfiwufkslkdsbfvyrewtejasgfiwufkslk

May 12, 2004

東大 P2P 軟體作者遭警方逮捕

Filed under: society, computing — epicure @ 12:32 am
2004051119winny-ousyuu.jpg

(另有後續消息將在 重裝 RESET 刊載)

東京大學情報理工學系特任助手(相當於特別研究助理)金子勇,同時也是點對點共享軟體 Winny(ウィニー) 的作者,十日因違反著作權法(公眾送信權之侵害)遭日本警方逮捕。Winny 是一個不使用中央伺服器的點對點檔案共享軟體,傳送檔案都經加密,在日本有超過兩百萬使用者。

我初次見到金子是在 2002 年春短暫地訪問東大情報理工系時。當時我們共用一間辦公室,由於他不太說英文,我和同行的老師們對他的印象並不深刻。今年系上以日語進行的研究室輪講中,他的報告則相當精彩。台風相當好,報告進行流暢,聽眾們不時冒出笑聲。報告中展示的 3D 動畫系統也超越了一般學校計畫的水準。

金子出生於栃木県,畢業於當地名校県立栃木高。之後進入茨城大情報工學科,並在那裡念完博士課程。1999 年四月進入日本原子力研究所擔任博士研究員,進行電腦繪圖的研究。2000 年十一月進入業界,2002 年一月受聘於東大,擔任研究及教學的工作。幾任雇主對他都有不錯的評價。

2002 年四月,金子在「2ちゃんねる」網站(一個包羅萬象的大型討論區)發表宣言將開發 P2P 軟體。同年十月,他寫道「在數位時代,(軟體)流通的成本將趨近於零」「我們可直接把錢支給創作者,而軟體複製應該是免費的。」「目前著作品收費的方式已顯老舊。使用者應該直接付費給創作者,而免除 CD 業者的中間剝削。」「如果出現能安全匿名交換檔案的軟體,目前著作權的觀念也得隨之更改了。」「希望自己能推動這時代潮流,」以「每兩天才睡一次」的狂熱精神開發出了 Winny。

Winny 成為廣被使用的共享軟體。上面流傳的不只是音樂、電影,甚至包括了一些自衛隊或警方的文件。2003 年十一月,兩名 Winny 的使用者被逮捕,金子的住家也因此遭到搜查。金子向警方抗議「至少把我的筆記電腦留給我,不然我沒法工作。」不過許多設備仍遭到沒收。

這個月十一日早上九點五十分,七名搜查員來到東京大學本鄉校區進行蒐證,歷時約兩小時,扣押了兩台電腦和三箱資料。師生們都對強制搜查相當驚訝,每週二的研究室輪講也因此必須換場地。研究室的教授暨科長武市正人已經成立六人調查委員會對此案進行了解。目前武市僅發言表示「Winny 的開發是個人行為。(金子)在本系授課,但授課內容和 Winny 無關。」

然而,抓軟體作者的做法仍是相當少見的。京都新聞認為這可能是參考大阪警方的前例。1999 年,奈良縣某駕駛駕車超速,但車牌上裝了能干擾測速相機的裝置,使相機照不到車牌號碼。大阪警方最後逮捕販售該裝置的業者,以協助嫌犯逃逸的罪名起訴,業者被判有罪但緩執行。被告律師抗辯「如果這樣算幫助逃逸,那麼製造能跑那麼快的車子的車廠也該被起訴才對。」

「2ちゃんねる」網站使用者們紛紛依照這種留言板的風格對此事發表一兩句話、偏技術風的議論。有人說「我打賭獨立軟體開發者一定會變少的」,「硬碟銷售量要下跌了」。有人發起收集一千篇「感謝」的活動,回應者說「謝謝你給我們的短暫夢想」,「金子是廿一世紀的伽利略」。

參考資料
Yahoo 新聞專題
ZAKZAK對金子生平的八卦、社會檔案式的報導
Winny開発者47氏逮捕祭
幾個已經關閉的 Winny 網頁:Winny Tipsページ
Winny Web Site
Winnyハイパー初心者講座

April 14, 2004

在 Mac OS X 上裝 Movable Type

Filed under: computing — epicure @ 12:27 am

大概(如某人所說的)因為勞碌命的緣故,在幾台不同 Mac 上共裝了好幾次 MT。把心得記錄下來供大家參考。以下假設作業系統為 Mac OS 10.3 (Panther) ,使用 MySQL 為資料庫。

MySQL

非 Server 版的 Panther 須另外裝 MySQL。在 MySQL 網頁上可以下載編譯過後的版本。下載後安裝即可。

Server 版的 Panther 已經附了 MySQL,但是隨光碟來的版本有奇怪的 bug, 在排序日期時會出錯。請把 Panther 更新到 10.3.3 以上,或乾脆另外下載最新版的 MySQL。照理來說,OS X Server 裡頭的 MySQL Manager 程式可以初始 MySQL 資料庫,並在每次該機時啟動。不過不知為什麼用起來不太順利,後來我還是照以下的程序設定了一遍。

裝好 MySQL 後,用

> mysqld_safe --user=mysql &

啟動它。如果你的 MySQL 是自己裝的,mysqld_safe 和其他 MySQL 程式可能放在 /usr/local/mysql/bin/裡,不在目前的執行檔路徑裡頭。MySQL 剛裝好時有兩個 root 帳號,卻沒有密碼。因此第一件事情是為 root 帳號設定密碼。可以用以下的指令

> mysqladmin -u root password "newpasswd"
> mysqladmin -u root -h host_name password “newpasswd”

其中newpasswd是新密碼,host_name 則是這台機器的名字。如果不知道host_name,可以如下先連到 MySQL 的資料庫裡查查看:

> mysql -u root mysql
mysql> SELECT Host, User FROM User;

除此之外,MySQL 還有兩個匿名帳號。如果覺得用不到,而且不想讓別人連到你的電腦上,可以把它刪掉:

> mysql -u root -p mysql 
mysql> DELETE FROM user WHERE User = ‘’;

我覺得我也用不到有host_name的 root 帳號,因此把它也刪掉了:

mysql> DELETE FROM user WHERE Host = 'host_name';

這麼一來 root 只能從這台機器連接到資料庫。

接下來我們產生一個新資料庫新帳號給 MT 用。假設這個資料庫稱作blog,而帳號取名mt:

mysql> CREATE DATABASE blog;
mysql> GRANT ALL PRIVILEGES ON blog.*
mysql> TO ‘mt’@'localhost’
mysql> IDENTIFIED BY ‘password’;

其中password是待會兒得寫到 MT 的mt-db-pass.cgi裡頭的密碼。

最後我們要讓 MySQL 在每次開機時自動啟動。如果是MySQL 下載的版本,裡頭有個安裝程式能把這打點好。如果是 Server 版,在 /etc/hostconfig 裡找到 MYSQL 的那行,把 -NO- 改成 -YES-。更詳細的說明可參考 MySQL 使用手冊內的相關章節

DBI 與 DBD::mysql

OS X 裡頭的 perl 還缺這兩個模組。然而,要裝這兩個模組需要先裝 Developer Tools 編譯(為什麼 OS X 沒有先把編譯器裝好呢?)。CGI::AppToolkit這兒有編譯過的版本,然而我裝了之後沒用。有人能試試看嗎?以下假設你已經有 Developer Tools 了。

DBI 比較好裝,用 CPAN 就可以了。下 sudo perl -MCPAN -e ‘install DBI’指令,回答一些問題(大部分按 enter 即可)後,CPAN 會把程式下載並編譯安裝好。

DBD::mysql 比較麻煩,因為 perl 產生的 Makefile 裡頭有個 bug。只好手動自己弄了。首先到 CPAN 網站上抓最新的 DBD::mysql 原始檔。解開之後,到解開的目錄裡頭,下指令

> perl Makefile.PL --testdb=test --testuser=username --testpassword=user_password --testhost=localhost

其中 username 和 user_password 填任意一個可以動 test 資料庫的帳號密碼,這是等下測試用的。這個指令會產生一個 Makefile 檔。用任何一個編輯器把那個 Makefile 檔裡頭的 MACOSX 改成 env MACOSX。然後就可以編譯並安裝了:

> make
> make test
> sudo make install

PostgreSQL?

如果不喜歡 MySQL 而想用 PostgreSQL 的話,這裡有些資訊:
http://developer.apple.com/internet/opensource/postgres.html

Movable Type

經過這麼一翻折騰,終於(!)可以開始裝 Movable Type 了。可照 Movable Type 完全手冊的指示,先到 Movable Type 公式網站上下載,然後依照第一章的「裝在 FreeBSD 或 Linux 上」一節,安裝中文需要的檔案和補綴檔。

在 OS X 裡,cgi 檔應該要放在 /Library/WebServer/CGI-Executables 裡頭。例如,如果 mt.cgi 解在 /Library/WebServer/CGI-Executables/mt 這個目錄下面,從瀏覽器裡面看到的路徑是 http://hostname/cgi-bin/mt/mt.cgi。即使使用 virtual host, 預設的 CGI 目錄仍然是這一個。

MT 需用 mt.cfg 裡頭的 StaticWebPath 變數找到 MT 所使用的靜態檔(docs, images 和 styles.css)。如果不使用 virtual host, 當 StaticWebPath 變數設為 / 時,三個靜態檔應放到 /Library/WebServer/Documents 裡頭。依此類推。

檔案各就各位後,請依照第二章裡頭的方式設定並啟動。祝好運囉!

這份筆記寫得很簡略。歡迎大家補充。

March 15, 2004

圓周率

Filed under: computing — epicure @ 2:22 pm

為了減低學生對數學的挫折感,日本現在的中學教科書裡頭寫道圓周率 pi「接近 3」,不再寫 3.14 了。據說當時這決定曾引起軒然大波,許多家長驚駭不已,「日本的下一代都要變成笨蛋了!」正方意見則說,離開學校以後,有多少機會用到圓周率呢?況且 pi 其實也不是 3.14 呀,省兩個位數有什麼差別呢?

我是覺得兩個位數的確差別不大,但要緊的是得讓學生知道有無理數這東西存在。不過這恐怕更是陳義過高了。我想即使是為「pi 接近 3」抗議的家長,恐怕其中不少人也已經忘記無理數是什麼了吧。

Jeremy 正在寫一篇計算 pi 的論文,於是我和他提起這事。結果他說,天下之事無獨有偶,印地安那州當年差點就立法宣稱 pi = 3.2 了!

* * *

大約在 1897 年,印第安那州的醫生兼業餘數學家 Edwin J. Goodwin 找上了州議員 Taylor I. Record, 說他發現了一些關於圓的新數學結果。如果印第安那州願意立法承認他的「發現」,州內的學校就可以免費使用這項結果 — 而其他人都得付版稅給他。(有人評論道,如果數學發現可以這樣收錢,畢達哥拉斯一班人的後代現在都不愁吃穿了。)於是這就成了有名的 246 號法案。

246 號法案並沒有直寫 pi = 3.2, 但在第二節中寫道: the ratio of the diameter and circumference is as five-fourths to four,換句話說, pi = (4/5) * 4 = 3.2。 sci.math FAQ 中提到這法案裡不同的章節共意味了四個不同的 pi 值,和一個錯誤的根號 2 的值。但 Mark Brader 仔細研究後,認為法案中筆誤和起草者 Goodwin 搞錯的地方很多。把這些算進去,可以推測 Goodwin 的確認為 pi 是 3.2。

法案不知為何先呈給了運河委員會,後來又轉到溼地委員會。法案寫得隱晦難懂,也難怪議員們不了解它的後果。 Indianapolis Journal 和 Indianapolis Sentinel 兩次提及它,都稱之為「如何求圓面積」的條文。

終於在 1897 年二月二日,246 號法案到了教育委員會手裡,二月八日二讀。然而議員們沒有人有足夠的數學常識發現裡面的謬誤,又希望快點把這案子處理掉。主席 S.E. Nicholson 提議直接進行三讀,該提議以 72 比 0 通過。而三讀結果 67 比 0。於是 246 號法案就迅速而且壓倒性地三讀通過了!當天的報紙大都冷處理這則新聞,只有 Indianapolis Journal 添了一句短短的感想「這是議會有史以來通過的最怪的法案!」數學家 C.A.Waldo 剛好目睹一讀的情況,後來回憶時寫道「一個前(高中?)老師說,『這情況很明顯嘛。我們立個法承認新的、正確的圓周率值,然後作者就讓我們免費在課本裡用。而別的州都得付錢。』」嗯,何樂而不為呢?

幸好印第安那州採取兩議院制。案子送到 Senate,議員們可樂了。二月十一日,案子被轉到酒類管制委員會嘲弄一番。次日二讀時,Indianapolis Journal 寫道「議員們一直拿這開玩笑達半個小時之久。直到 Hubbell 議員表示,納稅人每天 250 美元的錢不是讓他們來這胡鬧的。」於是案子被永久擱置,不了了之。

資料來源:

March 13, 2004

可變外觀網頁的做法

Filed under: computing — epicure @ 7:33 pm

RESET 設計版面,結果發現眾多人七嘴八舌的意見還真是南轅北轍。黑底有特色,白底好讀,有人喜歡冷酷現代感,有人喜歡暖洋洋的少女風。不幸地,我喜歡的版面並沒有得到大多數的支持。為了搶救我喜歡的設計,決定仿造火車時刻表做可變的外觀。

由於火車時刻表上並沒有說明,我動手前另外找了些資料。以下的資料來自A List Apart

要讓網頁有可變的外觀,首先在寫網頁時就得把網頁的內容和外觀完全的分開,把外觀完全交給樣式表來決定。說來容易,作來難。個人經驗覺得,以目前 CSS 的設計來說,什麼算內容,什麼算外觀,其實是蠻模糊的。

樣式表與文件的關係可分為三種

  1. Persistent 樣式表永遠有效,可以用來放每個外觀中共通的東西。如:

     <link rel="stylesheet" type="text/css" href="persistent.css" /> 
  2. Preferred 樣式表在網頁第一次 load 時生效,在讀者選用另一個樣式表時失效。和 persistent 樣式表的差別是多了一個 title 屬性:
     <link rel="stylesheet" type="text/css" href="preferred.css" title="default"/> 
  3. Alternate 樣式表則是除了 preferred 樣式表之外的其他選擇。宣告 alternate 樣式表時同樣需要指定一個 title 屬性,並把 rel 屬性設為 “alternate stylesheet”:
     <link rel="anternate stylesheet" type="text/css" href="alternate.css" title="newlook"/> 

準備好幾個不同外觀的樣式表 css 檔後,在 html 的 head 裡頭用一個當 preferred 樣式表,其他當作 alternate 樣式表。有些瀏覽器(如 Mozilla)就會把這些樣式表列出來,讓讀者選用了。

不過,並不是每個瀏覽器都認得 alternate 樣式表。因此最好是 1. 在網頁上做個選單, 讓讀者可以選樣式表。 2. 在讀者那邊放個 cookie, 下次還會記得他選的樣式表是哪個。這就是以下這個 javascript 的功能(修改自A List Apart

http://reset.dynalias.org/blog/styleswitcher.js

要使用這個檔案,首先請在下載後修改第一行StyleSheetTitlesStyleSheetNames兩個陣列的值。前者是 css 檔的檔名。例如,現在 RESET 使用的四個 css 檔分別是 style_mic.css, style_block.css, style_smoky.css, style_lines.css,所以這個陣列就填[”mic”, “block”,”smoky”, “lines”]。而 StyleSheetNames則是這四個外觀在選單裡頭的名字,要取什麼都可以,但陣列長度(當然)要和 StyleSheetTitles 一樣長。兩個陣列都至少要有一個元素。第一個元素是 preferred 樣式表,其他則是 alternate 樣式表。

接著,把GenStyleSheetLinks()函數中的http://reset.dynalias.org/blog/style-改成指到你的樣式表檔案的路徑。

把每個要使用可變外觀的 html 檔(或 MT 的每個模板)裡原本的 <link rel=”stylesheet” type=”text/css”…/> 改成:

<link rel="stylesheet" type="text/css" title="preferred" href="http://url.to.preferred.stylesheet">
<script type=”text/javascript” src=”http://url.to/styleswitcher.js”></script>
<script type=”text/javascript”>
<!–
GenStyleSheetLinks();
–>
</script>

其中第一行的link宣告指定了一個 preferred 樣式表。這一行不用 javascript 產生,以免沒開 javascript 的瀏覽器沒樣式表可用。http://url.to/styleswitcher.js是可找到styleswitcher.js檔的 URL。這一段小程式呼叫 GenStyleSheetLinks()函數,產生 alternate 樣式表的連結。

最後在主頁(或任何你要的地方)裡頭加上這一段程式

<script type="text/javascript">
<!–
GenStyleSheetMenu();
// –>
</script>

產生選擇外觀用的選單。如此一來終於大功告成了。

需注意的是,大部分的瀏覽器會把所有 alternate CSS 檔都抓下去,然後才開始編排頁面。所以讀者那端會感覺頁面編排得比較慢,而 server 這邊也會發現 CSS 檔的「點擊數」變得很高,因為主頁每 reload 一次,要送出好幾個 CSS 檔。

大家可到RESET看看成果,並歡迎給些意見!

February 16, 2004

Raskin 的人本界面

Filed under: computing — epicure @ 12:14 am

1979 年三月,Apple 的第 31 號員工 Jef Raskin 向 Mike Markkula 爭取機會成立了一個小組,希望開發一台便宜、易用的個人電腦,使得個人電腦不只流行於少數玩家的圈子。九月份這個小組依據 Raskin 最喜歡的蘋果品種命名為 「Macintosh」。

Macintosh 計畫在 1981 年二月由 Steve Jobs 入主。富含個人魅力的 Jobs 的品味喜好很快主導了 Macintosh 計畫的發展,直到今天仍是如此。而 Raskin 則在同時發表了一封嚴厲批評 Jobs 管理風格的長信,之後休了三個月的假。事後他越來越遠離計畫核心,直到 1982 年二月離開 Apple 為止。直到現在 Jobs 仍是舞台上的明星,而 Raskin 的這段故事卻少為大眾所知。

Raskin 不甘就這樣被遺忘。有人稱 Raskin 為「Mac 的創造者之一」,Raskin 可不高興︰「我就是Mac 的創造者!」雖然 Andy Hertzfeld 說,平心而論,後來的 Mac 和 Raskin 當時的構想差距甚大:為了價格因素,Raskin 反對使用 68000,而中意在兩年後將被淘汰的 6809 當作 CPU;Raskin 也反對使用滑鼠,主張採用特別的「跳躍鍵」,直到今天仍如此。

說起圖形界面, Raskin 仍很堅持自己的一套看法。在接受 Business Week 訪問時,他指陳現在的圖形界面的種種缺點:下拉選單會擋住部份的資料;文字編輯器裡需要按太多鍵;在鍵盤和滑鼠之間換手相當浪費時間;根本上的設計問題讓使用者可能不小心弄丟資料(如 cut 一段資料後,不小心忘了,又接著 copy 或 cut 另一份資料,原先的資料就無法回覆了)。Raskin 認為這不只是把界面小修一番可以解決的,而是今日的圖形界面概念上有根本的錯誤。為了實現他理想中的界面,他正進行「人本環境 The Humane Environment」計畫,簡稱 THE。


我下載了 THE,稍稍玩了一下。目前 THE 計畫暫時把焦點放在文字編輯的界面上,並只有 OS 9 或 OS X Classic 模式下執行的版本。右圖是網站上提供的 screen shot。紅色部份是目前游標所在位置、打字時文字插入的地方。操作 THE 是不用滑鼠的。按左右鍵可以移動游標,但上下鍵則只捲動視窗,不移動游標位置。想要讓游標大幅移動的話,須使用「跳躍鍵 LEAP key」。

在 Raskin 的構想中,鍵盤上應該有專用的跳躍鍵。目前的設計則是遷就現有的鍵盤,但 Raskin 認為這仍比目前的界面有效率。例如若要把游標移動到圖中倒數第四行「beneath」的地方,使用者得先按住 SHIFT-空白鍵-K,表示「向前跳躍」,然後在不放開 SHIFT 鍵的情況下輸入「be」 — 在輸入「b」時可以看到游標跳到下一行的「rumbling」的 b 字上頭去了。輸入「e」時游標則跳到「beneath」上,因為這是第一個符合「be」這個 pattern 的字。放開 SHIFT 鍵的同時,游標便會移到該位置。

也許 Raskin 的著眼點是這麼一來手不用離開鍵盤。Raskin 有一套計算效率的公式,宣稱這比使用滑鼠捲螢幕快得多。但我認為一來這不是新點子 — Emacs 裡的 Ctrl-S 功能不是蠻像的嗎?只是沒那麼容易靠放開 SHIFT 鍵跳出 search 模式 — 二來在我的使用經驗中,有好幾次我需要打的 pattern 都相當長 — 重複出現的變數名稱、重複使用的字或片語。如果出現一個全都是「aaaaa… 」的文件,這時跳躍鍵可全無用武之地了。最後一個問題是如何擴充到英文外的語言。我很難想像怎麼一邊按著 SHIFT 一邊打長串中文兼選字,也不認為每個字都需要三四個 key stroke 的情形下這麼做還會比滑鼠快。

圖中深綠色的部份是目前的 selection。要把一段字選起來須在兩端各按一次 SHIFT-空白鍵-S。背景看到大藍字「Command S Done」,顯示使用者剛剛下了這個指令。這是 THE 的設計重點之一︰一切變化都看得到。空白字元在被選起來時以一個點代替,以便和 TAB 字元分開來。深綠色的部份永遠顯示使用者若按 Delete 鍵時會被消去的部份(如目前的 selection)。被倒退鍵刪掉的字也都存在另一個看得到的緩衝區裡面。

THE 所有的指令都以 SHIFT-空白鍵 開始。如要把系統剪貼板的文字貼到現在游標的位置,使用者須按住 SHIFT,然後依次按 空白鍵-C-O-P-Y-I-N,然後把 SHIFT 鍵放開。把選項貼到剪貼板的指令則是 SHIFT-空白鍵-COPYOUT。此外還有把目前的選項當作數學式算出值的指令 SHIFT-空白鍵-CALC。Raskin 認為 programmer 們只要寫指令、軟體商只需賣指令,而不須寫整套軟體。不知這能不能說是文字版的 OpenDoc?Raskin 也批評現在的圖形界面中,使用者需要花很多工夫從選單中層層找出指令的位置。我的疑問是:但翻手冊找出每個指令的拼法會比較好嗎?

Raskin 說,要好就得有變,因此更好的東西必定和你我所習慣的東西不同。許多使用者都得花一些時間習慣 THE 之後,才能體會它的好。也許我還沒越過這個瓶頸,不足以體會其精要之處吧。