關於我

我的相片
用心思考、保持熱情,把工作上的經驗作分享與紀錄。希望能夠跟大家一起不斷的成長~

照片縮圖研究

今天要寫下兩種縮圖方式的結果:


一種為將圖縮小為最長邊700px的圖片大小


另一總則是700px以外的縮圖大小,Ex:最長邊1024、500...等。


為什麼會有特別針對700px的縮圖方式呢?!


以下慢慢的看囉!


大家在Post自己的圖片到網路相簿,公認Flicker的縮圖技術,最讓大家喜愛。


所以今天的目標就是希望可以用PhotoShop縮出類似Flicker縮圖的質感。


下方變為測試出來的縮圖方式,不確定對不對,但是我認為最接近的方式了。


1. 用PhotoShop開啟要縮的圖片(這裡使用的版本是photoshop cs3)



2. 點選功能列→濾鏡→銳利化→智慧型銳利化。



3. 下圖為我測試使用的參數,可參考。



測試這樣的參數,讓我覺得最符合類似Flicker縮圖質感設定


總量:200%


強度:1.0像素


移除:動態模糊


接著點選確定,這樣就完成第一步先將原圖做銳化囉!!


4.接著點選功能列→影像→影像尺寸。



5. 設定我們要的尺寸大小,這裡以最長邊1024px為例。



而使用的縮圖演算法,則要設定為【環迴增值法(最適合用於平滑漸層)】


6.點選確定後,即已完成縮圖。


7.再來就是另存新檔囉,點選功能列→檔案→另存新檔



8.選擇圖片的壓縮率,據說用品質8,其實就可以了。



9.如此一來就大功告成囉!


以上為大至的方法,


重點在縮圖前,要先對原圖做銳化(如果直接縮圖,再銳化的話,圖會變得有點像油畫= =),


接著縮圖時使用【環迴增值法(最適合用於平滑漸層)】


最後縮圖完成後,可在視情況使用邊緣銳化等


以下寫幾個目前測試覺得比較OK的方式。


當然我的測試樣本很少,可能還是需要依各圖片拍攝物體的不同,視情況而定囉..


這裡只提供個參考。


500px:【銳利化】+【銳利化】+【環迴增值法(最適合用於平滑漸層)】+ (【銳利化】or 【銳利化邊緣】)


700px:測試用【縱橫增值法】縮圖,圖片就有銳利的感覺了,不知道為什麼,700px用其他方式加銳利,怎麼加都怪 = =


1024px:可參考上方做法【智慧型銳利化】+【環迴增值法(最適合用於平滑漸層)】


把今天測試狀況寫下來,日後可參考!

IIS Status Code

找到一篇英文的說明文件,將其用Google翻譯於下:

1xx - 信息提示

這些狀態代碼表示臨時的響應。客戶端應準備接收一個或多個 1xx響應之前收到常規響應。

100 - 繼續。
101 - 切換協議。

2xx - 成功

這個類的狀態代碼表明服務器成功地接受了客戶端請求。

200 - 確定。客戶端請求已成功。
201 - 已創建。
202 - 已接受。
203 - 非權威性信息。
204 - 無內容。
205 - 重置內容。
206 - 部分內容。
3xx - 重定向

客戶端瀏覽器必須採取更多行動,以完成該請求。例如,瀏覽器可能不得不請求不同服務器上的網頁或重複的請求使用代理服務器。

301 - 永久移動
302 - 對象暫時轉移
303 - 查看其他
304 - 未修改。
307 - 臨時重定向。
4xx - 客戶端錯誤

發生錯誤,客戶端似乎有過失。例如,客戶端可能請求的頁面不存在,或者客戶端可能無法提供有效的身份驗證信息。

400 - 錯誤的請求。
401 - 訪問被拒絕。 IIS中定義了一些不同的401錯誤,表明一個更具體的原因錯誤的。這些具體的錯誤代碼顯示在瀏覽器,但不會顯示在IIS日誌:

401.1 - 登錄失敗。
401.2 - 登錄失敗,原因是服務器配置。
401.3 - 未經授權,由於 ACL對資源的。
401.4 - 篩選器授權失敗。
401.5 - 授權失敗的ISAPI / CGI應用程序。
401.7 - 訪問被拒絕通過 URL授權策略在Web服務器上。此錯誤代碼是特定於 IIS 6.0中。

403 - 禁止。 IIS中定義了一些不同的403錯誤,表明一個更具體的錯誤原因:

