2012年10月26日 星期五
Stat Counter
http://gs.statcounter.com/ 列出了我們軟體業界常常在問的趨勢。
例如 「行動裝置」比一般電腦使用率更高了嗎?結果是還差的很遠http://gs.statcounter.com/#mobile_vs_desktop-ww-monthly-201109-201209
Windows 7 很普及了嗎?是
http://gs.statcounter.com/#os-ww-monthly-201109-201209
甚至可以看到台灣區的瀏覽器版本。(IE 6.0 只剩1.06% 的使用率)
http://gs.statcounter.com/#browser_version-TW-monthly-201109-201209
是一個不錯的網站
2012年10月15日 星期一
ASP.NET MVC unobtrusive Cheat Sheet
需要一個 client side 的 JavaScript validation library. 而使用 ASP.NET MVC 當然最好使用 jQuery.validate.unobtrusive.js,雖然還是有一點不好用啦!
然而每次都要到 google 找資料也是很累,不如自己做一個清單好了。
值 | 說明 | ||
data-val | true, false | 是否要驗證 | |
長度限制 | data-val-length | 字串 | 字串長度不符合時的錯誤訊息 |
data-val-length-max | 整數 | 字串最大長度 | |
data-val-length-min | 整數 | 字串最小長度 | |
必填 | data-val-required | 字串 | 未填入時的錯誤訊息 |
RegEx | data-val-regex | 字串 | 錯誤訊息 |
data-val-regex-pattern | 字串 | regex | |
數字 | data-val-digits | 字串 | 錯誤訊息。只接受數字字元。 |
data-val-number | 字串 | 錯誤訊息。只接受數字(正負) | |
日期 | data-val-date | 日期 | 錯誤訊息。只接受日期。 |
data-val-email | 字串 | 錯誤訊息 | |
Url | data-val-url | 字串 | 錯誤訊息 |
範圍 | data-val-range | 字串 | 錯誤訊息 |
data-val-range-min | 整數 | ||
data-val-range-max | 整數 | ||
比較 | data-val-equalto | 字串 | 錯誤訊息 |
data-val-equalto-other | 驗證項目的name | ||
驗證訊息 | data-valmsg-for | 驗證項目的name | 驗證訊息 |
附檔名限制 | data-val-accept | 字串 | 錯誤訊息 |
data-val-accept-exts | 字串 | Ex: “jpg|gif|png” |
範例見黑大的 使用jQuery.validate.unobtrusive.js
動態驗證的 JavaScript
self.save = function() { var form = $('#editForm'); form.removeData("validator"); $.validator.unobtrusive.parse(form); form.validate(); if (form.valid()) { var url = form.attr('action'); var postData = form.serialize() + "&field1=" + self.field1(); $.post(url, postData, function(data) { if (data.IsOk) { alert("已儲存"); } else { alert(data.Message); } }); } };
2012年10月11日 星期四
[Knockout] 解決 radio checked binding,radio button 老是要按兩次才能選取的的問題
這次問題的過程比較難以描述。
初始問題
問題 sample 如下
http://jsfiddle.net/CharlesLin/X2a5P/
當點選 radio button 時,一開始會點不順利,直到每點過一次以才會正常.
checked 只能 binding 到 string
查詢http://knockoutjs.com/documentation/checked-binding.html 中有提到下面這一段敘述
•For radio buttons, KO will set the element to be checked if and only if the parameter value equals the radio button node’s value attribute. So, your parameter value should be a string
意思是:當使用 checked 繫結時,必須是 string 才有用.
所以,就有了第二個版本:把 Id 改成 string
http://jsfiddle.net/CharlesLin/X2a5P/3/
這樣子就正常了.
我的解法
然而,將 Id 改型別是不合常理的。通常這些資料都是從伺服器端來的,並非我們能控制。最好在 client 能夠正常運作。
最後,只能修改 binding
http://jsfiddle.net/CharlesLin/X2a5P/4/
將 value 改成字串。改正 one-way binding 不影響此處值的顯示。
如此就符合我的需求了
2012年10月8日 星期一
Knockout.js
這是一個關於 Knockout.js 的 sample code 及 投影片。
個人對於 knockout.js 的未來潛力相當看好,是一個可以與 jQuery 爭輝的 JavaScript Library。
Sample Code 及投影片可以到這裡下載。
2012年9月11日 星期二
@Scripts.Render("~/bundles/jqueryval") 引用次數要剛剛好一次
在執行 ASP.NET MVC ajax 新增資料時,發生了重覆 insert的事情。
為什麼呢?原來是重複引用了 @Scripts.Render("~/bundles/jqueryval"). (在 View 中用了一次,在 layout page 中又一次 )
產生的 html code 如下
<script src="/App/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script> <script src="/App/Scripts/jquery.validate.js" type="text/javascript"></script> <script src="/App/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
兩次會有什麼效果呢?就是執行一次Request,結果會出現2次的 Request. 如下圖所示。
如果該引用這些 js 而忘了引用呢?不會發生 javascript error, 反而像是沒有 client side validation 一般,只出現 server side 的 validation。
這種現象好奇怪,在開發時很難想到是js 引用次數的問題。
2012年7月3日 星期二
五個雲端計算解決方案的本質
現在常常看到廣告都說自己是「雲端」了,連一般的網站都說自己已經雲端化了。到底一般的網站與雲端有什麼不同呢?
今天看了一段話,覺得應該是個較貼切的解答。
five “essential” characteristics of cloud computing solutions, including on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. These attributes enable the agility and cost savings expected from cloud solutions.
以下是自己不成才的翻譯與註解
五個雲端計算解決方案的本質
- 自助式服務:自己要多少個,只要自己線上操作,就可以增加多少。不必等!(如果還需要填申請表,就不是雲端)
- 網路存取:寬頻且容易存取 ,透過標準網路通訊的方式提供給各平台使用。
- 資源集區:與容錯能力有關 。大量可自由分配運用的實體或虛擬的資源。
- 快速彈性:能快速反應。例如增加一個 Web Server,應該在很短的時間內(如5分鐘)就可以取得。
- 量化的服務:計算費用的。 可量測的使用量。
2012年6月15日 星期五
Visual Studio 2012 Test Platform
在 VS 2010 中寫單元測試,是一件簡單的事,但是內建的 ms-test 的效能卻是不好。而其他的 test framework 如 xUnit, MbUnit, NUnit 等,又難與 Team Foundation Server 整合。於是,只能一直使用 ms-test。
在 VS 2012 中,Test Framework 不再是單元測試中第一個要選擇的對象了。因為它有了新的概念:Unit Test Platform。
Unit Test Platform
簡單來說,我們現在可以在 VS12 中作許多不同Test Framework 的單元測試平台了。
安裝 xUnit Test Runner
在 Extensions and Updates 中,找到 xUnit Test Runner 並安裝。
接下來,建立一個平常的 Class Library, 並用 NuGet 安裝 xNnit ,以及引用 ms test framework. 完成如下圖的 References
再來,就寫測試吧。
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Threading;
6: using Microsoft.VisualStudio.TestTools.UnitTesting;
7: using Xunit;
8:
9: namespace ClassLibraryTest
10: {
11: [TestClass]
12: public class Class1
13: {
14: [Fact]
15: public async void Test()
16: {
17: var sut = new AsyncClass();
18: await sut.DoAsyncWork();
19: Xunit.Assert.Equal("Hello", sut.Property);
20: }
21:
22: [TestMethod]
23: public void Test2()
24: {
25: Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(true);
26: }
27: }
28: }
執行測試
在左方的 Test Explorer,就可以看兩種不同的 Test Framework 的測試都可以被找到,且測試完畢。
結論
VS 2012 中的測試,看來又大幅提升了微軟在測試界的地位了。