【重點1】當「設計模型」越接近「使用者模型」,代表你的程式介面設計的越成功
使用者模型:使用者的心中所期待的程式使用方式
【重點2】如果程式模型越不單純,就可能不是使用者模型
【重點3】「請你做出選擇」盡可能是程式設計師的責任,而非使用者。
【重點4】善用「隱喻」可以幫助使用者的使用直覺性。
如:程式裡的放大鏡,使用者馬上能聯想到「放大」
【重點5】抄襲已成功的知名軟體設計,而非創新
也許程式設計師覺得自己設計出來的版面比別套成功的軟體好用,只因使用者已習慣舊有的控制方式,就算舊的程式設計的很難用,卻都會因"我習慣了"而變得好用。
【重點6】使用者看不下任何字,不管是有耐心還是沒耐心的使用者
也許我們以為字多=好,但是別想要使用者去翻說明書來使用!
【重點7】不要以為使用者手腳都很靈活
介面最忌諱設計的死板,我一定要"拉到底",才會出現最下面的畫面
【重點8】貼心 != 雞婆
常常我們以為這樣子設計使用者一定覺得方便,但有時候就是讓人不便【重點9】大眾常用到的功能,就是要優先陳列出來的功能Thursday, July 15, 2010
計算機概論
CPU其實內部已經含有一些小指令集,我們所使用的軟體都要經過CPU內部的微指令集來達成才行。
世界上常見到的兩種主要CPU種 類: 分別是精簡指令集(RISC)與複雜指令集(CISC)系統。
CPU的種類 | 精簡指令集(RISC) | 複雜指令集(CISC) | ||||||||||||
優點 | 指令的執行時間都很短 完成的動作也很單純 指令的執行效能較佳 | 每個小指令可以執行一些較低階的硬體操作 | ||||||||||||
缺點 | 複雜的事情, 就要由多個指令來完成。 | 指令數目多而且複雜 | ||||||||||||
使用的公司 |
| AMD、Intel、VIA |
0/1 的單位我們稱為 bit。但 bit 實在太小了, 並且在儲存資料時每份簡單的資料都會使用到 8 個 bits 的大小來記錄,因此定義出 byte 這個單位,他們的關係為:
1 Byte = 8 bits
時脈就是CPU每秒鐘可以進行的工作次數。 所以時脈越高表示這顆CPU單位時間內可以作更多的事情。舉例來說,Intel的Core 2 Duo型號E8400的CPU時脈為3.0GHz, 表示這顆CPU在一秒內可以進行3.0x109次工作,每次工作都可以進行少數的指令運作之意。
不同的CPU之間不能單純的以時脈來判斷 運算效能喔!這是因為每顆CPU的微指令集不相同,時脈目前僅能用來比較同款CPU的速度!
主機板晶片組如何進行各個電腦元件之間的溝通?這個時候就需要用到所謂的I/O位址與IRQ囉!
I/O位址有點類似每個裝置的門牌號碼,IRQ可以想成是各個門牌連接到郵件中心(CPU)的專門路徑囉!
CMOS主要的功能為記錄主機板上面的重要參數, 包括系統時間、CPU電壓與頻率、各項設備的I/O位址與IRQ等,由於這些資料的記錄要花費電力,因此主機板上面才有電池。 BIOS為寫入到主機板上某一塊 flash 或 EEPROM 的程式,他可以在開機的時候執行,以載入CMOS當中的參數, 並嘗試呼叫儲存裝置中的開機程式,進一步進入作業系統當中。
文字編碼系統
當我們要寫入檔案的文字資料時,該文字資料會由編碼對照表將該文字轉成數字後,再存入檔案當中。 同樣的,當我們要將檔案內容的資料讀出時,也會經過編碼對照表將該數字轉成對應的文字後,再顯示到螢幕上。 現在你知道為何瀏覽器上面如果編碼寫錯時,會出現亂碼了嗎?這是因為編碼對照表寫錯, 導致對照的文字產生誤差之故啦!
big5碼的中文字編碼對於某些資料庫系統來說是很有問題的,某些字碼例如『許、蓋、功』等字, 由於這幾個字的內部編碼會被誤判為單/雙引號,在寫入還不成問題,在讀出資料的對照表時, 常常就會變成亂碼。不只中文字,其他非英語系國家也常常會有這樣的問題出現啊!
為了解決這個問題,由國際組織ISO/IEC跳出來制訂了所謂的Unicode編碼系 統, 我們常常稱呼的UTF8或萬國碼的編碼就是這個咚咚。因為這個編碼系統打破了所有國家的不同編碼, 因此目前網際網路社會大多朝向這個編碼系統在走,所以各位親愛的朋友啊,記得將你的編碼系統修訂一下喔!
你要讓DVD影片能夠放映, 那就得要參考DVD光碟機的硬體資訊才行。
作業系統(Operating System, OS)其實也是一組程式, 這組程式的重點在於管理電腦的所有活動以及驅動系統中的所有硬體。
Monday, July 12, 2010
Servlet initiate parameter
Servlet在建立時,有一個生命週期
而在建立一個Servlet的一開始,會先做一些初始化的動作,
而這些動作,是在web.xml裡去設定的...
如下圖,我們要在初始時,就將要印出來的table border設為2,而顏色設為藍色,web container會在建立Servlet的一開始,就在:ServerletConfig做設定
------------------------------------------------------------------
當我們要攢寫一個新的Servlet時,我們必須要繼承HttpServlet。但是我們的初始化設定在HttpServlet的父父類別(ServletConfig), 也就是在"阿公"這一代,就已經設定了。
---------------------------------------------------------------------
init()方法,在Servlet建立的初時,只會被呼叫1次,僅1次。
原來我們不是只在web.xml做<init-param>設定就好,還要在我們新寫的Servlet裡,呼叫阿公的method:init(),並使用getInitParameter去把web.xml裡的值叫出來做對應,才算正式的完成初始化。
---------------------------------------------------------------------------
初始化完就結束了?
這個答案是否定的,因為你還沒下參數來"使用"。
下了
而在建立一個Servlet的一開始,會先做一些初始化的動作,
而這些動作,是在web.xml裡去設定的...
如下圖,我們要在初始時,就將要印出來的table border設為2,而顏色設為藍色,web container會在建立Servlet的一開始,就在:ServerletConfig做設定
------------------------------------------------------------------
當我們要攢寫一個新的Servlet時,我們必須要繼承HttpServlet。但是我們的初始化設定在HttpServlet的父父類別(ServletConfig), 也就是在"阿公"這一代,就已經設定了。
---------------------------------------------------------------------
init()方法,在Servlet建立的初時,只會被呼叫1次,僅1次。
原來我們不是只在web.xml做<init-param>設定就好,還要在我們新寫的Servlet裡,呼叫阿公的method:init(),並使用getInitParameter去把web.xml裡的值叫出來做對應,才算正式的完成初始化。
---------------------------------------------------------------------------
初始化完就結束了?
這個答案是否定的,因為你還沒下參數來"使用"。
下了
out.println("<table border='" + borderSize + "' bordercolor='" + borderColor + " ' >");
才算真的完成格式的載入。Sunday, July 11, 2010
實體繼續導向
在一般的網頁中,如果要將第1個網頁跳轉到第2個網頁,也許我們會在doPost()下 response.sendRedirect("第2個網頁.view");指令。
但是,這在第2個網頁,會發生requests和response為null的冏境。
下面的圖示,TellMeServlet.java是第1個網頁,而HelloServlet.java是第2個網頁。
原來在從who_are_you.html裡傳給TellMeServlet的request和reponse,在回傳給user的browser之後,再遇到response.sendRedirect("hello.view");時,這個時候的request和reponse都被清空了。
---------------------------------------------------------------------------------------------------------
解決的辦法當然是有,利用RequestDispatcher。
這樣子request和response物件就順利丟到第2個網頁了
但是,這在第2個網頁,會發生requests和response為null的冏境。
下面的圖示,TellMeServlet.java是第1個網頁,而HelloServlet.java是第2個網頁。
原來在從who_are_you.html裡傳給TellMeServlet的request和reponse,在回傳給user的browser之後,再遇到response.sendRedirect("hello.view");時,這個時候的request和reponse都被清空了。
---------------------------------------------------------------------------------------------------------
解決的辦法當然是有,利用RequestDispatcher。
這樣子request和response物件就順利丟到第2個網頁了
Saturday, July 10, 2010
1.web.xml
web.xml是替servlet做設定的功能
會分別加入
1.<servlet></servlet>
再在裡面加入
(1) <servlet-name>替servlet取的名稱</servlet-name>
(2) <servlet-class>servlet的路徑</servlet-class>
2. <servlet-mapping></servlet-mapping>
在裡面再加入
(1) <servlet-name>servlet的名稱</servlet-name>
(2) <url-pattern> 替這個servlet取上url</url-pattern>
以下是上述的實際輸出程式碼
會分別加入
1.<servlet></servlet>
再在裡面加入
(1)
(2)
2. <servlet-mapping></servlet-mapping>
在裡面再加入
(1)
(2) <url-pattern>
以下是上述的實際輸出程式碼
<servlet>
<servlet-name>MyFirstServlet</servlet-name>
<servlet-class>servlets.MyFirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyFirstServlet</servlet-name>
<url-pattern>/my_first_servlet.view</url-pattern>
</servlet-mapping>