403.1 - 執行訪問被禁止。
403.2 - 讀訪問被禁止。
403.3 - 寫訪問被禁止。
403.4 - 要求SSL。
403.5 - 要求SSL 128。
403.6 - IP地址被拒絕。
403.7 - 要求客戶端證書。
403.8 - 站點訪問被拒絕。
403.9 - 用戶數過多。
403.10 - 配置無效。
403.11 - 密碼更改。
403.12 - 拒絕訪問映射表。
403.13 - 客戶端證書被吊銷。
403.14 - 拒絕目錄列表。
403.15 - 超出客戶端訪問許可證。
403.16 - 客戶端證書不受信任或無效。
403.17 - 客戶端證書已過期或尚未生效。
403.18 - 不能執行所請求的URL在當前的應用程序池。此錯誤代碼是特定於 IIS 6.0中。
403.19 - 無法執行的客戶端的CGI在此應用程序池。此錯誤代碼是特定於 IIS 6.0中。
403.20 - Passport登錄失敗。此錯誤代碼是特定於 IIS 6.0中。

404 - 未找到。 404.0 - (無) - 文件或目錄未找到。

404.1 - 網站無法訪問請求的端口上。
404.2 - Web服務擴展鎖定策略阻止本請求。
404.3 - MIME映射策略阻止本請求。
404.4 - 沒有處理程序(IIS 7中)
404.5 - 請求篩選:網址序列被拒絕(IIS 7中)
404.6 - 請求篩選:動詞否認(IIS 7中)
404.7 - 請求篩選:文件擴展名被拒絕(IIS 7中)
404.8 - 請求篩選:拒隱藏命名空間(IIS 7中)
404.9 - 被拒絕,因為隱藏文件屬性已設置(IIS 7中)
404.10 - 請求篩選:拒絕,因為請求標題太長(IIS 7中)
404.11 -請求篩選:拒絕,因為網址一倍逃脫(IIS 7中)
404.12 - 請求篩選:拒絕,因為高位字符(IIS 7中)
404.13 - 請求篩選:拒絕,因為內容長度太大(IIS 7中)
404.14 - 請求篩選:拒絕,因為網址太長(IIS 7中)
404.15 -請求篩選:拒絕,因為查詢字符串太長(IIS 7中)

405 - HTTP動詞用於訪問此網頁不允許(不允許的方法。)
406 - 客戶端瀏覽器不接受的MIME類型的請求的頁面。
407 - 需要代理身份驗證。
412 - 前提條件失敗。
413 - 請求實體太大。
414 - 請求 URI太長。
415 - 不支持的媒體類型。
416 - 請求範圍不符合。
417 - 執行失敗。
423 - 鎖定的錯誤。

5XX系列 - 服務器錯誤

服務器無法完成請求,因為它遇到一個錯誤。

500 - 內部服務器錯誤。
500.12 - 應用程序正忙於重新啟動 Web服務器上。
500.13 - Web服務器太忙。
500.15 - 直接請求 Global.asa中都是不允許的。
500.16 - UNC授權憑據不正確。此錯誤代碼是特定於 IIS 6.0中。
500.18 - URL授權存儲不能打開。此錯誤代碼是特定於 IIS 6.0中。
500.100 - 內部 ASP錯誤。

501 - 標題值指定的配置不是實施。
502 - Web服務器收到一無效的響應,同時作為網關或代理。

502.1 - CGI應用程序超時。
502.2 - CGI應用程序中的錯誤。

503 - 服務不可用。此錯誤代碼是特定於 IIS 6.0中。
504 - 網關超時。
505 - HTTP版本不受支持。

我的最愛內的連結前小圖示

我的最愛內的連結前小圖示

請先準備一個ICON (32X32 像素大小 256 色顯示),將圖示放到您要用此效果網頁的同目錄底下。

ICON之稱最好命名為:favicon.ico

於<head>及 </head>間區域加入下列語法即可:
<link rel="icon" href="favicon.ico" />
<link rel="shortcut icon" href="favicon.ico" />
<link rel="bookmark" href="favicon.ico" />

Gridview 強制固定Column的寬度

因為其中一個Column是網址的關係,所以所有的欄位都被撐開了。整個版面變得很不美觀

擷取

找到一個利用套CSS的方式可以強制讓欄位固定寬度!

擷取1

然後再需要固定的Column,設定好要固定的寬度,並套上此Css,就大功告成啦!!!

擷取2

這邊測試套上的試GridView的BoundField上。測試結果極佳!!讚!!

下方找到一個很讚的網頁參考

將他整理到這邊備忘!Thanks

