Tuesday, July 20, 2010

周思博趣談軟體介面設計

【重點1】當「設計模型」越接近「使用者模型」,代表你的程式介面設計的越成功
使用者模型:使用者的心中所期待的程式使用方式
【重點2】如果程式模型越不單純,就可能不是使用者模型
【重點3】「請你做出選擇」盡可能是程式設計師的責任,而非使用者。
【重點4】善用「隱喻」可以幫助使用者的使用直覺性。
如:程式裡的放大鏡,使用者馬上能聯想到「放大」
【重點5】抄襲已成功的知名軟體設計,而非創新
也許程式設計師覺得自己設計出來的版面比別套成功的軟體好用,只因使用者已習慣舊有的控制方式,就算舊的程式設計的很難用,卻都會因"我習慣了"而變得好用。
【重點6】使用者看不下任何字,不管是有耐心還是沒耐心的使用者
也許我們以為字多=好,但是別想要使用者去翻說明書來使用!
【重點7】不要以為使用者手腳都很靈活
介面最忌諱設計的死板,我一定要"拉到底",才會出現最下面的畫面
【重點8】貼心 != 雞婆
常常我們以為這樣子設計使用者一定覺得方便,但有時候就是讓人不便【重點9】大眾常用到的功能,就是要優先陳列出來的功能


設計良好軟體大概需要六個步驟:

  1. 創造一些使用者
  2. 找出重要的活動
  3. 找出使用者模型:使用者期望如何完成這些活動
  4. 草擬出初版的設計
  5. 一直反覆把設計修改得更容易,直到虛構使用者能輕易使用為止
  6. 找真人來看著他們試用你的軟體。


Thursday, July 15, 2010

計算機概論

    CPU其實內部已經含有一些小指令集,我們所使用的軟體都要經過CPU內部的微指令集來達成才行。
    世界上常見到的兩種主要CPU種 類: 分別是精簡指令集(RISC)與複雜指令集(CISC)系統。
    CPU的種類
    精簡指令集(RISC)
    複雜指令集(CISC)
    優點
    指令的執行時間都很短
    完成的動作也很單純
    指令的執行效能較佳
    每個小指令可以執行一些較低階的硬體操作
    缺點
    複雜的事情,
    就要由多個指令來完成。
    指令數目多而且複雜
    使用的公司

    公司
    出產系列
    使用單位
    昇陽
    SPARC系列
    銀行金融體系的主要伺服器
    IBM

    Power Architecture(包括PowerPC)系列
    新力(Sony)公司出產的Play Station 3(PS3)
    ARM

    廠牌手機、PDA、導航系統
    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裡的值叫出來做對應,才算正式的完成初始化。

---------------------------------------------------------------------------
初始化完就結束了?
這個答案是否定的,因為你還沒下參數來"使用"。
下了
out.println("<table border='" + borderSize + "' bordercolor='" + borderColor + " ' >");
才算真的完成格式的載入。


特殊的html標籤

段落
<ul>
//程式碼
</ul>


青春痘
<li>//青春痘裡要輸出的字</li>

將資料從1個servlet丟到另一個servlet

如果要將資料丟到別的程式,用到一個概念:
 所以 ,修改好的程式碼應該如下:
  request.setAttribute("error", error);
               RequestDispatcher view =
                request.getRequestDispatcher("tell_me_please.view");
        view.forward(request, response);


一定要在程式forward以前將資料setAttribute出去





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個網頁了

HTML表單標籤

一個HTML表單(如:論壇裡註冊時你所輸入的註冊資訊),可能涵蓋了
●下拉式選單
●文字空格
●按鈕
因此我們必須知道HTML表單的標籤,才知道如何呼叫它們

2.新增首頁

要新增html或jsp首頁,需在web pages裡做new html的動作,新增一個index.html
然後,在web.xml的 <welcome-file>index.jsp</welcome-file>將jsp改成html
最後變成  <welcome-file>index.html</welcome-file>















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>


以下是上述的實際輸出程式碼
    <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>

Friday, July 9, 2010

MVC架構模式

Model:負責存放資料庫(交給EJB或Java Class負責)
View:負責畫面(交給JSP負責)
Controller:程式操作流程的程式碼(交給Servlet負責)
●接收HTML表單資料
●檢查表單資料格式
●再來要怎麼控制內部的程式碼

使用MVC的優點: 應用程式在擴充和修改時,不會因為程式碼都放在一起,而花費大量的時間。

Model2架構:使用MVC的另一種說法而已