我又換 Theme 了。
“Unfair” 使用了 7 個月左右,算是… 中等壽命 XD 她的特色是頭版只有一篇,這是優點也是缺點——優點是讓我想放上頭版的文章不會很快的被其他雜文洗掉,缺點則是瀏覽方式不符合一般使用者習慣,舊文比較難被翻出來。我在這個 Theme 上作了很多新的嘗試,例如熱門標籤雲、相關標籤雲、友善的錯誤頁面、不同的最近迴響顯示方式,還有從來沒面世過的文章彙整等等,在 Theme 裡面卻寫了很多 PHP code ,雖然有點噁心,但我很喜歡她的功能性。
我翻閱過去時,重新發現了 KrESCENT ,於是決定下次要來重寫一個 KrESCENT 。這次的 “Selenium” 主要參考了 KrESCENT, Moo-Point 和 Blueprint ,寫完後先用在我的另一個 blog 上,本來是沒打算讓這邊也變成這樣的,最後更換的原因則是…… 我最近把 Firefox 預設字型不論 Sans-Serif 還是 Serif 全設成微軟正黑體,這樣對 “Unfair” 來說字就太小了…… XD 1
這次的 Theme 因為剛好只用到非常少量的圖片,因此我給她加入了漸變效果(但是我沒有讓對比愈來愈低,純粹是隨時間變色而已)。起初這功能是寫成 Hard code ,現在改成 Plugin ,不啟用此 Plugin 的話就只是不會變色, Theme 不會因此壞掉。另外在 “Unfair” 用過的熱門標籤雲、相關標籤雲2、相關文章3這些功能也都改寫成 Widget ,所以這次的 “Selenium” 功能性差不多,卻完全沒有 Hard code 呢!
整體而言我覺得 “Selenium” 是一個用 Plugin 堆起來的 Theme ,她的 Loading 好重喔~ XD 4
最後是講解標題時間,前面提過 “Selenium” 是 “KrESCENT” 的延續,這次的名稱當然要跟「月」有關係囉! Selenium 是化學元素「硒」,而這個字源於希臘文 Σελήνη ,其意為月亮或月之女神。
程式功能
- 將 BBS 精華區的打包檔案轉成 HTML 以便閱讀,轉換結果如上圖。
- 正確轉換 Unicode 補完計畫中的新增字,全部轉成 UTF-8 。
轉換範例1 · 轉換範例2
下載
下載後毋需安裝即可執行。如果無法使用,請安裝 Microsoft .NET Framework 2.0 版可轉散發套件。
使用說明
如何取得看板精華區打包檔案
要取得這個檔案必須有幾個條件: BBS 系統允許某種權限的使用者(如:站長、板主)取得打包檔案,而你剛好是那種權限的使用者。
達到以上條件後,這個功能應該是在 Mail → Zip 那裡,根據各 BBS 站而有所不同。 BBS 系統會將檔案打包好寄到指定的信箱。
沒有權限但好奇的使用者,這裡有 itoc 看板精華區打包檔案的下載。不過我覺得沒事不要亂幫人衝流量比較好…
轉換整個精華區
- 按「開啟檔案」,選好「
.DIR」檔案,然後會詢問是否要開始轉換
- 按「確定」後就會開始轉換,這時程式會呈現當機狀態,請等它忙完 XD
- 資料夾名稱建議取名為看板名稱,因為程式會取資料夾名稱作為網頁標題
轉換單篇文章
- 按「開啟檔案」,選取要轉換的文章,或者直接貼到上方空格中
- 最後按「轉換」
已知問題
- 不支援雙色字,用 CSS 應該可以做出來,但是很麻煩…
- 文章檔頭不一定能正確轉換出來,僅支援少部份檔頭格式(例如標題、作者、時間、看板四個欄位缺了一個就不會轉),不過我覺得不重要所以不怎麼想修… :p
- 下列字元無法正確轉換(會被轉成問號),但這些字好像本來就沒辦法貼到 BBS 上吧?
␀ ␁ ␂ ␃ ␄ ␅ ␆ ␇ ␈ ␉ ␊ ␋ ␌ ␍ ␎ ␏ ␐ ␑ ␒ ␓ ␔ ␕ ␖ ␗ ␘ ␙ ␚ ␛ ␜ ␝ ␞ ␟ ␡
- 以下幾組 Big5 字碼對應到 Unicode 後會變成同一個,不過根據 CP950 和 Unicode 補完計畫的對照表,本來就是這樣轉,我也不知道怎樣才是對的……
- A27E、F9FA 都會被轉換成 ╭
- A2A1、F9FB 都會被轉換成 ╮
- A2A2、F9FC 都會被轉換成╰
- A2A3、F9FD 都會被轉換成 ╯
- A2A4、F9F9 都會被轉換成 ═
- A2A5、F9E9 都會被轉換成 ╞
- A2A7、F9EB 都會被轉換成 ╡
- A2CC、A451 都會被轉換成 十
- A2CE、A4CA 都會被轉換成 卅
寫作動機
- 我想練習新學的 C# :)
- 平常就會備份我的個人版精華區。過去使用 bbs2hh 來轉,但 bbs2hh 畢竟是用來將精華區轉換成 HTML Help 用的,要從此再轉成我要的格式需要許多手動後續工作,作一次備份實在非常麻煩。
- 我非常需要轉換 Unicode 補完計畫中的新增字這項功能,因為我的板裡面實在用到太多這些字了。
附註
- 程式目錄下的
ansi.css 和 jquery.js 若被刪除或更名會發生問題。
ansi.css 可以自己修改成喜歡的樣式
jquery.js 也可以自己更新 XD
- 本程式也可以單純用來將 Big5 日文轉換為 Unicode ,使用「開啟檔案」將文字檔讀取進來後,從文字框中複製,再貼到其他地方即可。(其實 Firefox 也可以這樣用)
從 Kirin Lin 那邊看到, WordPress 2.3 Beta 1 多了這個語焉不詳的功能,而剛才 svn update 時碰巧發現這個新奇的檔名 canonical.php ,本來只是好奇是什麼樣的功能會取名為 canonical ,沒想到就順便解開了 SEO-friendly URL redirection 是什麼的謎底——
SEO-friendly URL redirection 這個功能,就是讓每頁的網址固定,例如這個(原始網址)或是這個(舊版靜態連結),最後都一樣會被導向到這裡。
同時還有統一域名的功能,如果你設定的 Blog 網址是 blog.bcse.info ,使用者輸入 www.blog.bcse.info 時,就會被自動修正為 blog.bcse.info 。
換句話說,只要升級到 WordPress 2.3 ,就不需要再裝 Permalink Redirect 和 Enforce www. Preference 兩個外掛囉!
至於為什麼這樣對於搜尋引擎有益,我想可能是
- 避免被誤以為是重複內容而受懲罰。
- 讓搜尋引擎紀錄到最漂亮的網址。
另外附一張外掛更新通知圖(看來果然要是在 WordPress Extend 登記有案的 Plugin 才能享受到此功能):
因為好奇最近 jQuery 1.1.4 的更新提昇了多少速度,因此自己放了一個 SlickSpeed 測試頁。本來也想加入 Ext.js 一起測,不過加不成功,不知道 Ext.js 是不是有哪裡需要特殊設定?
下面是我的測試結果,我的電腦好像滿差的 XD
| |
Firefox2 |
Firefox3 |
IE 6 |
IE 7 |
Opera9 |
Safari3 |
| base2.DOM 0.9 (alpha) |
32 |
115 |
1600 |
395 |
128 |
52 |
| dojo 0.9.0 |
467* |
715* |
2711* |
821* |
229* |
286* |
| jQuery 1.1.3.1 |
757 |
872 |
3253 |
710 |
519 |
338 |
| jQuery 1.1.4 |
694 |
847 |
3911 |
914 |
436 |
278 |
| MooTools 1.2dev |
212* |
267* |
4926* |
1496* |
227* |
152* |
| prototype 1.5.1.1 |
203 |
282 |
6599* |
1833* |
219 |
80 |
| prototype 1.6.0_rc0 |
184 |
249 |
6436* |
1712* |
207 |
48 |
| * 發生錯誤或回傳結果為零 |
測試 Firefox 2 和 IE 7 的電腦配備較好,因此整體都比較快。
Update: 之前測試 dojo 在 IE 7 完全不能動可能是因為我用 Standalone 版本的緣故,更新為安裝版的重測結果。
看見謝老在玩 <canvas> ,因此引發我的興趣,於是就跟著也寫了一個產生星狀圖的程式——前八張圖的值是隨機的,後四張則是固定的。如果要挑 bug 的話,就是視窗改變大小後,圖形可能會換行,但數值的位置不會隨著圖形改變,要按重新整理才會更新。
Canvas 中畫弧的 method 使用的角度單位是弧度,因此要用三角函數計算,讓我複習了不少三角函數,過去學了不知道有什麼用的三角函數,終於在這次派上用場,看著 JavaScript 中充斥著數學計算式真是有成就感 XD
Canvas 沒有寫字的 method ,這一開始讓我覺得滿奇怪的。有些人是先建立一個暫時的 HTML 物件,再將其上的文字複製過來,但我後來覺得直接使用 HTML 物件就很好啦!我猜 Canvas 不內建寫字的 method 也是考慮到這點。
好久沒有像這樣不用管瀏覽器支援程度,寫沒有用的東西來玩了,感覺好舒暢啊!
※ Firefox 1.5 / Safari 1.3 / Opera 9 以上版本才支援 Canvas 。
目前是暑假,而我剛從大學畢業,還沒到研究所辦理入學,研究工作卻已經開始了。最近的 meeting 主要是聽學長報告,我們雖然有一位唯一僅有的學姐,我卻未曾有幸聽過她的報告。
因為暫時還算悠閒,在家沒事很無聊,於是 7/25 決定開始學習 C# 。我也考慮過 Java ,但是我對於 Java Virtual Machine 的印象很差,而且 C# 的 IDE 看起來很方便,就這樣有點隨便的決定了我要學的語言。
第一個程式先從基本的 K-means 演算法寫起(因為我指導教授的研究大致上都關於 K-means ,我想先寫一個來以後一定會用到 XD)。現在還沒有學生身份,不能到學校圖書館借書,只能靠著網路資料學,起初不熟悉時什麼都得查,進度好慢。到了 7/27 才完成基本的讀取 CSV 資料、分群。程式寫完便又開始無聊,就繼續作外觀方面的功能,例如讓點可以放大縮小、改使用者介面之類的。 C# 內建許多控制元件,而且不需要特別設定就會自動套用 XP 風格外觀,調整介面方面做得滿愉快的。
讓我印象比較深刻的,是主要資料的儲存型態我改了兩次,兩次都牽一髮而動全身,要改寫好多地方。 C# 的多維陣列有兩種作法:矩形陣列(Rectangular array)和不規則陣列(Jagged array),其中不規則陣列就像其他語言中的多維陣列作法,也就是陣列中的陣列(Array of arrays),因此每列長度可以不同;矩形陣列則像是表格,每列長度都相同。我的資料是一串座標,座標數量、維度不固定(但是同一份資料中座標維度必相同),起初我想這應該算是「動態陣列」吧!就用了 ArrayList(並不是前面提到的任何一種 XD),後來才發現我不需要動態,又改回矩形陣列,矩形陣列每列長度相同,跟我的資料剛好符合。最後一次則是改成不規則陣列,因為矩形陣列要取出其中一列很麻煩…… 這樣改了一圈感覺滿空虛的,都沒有用到 C# 的特殊功能 orz
7/30 沒事作,便試圖提昇 K-means 效能,第一個想法是最佳化找最近點的演算法,因為 K-means 中不斷的在找最近點。稍微翻了一點資料後,我覺得 kd-tree 看起來好像不錯,而這就是一段悲劇的開始…… kd-tree 其實是一種資料結構,為了將我的資料轉換為這種格式,我花了兩天才完成,主要的困難點在於他必須依照資料的各個軸排序,這不是用 Array.Sort() 就能辦到的事情,而我又不想使用 Wikipedia 上講的 Selection sort(時間複雜度很高耶!),最後把資料型態改成不規則陣列才作出來(這也是最後一次改資料型態的主因),這個部份完成後其他部份便很快也跟著完成了。
不過花了兩天研究 kd-tree 其實也還不算什麼,難過的是我寫完後才發現我不知道這要怎麼應用到 K-means 上…… XD
從電腦中意外翻出懷念的東西,我轉成了三個尺寸的桌布,念舊(?)的人請自行取用 XD
註: Windows XP 似乎還不會在延展 PNG 桌布時反鋸齒,所以用 320 × 400 的版本讓它自己延展應該會有最糟糕但卻真實的效果。
–
其實我從小就很好奇為什麼這一段文字沒有置中…