XHTML 1.0 指引重點提要
本文重點提示了 XHTML 的使用指引,讓網頁設計者以及使用 HTML 編寫文件的作者 (如筆者本人) 更快了解 XHTML 以及 HTML 的差異,並將之實際運用在網頁編寫中。
首次發佈於 2001/3/28 ,在我的個人網頁中。這次發佈到部落格中,除了重新排版外,也修增了一些內容。現在 XHTML 2.0 的規格都已經在製訂中了,真是惚如昨日。
本文重點提示了 XHTML 的使用指引,讓網頁設計者以及使用 HTML 編寫文件的作者 (如筆者本人) 更快了解 XHTML 以及 HTML 的差異,並將之實際運用在網頁編寫中。
首次發佈於 2001/3/28 ,在我的個人網頁中。這次發佈到部落格中,除了重新排版外,也修增了一些內容。現在 XHTML 2.0 的規格都已經在製訂中了,真是惚如昨日。
SSI是Server-Side Inclues的縮寫。 其意為,提供一個可含括(Includes)在html文件的控制指令,並能在伺服端(Server-Side)加以解析的功能。在閱讀本文前,我假設各位跟我一樣,了解SSI的用途,曾閱讀過Apache所提供的SSI文件(Module mod_include),並在使用時,和我碰到一樣的困擾。
簡單地說, MD5 是一種單向雜湊(hashing)演算法,可將你所給予的任何長度字串,藉由 MD5 雜湊演算得出一個長度為 128 位元 (術語稱之為 "digest code")的計算結果。後述以鍵值稱呼 digest code。MD5 演算法,是由 RSA Data Security, Inc 公司所提出的。演算原理參閱 MD5 - Wikipedia。
Make 是一個歷史悠久且普遍的專案管理工具,從 DOS/Windows 到 Unix 都看得到其蹤影。儘管各系統上的 Make 工具不儘相同,但其描述方式,則大致相通。本文若未指明的內容,皆適用在 GNU make 、 BSD pmake 與 Microsoft nmake 。
此文是我以過去所整理的 Microsoft nmake 使用方法的文章為基礎所重編,後來的修改部份,主要在納入關於 GNU make 的內容。
由於 deamon 有下列的特殊行為,所以最好進行初始動作,才不會產生問題。
在 Unix 系統中,程序間有父子關係存在,當程序經由系統呼叫 fork()
產生另一個程序時,這兩個程序間就存在了父子關係。
當子程序結束時,系統會將子程序的結束狀態保存起來,接著發出訊號 SIGCHLD
通知父程序來取子程序的結束狀態碼,通常是透過系統呼叫 wait()
取得。如果父程序比子程序早結束的話,則子程序將成為孤兒,那麼系統會將此孤兒交給程序 init (unix 系統第一個執行的程序,一定叫 init ,因此它的 pid 為 0) ,由 init 程序取得子程序的結束狀態碼。
不論是由父程序還是 init 程序取得,當子程序的結束狀態碼被取出後,系統就會將子程序的狀態資訊從處理程序表中移除。到此,一個程序才算是整個結束掉。
如果父程序仍然存在,但是卻忘了處理子程序結束的事情,那麼系統會將此子程序的結束狀態碼一直保存在處理程序表中,直到父程序處理為止。在父程序處理之前,就會形成一個 zombie 程序。已經完全沒有活動,所使用的資源也都被系統回收了,但是仍然佔了處理程序表的一筆記錄。
在 Unix 系統中,資源的共用機制,通常以檔案鎖最為常見,也最為容易使用,只要使用 flock() 即可對檔案進行 LOCK_SH (共享鎖定)、 LOCK_EX (互斥鎖定)。但是其他的資源就沒這麼方便,例如共享記憶體完全沒有提供鎖定功能,此時就必須借助其他的行程間通訊機制進行協調,例如「號誌」(semaphore)。
本文即在說明,如何以號誌實作一個如 flock() 具有 LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB 四種參數的「資源共用互斥鎖定函數」。
當 read() 或 write() 在處理資料時,若剛好產生了一個 signal ,系統為了要處理這個 signal ,便會中斷 read() 或 write() ,將程序狀態切換到 signal 的處理動作中。 而當 signal 的處理動作結束後,再將程序狀態切換到 read() 或 write() 的後續處理動作。