UNIX 技巧: 借助 UNIX 成為更優(yōu)秀的博客
Unix® 和網(wǎng)絡博客或博客 具有許多共同之處。除了作為大多數(shù) Web 服務器的本機環(huán)境和許多 Web 開發(fā)人員的首選環(huán)境之外,由于其強大的 Web 和文本處理能力,UNIX 還是用于創(chuàng)建博客的理想環(huán)境。利用 UNIX 所固有的命令行工具和特性來使您成為更優(yōu)秀的博客所有者。下面是一些幫助您實現(xiàn)該目的的技巧。
不斷提供新鮮內(nèi)容
博客創(chuàng)作的最重要規(guī)則是做得盡可能多。總體思想在于,您的博客應該更類似滾動的自動收報機紙條,甚至更類似電視畫面的運動,而不是類似從考古井中拔出的一些蝕刻片斷。它應該始終不斷增長,并且讀者在訪問時應該獲得新鮮感。就網(wǎng)站這種媒體而言,有多少訪問者在積極地閱讀它們,差不多就有多少訪問者在觀看 它們——訪問鏈接、重新加載和返回。要在這樣的網(wǎng)站上取得成功,您就必須適應這一點。
雖然您不需要為此而安裝任何特殊軟件,但改進網(wǎng)絡博客的最快速和最重要的方法是:您必須不斷添加新內(nèi)容!既使您今天才開通博客,只要您堅持每天對它更新多次,而不是一放就是一年,只有心血來潮時才更新它,那么到周末就會有更多的人閱讀它了。
這個技巧與本文后面的所有其他技巧相關,因為它們將向您表明 UNIX 系統(tǒng)如何有助于比以往更快更好地提供新鮮的博客內(nèi)容。您必須知道您的哪些內(nèi)容最受歡迎、知道誰正在閱讀它以及他們來自何處、使您的文本更快更好地加載,并自動化您的博客更新。下面您將簡單介紹一些基于 UNIX 的內(nèi)容管理解決方案,它們可能比您以前一直用來制作博客的解決方案更好。
查看日志
日志就是您的活力之源。它們將告訴您誰正在查看您的博客以及有關位置、次數(shù)和頻度的信息。如果您積極地發(fā)布網(wǎng)絡博客,則應該至少每天檢查一次 日志。日志使您能夠看到誰正在閱讀您的發(fā)布、確切了解他們正在閱讀的內(nèi)容以及他們閱讀的時間。所以,為什么要忽略它呢?
您可以使用命令行工具來從日志提取有意義的數(shù)據(jù),但是存在一些特殊的 UNIX 工具可以自動分析最流行格式的日志,包括 Apache Web 服務器所寫入的日志。此類工具之一就是流行的開放源代碼 analog 命令。
對受歡迎的內(nèi)容作出反應
使用 analog 命令來檢查您的鏈接并查看人們所訪問的內(nèi)容。首先,獲得一個顯示統(tǒng)計信息的常規(guī)報告——正在發(fā)出多少個唯一請求、是否存在任何失敗的請求、正在為多少個不同的主機服務,等等:
$ analog -A www.20060901 | lynx -stdin
此命令產(chǎn)生類似于清單 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(其中顯示了最流行的查詢關鍵詞和它們被查詢的次數(shù))和 Directory Report(其中顯示您站點上最受歡迎的目錄)。(查看讀者當前對哪些存檔的博客條目感興趣始終是個好主意。)最后,Request Report 顯示了站點上被請求次數(shù)最多的文件。您的博客徽標和任何經(jīng)常在整個站點中出現(xiàn)的圖形固定在頂部附近,但是通過查看實際內(nèi)容文件(如 .HTML 文件),您可以清楚了解哪些頁面或存檔的博客條目最受讀者的歡迎。
可能會出現(xiàn)每天或周期性的高峰,您應該對此作出反應。然而,長遠考慮長期趨勢始終是明智的。如果要在存檔目錄中保留每天的日志,這是很容易做到的。只需拼接它們,然后將它們?nèi)及l(fā)送到 analog 以進行一次性處理。這可以每周、每月甚至每年進行一次以跟蹤趨勢。使用 zcat(在有些系統(tǒng)上名為 gzcat)來同時解壓縮和拼接任何壓縮的日志。例如,為了獲得有關 2006 年 9 月的所有日志的完整報告,可以使用以下命令:
$ zcat www.200609* | analog - | lynx -stdin
知道您的讀者是誰
知道您的讀者來自何處可能很有幫助——所在的域、IP 地址和國家。若要查找網(wǎng)絡博客中的所有主機,您可以使用幾個命令行工具來獲得有關每個主機名稱的簡要報告。如果使用 Apache 風格的日志記錄,則請求 IP 地址是每行的第一個字段:
$ for i in `cut -d " " -f1 www.200609* | sort -u`; { host $i; }
如果您的日志是壓縮的,則首先使用 zcat 來通過管道輸出解壓縮的文本。或者,如果每天的日志在一個 access.log 文件中可用,您可以使用同樣的原理來查看 badblog.example.com 中的同事是否已訪問過您的站點:
$ for i in `cut -d " " -f1 access.log | sort -u | head`;> { host $i; } | fgrep badblog.example.com
您可以基于 web/logs/ 目錄中所具有的壓縮日志來輸出訪問過您的 /blog 目錄的唯一域總數(shù):
$ zcat web/logs/* | fgrep "/blog" | cut -d " " -f1 | sort -u | wc -l
知道他們來自何處
如果某個站點在向您的博客發(fā)送大量讀者,您需要對其進行確認。這意味著您應該密切注意 referrer——包含指向您的頁面鏈接并出現(xiàn)在標頭中的 URL。該數(shù)據(jù)保存在您的日志中,您可以使用 analog 來提取它。analog 工具列出 Referrer Report 中的所有 referrer,如清單 2 所示。可以使用 +f 標志來啟用該報告。
清單 2. 來自 Referrer Report 頁面的示例
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] ________________________________________________________________________________
還可以跳過對報告軟件的使用而直接從命令行獲得 referrer。在 Apache 風格的日志中,referrer 包含在雙引號中,并跟在 IP 地址、日期和時間以及實際請求(也包含在引號中)后面。可以使用 awk 來提取 referrer;在使用一個雙引號字符作為字段分隔符的情況下,它們是每行的第四個字段。由于在請求沒有引用 URL 時,Apache 將寫入一個連字符,因此可以結合使用 grep 命令和 -v 選項來忽略那些行。作為最后一個技巧,可以按唯一 referrer 的受歡迎程度來排序:
$ awk ' BEGIN { FS="""}; {print $4}' log.daily|grep -v "^-$"|sort|uniq -c|sort -r
預先設置圖像大小
超文本標記語言 (HTML) 標記 <img> 的 HEIGHT 和 WIDTH 屬性非常重要。這些參數(shù)指定給定圖像的大小。當這些參數(shù)存在時,大多數(shù)瀏覽器都會在加載圖像之前,在呈現(xiàn)頁面的窗口中為圖像騰出空間。如果沒有這些標記,則必須在圖像下載完成以后,才會顯示圖像周圍的文本。
所以,當您在博客中放置圖像時,在 <img> 標記中包括這些參數(shù)是有利的,尤其是在單個頁面上開始有大量圖像的時候,因為這樣可以顯著改善博客頁面的加載。訪問者將能在頁面開始加載時就開始閱讀,而不必等待整個頁面及其所有圖像傳輸?shù)奖镜亍?/p>
但是,每次使用圖像并將它們放在 <img> 標記中時,都必須確定精確的 HEIGHT 和 WIDTH 值,這本身就是件恐怖的麻煩事情。幸運的是,存在一個工具可以為您自動執(zhí)行整個任務。imgsizer 實用程序(請參見參考資料)讀取您提供給它的任何 .html 文件,檢查那些文件中所引用的所有源圖像,確定它們的高度和寬度,并在給定文件所包含的 <img> 標記中寫入正確的值:
$ imgsizer index.html
就這樣簡單——您不必加載任何圖像或?qū)λ鼈冏銎渌魏问虑椤T?imgsizer 添加這些標記以后,您將對頁面加載速度的提高幅度感到非常吃驚。很少有博客所有者使用了此項簡單技術,但它是讀者將會非常欣賞的技術。
自動化更新
很少有博客所有者直接在在線頁面本身之上制作博客。大多數(shù)工作都是在本地副本上完成的,他們首先在本地副本上草擬和提煉新條目。然后,當新的 index.html 文件為在線 準備就緒時,博客所有者將該文件上載到承載實際站點的服務器。
該過程可能要花 30 秒到一分鐘的強制性注意時間,在此過程中,博客所有者打開文件傳輸協(xié)議 (FTP) 連接、鍵入密碼、切換到本地網(wǎng)絡博客根目錄、切換到服務器根目錄、上傳該文件,然后注銷(有關示例請參見清單 3)。
可以想象,此過程很容易出現(xiàn)用戶錯誤。如果您志在成為每天擁有 10 個優(yōu)秀更新的大亨級精英博客所有者,則此上傳過程每天就要花去您整整五分鐘時間——或者說每年總共超過 30 個小時!那是相當多的時間,原本可以更好地花在閱讀 developerWorks 文章來加強您的信息技術 (IT) 本領上。
清單 3. 網(wǎ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$
完成此任務的一種更好方法是使用 Expect 語言,它是為腳本交互式會話而設計的(請參見參考資料)。對于通過 FTP 來人工更新站點的博客所有者,創(chuàng)建自動化的更新腳本是很自然的方法。清單 4 顯示了一個自動化清單 3 所示的會話的示例。
清單 4. 自動化網(wǎng)絡博客更新的 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)在,當您準備將某個更新置于在線時,所花的時間要少得多:
$ bloggitblogged it.$
使用內(nèi)容管理系統(tǒng)
就開發(fā)并推出產(chǎn)品而言,UNIX 人傾向于自行其事。但同樣地,他們也很懶惰,如果已經(jīng)存在適用的解決方案,他們也不會費心地另辟蹊徑;太多的新思想還在等待形成。
在博客的早期年代,最成功的網(wǎng)絡博客是手工編碼的 HTML——如今已很不常見了。現(xiàn)在,大多數(shù)博客都是由 CMS 提供支持的數(shù)據(jù)庫驅(qū)動、手工配置的站點。
如果說存在網(wǎng)絡博客應用程序,那就一定是 CMS,它能為您提供大量難于通過編程來實現(xiàn)的必備博客特性——分類排序、按日期、類別和媒體類型存檔、協(xié)作帳戶便利性、布局模板和格式化、標準或滾動圖像或主題,以及各種格式和渠道(如 RSS)的內(nèi)容可用性。
存在太多的 CMS,甚至無法嘗試列出它們的完整清單——其中有數(shù)百個是當前正在使用的,還有一些是在 developerWorks 上的其他地方詳細描述的(請參見參考資料)。但是,列舉出其中一些在 UNIX 上工作得很好并且可以配置來開發(fā)和運行網(wǎng)絡博客的較好和較流行的開放源代碼 CMS 是值得的。表 1 列出了這些 CMS,但是還有其他許多沒有列出,因此肯定存在滿足您特定需要的解決方案。
表 1. 用于 UNIX 的流行開放源代碼 CMS
CMS描述BlosxomBlosxom 是一個基于 Perl 的網(wǎng)絡博客發(fā)布系統(tǒng),其特色是插件體系結構和虛擬目錄。DrupalDrupal 是一個模塊化的 CMS,用于通過評論和 Trackback 來構建網(wǎng)絡博客。TextpatternTextpattern 是一個文檔管理系統(tǒng),并著眼于精美的 Web 排版;它使用 PHP V4.3 或更高版本和 MySQL V3.23 或更高版本。WordPress它是最受歡迎的開放源代碼 CMS 包之一,用于 UNIX 上的發(fā)布。
總結
UNIX 環(huán)境真正是用于博客創(chuàng)作的天然環(huán)境。從 Web 友好的基礎設施到強大的命令行工具,其中有大量的特性可幫助您改變一生的博客創(chuàng)作命運。本文提供了一些可以使用 UNIX 來使您的博客創(chuàng)作進行得更好更快的方法。
