sarge 裡關於 syslog rotation 的設定放在 /etc/cron.daily/sysklogd 和 /etc/cron.weekly/sysklogd 裡面。如果想要修改 log 保存的數目,應該修改這兩個檔案裡面,呼叫 'savelog' 工具時的 '-c' 參數。
Posted by yungyuc at 18:41, 0 comment, 0 trackback.
"/.":http://slashdot.org/article.pl?sid=04/11/10/2038234 上的消息,google. 準備為 gmail 加上 pop3 的功能,也有 smtp ("設定畫面":http://gmail.google.com/support/bin/answer.py?answer=13273, "說明":http://gmail.google.com/support/bin/answer.py?answer=10350&rand=0.6872877896362408&rand=0.8024221065104475)。

我也是比較期待 imap。不過現在已經很習慣用 firefox 當 mail client 了,其實即使是在看 mailing list,速度都不覺得比真的 mail client 慢。gmail 的 conversation 功能是蠻好用的。
Posted by yungyuc at 05:02, 0 comment, 0 trackback.
雖然讓 skin 變得比較整齊了一點,但沒辦法,一調下去就停不了了 :) 所以還會繼續調吧!

不過 Zope/COREBlog 的 skin 還蠻好調整的,不花什麼時間,心情好的時候調一調就行。目前還是覺得用 COREBlog 1.0 release 預設的灰色配置最好看,但像 "象步":http://owa.as.wakwak.ne.jp/zope/coreblog 和 "其它 COREBlog":http://coreblog.org/ping/ 的設計也很不錯。

有些 blog 版本設計的字太小了,這點我一定要避免 :) 原則是:

- 字要夠大

- 在 Firefox 裡打開 sidebar (for sage use) 的時候不要讓水平捲軸跑出來 >_<

- 儘量消除 COREBlog default skin 的風格 (這就看能作到怎樣的程度了,我的美感實在是很差)

- 要有個 navbar 來放 hit count :) 也許還能再放一些其它的東西
Posted by yungyuc at 23:28, 0 comment, 0 trackback.
Zope X3 也 "release":http://zope.org/Products/ZopeX3 了,as reported in "ZopeZen":http://www.zopezen.org/Members/andy/news_item.2004-11-08.8721072409 and "/.":http://it.slashdot.org/article.pl?sid=04/11/07/2022238&tid=95&tid=156&tid=162&tid=8

A releasing November.
Posted by yungyuc at 23:06, 0 comment, 0 trackback.
"Mozilla.org":http://www.mozilla.org/ 今天發行了 "Firefox":http://www.mozilla.org/products/firefox/ 1.0,可以在"這裡下載":http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.0/win32/en-US/Firefox%20Setup%201.0.exe。

剛昇級上來,破壞了我不少 extension,需要連 extension 一起作更新。
Posted by yungyuc at 21:52, 0 comment, 0 trackback.
PXELINUX 是 SYSLINUX[r1] 的一個衍生軟體。PXELINUX,讓我們可以使用符合 Intel PXE (Pre-eXecution Environment) 規格的網路卡 boot ROM,直接從區域網路上啟動 Linux 核心及整個系統。同樣可以從區域網路上啟動 Linux 的軟體系統還有 NILO[r2] 和 Etherboot[r3],但它們是使用自己的 boot ROM。

這兩種網路開機的方法各有利弊。使用 PXE boot ROM 的話,好處是只要網路卡支援 PXE 功能 (Intel 的網路卡幾乎都支援),直接就可以用來進行開機,不必再去找 ROM 燒錄機來燒錄 boot ROM;壞處是開機的功能會受限於 PXE,不大能自訂。利用自訂的 boot ROM,好處是彈性可以很大;壞處是要先取得 boot ROM 的晶片硬體,插在網路卡上才能實作,這需要有 ROM 的燒錄機,成本比較高[r4]。

這裡我們要討論的是使用 PXELINUX 來實作 Linux,特別是 Debian 網路開機的方法。

Linux 透過 PXELINUX 進行網路開機時,過程基本上是:

0 PXE boot ROM 對區域網路廣播,尋找可以提供資訊的 DHCP/BOOTP 伺服器。