項目 變數 參數 範例
字體顏色 color 關鍵字
#rgb (以16個色階來設定)
#rrggbb (以32個色階來設定)
rgb(n%,n%,n%)
rgb(n,n,n)
color:gray
color:#DE0
color:#FF0000
color:rgb(100%,60%,20%)
color:rgb(128,0,128)
水平對齊 text-align left
center
right
text-align:center
設定文字分散對齊 text-justify auto
distribute-all-lines (分散對齊)
text-justify:distribute-all-lines
段落縮排 text-indent 數值+%
數值+單位 (px,cm,em)
text-indent:20%
垂直對齊 vertical-align baseline (一般位置)
super (上標)
sub (下標)
top
middle
botton
vertical-align:top
設定英文大小寫 text-transform capitalize (第一個為大寫)
uppercase (皆大寫)
lowercase (皆小寫)
none (預設)
text-transform:capitalize
調整字元間距 letter-spacing normal
數字+單位 (pt , px , em , 亦可為負值)
letter-spacing:5pt
調整單字間距
只有Netscape支援
word-spacing normal ;
數字+單位 (pt , px , em)
word spacing:7pt
設定文字效果 text-decoration none
overline (上線)
underline (底線)
line-throughx (刪除線)
blink (閃爍效果)
text-decoration:overline underline
text-decoration:none
設定空白或換行 white-space normal
pre (顯示輸入的換行,space,tab.IE不支援)
nowrap (不會自動換行)
white-space:nowrap儲純格內無法換行
避頭尾字元 line-break normal (要看瀏覽器支援與否)
strict (日文小的片假名,平假名或長音-不得至於行頭)
style="line-break"
單字中的換行處理 word-break normal
break-all (英文中,到畫面右邊就換行,不保持單字完整性)
keep-all (中文中,保持單字或句子完整性.只是用於中日韓文)
word-break:keep-all (中文中,保持單字或句子完整性.只適用於中日韓文)
指定在單字中換行 word-wrap normal
break-word (讓無法自動換行的單字進行自動換行)
word-wrap:word-wrap thisisoursampleisitlongenough
以直書方式顯示
Netscape 不支援
writing-mode lr-tb 橫書
tb-rl 直書
writing-mode:tb-rl 直書
設定底線位置
此功能可用overline取代
text-underline-position below (底線在下或在左)
above (底線在上或在右)
text-underline-position:below 直書
調整標注符號的位置
只適用於<Ruby>標籤
ruby-align auto
left (從左端開始標注)
center (從中間開始標注)
right (從右端開始標注)
distribute-letter (平均地標注)
distribute-space (平均地標注,且空間足夠時會在左右再留一些空白.空間不足時兩者效果是一樣的.)
line-edge (只有在最左方或最右方有要標注的文字時,標注符號會從該文字的另一方開始標注)
左端標注left
中間標注center
右端標注right
平均地標注ruby-align:distribute-letter
平均地標注,且空間足夠時會在左右再留一些空白ruby-align:distribute-space
edgeedge
edge標edge
標注符號的位置 ruby-positon above (置於文字之上,預設值)
inline (至於文字之後)
標注在後inline
將文字調整收編在格線內的方法 layout-grid-type loose (不改變字型,紙漿字與自之間空開.預設值)
fixed (僅對中日韓設定為一樣的字型大小,再調整收標於格線內)
strict (將所有字型都設定為一樣的字型大小,再調整收標於格線內)
layout-grid-type:loose;layout-grid-line:20px;layout-grid-char:20px
字元,單行間距 layout-grid-char
layout-grid-line
none (預設值)
auto (自動設定格線大小)
文字大小的數值+單位 (無法指定為負值,px,pt,em)
數值+% (無法指定為負值)
調整單行距離
layout-grid-type:loose;layout-grid-line:40px;layout-grid-char:20px;layout-grid-mode:line
對齊格線的方向 layout-grid-mode none (不與格線對齊)
both (縱向,橫向都與格線對齊)
line (只有縱向對齊)
char (只有橫向對齊)
調整字元距離
layout-grid-type:loose;layout-grid-line:20px;layout-grid-char:10px;layout-grid-mode:char
統一對格線的指定 layout-grid 依序為 mode , type , line , char 的值 layout-grid:loose 15px 20px both

ELMAH

ELMAH網頁

ELMAH可幫助我們快速建立ASP.NET 上的 Error Handle 機制.

有完整的Log Report 與 Exception 記錄,相當實用。

以前我都是使用Enterprise libary 的 Exception handle 來幫助寫出錯誤訊息。

看此ELMAH也可幫助寫出相當不錯的 記錄。

相信對以後此部份的需求,應該幫助很大。

