UNIX 技巧: 借助 UNIX 成為更優(yōu)秀的博客
Unix® 和網(wǎng)絡(luò)博客或博客 具有許多共同之處。除了作為大多數(shù) Web 服務(wù)器的本機(jī)環(huán)境和許多 Web 開(kāi)發(fā)人員的首選環(huán)境之外,由于其強(qiáng)大的 Web 和文本處理能力,UNIX 還是用于創(chuàng)建博客的理想環(huán)境。利用 UNIX 所固有的命令行工具和特性來(lái)使您成為更優(yōu)秀的博客所有者。下面是一些幫助您實(shí)現(xiàn)該目的的技巧。
不斷提供新鮮內(nèi)容
博客創(chuàng)作的最重要規(guī)則是做得盡可能多。總體思想在于,您的博客應(yīng)該更類(lèi)似滾動(dòng)的自動(dòng)收?qǐng)?bào)機(jī)紙條,甚至更類(lèi)似電視畫(huà)面的運(yùn)動(dòng),而不是類(lèi)似從考古井中拔出的一些蝕刻片斷。它應(yīng)該始終不斷增長(zhǎng),并且讀者在訪問(wèn)時(shí)應(yīng)該獲得新鮮感。就網(wǎng)站這種媒體而言,有多少訪問(wèn)者在積極地閱讀它們,差不多就有多少訪問(wèn)者在觀看 它們——訪問(wèn)鏈接、重新加載和返回。要在這樣的網(wǎng)站上取得成功,您就必須適應(yīng)這一點(diǎn)。
雖然您不需要為此而安裝任何特殊軟件,但改進(jìn)網(wǎng)絡(luò)博客的最快速和最重要的方法是:您必須不斷添加新內(nèi)容!既使您今天才開(kāi)通博客,只要您堅(jiān)持每天對(duì)它更新多次,而不是一放就是一年,只有心血來(lái)潮時(shí)才更新它,那么到周末就會(huì)有更多的人閱讀它了。
這個(gè)技巧與本文后面的所有其他技巧相關(guān),因?yàn)樗鼈儗⑾蚰砻?UNIX 系統(tǒng)如何有助于比以往更快更好地提供新鮮的博客內(nèi)容。您必須知道您的哪些內(nèi)容最受歡迎、知道誰(shuí)正在閱讀它以及他們來(lái)自何處、使您的文本更快更好地加載,并自動(dòng)化您的博客更新。下面您將簡(jiǎn)單介紹一些基于 UNIX 的內(nèi)容管理解決方案,它們可能比您以前一直用來(lái)制作博客的解決方案更好。
查看日志
日志就是您的活力之源。它們將告訴您誰(shuí)正在查看您的博客以及有關(guān)位置、次數(shù)和頻度的信息。如果您積極地發(fā)布網(wǎng)絡(luò)博客,則應(yīng)該至少每天檢查一次 日志。日志使您能夠看到誰(shuí)正在閱讀您的發(fā)布、確切了解他們正在閱讀的內(nèi)容以及他們閱讀的時(shí)間。所以,為什么要忽略它呢?
您可以使用命令行工具來(lái)從日志提取有意義的數(shù)據(jù),但是存在一些特殊的 UNIX 工具可以自動(dòng)分析最流行格式的日志,包括 Apache Web 服務(wù)器所寫(xiě)入的日志。此類(lèi)工具之一就是流行的開(kāi)放源代碼 analog 命令。
對(duì)受歡迎的內(nèi)容作出反應(yīng)
使用 analog 命令來(lái)檢查您的鏈接并查看人們所訪問(wèn)的內(nèi)容。首先,獲得一個(gè)顯示統(tǒng)計(jì)信息的常規(guī)報(bào)告——正在發(fā)出多少個(gè)唯一請(qǐng)求、是否存在任何失敗的請(qǐng)求、正在為多少個(gè)不同的主機(jī)服務(wù),等等:
$ analog -A www.20060901 | lynx -stdin
此命令產(chǎn)生類(lèi)似于清單 1 所示的代碼。
清單 1. analog 工具的示例輸出
Web Server Statistics for BigBlog Program started at Mon-25-Sep-2006 14:46. Analyzed requests from Fri-01-Sep-2006 00:01 to Fri-01-Sep-2006 23:59 (1.00 days).____________________________________________________________________________General Summary (Go To: Top: General Summary) This report contains overall statistics. Successful requests: 3,400 Average successful requests per day: 3,403 Successful requests for pages: 2,015 Average successful requests for pages per day: 2,016 Failed requests: 3 Redirected requests: 963 Distinct files requested: 101 Distinct hosts served: 950 Data transferred: 65.338 megabytes Average data transferred per day: 65.429 megabytes____________________________________________________________________________ This analysis was produced by analog 6.0. Running time: Less than 1 second. (Go To: Top: General Summary)
要特別注意 Search Word Report(其中顯示了最流行的查詢關(guān)鍵詞和它們被查詢的次數(shù))和 Directory Report(其中顯示您站點(diǎn)上最受歡迎的目錄)。(查看讀者當(dāng)前對(duì)哪些存檔的博客條目感興趣始終是個(gè)好主意。)最后,Request Report 顯示了站點(diǎn)上被請(qǐng)求次數(shù)最多的文件。您的博客徽標(biāo)和任何經(jīng)常在整個(gè)站點(diǎn)中出現(xiàn)的圖形固定在頂部附近,但是通過(guò)查看實(shí)際內(nèi)容文件(如 .HTML 文件),您可以清楚了解哪些頁(yè)面或存檔的博客條目最受讀者的歡迎。
可能會(huì)出現(xiàn)每天或周期性的高峰,您應(yīng)該對(duì)此作出反應(yīng)。然而,長(zhǎng)遠(yuǎn)考慮長(zhǎng)期趨勢(shì)始終是明智的。如果要在存檔目錄中保留每天的日志,這是很容易做到的。只需拼接它們,然后將它們?nèi)及l(fā)送到 analog 以進(jìn)行一次性處理。這可以每周、每月甚至每年進(jìn)行一次以跟蹤趨勢(shì)。使用 zcat(在有些系統(tǒng)上名為 gzcat)來(lái)同時(shí)解壓縮和拼接任何壓縮的日志。例如,為了獲得有關(guān) 2006 年 9 月的所有日志的完整報(bào)告,可以使用以下命令:
$ zcat www.200609* | analog - | lynx -stdin
知道您的讀者是誰(shuí)
知道您的讀者來(lái)自何處可能很有幫助——所在的域、IP 地址和國(guó)家。若要查找網(wǎng)絡(luò)博客中的所有主機(jī),您可以使用幾個(gè)命令行工具來(lái)獲得有關(guān)每個(gè)主機(jī)名稱的簡(jiǎn)要報(bào)告。如果使用 Apache 風(fēng)格的日志記錄,則請(qǐng)求 IP 地址是每行的第一個(gè)字段:
$ for i in `cut -d " " -f1 www.200609* | sort -u`; { host $i; }
如果您的日志是壓縮的,則首先使用 zcat 來(lái)通過(guò)管道輸出解壓縮的文本。或者,如果每天的日志在一個(gè) access.log 文件中可用,您可以使用同樣的原理來(lái)查看 badblog.example.com 中的同事是否已訪問(wèn)過(guò)您的站點(diǎn):
$ for i in `cut -d " " -f1 access.log | sort -u | head`;> { host $i; } | fgrep badblog.example.com
您可以基于 web/logs/ 目錄中所具有的壓縮日志來(lái)輸出訪問(wèn)過(guò)您的 /blog 目錄的唯一域總數(shù):
$ zcat web/logs/* | fgrep "/blog" | cut -d " " -f1 | sort -u | wc -l
知道他們來(lái)自何處
如果某個(gè)站點(diǎn)在向您的博客發(fā)送大量讀者,您需要對(duì)其進(jìn)行確認(rèn)。這意味著您應(yīng)該密切注意 referrer——包含指向您的頁(yè)面鏈接并出現(xiàn)在標(biāo)頭中的 URL。該數(shù)據(jù)保存在您的日志中,您可以使用 analog 來(lái)提取它。analog 工具列出 Referrer Report 中的所有 referrer,如清單 2 所示。可以使用 +f 標(biāo)志來(lái)啟用該報(bào)告。
清單 2. 來(lái)自 Referrer Report 頁(yè)面的示例
Web Server Statistics for BigBlogReferrer Report (Go To: Top: General Summary: Monthly Report: Daily Summary: Hourly Summary: Domain Report: Organization Report: Referrer Report: Search Word Report: Operating System Report: Status Code Report: File Size Report: File Type Report: Directory Report: Request Report) This report lists the referrers (where people followed links from, or pages which included this site's images). Listing referring URLs with at least 20 requests, sorted by the number of requests.reqs: URL----: ---814: http://www.ibm.com/developerworks/359: http://www.google.com/search114: http://badblog.example.com/102: http://badblog.example.com/2006/09/01/ 81: http://www.google.co.uk/search530: [not listed: 485 URLs] ________________________________________________________________________________
還可以跳過(guò)對(duì)報(bào)告軟件的使用而直接從命令行獲得 referrer。在 Apache 風(fēng)格的日志中,referrer 包含在雙引號(hào)中,并跟在 IP 地址、日期和時(shí)間以及實(shí)際請(qǐng)求(也包含在引號(hào)中)后面。可以使用 awk 來(lái)提取 referrer;在使用一個(gè)雙引號(hào)字符作為字段分隔符的情況下,它們是每行的第四個(gè)字段。由于在請(qǐng)求沒(méi)有引用 URL 時(shí),Apache 將寫(xiě)入一個(gè)連字符,因此可以結(jié)合使用 grep 命令和 -v 選項(xiàng)來(lái)忽略那些行。作為最后一個(gè)技巧,可以按唯一 referrer 的受歡迎程度來(lái)排序:
$ awk ' BEGIN { FS="""}; {print $4}' log.daily|grep -v "^-$"|sort|uniq -c|sort -r
預(yù)先設(shè)置圖像大小
超文本標(biāo)記語(yǔ)言 (HTML) 標(biāo)記 <img> 的 HEIGHT 和 WIDTH 屬性非常重要。這些參數(shù)指定給定圖像的大小。當(dāng)這些參數(shù)存在時(shí),大多數(shù)瀏覽器都會(huì)在加載圖像之前,在呈現(xiàn)頁(yè)面的窗口中為圖像騰出空間。如果沒(méi)有這些標(biāo)記,則必須在圖像下載完成以后,才會(huì)顯示圖像周?chē)奈谋尽?/p>
所以,當(dāng)您在博客中放置圖像時(shí),在 <img> 標(biāo)記中包括這些參數(shù)是有利的,尤其是在單個(gè)頁(yè)面上開(kāi)始有大量圖像的時(shí)候,因?yàn)檫@樣可以顯著改善博客頁(yè)面的加載。訪問(wèn)者將能在頁(yè)面開(kāi)始加載時(shí)就開(kāi)始閱讀,而不必等待整個(gè)頁(yè)面及其所有圖像傳輸?shù)奖镜亍?/p>
但是,每次使用圖像并將它們放在 <img> 標(biāo)記中時(shí),都必須確定精確的 HEIGHT 和 WIDTH 值,這本身就是件恐怖的麻煩事情。幸運(yùn)的是,存在一個(gè)工具可以為您自動(dòng)執(zhí)行整個(gè)任務(wù)。imgsizer 實(shí)用程序(請(qǐng)參見(jiàn)參考資料)讀取您提供給它的任何 .html 文件,檢查那些文件中所引用的所有源圖像,確定它們的高度和寬度,并在給定文件所包含的 <img> 標(biāo)記中寫(xiě)入正確的值:
$ imgsizer index.html
就這樣簡(jiǎn)單——您不必加載任何圖像或?qū)λ鼈冏銎渌魏问虑椤T?imgsizer 添加這些標(biāo)記以后,您將對(duì)頁(yè)面加載速度的提高幅度感到非常吃驚。很少有博客所有者使用了此項(xiàng)簡(jiǎn)單技術(shù),但它是讀者將會(huì)非常欣賞的技術(shù)。
自動(dòng)化更新
很少有博客所有者直接在在線頁(yè)面本身之上制作博客。大多數(shù)工作都是在本地副本上完成的,他們首先在本地副本上草擬和提煉新條目。然后,當(dāng)新的 index.html 文件為在線 準(zhǔn)備就緒時(shí),博客所有者將該文件上載到承載實(shí)際站點(diǎn)的服務(wù)器。
該過(guò)程可能要花 30 秒到一分鐘的強(qiáng)制性注意時(shí)間,在此過(guò)程中,博客所有者打開(kāi)文件傳輸協(xié)議 (FTP) 連接、鍵入密碼、切換到本地網(wǎng)絡(luò)博客根目錄、切換到服務(wù)器根目錄、上傳該文件,然后注銷(xiāo)(有關(guān)示例請(qǐng)參見(jiàn)清單 3)。
可以想象,此過(guò)程很容易出現(xiàn)用戶錯(cuò)誤。如果您志在成為每天擁有 10 個(gè)優(yōu)秀更新的大亨級(jí)精英博客所有者,則此上傳過(guò)程每天就要花去您整整五分鐘時(shí)間——或者說(shuō)每年總共超過(guò) 30 個(gè)小時(shí)!那是相當(dāng)多的時(shí)間,原本可以更好地花在閱讀 developerWorks 文章來(lái)加強(qiáng)您的信息技術(shù) (IT) 本領(lǐng)上。
清單 3. 網(wǎng)絡(luò)博客根頁(yè)的手動(dòng)更新
develbox$ ftp bigblog.example.comConnected to bigblog.example.com.220 bigblog.example.com NcFTPd Server (licensed copy) ready.Name (bigblog.example.com:joe): joe_blogger331 User joe_blogger okay, need password.Password: secret230 You are user #1 of 2 simultaneous users allowed.230 Logged in.Remote system type is UNIX.Using binary mode to transfer files.ftp> lcd ~/blogLocal directory now /home/joe/blogftp> cd public_html250 "/usr/www/users/joe_blogger" is new cwd.ftp> put index.htmllocal: index.html remote: index.html200 PORT command successful.150 Opening BINARY mode data connection.226 Transfer completed.ftp> bye221 Goodbye.develbox$
完成此任務(wù)的一種更好方法是使用 Expect 語(yǔ)言,它是為腳本交互式會(huì)話而設(shè)計(jì)的(請(qǐng)參見(jiàn)參考資料)。對(duì)于通過(guò) FTP 來(lái)人工更新站點(diǎn)的博客所有者,創(chuàng)建自動(dòng)化的更新腳本是很自然的方法。清單 4 顯示了一個(gè)自動(dòng)化清單 3 所示的會(huì)話的示例。
清單 4. 自動(dòng)化網(wǎng)絡(luò)博客更新的 Expect 程序
#!/usr/bin/expect# update a weblog index page# puts ~/blog/index.html in remote ~/public_html/exp_version -exit 5.0if $argc!=0 {send_user "usage: bloggitn"exit}set timeout 60log_user 0spawn ftp bigblog.example.comexpect "Name*:"send "joe_bloggerr"expect "Password:"send "secretr"expect "ftp>"send "lcd ~/blog/r"expect "ftp>"send "cd public_html/r"expect "ftp>"send "put index.htmlr"expect "226*ftp>"send "byer"send_user "blogged it.n"close
現(xiàn)在,當(dāng)您準(zhǔn)備將某個(gè)更新置于在線時(shí),所花的時(shí)間要少得多:
$ bloggitblogged it.$
使用內(nèi)容管理系統(tǒng)
就開(kāi)發(fā)并推出產(chǎn)品而言,UNIX 人傾向于自行其事。但同樣地,他們也很懶惰,如果已經(jīng)存在適用的解決方案,他們也不會(huì)費(fèi)心地另辟蹊徑;太多的新思想還在等待形成。
在博客的早期年代,最成功的網(wǎng)絡(luò)博客是手工編碼的 HTML——如今已很不常見(jiàn)了。現(xiàn)在,大多數(shù)博客都是由 CMS 提供支持的數(shù)據(jù)庫(kù)驅(qū)動(dòng)、手工配置的站點(diǎn)。
如果說(shuō)存在網(wǎng)絡(luò)博客應(yīng)用程序,那就一定是 CMS,它能為您提供大量難于通過(guò)編程來(lái)實(shí)現(xiàn)的必備博客特性——分類(lèi)排序、按日期、類(lèi)別和媒體類(lèi)型存檔、協(xié)作帳戶便利性、布局模板和格式化、標(biāo)準(zhǔn)或滾動(dòng)圖像或主題,以及各種格式和渠道(如 RSS)的內(nèi)容可用性。
存在太多的 CMS,甚至無(wú)法嘗試列出它們的完整清單——其中有數(shù)百個(gè)是當(dāng)前正在使用的,還有一些是在 developerWorks 上的其他地方詳細(xì)描述的(請(qǐng)參見(jiàn)參考資料)。但是,列舉出其中一些在 UNIX 上工作得很好并且可以配置來(lái)開(kāi)發(fā)和運(yùn)行網(wǎng)絡(luò)博客的較好和較流行的開(kāi)放源代碼 CMS 是值得的。表 1 列出了這些 CMS,但是還有其他許多沒(méi)有列出,因此肯定存在滿足您特定需要的解決方案。
表 1. 用于 UNIX 的流行開(kāi)放源代碼 CMS
CMS描述BlosxomBlosxom 是一個(gè)基于 Perl 的網(wǎng)絡(luò)博客發(fā)布系統(tǒng),其特色是插件體系結(jié)構(gòu)和虛擬目錄。DrupalDrupal 是一個(gè)模塊化的 CMS,用于通過(guò)評(píng)論和 Trackback 來(lái)構(gòu)建網(wǎng)絡(luò)博客。TextpatternTextpattern 是一個(gè)文檔管理系統(tǒng),并著眼于精美的 Web 排版;它使用 PHP V4.3 或更高版本和 MySQL V3.23 或更高版本。WordPress它是最受歡迎的開(kāi)放源代碼 CMS 包之一,用于 UNIX 上的發(fā)布。
總結(jié)
UNIX 環(huán)境真正是用于博客創(chuàng)作的天然環(huán)境。從 Web 友好的基礎(chǔ)設(shè)施到強(qiáng)大的命令行工具,其中有大量的特性可幫助您改變一生的博客創(chuàng)作命運(yùn)。本文提供了一些可以使用 UNIX 來(lái)使您的博客創(chuàng)作進(jìn)行得更好更快的方法。