0 DHCP 伺服器測知要求資訊的對象是 PXE boot ROM (PXEClient),故將 PXELINUX 程式的位置連同基本的網路組態一起提供回去。

0 PXE boot ROM 根據所取得的資訊,從 TFTP (Trivial FTP) 伺服器處下載 PXELINUX 程式檔案,然後執行。

0 任務從 PXE boot ROM 交到了真正實行開機動作的 PXELINUX 手上。PXELINUX 會先根據自己所被分配到的 IP 位址,從 TFTP 伺服器處取得開機設定資料。

0 PXELINUX 的開機設定檔寫法與 SYSLINUX 相同。我們要在 PXELINUX 的設定檔裡面指定 Linux 核心檔案的位置和相關的核心參數資訊 (至少包括本機 IP 與 NFS 根檔案系統的位置)。

0 當 PXELINUX 成功地透過 TFTP 抓到了核心檔案之後,就會用同時取得的核心參數來啟動核心。這時候系統的控制權就從 PXELINUX 交到了 Linux 核心手上。

0 如果在 PXELINUX 設定檔裡的資料都沒有錯誤的話,Linux 應該就能成功地以 NFS 掛載根檔案系統,一步步地完成開機動作。

為了讓這個流程可以順利進行,我們不但需要在節點 (要進行網路開機的電腦) 上安裝支援 PXE 的網路卡,並在 BIOS 裡作好組態,讓系統預設從網路開機,而且要在作為資料來源的伺服器上設定許多相關的網路服務:

- DHCP 伺服器

我們使用 ISC DHCP3 ('dhcp3-server') 伺服器套件。

- TFTP 伺服器

我們使用 Advanced FTP ('aftpd') 伺服器套件。

- DNS 伺服器

我們使用 BIND9 ('bind9') 伺服器套件。

- NIS 伺服器

組態 NIS 目錄服務的目的是為所有由網路開機的系統提供統一的登入資料。這部分也可以用 LDAP 或 winbind 來取代。我們使用 'nis' 套件。

- NFS 伺服器

為所有經由網路開機的系統提供檔案。我們使用 'nfs-kernel-server' 套件。當然,為了讓節點可以順利開機,必備的工具程式一定要先準備好,放在伺服器上,讓各節點來掛載使用。

有時候,我們還會另外組態一些服務,來滿足特別的需要:

- Linux NAT

通常我們是因為有了某些比較特別的需要,才會把電腦組態成利用網路開機,所以這些網路開機的電腦多半是一群一群的。

在大部分的情況下,我們不希望這些節點直接暴露在網際網路上 (噢,不過也有一些情況是反過來的)。此時,如果節點有需要存取網際網路的話,我們可以在伺服器上實作一個 NAT (Network Address Translation),讓內網路上的節點可以用伺服器的身份對外進行連線。從外部只能看到連線來自 NAT 伺服器,不能透進去看到節點,達到保護的目的。

我們必須一一地把以上的服務及相關的資料建好,才能順利地用 PXE 和 PXELINUX 執行開機動作。不過,更重要的是,當節點都可以正常啟動之後,我們還要懂得如何管理這些沒有磁碟的電腦。因為所有節點的組態資料都存在伺服器上面,良好的管理與組織方法不但可以減少重複資料的儲存空間浪費,更能增進管理工作的效率。

.. [r1] "SYSLINUX":http://syslinux.zytor.com/

.. [r2] "NILO":http://www.nilo.org/

.. [r3] "
Etherboot":http://sourceforge.net/projects/etherboot

.. [r4] 或者是使用別人製作好的 boot ROM 晶片,但這樣就失去彈性了,不如直接用 PXE。
Posted by yungyuc at 17:50, 0 comment, 0 trackback.
Debian GNU/Linux 是一個很適合無磁碟化的作業系統。在 Linux 之中它具備非常廣的套件庫,幾乎所有無磁碟化所需要的軟體都包含在了 Debian 官方的發行版本裡面。

無磁碟化的電腦有兩個主要的好處:

- 沒有磁碟,不會墜機

