<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Design-Wind.net &#187; 軟體設計</title>
	<atom:link href="http://design-wind.net/blog/index.php/category/technology/soft-design/feed" rel="self" type="application/rss+xml" />
	<link>http://design-wind.net/blog</link>
	<description>設計風！全新的【Magic-Wind.NET】魔風網網誌...</description>
	<lastBuildDate>Wed, 15 Sep 2010 14:46:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>HTTP 狀態碼</title>
		<link>http://design-wind.net/blog/index.php/67.html</link>
		<comments>http://design-wind.net/blog/index.php/67.html#comments</comments>
		<pubDate>Mon, 26 Apr 2010 03:51:39 +0000</pubDate>
		<dc:creator>Yelmous</dc:creator>
				<category><![CDATA[技術文件]]></category>
		<category><![CDATA[軟體設計]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[http/1.1]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://design-wind.net/blog/?p=67</guid>
		<description><![CDATA[HTTP 狀態碼大致分成 5 類 (粗體表示)，完整的狀態碼概述如下： 1xx &#8211; 參考資訊 (Informational) 這些狀態碼代表主機先暫時回應用戶端一個狀態，所以在接收一般的回應之前，用戶端應準備接收一個或多個 1xx 的回應。我以前在寫 ASP 的時候比較有看到 IIS 使用到這些狀態碼回應，在 Apache 的環境我還未曾遇到過。 100 &#8211; 繼續。 101 &#8211; 切換通訊協定。 2xx &#8211; 成功 (OK) 這類的狀態碼表示伺服器成功接收到用戶端要求、理解用戶端要求、以及接受用戶端要求。 200 &#8211; 確定。 用戶端要求成功。 201 &#8211; 已建立。 202 &#8211; 已接受。 203 &#8211; 非授權資訊。 204 &#8211; 無內容。 205 &#8211; 重設內容。 206 &#8211; 部分內容。 207 &#8211; 多重狀態 (WebDAV)]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank">HTTP 狀態碼</a>大致分成 5 類 (粗體表示)，完整的狀態碼概述如下：</p>
<ul>
<li><strong>1xx &#8211; 參考資訊 (Informational)</strong><br />
這些狀態碼代表主機先暫時回應用戶端一個狀態，所以在接收一般的回應之前，用戶端應準備接收一個或多個 1xx 的回應。我以前在寫 ASP 的時候比較有看到 IIS 使用到這些狀態碼回應，在 Apache 的環境我還未曾遇到過。</p>
<ul>
<li>100 &#8211; 繼續。</li>
<li>101 &#8211; 切換通訊協定。</li>
</ul>
</li>
<li><strong>2xx &#8211; 成功 (OK)</strong><br />
這類的狀態碼表示伺服器成功接收到用戶端要求、理解用戶端要求、以及接受用戶端要求。</p>
<ul>
<li>200 &#8211; 確定。 用戶端要求成功。</li>
<li>201 &#8211; 已建立。</li>
<li>202 &#8211; 已接受。</li>
<li>203 &#8211; 非授權資訊。</li>
<li>204 &#8211; 無內容。</li>
<li>205 &#8211; 重設內容。</li>
<li>206 &#8211; 部分內容。</li>
<li>207 &#8211; 多重狀態 (<a rel="nofollow" href="http://en.wikipedia.org/wiki/WebDAV" target="_blank">WebDAV</a>) &#8212; 這好像只有在 IIS 中才有，HTTP/1.1 並沒有定義這個狀態。這狀態會出現在可以包含多個不同回應代碼 (視子要求數量而定) 的 XML 訊息之前。</li>
</ul>
</li>
<li><strong>3xx &#8211; 重新導向 (Redirection)</strong><br />
用戶端瀏覽器必須採取更多動作才能完成要求。例如：瀏覽器可能必須重新發出 HTTP Request 要求伺服器上的不同頁面。</p>
<ul>
<li>301 &#8211; 要求的網頁已經永久改變網址。此狀態要求用戶端未來在連結此網址時應該導向至指定的 URI。</li>
<li>302 &#8211; 物件已移動，並告知移動過去的網址。針對表單架構驗證，這通常表示為「物件已移動」。 要求的資源暫時存於不同的 URI 底下。 由於重新導向可能偶而改變，用戶端應繼續使用要求 URI 來執行未來的要求。 除非以 Cache-Control 或 Expires 標頭欄位表示，此回應才能夠快取。<br />
ASP.NET 預設的 <a rel="nofollow" href="http://msdn.microsoft.com/zh-tw/library/a8wa7sdt.aspx" target="_blank">Response.Redirect 方法</a>，就是以 302 Found 做回應。</li>
<li>303 &#8211; 通知 Client 連到另一個網址去查看上傳表單的結果(POST 變成 GET)，當使用程式作網頁轉向時，會回應此訊息。<br />
在 ASP.NET 中要輸出 HTTP 303 轉向的程式碼如下：</p>
<div class="csharpcode-wrapper">
<pre class="csharpcode">Response.StatusCode = 303;
Response.RedirectLocation = <span class="str">"/PageB.aspx"</span>;</pre>
</div>
</li>
<li>304 &#8211; 未修改。用戶端要求該網頁時，其內容並沒有變更，應該回傳 304 告知網頁未修改。此時用戶端僅需要取得本地快取(Local Cache)的副本即可。</li>
<li>305 &#8211; 要求的網頁必須透過 Server 指定的 proxy 才能觀看 ( 透過 Location 標頭 )</li>
<li>306 &#8211; (未使用) 此代碼僅用來為了向前相容而已。</li>
<li>307 &#8211; 暫時重新導向。要求的網頁只是「暫時」改變網址而已。</li>
</ul>
</li>
<li><strong>4xx &#8211; 用戶端錯誤 (Client Error)</strong><br />
這代表錯誤發生，且這錯誤的發生的原因跟「用戶端」有關。例如：用戶端可能連結到不存在的頁面、用戶端的權限不足、或可能未提供有效的驗證資訊(輸入的帳號、密碼錯誤)。下次看到 4xx 的回應千萬不要傻傻的一直查程式哪裡寫錯誤了(不過也有可能是程式造成的)。</p>
<ul>
<li>400 &#8211; 錯誤的要求。</li>
<li>401 &#8211; 拒絕存取。 IIS 定義數個不同的 401 錯誤，以表示更詳細的錯誤原因。 這些特定的錯誤碼會顯示在瀏覽器中，但不會顯示在 IIS 記錄檔中：
<ul>
<li>401.1 &#8211; 登入失敗。</li>
<li>401.2 &#8211; 因為伺服器設定導致登入失敗。</li>
<li>401.3 &#8211; 因為資源上的 ACL 而沒有授權。</li>
<li>401.4 &#8211; 篩選授權失敗。</li>
<li>401.5 &#8211; ISAPI/CGI 應用程式授權失敗。</li>
<li>401.7 &#8211; Web 伺服器上的 URL 授權原則拒絕存取。 這是 IIS 6.0 專用的錯誤碼。</li>
</ul>
</li>
<li>403 &#8211; 禁止使用。 IIS 定義數個不同的 403 錯誤，以表示更詳細的錯誤原因：
<ul>
<li>403.1 &#8211; 禁止執行存取。</li>
<li>403.2 &#8211; 禁止讀取存取。</li>
<li>403.3 &#8211; 禁止寫入存取。</li>
<li>403.4 &#8211; 需要 SSL。</li>
<li>403.5 &#8211; 需要 SSL 128。</li>
<li>403.6 &#8211; IP 位址遭拒。</li>
<li>403.7 &#8211; 需要用戶端憑證。</li>
<li>403.8 &#8211; 網站存取遭拒。</li>
<li>403.9 &#8211; 使用者過多。</li>
<li>403.10 &#8211; 設定無效。</li>
<li>403.11 &#8211; 密碼變更。</li>
<li>403.12 &#8211; 對應程式拒絕存取。</li>
<li>403.13 &#8211; 用戶端憑證已撤銷。</li>
<li>403.14 &#8211; 目錄清單遭拒。</li>
<li>403.15 &#8211; 超過用戶端存取授權數量。</li>
<li>403.16 &#8211; 用戶端憑證不受信任或無效。</li>
<li>403.17 &#8211; 用戶端憑證已經過期或尚未生效。</li>
<li>403.18 &#8211; 無法在目前的應用程式集區中執行要求的 URL。 這是 IIS 6.0 專用的代碼。</li>
<li>403.19 &#8211; 無法在這個應用程式集區中執行用戶端的 CGI。 這是 IIS 6.0 專用的代碼。</li>
<li>403.20 &#8211; Passport 登入失敗。 這是 IIS 6.0 專用的錯誤碼。</li>
</ul>
</li>
<li>404 &#8211; 找不到。
<ul>
<li>404.0 &#8211; (無) – 找不到檔案或目錄。</li>
<li>404.1 &#8211; 無法在要求的連接埠上存取網站。</li>
<li>404.2 &#8211; 網頁服務延伸鎖定原則阻止這個要求。</li>
<li>404.3 &#8211; MIME 對應原則阻止這個要求。</li>
</ul>
</li>
<li>405 &#8211; 用來存取這個頁面的 HTTP 動詞不受允許 (方法不受允許)。</li>
<li>406 &#8211; 用戶端瀏覽器不接受要求頁面的 MIME 類型。</li>
<li>407 &#8211; 需要 Proxy 驗證。</li>
<li>412 &#8211; 指定條件失敗。</li>
<li>413 &#8211; 要求的實體太大。</li>
<li>414 &#8211; 要求 URI 太長。</li>
<li>415 &#8211; 不支援的媒體類型。</li>
<li>416 &#8211; 無法滿足要求的範圍。</li>
<li>417 &#8211; 執行失敗。</li>
<li>423 &#8211; 鎖定錯誤。</li>
</ul>
</li>
<li><strong>5xx &#8211; 伺服器錯誤 (Server Error)</strong><br />
這代表錯誤發生，且這錯誤發生的原因跟「伺服器」有關。伺服器因為發生錯誤或例外狀況(Exception)而無法完成要求(Request)時，就會回應 5xx 的錯誤，且這肯定跟伺服器有關。</p>
<ul>
<li>500 &#8211; 內部伺服器錯誤。
<ul>
<li>500.12 &#8211; 應用程式正忙於在 Web 伺服器上重新啟動。</li>
<li>500.13 &#8211; Web 伺服器過於忙碌。</li>
<li>500.15 &#8211; 不允許直接要求 Global.asa。</li>
<li>500.16 – UNC 授權認證不正確。 這是 IIS 6.0 專用的錯誤碼。</li>
<li>500.18 – 無法開啟 URL 授權存放區。 這是 IIS 6.0 專用的錯誤碼。</li>
<li>500.19 &#8211; 此檔案的資料在 Metabase 中設定不當。</li>
<li>500.100 &#8211; 內部的 ASP 錯誤。</li>
</ul>
</li>
<li>501 – 標頭值指定未實作的設定。</li>
<li>502 &#8211; Web 伺服器在作為閘道或 Proxy 時收到無效的回應。
<ul>
<li>502.1 &#8211; CGI 應用程式逾時。</li>
<li>502.2 &#8211; CGI 應用程式中發生錯誤。</li>
</ul>
</li>
<li>503 &#8211; 服務無法使用。 這是 IIS 6.0 專用的錯誤碼。</li>
<li>504 &#8211; 閘道逾時。</li>
<li>505 &#8211; 不支援的 HTTP 版本。</li>
</ul>
</li>
</ul>
<p>出處：<a title="網頁開發人員應了解的 HTTP 狀態碼" href="http://blog.miniasp.com/post/2009/01/Web-developer-should-know-about-HTTP-Status-Code.aspx" target="_blank">The Will Will Web</a></p>
]]></content:encoded>
			<wfw:commentRss>http://design-wind.net/blog/index.php/67.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>淺論架構的 POC (Proof of Concepts)</title>
		<link>http://design-wind.net/blog/index.php/28.html</link>
		<comments>http://design-wind.net/blog/index.php/28.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 01:39:12 +0000</pubDate>
		<dc:creator>Yelmous</dc:creator>
				<category><![CDATA[軟體設計]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[concept]]></category>
		<category><![CDATA[structure]]></category>

		<guid isPermaLink="false">http://design-wind.net/blog/?p=28</guid>
		<description><![CDATA[POC, Proof of Concepts, 從字面的意義來解釋的話，即為 “概念性的驗證”。 既然是需要驗證(Proof)，所以 POC 是一種 “解決方案(Solution)”，是針對 “概念” 所提出的解決方案，而架構的 POC，目的即在於擷取出最精要、核心的解決方案(Solution)，以作為解釋架構的概念依據。 我與 Ringle 聊到 POC，他原來對 POC 的認知是對客戶所提出的一種解決方案，所以主要滿足對象是 “客戶”。不過，對於架構的 POC，我不太認同對象是客戶，我會以為，會希望能透過某種概念性的解決方案，而對架構有整體、全貌性的認知者，那才會是架構 POC 的對象。 所以，誰負責撰寫架構 POC？ 我認為是 “架構師(Architect)”，誰想瞭解及驗證架構 POC？我以為是開發團隊所有成員與利益關係人(Stakeholder)。 架構 POC 的對象釐清後，再來是瞭解其呈現的具體樣貌是什麼樣子呢？底下是架構 POC 具化的幾個可能樣貌。 解決方案所需運用的相關技術(Framework, Pattern …)。 利用 UML 語法建構概念模型草圖(Sketch)，以表達某一解決方案。 利用模擬(Simulation)的方式提出解決方案。 可以被執行的原型 (Prototype)。 我個人傾向利用可以執行的原型(Prototype)來作為架構 POC 的具體樣貌，因為： 架構師以 “原型” 做為與開發團隊與利益關係人的溝通、達成共識的橋樑，然後才著手執行。透過原型，大家比較容易對概念(Concept)產生共鳴，並致力改變尚未成形的東 西。 原型協助架構(Architecture)的建立，讓大家能容易看到整體、更具宏觀的角度來看待複雜系統。並因此而避免一頭就栽進種種的細節 (Detail)。 原型可把目標清晰地描繪出來，並且讓每個利益關係人(Stakeholder)都更容易提供意見，進行改革。 而且，架構原型可以： 在架構落實以前，讓團隊成員能自由表達看法，並進行討論、提出建議。 讓團隊成員隨時表達意見，有機會影響你正著手進行的方案。]]></description>
			<content:encoded><![CDATA[<div>
<p>POC, Proof of Concepts, 從字面的意義來解釋的話，即為 “概念性的驗證”。</p>
<p>既然是需要驗證(Proof)，所以 POC 是一種 “解決方案(Solution)”，是針對 “概念” 所提出的解決方案，而架構的  POC，目的即在於擷取出最精要、核心的解決方案(Solution)，以作為解釋架構的概念依據。</p>
<p>我與 Ringle 聊到 POC，他原來對 POC 的認知是對客戶所提出的一種解決方案，所以主要滿足對象是 “客戶”。不過，對於架構的  POC，我不太認同對象是客戶，我會以為，會希望能透過某種概念性的解決方案，而對架構有整體、全貌性的認知者，那才會是架構 POC 的對象。</p>
<p>所以，誰負責撰寫架構 POC？ 我認為是 “架構師(Architect)”，誰想瞭解及驗證架構  POC？我以為是開發團隊所有成員與利益關係人(Stakeholder)。</p>
<p>架構 POC 的對象釐清後，再來是瞭解其呈現的具體樣貌是什麼樣子呢？底下是架構 POC 具化的幾個可能樣貌。</p>
<ul>
<li>解決方案所需運用的相關技術(Framework, Pattern …)。</li>
<li>利用 UML 語法建構概念模型草圖(Sketch)，以表達某一解決方案。</li>
<li>利用模擬(Simulation)的方式提出解決方案。</li>
<li>可以被執行的原型 (Prototype)。</li>
</ul>
<p>我個人傾向利用可以執行的原型(Prototype)來作為架構 POC 的具體樣貌，因為：</p>
<ul>
<li>架構師以 “原型”  做為與開發團隊與利益關係人的溝通、達成共識的橋樑，然後才著手執行。透過原型，大家比較容易對概念(Concept)產生共鳴，並致力改變尚未成形的東 西。</li>
<li>原型協助架構(Architecture)的建立，讓大家能容易看到整體、更具宏觀的角度來看待複雜系統。並因此而避免一頭就栽進種種的細節 (Detail)。</li>
<li>原型可把目標清晰地描繪出來，並且讓每個利益關係人(Stakeholder)都更容易提供意見，進行改革。</li>
</ul>
<p>而且，架構原型可以：</p>
<ul>
<li>在架構落實以前，讓團隊成員能自由表達看法，並進行討論、提出建議。</li>
<li>讓團隊成員隨時表達意見，有機會影響你正著手進行的方案。</li>
<li>不斷加快前述兩個步驟(一般稱之為「快速建構原型」)。</li>
</ul>
<p>對了，架構原型除了比較容易協助團隊成員一窺系統的整體全貌外，對系統內部的結構(Structure)分析與設計的呈現，也能有一番基本的認知。</p>
<p>所以，架構原型的內容，我會擺上表達整體系統的使用案例模型；實做兩、三個具代表性的使用案例，並畫上概念性的類別圖與循序圖；同時，我還會加上與  .NET or J2EE 等平台相依的細部類別與循序圖；實做面，確實可以產出可以執行的程式碼與測試碼；最後，我會利用簡單的 UI(User  Interface) 作為執行畫面的呈現與說明。</p>
<p>原型，並非是 “粗糙”，或是 “應付性”  的，它是一個框，是可以被驗證的，但並非僅利用外表美美的圖形使用者介面來對系統作概念性的驗證。架構原型，反而不是重視圖形介面，它要強調的是一種對系 統的整體觀與結構觀。至於圖形介面與企業流程的功能，反而不是那麼重視。精密與細節、正確性的工作，是對系統的整體有了正知與正覺，往正確的大方向走後， 才確定要做的細節性工作，可以把它作對。人們，尤其是組織性的團隊，最常犯的錯誤是：「把不必要的事情作太好」。</p>
<p>出處：<a title="Kenming's 鮮思維" href="http://www.kenming.idv.tw/amoel_a_pas_c_poc_proof_of_concepts" target="_blank">Kenming&#8217;s 鮮思維</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://design-wind.net/blog/index.php/28.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

