跳到主要內容

發表文章

修正8 bit header在Openwebmail顯示亂碼問題

上一次 解決了 Roundcube的主旨亂碼問題,這次再試著解決Openwebmail的Big5/GBK顯示亂碼。註:此處修正2.53版,自從2009年以來都沒有更新,3.0 beta要釋出得要一段時間。 簡單地說,若在email的header沒有指定Content-Type charset,未編碼的8 bit header在預設UTF-8 的Openwebmail看到主旨、寄件人等名字就是一團糟。 因為敝公司仍未正式轉換到Roundcube,加上VB超人說他比較喜歡Openwebmail的介面,所以 夾卵蛋 拼小命也要試著做出來,至少在List畫面要正常吧!

修正8 bit header在Roundcube顯示亂碼問題

之前寫過很多次,一直找到能接替Openwebmail的下一代webmail,最後採用 Roundcube 。 RFC裏明明規定email header必須用7bit,但是早期的email client如Outlook Express、Becky等都有允許8bit的功能,因此亞洲不少國家流通的email都還有人在用8bit header。會出現允許八位元標頭是因為早期Unix上pine/elm等client軟體沒有編碼/解碼功能,為了讓收件人在elm上能看得到主旨才這麼做。現在新的email client都沒有允許八位元標頭的選項。 Openwebmail若指定預設語系Big5編碼,在收到Big5碼 8bit header郵件時完全正常,但若指定為UTF-8預設語系,則在Big5碼 8bit主旨會亂碼。 Roundcube 內定即是UTF-8編碼,大部份的email轉碼都很正常,但是Big5、GB2312等8bit 標頭則會變成亂碼;我在求助無門的情況下只好自力救濟。 Update:  Roundcube 會對其他編碼處理,但是限於在header有指定Content-Type, charset才行。

完美簡繁轉換

因為之前一直用ConvertZ轉影片字幕檔,但是我在家用Mac居多, 加上聽完HITCON 2011後在公司也不太想用Windows了(大誤) ,而且ConvertZ必須自己指定檔案的編碼,對於多檔轉換時很麻煩(找的字幕檔編碼不一定是某種編碼),希望能有更方便的解決方案。原本想要用 開放中文轉換 , opencc ,但是在Windows編譯上遇到困難,後來又看到 convert2utf8 ,本以為它會自動轉換編碼,用了才發現不會,再找了 Universal Encoding Detector ,自己加上自動編碼偵測,並在轉換檔加上 BOM 。

初探 XenServer 免費版

主管指示要開始朝虛擬化前進,原本是想採用 Hyper-V Server ,安裝及設定參考 蘇老的文章 ,用起來也很不錯。沒想到 Hyper-V Server  2008 R2 SP1對Linux的相容性比以前還糟,我愛用的TrueImage開機光碟完全不能用。 接下來只好準備換跑道,看到 保哥 在噗浪上寫  KVM  效能遠勝過  Hyper-V Server  ,於是在我的 Ubuntu 桌機設定  KVM ,跑起來感覺並沒有很快。接著我再換  Xen  核心,跑起來其實和  KVM 差不多。其實在這裏我犯了嚴重的錯誤,企業級虛擬化與個人用虛擬化不同,應該要使用"乾淨"的測試環境才準。關於 Xen 的安裝及原理可以參考鳥哥的 利用 Xen 設計虛擬機器 。至於市場龍頭VMWare 免費Server ESXi很挑硬體,我手上沒有SCSI硬碟,所以就算了。(而且聽說它的管理工具要錢,這...) 其實 KVM 與 Xen 很類似,都是建立在修改Linux Kernel之上(但是 KVM 算是Linux Kernel內建功能),也都利用 QEMU 做為虛擬機執行平台,較新的Linux Kernel都內建支援 Xen 與 KVM 。現在 Virt 管理工具也做的不錯,但我暫時選擇XenServer。原因為何? Xen 已經非常成熟,在多篇效能比較裏,它的CPU使用率都很低,I/O效能也好,加上商用軟體整合性好;我需要有良好UI管理工具,並且要易於安裝,用 KVM 有不少東西得手動來。 XenServer還有個特點,就是免費版也具有動態搬移VM的功能(Live Motion,在Hyper-V叫Live Migration,在 Hyper-V Server 2008 R2之後具備),可以參考 這篇 。 安裝主機很簡單,步驟可以參考 這 ,硬體需求就是CPU要有支援Intel VT或AMD-V,詳情看XenServer 安裝指南。裝好後,找台支援.Net framework 2.0的Windows安裝管理介面 Xen Center ,隨附在安裝ISO檔裏。 接下來當我在XenServer上安裝VM時,第一個想法就是:「真是麻煩呀!」。它不像Hyper-V Server能夠...

製作FreeBSD可開機USB

雖然用 UNetbootin  在各種平台都可利用開機iso/Disk image做出可開機USB,但因為它獨特的boot loader,FreeBSD或某些Linux Distribution會有問題。 以往FreeBSD的安裝媒體只有出ISO image,現在已經有memstick.img可選擇,例如: FreeBSD-8.2-RELEASE-i386-memstick.img 。以前的方法( thinker )真的太麻煩了 :(

FreeBSD在fstab使用標籤 Label 名稱 mount 磁碟

因為敝公司的Mail Server是從FreeBSD 4.x一路升級至今,昨天我在聽HITCON 2011時居然主機故障,因為一直被call,聽完連忙趕回公司,非常地不爽。 Update: 更新到FreeBSD 9.0之後,新的安裝程式設定Label是用 GPT分割 (GUID Partition Table)的Label,所以設定好後,會出現 /dev/gpt/root 之類的Label,同樣可以用 glabel status查看。若已改用GPT分割,無法使用 /dev/ufs 或傳統BSD Label的方式, 只能用 GPTLlabel。

舊Linux上編譯Xen guest kernel

由於最近希望把一台舊Linux伺服器虛擬化,原本嘗試用 Hyper-V Server ,無奈對於Linux相容性太差,連新版的TrueImage boot cd都不能用,於是我改用XenServer。因為我希望有好用的管理工具,所以我是直接下載Citrix的XenServer免費版,需要每年手動更新一次授權。 在虛擬的Windows XP安裝Xen Tools後發現記憶體使用量變小,IO也很快。所以再把Linux丟上去後,發現不能在Kernel 2.4跑Xen Tools。於是我先 升級Linux核心 2.4->2.6 ,確定沒問題後,再照著 XenSource的官方文件 。注意若原本是kernel 2.4,千萬要先升級為 module-init-tools ,否則重開機就掛了。 要編譯支援Xen的kernel,首先當然是取得 Linux kernel source ,早期的Linux需要另外下載xen patch,現在新的kernel都內建,所以我下載 2.6.39.3 ,是目前最新的Stable。接下來要編譯: $su - #cd /usr/src #wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.3.tar.bz2 #tar xjf linux-2.6.39.3.tar.bz2 #make menuconfig 根據官方文件,在32bit kernel必須 啟用PAE (Processor type and features -> High Memory Support -> PAE (Physical Address Extension) Support->64GB),並且要設定 CONFIG_HIGHPTE=n (Processor type and features -> High Resolution Timer Support->不要勾),否則會crash(應該就是kernel panic吧?),若編成64bit kernl就不用管這兩點。 再來要注意,一定要 啟用ACPI support ,否則就看不到Dom0。 Power Management and ACPI options ->  ACPI Sup...