磁碟 (硬碟機) 容量愈來愈大,價格愈來愈低,損壞率也愈來愈高。真正重要的資料,我們如果還敢只存在沒有容錯功能的磁碟上,那膽子實在是很大。

為了保護資料,我們可以採取的手段有定時備份、採用容錯的 RAID、定時更換磁碟機等等。但對於系統碟 (只用於作業系統和軟體資料等目的的磁碟,不存使用者的資料) 來說,其中的資料多半可以在短時間內重新建立回來 (相對於失去工作資料後的重建時間),所以花大錢昇級成 RAID 不太划算,完整備份又太麻煩 (通常需要先結束系統,用另外的軟體進行),有時候我們就不管它了。

如果作業系統不必存在本機磁碟上,那麼連同本來就能放在網路上的工作資料,本機上就可以完全不接上任何磁碟,完全不會有磁碟損壞的問題了。

- 集中設定資料,方便管理

假設我們有十數台用途相似,組態也類似的電腦。每次要修改某個設定資料,譬如說每台電腦的主機名稱,就要到每一台電腦上一個個打開檔案,比對資料然後修改。即使我們有很方便的遠端操作介面 (例如 ssh),這還是一件煩人又容易出錯的工作。

如果電腦是無磁碟系統,那麼表示所有節點的設定資料都會儲存在伺服器上,那麼修改這些設定就輕鬆了。通常我們在放置這些資料的時候就會好好進行組織規畫,那麼甚至不用花什麼力氣就可以寫好批次作業的程式,不管要改什麼設定,都只需要一個動作。

另外,系統的備份與還原也就只需要針對同一份資料進行,比起出問題時要備份還原十幾個甚至更多系統,工作起來會容易得多。

當然無磁碟系統也有它的限制和缺點:

- 需要比較快的網路和伺服器

基本上以一般的應用來講,Fast Ethernet (100Mbps) 已經很夠用了。和具有本地磁碟的一般系統比起來,無磁碟系統在開機時會耗掉更多的網路頻寬,伺服器的負擔也更大。不過當系統載入了應用程式之後,在不存取使用者資料的情況下,對網路的負載和有磁碟系統就沒有多少差異了。

如今 1000Mbps 的 Gigabit Ethernet 已經普及到了一般的商務級 PC 上,單購網路卡的成本也不到 2,000 元新台幣。事實上區域網路的頻寬不是太大的問題。即使頻寬真的不夠用,適當地組態網路拓璞和伺服器的硬體,多半可以解決問題。

- 節點需要比較大的記憶體

因為無磁碟系統沒有磁碟可以作為虛擬記憶體的置換 (swap) 空間,所以主記憶體是多大就是多大,空間不夠就不能夠再執行程式,不像一般的系統還能把背景或不在使用中的程式置換到磁碟上,把記憶體空出來給新的程式使用。

在 Linux 上也有技術可以透過網路進行虛擬記憶體置換,但這樣作會大大地打擊網路的效能,若非絕對必要,千萬別這麼作。

- 對檔案伺服器的資料穩定性要求很高

基本上這個限制並非針對「無磁碟」系統,只要是存放重要資料的檔案伺服器都要有高穩定性,並且應該定期備份、時常檢查資料完整性。我們常常會在重要的檔案伺服器上安裝容錯 RAID 和磁帶機;即使 RAID 裡的成員磁碟有所損壞,也不會影響資料的完整性,而定期也要利用像磁帶機 (Terabyte 等級的離線儲存媒體) 這種大容量設備進行資料備份。

因為無磁碟系統的伺服器上存放了所有節點的設定資料,一旦這些資料出了問題,影響到的是所有的系統,而不是一個或兩個。所以這些資料的重要性,就比單單存在節點的本機碟碟上的時候大了很多。

- 個別節點不容易特化設定

因為節點所有的資料都存在伺服器上,通常會和其它節點共享許多程式檔案,甚至是設定檔。如果我們想特性化某一個節點的設定或者是應用程式,就必須另外為它準備一份檔案組。這會比較麻煩,而且造成管理上的紊亂。

