[[1]].網頁伺服器基本原理及設定
[[2]].進階模組說明及設定
[[3]].效能調校
1.網頁伺服器基本原理及設定
伺服器和瀏覽器的溝通
TCP/IP協定及HTTP協定
Client 端先經過 DNS 解析得到 WWW 主機的 IP ,然後會發出一個資料封包,
告知 WWW 主機我們要進行交涉,這個時候使用的是 TCP 協定,
亦即需要經過三向交握的過程。
三向交握:Client 端與 Server 端在經過了要求主動建立(SYN)、
回覆確認封包(SYN/ACK)、
再次確認(ACK),最後建立起兩邊的相關埠口的連線,由於為了建立起最終的連線,
需要進行三次封包的要求與確認,因此我們也稱這個建立連線前的步驟為
『三向交握, Three-way handshake』。
主機端資料處理
連線建立後,客戶端以http協定傳送需求。
WWW 主機收到這個資料封包之後,會根據 Client 端的要求,
提供相關的訊息來回應,
大部分的情況下皆是使用 http 的協定回應傳送具有 HTML
語法的網頁資料到 Client 端的瀏覽器上。
客戶端資料處理
Client 端的瀏覽器將 HTML 的語法經過解析後,以相關的畫面來顯示到螢幕上,
提供用戶來觀賞。
例子一 http/1.0:
[amon@amon amon]$ telnet www.apache.org 80
Trying 209.237.227.195...
Connected to www.apache.org (209.237.227.195).
Escape character is '^]'.
GET http://www.apache.org/[[enter]]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may o.................................
例子二 http/1.1:
[amon@amon amon]$ telnet www.apache.org 80
Trying 209.237.227.195...
Connected to www.apache.org (209.237.227.195).
Escape character is '^]'.
GET http://www.apache.org/ HTTP/1.1[[enter]]
Host: www.apache.org/foundation/members.html[[enter]]
[[enter]]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may o.................................
GET http://www.apache.org/ HTTP/1.1[[enter]]
Host: www.apache.org/foundation/members.html[[enter]]
[[enter]]
apache基本架構
Core模組
# AcceptPathInfo # AccessFileName # AddDefaultCharset
# AddOutputFilterByType # AllowEncodedSlashes # AllowOverride
# AuthName # AuthType # CGIMapExtension # ContentDigest
# DefaultType # <directory> # <directorymatch> # DocumentRoot
# EnableMMAP # EnableSendfile # ErrorDocument # ErrorLog
# FileETag # <files> # <filesmatch> # ForceType # HostnameLookups
# IdentityCheck # <ifdefine> # <ifmodule> # Include # KeepAlive
# KeepAliveTimeout # <limit> # <limitexcept> # LimitInternalRecursion
# LimitRequestBody # LimitRequestFields # LimitRequestFieldSize
# LimitRequestLine # LimitXMLRequestBody # <location>
# <locationmatch> # LogLevel # MaxKeepAliveRequests
# NameVirtualHost # Options # Require # RLimitCPU # RLimitMEM
# RLimitNPROC # Satisfy # ScriptInterpreterSource # ServerAdmin
# ServerAlias # ServerName # ServerPath # ServerRoot # ServerSignature
# ServerTokens # SetHandler # SetInputFilter # SetOutputFilter
# TimeOut # UseCanonicalName # <virtualhost>
MPM模組(Multi-Processing Modules)
apache運行機制有非常多種,乃因作業系統不同,對行程管理的方式不同所導致。
粗分三類,依啟動一父行程後,其子行程運行方式可分為
#prefork(前分流式)
父行程啟動後,便生成特定數量之子行程,而每一子行程可處理一個請求。
父行程本身只有管理子行程。
#threaded(執行緒式)
父行程啟動後,便生成特定數量之子行程,但每一子行程為多執行緒,
故可一個子行程服務多個客戶端請求。
#winnt(中文沒得翻)
父行程啟動後,完全由它來服務所有的客戶端請求。
MPM乃依作業系統習性不同,所分別設計的模組,
斷無將prefork module應用在win server上,效能能有所提升,
因為根本跑不起來。但是一個可以用threaded module的apache也可以使用
prefork module。
else
(其他模組)
#mod_so
#mod_cgi
#mod_cgid
#mod_userdir
#mod_speling
(貢獻模組)
#mod_perl
#mod_ssl
#mod_php
簡單的設定檔
ServerName 192.168.100.103:8080
Listen 8080
DocumentRoot /home/amon/httpd/htdocs/
TransferLog /home/amon/httpd/logs/access_log
Alias /manual /home/amon/httpd/manual
DefaultType text/plain
<location>
Options -Indexes -Multiviews
AllowOverride None
DirectoryIndex index.html
</location>
2.進階模組說明及設定
目前預設的MPM模組為perfork(前分流式)
前分流式MPM是模擬apache1.3或更早以前的架構,也就是建立一池的子行程來服務請求。
每一個子行程都是單一的執行緒。例如,如果apache啟動30個子行程,
就表示apache可以同時服務30個請求。
如果出了什麼差錯,或者某個子行程死去了,就只有一道請求會遺失而已。
至於子行程的數量是由一組最大和最小指令來設定的。當請求的數量增加時,
新的子行程就會不斷的新生出來,直到到達最大值為止。同樣的,當請求數量下降時,
多餘的子行程也會被刪除。
User:子行程的擁有者。
Group:子行程的群組擁有者。
MaxClients(最大服務請求數):預設值為256。
MaxSpareServers(最大等待請求數):預設值為10。
MinSpareServers(最小等待請求數):預設值為5。
StartServers(啟始等待請求數):預設值為5。
CoreDumpDirectory(核心頃印資料夾):預設值為null。
ListenBacklog:預設值為511。等待連結請求的佇列長度。
SendBufferSize:tcp傳送緩衝區的大小。如果網路頻寬夠,應該儘量大一點。
ScoreBoardFile:為父行程與子行程溝通時所用的檔案。
2006年11月21日 星期二
管理apache的基本觀念
如何寫一份建議書
緣起:
為了不要讓學生在暑假沒事作跑去飆車,所以Google鼓勵學生找個open source的組織一起協同合作某個專案,提案通過後,先發給學生500塊美金,待專案完成後再發給4500元,這個活動的好處不只是出車禍的人少了,重 要的是讓學生早日接觸團隊開發的環境,並浸淫在open source的世界。
所以,perl基金會提供一個建議書的格式讓學生們參考。原文在此。
翻譯如下:
請把建議書寄到 tpf-proposals@perl-foundation.org ,最好是純文字文件並遵照下列格式:
Name
名字
Email 我們可以聯絡你的地方
Project Title
專案名稱
Synopsis 摘要,並作簡短描述
Benefits to the Perl Community
對perl社群有什麼好處
Deliverables
陳述,說明量化的成果,像是"用y及z方法改善了x模組"還是"為x網站寫了3篇文章"。
Project Details 專案細節,詳細描述你這個專案可以作什麼。
Project Schedule 專案時程,這個專案要花多久時間?你何時開始動工?
Bio 自傳,說說你是誰,是什麼原因讓你覺得你是執行這個專案的最佳人選?
Amount Requested
資金(源)需求。
i18n, l10n是什麼關係?
i18n是Internationalization,l10n是Localization。
因為國際化的單字太長了,所以把中間18個字以18作替代,而本土化中間的10個字以10作替代。
國際化與本土化到底有什麼關係,是否為互斥的關係,還是…
今天在一場成果發表會的場合,聽到一個有趣的說法,陽明大學洪教授裕宏說學英文不表示作到國際化,重要的是content。
英文是工具,是通往世界的大門,英文好的目的不是能和外國人說話而已,是要學得更好、學得更廣,並用在自己及周遭的人身上。我常說一句話:「美國乞丐也是說英文的。」
在open source的範籌中,國際化是本土化的基礎,一套軟體由世界各地的志工所共同完成的,開發過程中當然選擇英語作為共同溝通語言,但這軟體的成果也是開放 給全世界所有人使用的,語系上必須包含各種語言,像是正體中文、簡體中文、日文、韓文、泰文…等,所以在撰寫過程中,須有國際化的架構,像是使用統一碼作 內碼、語言包須獨立於執行檔外…等,有了正確的架構,軟體才能包含各種不同語言,也才能有在地的軟體志工為這套軟體作本土化的工作。
英文只是在為你的國際化鋪路,而國際化也不是目的,最終要提升的是自己熱愛的這塊土地。
由簡入繁
在遙遠的研究所時代,初次遇到VB6時,因為學了點FORTRAN,對程式有了點興趣,想說物件導向是個趨勢,MS也是眾家所選,所以下定決心要把VB6學起來啦!!
但當我買了、借了很多VB5、VB6的書來看時,發現這與我所想像的程式設計完全不一樣,這些書到底談的是什麼呀!
原來一項技術的深淺看的就是它的先備知識門檻高不高,物件導向的程式設計雖然剛流行,但畢竟理論已經走了1、20年了,如果基本的觀念不建立如何能向上發展。
還好,中興圖書館的書夠舊,我在VB3的書中學到了如何設計介面程式,也順利地學會VB6該如何使用。只是後來我才知道會用VB6不等於會寫物件導向程式。
雖然到目前為止還是沒學會物件導向程式設計,但大致也知道個輪廓,目前也在填補這個空隙。
上面的想法一樣地延伸到web framework中,對php程式設計師而言,學這項工具的原因多半是簡單、好用(原因在於少用物件導向),如果一下子要求他轉移到使用MVC觀念的framework,迷惘的時間應該大於使用框架設計所節省的時間。
因此,我才想要透過TWD來作一個過渡工具、來引領php程式設計師學習使用web framework。
省錢的方法-電腦軟體的使用
文.hoamon( http://www.hoamon.info/ ) 、審.grace ( http://graceamon.blogspot.com/ )
有肯德基的地方就有麥當勞,有全家的地方也會有7-11,在這個民主的社會,最重要的是:「你能選擇!」選擇看聯合報還是自由時報,你都擁有選擇。
提供服務的廠商也因為我們的選擇而有了競爭。必勝客買大送大,所以達美樂就免卡;7-11有新國民便 當,所以全家有真飽飯糰;而中油與台塑石化也頻頻打價格戰等,在多方廠商競爭下,消費者往往是受惠者。同樣地,這法則也適用於「電腦軟體」上。
目前電腦軟體依使用是否需要付費來分,可以分為:
- 付費軟體--顧名思義就是若要使用需要付費。
- 共享軟體--也是試用軟體,此類軟體提供在網路上自由下載,但有試用期限,試用期間到了,若要繼續使用此軟體必須付費購買。而有些可以移除後再次安裝使用。
- 自由軟體--可自由下載及使用,不需要付費。
你知道你常用的是哪一種軟體嗎?一般我們使用的文書處理軟體(如MS office)或者影像處理軟體( 如Photoimpact)都是需要付費的軟體。有些使用者可能沒有實際付錢給廠商,因此以為這些軟體都是不必花錢的 ,像是家用電腦一般都是附贈隨機版軟體,所以軟體價格也就包含在硬體售價當中。
在最近的一些新聞或廣告給我們的訊息中,有沒有覺得MS Office 2003變便宜了,以往MS Office動輒數萬元,現在卻只要2990元喔~為什麼全世界最大最賺錢的軟體公司,忽然間給了消費者一個特大的折扣呢?因為Bill Gates賺太多了,想回饋消費者?還是因為這一版軟體品質比較爛,所以該便宜點賣?還是機會號登陸火星時產生的陰影遮住了我們的視線,使得我們看錯了定 價標籤?上述的答案當然都是開玩笑的。事實上,MS Office出現 了一個大勁敵:自由軟體『OpenOffice』。
你有沒有用過office 97、office 2000或是office xp,各個軟體的使用方法各有巧妙不同,效果不同,但相同的是它們都是MicroSoft出的。而這些軟體每年為 MicroSoft帶來了數十億美元利潤。是的, 你沒有看錯,是美元不是台幣喔!。以往大家沒有選擇,不管是真的MS office還是假的(就是盜版的啦),如果別人用,你就不得不用。沒有辦法,市面上,能看得的到的也只有這一家office。不用還不行呢!老師要求學 生交.doc的報告、同學寄來的算命程式是用excel寫的,介紹各地的美景是用.ppt秀的…等,有好多好多文件是用MS office作的。
在這個眾人皆醉的世界,難道沒有別的選擇嗎?答案是有的。
openoffice出現了,扮演救世主的角色,但它能帶我們脫離ms的重重掌握嗎?時間還有一段日子要走,要斷定openoffice就能打敗ms office,那也不一定。不過,有一點倒是可以說說。微軟維持的一貫定價策略改變了,而且是變得便宜。
這個讓微軟害怕的openoffice到底是什麼東西呢?你可以上"openoffice補給站"或是"數碼小子學習網" 。這兩個網站您可以找到很多有關openoffice的資料,你可以下載來使用,網站上也有針對小朋友的電腦學習製作的內容,有相當多的動畫提供給小朋友 自學,只要上網站註冊之後即可使用。
其實在網路上有許多的自由軟體,可以供大家使用,比如在網址列上輸「www.google.com.tw」就能到google的搜尋首頁,只要輸入你想要找的資訊,強大的google就能幫你找到想要的資料喔!
那什麼是open?有些人假日到慈濟功德會幫忙環保回收、育幼院照顧幼童、圖書館擔任志工,圖的是什麼?其實只是一個心願,讓世界更美好。而每個人的專長不同,有些人則是選擇貢獻程式碼、寫寫說明文件、開個網站教大家怎麼使用電腦,像"openoffice補給站"這樣。所以一個人寫一行、二個人寫二行、百萬人寫百萬行,openoffice就這麼寫出來了。
open 就是開放的意思,程式碼是可以給大家看的,讓每個人都可以提供意見,修正軟體,增加軟體的功能。那麼,百萬個程式設計師們是如何一起來創新、維護一個程式 呢?這就像討論區、留言板一樣。每個人寫出自己的程式碼後,公佈給別人看,再一起討論是你的好還是我的好,並溝通未來是否還需增加什麼功能,等到程式發展 到一定程度,便釋放給一般使用者使用,而使用者也可以提供自己的意見給程式設計師們。
這些討論都是在網路上公開的進行。具有開放性。所以這 一類型的程式,我們都叫作open source(開放原始碼)。也因為這些軟體是出於全世界程式設計師之手。所以,大家都是用英文這個國際通用語言來溝通,設計程式,再透過各地在地的程式 設計師作本土化工作,像如果要在台灣使用就是需要再加入本地使用的正體中文。
其實不少縣市學校已經開始全校使用openoffice,既不怕使用盜版軟體會違法、也可以替自己的荷包省錢喔!所以有空多花一些時間在網路上尋找好用的自由軟體,你會發現你還是有很多選擇的。
深入了解:
http://www.cyut.edu.tw/%7Eckhung/a/
http://www.csie.ntu.edu.tw/~r91034/mozilla/
http://www.vbird.org/
http://www.study-area.org/menu2.htm
給google的建議(構想篇)
幻想一個情景,當別人問你對於APPLE有什麼看法時?你可以搜索這個系統,並作一個簡單的操作(不外乎瀏覽你找出的知識及資料,然後作一個刪減,最後把剩餘的內容連結起來),就可以把你對APPLE的想法整理成一篇報告出來,然後接受他人的讚嘆或是忌妒。
當這個需求產生的時候,是我熱愛PERL的時候,並不是說現在就不愛PERL了,在系統管理上,它還是很好用,只是現在我比較著迷 Python、ruby,所以我把這個系統叫作per-L(personal extensional resource library),或是per Link。
per-L系統還應該具有blog系統的功能,當你使用條碼器把你的藏書(或是一項資源,例如: DVD影片)掃進系統後,你可以在這項資源上建立一個描述資料,可以是一篇文章(這就是blog呀),也可是一些對你有意義的關鍵詞,像是「愛人與我在河堤上一起聽這」,「賣這本書的書店擁有本市最美的店員」…等。如果你在寫這項資源的心得時,也可能會引用你其他書或是別人書中的觀點來潤飾你的想法,而這就是blog系統中「引用」的能力,如此一來,從這項資源帶出你的想法、知識並能與別人的想法、知識作一個串接,當我們把個人擁有的虛無飄渺的想法,系統化地建立在電子資料庫中,我們就能檢視自己的收獲(就算你忘了的話)。當然,如果你樂意把你的資源及想法分享給他人的話,那就開放這個系統給外人瀏覽,於是這個系統還能成為你個人的成果展示中心。
簡單說明了per-L的功能,但這些東西和「google」有什麼關係!!
這我不說,你不知道,這其中可是大大地有關係。但要我說這個關係前,先聽我說說「google」的策略。
你有申請gmail了嗎?(如果沒有,來封信給我吧!我還有99個名額呢!),當我登入gmail後,我的瀏覽器就會記得現在的使用者是誰了,而一樣地我也 可以用相同的gmail帳號在搜尋引擎登入,但搜尋引擎為什麼要登入呢!google的用意是要把你的想法記下來,像是打什麼關鍵詞後,你會在那些結果網頁點那些連結,舉例來說:你在搜尋框中打了「apple」,按下「enter」,結果會出現一些健康資訊網站、蘋果電腦首頁、亞當與夏娃的故事…等,而當你點選的是蘋果電腦首頁的話,那下次你再搜尋apple關鍵詞時,跟電腦有關的網頁就會放在比較前面。覺得有趣吧!google為了知道你真正的想法,下了這麼大的苦功,可是以一般人來說,再這麼常用google,你一天會用幾次搜尋引擎呢!20次嗎,已經很多了吧! 在這個資訊量這麼小的地方來鑽營你的想法,這太慢了。
所以另一項殺手級應用就被拿進來了---email,每天都有人會寄信給你吧!如果沒有不代表你的人際關係不好,而是你的郵件伺服器擋垃圾信技術是一流的。當你使用 gmail 時,會看到信件閱讀區的右邊,有一排廣告欄,因為 gmail 會過濾你的信件,從中分析你與什麼資訊比較有關係,從這裡 google 所能獲得資訊量就有一點大了。但這還不夠,信件畢竟是一種被動的資訊傳輸,不完全代表你個人所擁有的想法,就像你不喜歡看有關「美人」的照片或是「所得稅減稅教學」的文 件,你還是會收到熱情的朋友寄給你這些信件。
於是有較為深入的技術加入---google page creator,它提供一個老掉牙的功能,讓你放自己的網頁,夠老吧! 在這個blog橫行的時代,還自己作網頁,但google還是推出了,目的不外乎希望多知道一點你的想法,網頁的內容一定是你自己寫(沒必要抄別人的吧! 放在網路遲早被別人查到),由此google可以更深入地知道你想的是什麼!這裡有一篇文章談google page的,大家可以看一下。
不管是用搜尋習慣、email還是網頁,它都是想要知道你多一點,但這些東西的資訊量絕對比不上一本書的。有幾部偵探電影案情線索是從圖書館的借書記錄中找尋兇手的,一樣地,知道你擁有那些書,大概也就知道你了解什麼樣的知識,就像對一個擁有整堆open source應用的書卻沒有任何一本c#、.net書的人來說,當他在搜尋「runtime machine」時,應該把「parrot」、「java virtual machine」的順位擺在「.net virtual machine」的前面嘛!而擁有「車訊」、「第一手」等雜誌的人,當他搜尋「eclipse」時,應該出現的是跑車網頁,而不是ibm的開源碼軟體的介紹。
per-L系統是一個利己也利google的系統,所以我推薦給google,希望它能成真。
暨大行書
如果在暨大圖書館這邊也來辦一個類似的活動,不知能不能造成廣大的迴響。
如何進行這個活動呢!首先要利用blog的引用機制,每個借過相同書的人,都把心得寫在自己的blog上,然後在書上留下所發表文章的連結(絕對連結),於 是下一個人就可以把前一個人所留下的連結放在自己的文章中,如此一來,當有其他人踫到這條「讀書鏈」上的任一點,都可以透過書中的連結往前尋找別人的心得,而透過文章的引用可以往後尋找別人的心得。
這應該很有趣,看看不同的人對相同的書有什麼看法。
另外可以想個方法來提昇大家的參與興趣,或許那本書最多人借閱,就從這本書的參與讀者中抽獎,不過,這太有民主主義的味道;也可以評審那一篇心得寫得最好贈送獎品,但這又有主觀性的問題。
還是回歸到活動的本質,用「心」來參與好了。
帶著鍵盤上班去
05.10.8~10 台東行(1)
工作後難得能有連續假期,沒有三天以上的連假,要到東部玩是件傻事。像上次用了兩天的時間走中橫到花蓮玩然後繞台北回埔里,總共開了6百多公里,開車比看風景的時間還多,這就是件傻事。
早在國慶日連假前一、兩個月,我和老婆就在想要到南橫玩,不過遇上我剛換工作及搬家到埔里這兩件事,所以也就不太認真地想這件事。直到連假前的二個禮拜,問了 change 想不想到台東玩玩,他一口答應了,所以我們就決定要到台東看看。
本來 change 幫我們在知本訂房,不過我憑著之前的經驗不想再到知本過夜,於是我們決定「見招拆招」到台東後再決定睡那裡。
預計的路線是中二高->南二高->中山高->台9線->台東。但是聽了警廣後,決定不從楓港進台9線,而是從四重溪叉進台 9線。在途中有經過牡丹國小,這個國小位置點取得剛剛好,我們決定在這個國小上個廁所後再出發。牡丹國小的環境看起來就像是原住民的小學,因為有百步蛇的 圖騰,所以我猜它是排灣族的小學。
change 是在這裡讀大學的--台東師院,讀了五年。在五年中,我一直想到台東來找他玩,但是都沒有機會,而老婆則是有一次經驗,目的是他和他的朋友計劃到蘭嶼玩,不過,那一次,沒有到蘭嶼,所以老婆現在一直慫恿我作一個蘭嶼計劃(這個馬…再想想)。
到台東的第二件事是買他忘不了的水煎包,沒有漲價,味道也一樣,只是我吃了並沒有感動地滴下眼淚,這事他很不能接受,所以造就了之後的蔥油餅及東河包子事件,但沒想到我會是在一家日式料理店滴下眼淚的。
而第一件事一直都沒有成功,因為要在旅遊時節,當天找到房間是一件不容易的事。還好我們三個是滿能接受挫折的。
出來玩就是要輕鬆點嘛~
第一次實地走訪水庫
早晨起床後,經不起老婆的再三懇求及威嚇,決定放棄研究網站程式框架(web application framework),到南部走走。有幾個地點在考慮:到台南市吃個鱔魚意麵、看看關子嶺的溫泉等。臨行前並沒有決定好目標,但我們還是出發了。
預定路線是埔里->魚池->水里->名間->竹山->南二高->某個地點。
右邊的相片中,後面有三條溢洪道,在右邊則是壩體本身,曾文水庫本身是土石壩,簡單地利用當地材料堆疊壩體而成,外表不比以混凝土興建而成的德基水庫宏觀,但是它的網頁作的比德基的好看且有用。順帶一提,曾文水庫的主管單位是南區水資源局,而德基的是台電公司。
行車中,我們決定到關子嶺看看溫泉好了。很奇怪吧!不想泡溫泉卻又跑去看溫泉。關子嶺溫泉是沒有什麼好看地,像極東埔溫泉,一堆遊客擠在這小小的溫泉區中,惟一有看頭的是「水火同源」吧!看著旁邊的石頭都快燒裂了會有種佩服的感覺,這石頭也太堅持了吧!
結束了這一段無法令我們滿足的行程,想說該到那裡兒晃晃才夠本。抬頭一看,曾文水庫38公里的牌子就在眼前,於是,我的第一次水庫參觀就開始了。
有點驚訝的是參觀曾文水庫的全票要100元,小型車40元,所以我倆在遲疑一秒後,趕緊掏出錢包奉上240元進場參觀。水庫區內環境十分清幽,也有青年活動中心及飯店,惟一的缺點是沒有咖啡廳,讓我倆想悠閒地坐在湖邊享用美食的夢想破滅。
當然最吸引我的還是壩體本身。壩體外觀用相當多的礫石堆積,內部用土壤作不透水層,基礎則是用混凝土灌漿而成。
溢洪道上的水閘門是一個凹向外的圓拱形鋼結構物,因為這樣的型狀才有助於閘門吊車省力地吊起閘門。
一個閘門會有兩個吊車,分別位於左右兩邊。
溢洪道的下方是消能池。
來到這裡讓我回想起幾年前對水的興趣,如果當時唸的不是營建管理組,我的第二選擇會是水利組,或許和我三修流力有關,但水真的是一個很有趣的介質,只有一滴時,你會無視它的存在,然而在成千上億滴下,你得臣服在它膝下,高捷塌了這麼多次也就是地下水造成的。
這場水庫之行就在我與老婆的肚子叫聲下結束了。
罪己詔
那今天我為什麼也寫了這樣的一篇文章,倒不是說我個人愛反省,而是我真的作錯了。
是怎麼樣的錯呢?
因為我放棄用5分鐘的時間與老婆溝通,換來了一天半的舌戰、數封來往的emails以及低落的上班情緒。一個學管理的居然不能善用80/20理論(註二)!
嘿!我真是錯了。
有一個故事是怎麼說的:「要待顧客如老婆一樣」,其中它談到老婆每天為我們付出很多,可是呢,有時候夫妻間難免會出現狀況,如果堅持不肯讓她,要跟 她理論對錯、爭執是非,爭到最後,也許贏了道理,獲得五分鐘的痛快,可是到頭來她氣得兩個星期不煮飯、不洗衣服,家也不整理、孩子也不管,你說我們是不是 得不償失?
在有道理的情況之下,與老婆爭吵都已經是得不償失了,何況是沒道理又跟老婆爭吵呢!那是不是要賠到脫褲子呢!
我們之間的故事是這樣子的:在一個周日的中午,我們回到娘家,因為我覺得沒什麼事可做的,一進門就坐在沙發上猛看報紙,老婆叫我吃水果、吃飯都不太 搭理她,回家之後又一股腦地坐在電腦前玩 imap server,於是她發火了,而我卻又覺得她小題大作,拒絕與她溝通。於是戰火開始燃燒。
在這場戰役中,我們談了讀書的時間、平等尊重、信任、同進同出、生活效益等問題,內容包羅萬象,交戰狀態時而熱烈時而冷淡,從白天到黑夜,清晨到黃昏,直到「我們累了」,也得到了一個結論:我錯了。
在對話的過程中,心裡常常在想著「我們是不是就這麼算了」、「這個女人怎麼這麼難溝通」、「為什麼就不能同心協力」…等一些負面的想法,可是接著就 會想,跟她在一起,我的生活明顯地改變了,會到郊外走走、會為弱勢族群想想、她會糾正我的生活習慣,這些生活習慣都是很難改變的,與她在一起的時刻快樂多 於痛苦。
在爭執當中往往矛盾的是,會一邊說著「企圖辯勝的話語」,而心裡卻又不想爭勝。因為不知道爭勝的目的到底是什麼?是把老婆擁抱的緊一點,還是逼她離我遠一點呢!到後來,爭的只有一口氣,其他的全丟了。
死要面子,這是我的缺點。明明知道是我不對的事(註三),還想凹,這也是在我們吵架的時候,對我們之間的最大殺傷力,當我態度變得高傲,我會漠視她 的控訴及心情,直到她歇斯底里地爆發情緒而我卻又不得不收拾的時候,我才會開啟溝通的大門,但這時候的又常常著眼於不值錢的面子(註四),持續與她對峙辯 解。但事情到這一地步時總是得花更多的精力來善後,而我每次都忘了這一點。
從我們開始交往時,我們很多事都是一起作的,像是洗碗、煮飯、生 病、上班、讀書……。因為我們太常在一起了,所以常常忘了彼此是彼此的唯一依靠,就像人在環境中自然地呼吸,卻忘了「氧氣」的存在一樣。但我想吵架是證明 我們還需要彼此的一種方法。因為吵架所以知道不願分開,也確定我們只是一時的「不團結」而已。
綜合上述,我歸納了自己的三個過錯:
- 不懂效率,是「笨」。
- 死要面子,是「迂」。
- 無不二過,是「愚」。
連三錯,罰我該寫這篇悔過書來向老婆說聲「對不起」。
Honey~對不起,我錯了。
- 註一:人說:「宰相是一人之下,萬人之上」。皇帝既然比宰相高,那當然是一萬零一人之上囉。
- 註二:80/20理論又稱柏拉圖理論,它以經驗歸納80%的結果多是20%的原因引起的,如:80%的交通罰單是由20%的違規駕駛造成的。
- 註三:我們吵架的原因,絕大部份是我不對。是的,是絕大部份。
- 註四:因為臉皮實在很厚,拿來賣也沒什麼成本,但也沒什麼人想買。
LifeType的JUpload模組問題
然而,我的個人電腦在昇級到Fedora Core 5後,這個JUpload模組失效了,原本一直以為是j2re的版本問題,所以一直在找1.4版的安裝程式,因為java.com的程式已昇級到1.5了所以很難找,但找到後裝了卻會讓我的 firefox崩潰,於是改了方向,去下載新版的JUpload程式。但一樣是不行。十分不爽。
慢慢地在找問題的過程中,我知道了java程式的 log檔位置,也知道是錯在那裡了。原因在於我的電腦不允許java applet去讀取我的檔案系統,這是權限的設定問題。所以我到了javaworld討論區查了一下,權限該到那裡改,幸運地查到 java.policy檔案的設定方法。
在我的電腦裡,java.policy是在 /opt/jre1.5.0_06/lib/security 中,修改的方式是在這個檔案中的 grant 區塊裡加入:
permission java.io.FilePermission "<>", "read";
這樣即可。
當然,你要讓java applet能讀你系統中的任何檔案,你就要有心裡準備,準備什麼?別抓奇怪的java applet程式來玩,當心你的資料外洩。
最後,我的心情由「不爽」到「高興」。
Follow Google!
而 Google 有四項武器: Linux 、 MySQL 、Python 及 C 語言。
很高興我現在正在學習 Python 、使用 Python 。你呢!