技術上答問兩則
(2008-02-26 07:43:00)
下一個
(這是以前----大約一年前在 XX 網站閑聊時回答某人的問題匯整而來的。那人想辦個網站)
A) 技術上文學網站是怎樣運行的------答北晝等關於網頁的製作等
A1) CSS and XML
CSS (代表 Cascading Style Sheets 的意思) 你可以學點,當然最好在熟悉 HTML 標簽 (TAG) 之後。CSS
本來就是為網頁設計的,現在它的標準主要由 W3C 組織製定並且得到承認 (你可以參考 www.w3c.org),例如主要瀏覽器,如微軟的
IE,Mozilla 的 Firefox (山人等以前說的什麽瀏覽器,和QQ騰訊的 Traveler,等,實際上還是 微軟的
IE,隻是加了個外殼而已。IE 的許多性能直接來源於 Windows 操作係統,是捆綁在一起銷售的),都支持它。學點 CSS
對設計網頁還是有用的,而且,也容易 (雖然我沒有設計過網頁,嗬嗬),可以無師自通的。
實際上,CSS 是一種特殊的 XML,不過怎麽樣處理 CSS 你卻無須擔心,所以無須學 XML,因為 IE/Firefox 等參照 W3C
的規則,給你代勞了,為你打點了一切 (更具體一些,CSS 的格式就是我上次說的 XML Scheme),你學一個小時,就可以披掛上陣:)
XML Scheme 哪裏是 CSS? 打個比方,Scheme 如果類比於 C 語言的話,那麽 CSS 相當於用 C
語言開發的一個程序。隻不過CSS 比較有用 (網頁),通常的瀏覽器支持它而已。你學 CSS 可以完全不顧 XML
(因為IE等已經將相應的開發完成了)。如真正要學 Scheme,那還得精通 Java (等) 編程語言才成
(因為你得自定義及開發相應的功能)。其實 Scheme/DTD 的主要功能倒不是在前台的網頁製作,而是在後台 (服務器端) 的數據轉換和控製
(例如有的 CAD 文件,對大公司來說,一個在俄羅斯的工程師設計的螺絲如果不分青紅皂白地保存到在意大利的服務器,可能就會帶來麻煩)。
至於網絡裏哪裏有相關的中文入門“教材” (免費的),我還真的不知道,我平常不設計網頁,也不看這樣的書。也許 admin 等更加了解,給你推薦幾個。
A2) 關於HTML網頁的製作,等
概念上,最簡單的是C/S模型 (Client/Server),Client 通常對應於前台 (Front
End)---但是不完全等價---例如就 XX 文學網站來說,Client 就是大家的電腦,後台 (Back End)
通常指服務器,大家發的文章評論等都儲存在那裏。就商業軟件來說,C/S模型過於簡單,通常將整個係統劈為三部分,稱為 3-tier 模型,亦即前台
(Front Layer),商業層 (Business Layer),和數據庫 (Backend)。三層相互獨立
(以便於維護),通常的所謂程序 (例如 Java,C,C++寫的) 大抵在Business
Layer,對比較複雜的軟件,它往往有一萬或者更多的程序文件。
可以將 XX 文學網站看成一個簡單的C/S模型 (Client/Server)。假如你要開發它,那應該做些甚麽呢?
a) 首先,你得熟悉 HTML 代碼。所有的文章都是以 HTML 顯示的。這個應該比較容易學;
b) 其次,要知道至少一門 Scripting Language,其中最常見的是 JavaScript (JavaScript 和 Java
是兩碼事)。這個也容易學。為什麽需要它呢?原則上它並不必須,但是它是在用戶電腦上運行的,可以代替服務器做一些簡單的邏輯檢測,極大地提高運行效率,
所以事實上幾乎所有的 HTML 文件都有
JavaScript。舉個簡單的例子,假設係統處理注冊用戶,要求用戶名不能重複,要求填上合理的出生年月。比如說某位作者填了 1881年或者
2010年出生,這顯然不合常理,係統應該拒絕接受。那麽應該在哪裏拒絕呢?如果去服務器端檢測,那麽作者的所有信息得傳送到服務器,服務器處理後再將處
理結果傳送到用戶電腦,而這完全沒有必要的,因為1881年出生和服務器的數據庫狀態毫無關係 (這樣的數據稱為 Stateless
數據),直接在用戶電腦拒絕即可;有的檢測則必須送到服務器檢測,例如重複筆名,JavaScript
就無能為力,因為如果我注冊“北晝”的話,用戶電腦根本不知係統有沒有一個叫“北晝”的用戶,必須送到服務器那裏 (這樣和數據庫狀態有關的數據稱為
Stateful 數據)。所以說,原則上所有和係統數據無關的邏輯檢測和處理都應該放在 JavaScript 裏,以提高效率。
好了,有了這些,你就可以做靜態的網頁了 (HTML
文件,通常和數據庫無關的網頁,為靜態網頁)。這個很簡單,也基本上能滿足小型網站的需要。你如果想做得 fancy 一些,也可以學點 CSS
(如前所言) 或者 XML,但是這並非必須。可以記住的是,CSS的處理器就是你的電腦的瀏覽器 (如
IE),和服務器沒有關係,所以它在用戶終端運行,很快,不會造成任何效率的影響。我去年幫一個熟人的醫生朋友做了一個靜態的網頁,就隻花了幾個小時
(何況我對 HTML 不太熟,我用的是最原始的 Notepad 寫的)
A3) 關於開發文學網站服務器
如果你要做文學網站(或者類似),需要進行數據讀寫,那上麵的靜態網頁就不夠了,因為它隻能顯示數據,不能處理數據。那需要怎麽辦呢?
a) 如果你租服務器,那具體情況具體分析,得找出租商谘詢;
b) 如果你自己買個服務器,自己單幹,那你需要如下準備 (隻列出最主要的)
b1) 準備一個數據庫係統。如果你的係統很小,可以用微軟的辦公室軟件包裏的 Access。但是它效率不好,不支持同步運行
/訪問,所以不是好的選擇。建議選用 MySql,它免費,其實很不錯的了;如果你有錢,可以買商業軟件,例如微軟的 Sql*Server,
Sybase,如果你很富裕,買甲骨文 Oracle;
b2) 設計數據庫模型;
b3) 學會下麵至少一種編程和相關的調試
b3-1) asp (active server page),如湘濱網站,具體請問 admin;裝置一個 asp 的處理器,例如微軟的 IIS。
這個估計是最簡單的一種選擇,但是請記住的是,微軟的安全漏洞總是層出不窮的。利用IIS安全漏洞攻擊服務器的例子不勝枚舉,比如我,也知道攻擊 IIS 的些許皮毛知識,嗬嗬。
b3-2) PHP;這個我不熟,但是和上麵類似;
b3-3) JSP (Java Server Page),Servlet。目前國內的文學網站中, goovo.com 就是用JSP
寫的。相同條件下,它比 ASP 更安全效率更高,但是,也稍微難一些。用 JSP 寫的話,你得裝個和 IIS 類似的東西,例如 JRUN
(這個不免費),或者免費的 Apache + Tomcat (在www.apache.org 可以下載)。 Apache 是個網絡服務器
(web server),由於安全,免費,它占據60%以上的市場;Tomcat 是個 JSP 引擎,專門處理你將寫的 JSP 文件的。
(JRun,IIS 等也一樣,隻不過將 網絡服務器,和 JSP 引擎/ASP 引擎 合二為一罷了,但是原理是一樣的)。數據流程如下:
用戶電腦<----- (英特網) ----> Apache <----> Tomcat <--你的JSP/ASP 文件程序<---(JDBC/ODBC)--> 數據庫係統 (如MySql)
最後再說一句,通常用戶在瀏覽器地址欄裏經常可以看到asp、jsp 文件,(例如湘濱首頁就是 http:
//www.xxx.com/default.asp),這個 ASP 文件 (亦即default.asp) 是在哪裏運行的呢?它和 HTML
有甚麽關係?答案是:
ASP/JSP 在服務器上運行 (嚴格說來,ASP 在IIS上運行,JSP 在 TOMCAT 或者 JRUN 等 JSP 引擎上運行);
ASP/JSP 和 HTML 沒有關係,隻不過,ASP/JSP 通常將數據處理結果用 HTML 格式輸出罷了 (如同 xx
網站)。如果有特殊要求,ASP/JSP 程序員完全可以將處理結果寫成 *.txt 或者 *.doc 格式。然後服務器端的網絡服務器 (web
server,例如 Apache,IIS,JRUN等) 將處理結果送到用戶電腦,用戶電腦的瀏覽器 (例如 IE)
將接收到的數據翻譯成大家所能看到的那個形式。
B)Windows XP 搜尋工具不正常工作時怎麽辦
我最近將自己的PC (Windows XP)操作係統升級到最新版本的Service Pack
2。當我象往常一樣打開搜尋窗口搜尋電腦裏的文件時,我發現搜尋不能正常工作了。比方說,當你選擇某個目錄按右鍵“Search”時,在“A word
or phrase in the file”
裏鍵入include搜尋哪些文件含有字符串include時,Windows竟然搜尋不出來,而我那個目錄裏顯然有許多cpp-程序文件,裏麵有許多
"include"字符串。這顯然是不對的。事實上,最新的Service pack 2搜尋工具隻能對最常見的幾種文件類型比如 *.txt,
*.html 等識別,比方說如果你有一個文件名abc.txt裏麵包含了include,搜尋工具還是能搜尋得到的。
傳統的Windows搜尋工具在搜索哪些文件包含特定的字符串時是很慢效率很低的。為了提高效率,XP搜尋過濾器將絕大部分文件類型都過濾掉了,包括微軟
公司“自己”的文件類型例如*.doc, *.rtf等,而隻搜尋最常見的幾種“純粹”的txt文件如*.txt,
*.html。雖然這極大地加快搜尋速度,但是其造成的不方便也是很大的。最好的解決辦法應該是微軟讓用戶自己決定搜尋器應該過濾或者不過濾掉文件類型,
可是微軟並沒有提供這個 functionality
(這也是我不解的地方,提供這樣一個機製應該很容易的)。那麽怎麽樣才能讓搜尋工具對絕大部分文件類型都搜索呢?方法如下:
a) 修改注冊表 (Registry)
a1) 點擊 Start --> Run,鍵入 regedit,回車。Registry Editor 窗口彈出。
a2)
在Registry Editor 窗口選擇路徑
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ContentIndex,然後找到名稱為
FilterFilesWithUnknownExtensions 的 registry,將其值改為 1。
b): 調試搜尋工具
b1) 點擊 Start --> Search --> For Files and Folders。搜尋工具窗口彈出。
b2) 點擊 Change Preferences
b3)點擊 With Indexing Service (for faster local searches) (或者 Without Index Service,視你的設置而定)
b4). 點擊 Change Indexing Service Settings (Advanced).
(在“Do you want to enable indexing service”中,你可以選擇 Yes 或者 No。最好選擇Yes,除非你的電腦比較舊)
b5). 點擊 Show/Hide Console Tree 圖標 (沒有文字,隻有一個圖標表示)
b6). 選擇 Indexing Service on Local Machine,按右鍵,選擇菜單 Properties
b7). 選擇選項 Index files with unknown extensions,點擊 OK.