這個問題是無磁碟系統的特性,所有的資料擺在一起可以方便統一設定,相對地特化設定就比較難了。不過,實務上我們還是可以用一些組織檔案系統的技巧來克服這個問題,只是比較需要花點心思。

就硬體來講,無磁碟系統雖然會增加伺服器上的儲存設備成本,但可以減少在各節點上安裝硬碟的成本。如果節點的數量不是很多 (在數十台的尺度內),那麼區域網路方面通常也不需要昇級成 Gigabit Ethernet (不過這部份的成本現在很低了)。因此將現有的 Linux 環境無磁碟化並不會多花多少錢,甚至很有可能省錢。

無磁碟的 Linux (這裡用的是 Debian GNU/Linux) 在許多方面減輕了大量的管理負擔:統一的辦公室環境、教室環境和叢集計算環境。只要是節點組態統一的應用環境,都可以利用無磁碟系統的管理優勢,大幅簡化節點電腦系統的管理工作。雖然建立系統需要學習不少設定技巧和伺服器組態,最後的結果會是值得的。
Posted by yungyuc at 17:49, 0 comment, 0 trackback.
這次試著把段落、pre 和列表的間距用 padding-top 調成一樣::



body{
background: #;
color: #;
font-family:
;
margin: 0px 0px 0px 0px;
}

A {
color: #036; text-decoration: underline; }
A:link {
color: #036; text-decoration: underline; }
A:visited {
color: #012; text-decoration: underline; }
A:active {
color: #888; }
A:hover {
color: #888; }

h1, h2, h3 {
margin: 0px;
padding: 0px;
}

/* Style for banner */

#banner {
background: #;
font-family:
;
font-weight: normal;
padding-left: 10px;
border-bottom: 2px solid #000;
}

/* Blog title */
#banner a,link,visited,active,hover {
color: #;
text-decoration: none;
}

/* Blog name */
.blogname {
background: #;
font-size: 2.6em;
text-align: right;
}

/* Blog description */
.description {
background: #;
font-size: 1em;
line-height: 100%;
text-align: left;
}

/* Style for Blog content */

/* Content box */
#content {
margin: 15px 10px 0 10px;
}

/* Content box */
.blog {
padding: 0px;
}

/* Entry box */
.entry {
font-size: normal;
font-weight: normal;
whote-space: normal;
line-height: 130%;
margin: 0 0.5em 0 3.7em;
}

.entry p {
margin: 0;
margin-top: 0.3em;
}

/* date of entry*/
.date {
background: #;
color: #FFF;
font-family:'Times New Roman',verdana,arial,georgia, sans-serif;
font-size: small;
line-height: 110%;
font-weight: normal;
padding: 3px 0;
margin-bottom: 10px;
}

.day {
float: left;
font-family:'Times New Roman',arial,verdana,georgia, sans-serif;
font-size: xx-large;
line-height: 100%;
font-weight: normal;
letter-spacing: 0.02em;
margin-left: 4pt;
margin-right: 3pt;
padding-right: 3pt;
border-right: 4px solid #FFF;
}


/* title of entry*/
.title {
font-size: large;
margin: 0 0.2em 0.1em 0em;
border-bottom: 1px dotted #000;
}

/* Subtitle of entry*/
.subtitle {
color: #;
font-size: small;
line-height: 110%;
padding-left: 0.2em;
margin: 0.1em 0.2em 0 0em;
border-left: 1em solid #;
}

/* category of entry */
.category {
font-size: small;
line-height: 110%;
text-align:right;
margin: 0;
}

/* postedtime,comment,trackback information for entry */
.posted {
font-size: x-small;
text-align: right;
margin: 1em 10px 2em 0;
}

/* comment for entry */
.comments-head {
font-size: small;
font-weight: bold;
line-height: 100%;
margin: 2em 0.5em 0 0;
padding-left: 0.2em;
border-left: 1em solid #000;
border-bottom: 1px solid #000;
}

/* comment body */
.comments-title {
font-size: small;
font-weight: normal;
line-height: 150%;
margin-right: 0.2em;
border-bottom: 1px dotted #000;
}

/* comment body */
.comments-body {
font-size: normal;
font-weight: normal;
line-height: 150%;
margin-right: 0.5em;
border-bottom: 1px solid #000;
}

/* postedtime for comment */
.comments-post {
font-size: x-small;
text-align:right;
margin: 0 0.2em 1em 0;
}

.trackback-body {
font-size: normal;
font-weight: normal;
line-height: 150%;
margin-left: 0em;
border-bottom: 1px solid #000;
}

.trackback-title {
font-size: small;
font-weight: normal;
line-height: 150%;
margin-right: 0.2em;
border-bottom: 1px dotted #000;
}

.trackback-url {
font-size: small;
font-weight: normal;
line-height: 150%;
padding: 0.5em;
border: 1px dotted #000;
}

.trackback-post {
font-size: x-small;
font-weight: normal;
}

.worning {
color: #A02;
font-size: small;
font-weight: normal;
}


#banner-commentspop {
color:#FFF;
font-size:large;
font-weight:bold;
border-left:1px solid #FFF;
border-right:1px solid #FFF;
border-top:1px solid #FFF;
background:#003366;
padding-left:15px;
padding-right:15px;
padding-top:5px;
padding-bottom:5px;
}

/* footer */
.footer {
background: #;
color: #;
font-size: x-small;
font-weight: normal;
text-align: right;
padding: 0.2em 1em 0.5em 0;
border-top: 2px solid #000;
}

/* -------------------- */

textarea {
font-family: 'Times New Roman', verdana, arial, sans-serif;
}

blockquote {
color: #014;
line-height: 110%;
margin: 0.5em 1.5em 0.5em 1.5em;
padding: 0.2em 0.5em;
border-left: 1px solid #014;
}

pre {
color: #014;
font-family: courier new,courier, sans-serif;
font-size: 9pt;
line-height: 110%;
margin: 0.4em 1em 0.1em 1em;
padding: 0;
border-left: 1px solid #014;
}

ul,ol {
color: #;
font-size: normal;
line-height: 120%;
margin: 0;
padding: 0 0 0 1.6em;
}

li {
line-height: 120%;
margin: 0;
padding: 0.3em 0 0 0;
}

.entry img {
padding: 2pt;
border-style: solid;
border-width: 1pt;
border-color: darkgray;
}

/* Style for sidebox */

#sidebox {
background: #;
margin-top: 15px;
margin-right: 10px;
text-align: center;
width: 250px;
}