可參考Ricochen專家教學文章

感謝Ricochen的熱心介紹這麼好用的Tool~

AutoFixture

AutoFixture 看起來是類似 Rhino Mock ; Moq …等的工具.

是Codeplex 上的一項 open source 工具.

幫助我們在撰寫測試程式時,模擬未來準備開發或已開發的Class,

遇期幫助使用 Test Development Driven 的開發模式!

或更容易的撰寫好的Unit Test程式!

AutoFixture網頁

不一樣的簡報表達方式(Sample VS2010 Test Architecture)

今天看到一篇不錯的文章.

以往簡報不外乎使用PowerPoint.

這是大家常用的方式.

 

而今天看到的這位大師.他使用了 SilverLight 的 Deep Zoom 作為簡報工具。

他介紹了他為什麼使用的一些故事,如果大家有興趣,可看一下他的原文

而實際的簡報,效果真的相當的棒阿.

感覺清楚明瞭,有別於以往PowerPoint方式.

且也整合了完整的架構;說明;圖文;影片…

很不錯的做法,有空可以研究一下喔^_^

 

順帶一提,此範例是他介紹VS2010整個測試環境的架構與做法,

也是相當值得參考學習的教學。

nchar vs char N的差異

 

資料格式 字元編碼 占用資料空間 查詢速度(索引) 支援國際化字元
nchar Unicode 較大 較慢
char Ansi-string 較小 較快
 
整理差異,規劃上可參考。

Rhino Mocks 範例參考

要寫好的Unit Test,要盡可能的避免與一些其他因素的關聯,比方說資料庫、實體路徑、或參考檔案…等。

因此可將實做關聯的部分,截取出介面,用Mock的方式,模擬實做,即可做假的關聯資料。

不實際與環境關聯,成為好的、有信心的Unit Test!

下方為實際測試後,可Work的參考寫法Sample,不太理解寫法的差異?! (Mock可用於驗證,Stub可不驗證,只做假Return?!)   待日後再進一步的研究。

目前測試可執行的寫法如下,使用版本為 Rhino Mocks 3.6:

1.宣告出要Mock的Interface方法!
//Sample1
Idbservice service = MockRepository.GenerateStrictMock<Idbservice>(); 
//Sample2
Idbservice service = MockRepository.GenerateStub<Idbservice>(); 
//Sample3
Idbservice service = MockRepository.GenerateMock<Idbservice>(); 
//Sample4
//(必須於設定完成Stub後,搭配 service.Replay(); 使用!) 
Idbservice service = new MockRepository().StrictMock<Idbservice>();
//Sample5
//(必須於設定完成Stub後,搭配 service.Replay(); 使用!)
Idbservice service = new MockRepository().DynamicMock<Idbservice>();
2.宣告完成後,加入要Stub的Method或Attritube … 下方寫法也需搭配上方宣告使用,有其對應。
//Sample 1
service.Stub(s => s.GetMyObjsByID(1)).Return(new Myobj()); 
//Sample 2
//( 只能搭配 new MockRepository().StrictMock<Idbservice>(); 使用! )
SetupResult.For<MyObj>(service.GetMyObjsByID(1)).Return(new Myobj());
service.Replay();
3.最後在需使用Service的Class,傳入我們Mock好的Service.(當然此Class必須操作IdbService)
MyService myservice = new MyService(service);
這樣就可以使用我們已經Mock好的service。完全的與原環境關聯乾淨分離,不受其影響! 實際舉一個完整範例,大致程式如下:
//宣告要被Mock的Interface
Idbservice service = MockRepository.GenerateStub<Idbservice>(); 
//加入Stub的Method,與其回傳值。
service.Stub(s => s.GetMyObjsByID(1)).Return(new Myobj()); 
//使用Mock的Interface進行測試。
MyService myservice = new MyService(service);

加油,做好測試程式,提高系統交付品質保證!

Mock與Stub差異,好文參考 http://www.wretch.cc/blog/kojenchieh/15431659

加入測試參考注意項目

1. 先開啟測試檢視視窗

擷取1

2.可於測試檢視中,點選欲加入測試項目之測試案例右鍵屬性。

擷取2

3.即可於屬性視窗中,設定加入測試參考。

擷取3

4.加入後的程式碼如下!會多出DeploymentItem的Attribute。

擷取4

5.最後記得要設定,要讓測試檔案複製到測試輸出目錄中。

擷取

加入測試項目時,需注意,必須選擇[永遠複製],此檔才會於測試階段,自動被複製到測試目錄中,

測試才可順利進行喔!

不常用會忘記,註記一下。