.sideboxtitle {
color: #FFF;
background: #;
font-size: small;
font-weight: normal;
letter-spacing: 0.3em;
text-transform: uppercase;
text-align: left;
padding-left: 0.3em;
border-left: 1em solid #000;
}

.sidebody {
background:#;
font-size:small;
font-weight:normal;
line-height:140%;
text-align:left;
margin-bottom: 15px;
padding: 1em 0.1em 1em 1.5em;
}

.sidebody A{
text-decoration: none;
}

.calendar {
background:#;
font-family: georgia,arial,verdana,sans-serif;
font-size:small;
font-weight:normal;
line-height:140%;
text-align:center;
padding: 0.2em 0 0.2em 0;
margin-bottom: 15px;
}

/* -------------------- */

/* style for category name in category list*/
.category-banner {
background: #;
color: #FFF;
line-height: 110%;
font-weight: normal;
padding: 3px 3pt;
margin-bottom: 10px;
}

.category-banner dt {
font-size: x-large;
}

.category-banner dd {
font-size: medium;
margin: 0.5em 0 0 0;
padding-left: 1em;
border-top: 1px dotted #FFF;
}
Posted by yungyuc at 22:42, 0 comment, 0 trackback.
Boromir 那句 "We have a Cave Troll." 被翻成「食人妖進洞穴來了」。

我的媽呀。
Posted by yungyuc at 21:56, 0 comment, 0 trackback.
今天才發現,原來 Zope 可以處理中文 ^^; [r1]

之前一直以為 Zope 不管是 ZODB、Structured Text 還是 ZCatalog,都還不能正常地處理、搜尋中文內容,但其實在使用 Unicode 的情況下,CJK 的處理已經由 "zopechina":http://www.zopechina.com/ 的 "CJKsplitter":http://zope.org/Members/panjunyong/CJKSplitter 和 "ZopeChinaPak":http://zope.org/Members/panjunyong/ZopeChinaPak 作好了。只要安裝這兩個 product 就可以讓 Structured Text 和 ZCatalog 處理中文 (ZODB 的部分尚未測試)。

安裝的步驟 (on Debian):

0 取得 "CJKSplitter 0.6":http://zope.org/Members/panjunyong/CJKSplitter/CJKSplitter-0_6/cjksplitter-0_6.tgz 和 "ZopeChinaPak 0.4":http://zope.org/Members/panjunyong/ZopeChinaPak/zopechinapak-0_4/zopechinapak-0_4.tgz。

0 解開到 instance specific Product directory。

所用的指令是::

$ cd /var/lib/zope/instance/default/Products
$ ls
$ tar xvfz /path/to/cjksplitter-0_6.tgz
$ tar xvfz /path/to/zopechinapak-0_4.tgz
$ ls
CJKSplitter/ COREBlog/ ZopeChinaPak/ mxmCounter/

你注意到我還安裝了 "mxmCounter":http://www.mxm.dk/products/public/mxmCounter/ 這個 product ;) 它是一個網頁計數器,蠻好用的。你可以在 "這裡":http://www.mxm.dk/products/public/mxmCounter/files/mxmCounter.1.1.0.tar.gz 下載 1.1.0 版。

0 不過包裝裡檔案的權限可能有問題,需要自己改一下。

改法是::

$ cd /var/lib/zope/instance/default/Products
$ chmod -R 644 CJKSplitter ZopeChinaPak
$ find CJKSplitter ZopeChinaPak -type d -exec chmod 2755 {} \;
$ chown -R root.root CJKSplitter ZopeChinaPak

0 重新啟動 zope。

使用 Debian 套件安裝的話,這樣作::

$ /etc/init.d/zope restart

0 到這裡,Structured Text 就可以 _正常地_ 讓 **中文** 變化各種格式了。

0 至於要讓 "COREBlog":http://coreblog.org/ (1.0 release) 能作中文搜尋,重點是讓 COREBlog 選用適當的 Splitter (也可以參考 COREBlog 0.6b 的"說明":http://coreblog.org/howtos/search_howto_html,COREBlog 從這一版開始支援 ZCTextIndex):

- 建立 COREBlog instance 的時候進行選擇。

0 要勾選 Create ZCTextIndex for serch。

0 Stop Words 選 Don't remove stop words (這是預設值)。

0 Word Splitter 選 CJK Splitter。這應該是給 Unicode 用的,如果選 CJK BIG5 splitter 的話,分辨出來的單字會變成亂碼。

0 OK

- 已經建好的 COREBlog instance,要把 lexicon 刪除掉重建。

0 到已建好的 COREBlog 的 Contents 頁面去,把其下的 "lexicon" 給殺了。

0 從右上角選擇 ZCTextIndex Lexicon,Id 同樣取為 "lexicon",而 "Case Normalizer", "Stop Words", "Word Splitter" 和上面新建 COREBlog 時選成一樣就好了。

0 回到 COREBlog instance 裡的 Entry,選擇畫面下面的 Recatalog,讓 lexicon 取得新的索引資料。

0 OK

0 最後,當然要記得把 COREBlog instance 裡的 modules/index_html 的 searchform 給打開。這樣就完成了,你的 COREBlog 現在可以搜尋中文。

至於 Plone 的中文搜尋,似乎還要改 portal_catalog 的型態,目前沒時間弄。我的 Plone 都還停在 1.0.5,以後再試試這個部分。

.. [r1] "TZUG related discussion":http://www.zope.org.tw/Forum/Tech/Zope/946686512285

.. [r2] Structured Text 的說明文字,"Help on Structured Text":http://www.zope.org/Members/millejoh/structuredText
Posted by yungyuc at 21:40, 0 comment, 0 trackback.
Change to page (10 entries in each page): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
© hover year to navigate month: powered by django