2009年6月30日 星期二

如何產生原生格式的 Excel 檔?

產生 Excel 的資料檔,是個老需求了。我也寫過一篇產生 Excel 檔的方法,陳述了我所知道的方法。
我最常使用的方法是 Report Service了,但美中不足的是,Report Service 必須將資料一次吃進來。
我所遇到的資料,有200多萬筆,一次吃進來,當然 Out of memory.

因此,我需要一個直接寫 原生格式的 Excel 檔,而非 csv, xml, html 等格式。

那到底什麼是原生格式呢?找到一個微軟開發的文件,

http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/Excel97-2007BinaryFileFormat(xls)Specification.pdf,怕了吧,共三百多頁!

也有另一個 Open xml 的文件,http://sc.openoffice.org/excelfileformat.pdf,可惜必須以 office 2003 以上來開啟。我的客戶又是Excel 2002,開不了。

現在,找到了一個 open source 的元件, MyXLS,試用一下,還真的很簡單呢!也可支援中文。

可惜,超傷記憶體,寫出70453 筆資料,產生的過程中就使用了 7xx MB。12萬筆,就 out of memory。(我的開發機器,3GB memory,asp.net 最多可用 1.8GB)

其原理是在 memory 組物件,沒有作 swap 到 harddisk的動作。
這個問題,就像 XmlDocument 超傷記憶體一樣,之後才又出了個 XmlTextWriter

不過,若資料筆數少,則這個 MyXLS 可說是相當好用的了。

如果可以的話,想試試 Open XML Format SDK 2.0, 畢竟是微軟自家的東西,想來會比較好用。但現在仍在 CTP,而且 Excel 2002 開不了。

 

20090702 後記:

後來又找到了 NOPI ,看來比 MyXLS 更節省記憶體(26萬筆, 要864MB),且該元件更新頻率較多。比較建議用這個。

微軟不再全力 support OracleClient

根據微軟 ADO.NET Team 的部落格,System.Data.OracleClient Update 提到他們做了一個決定

The Decision

After carefully considering all the options and talking to our customers, partners, and MVPs it was decided to deprecate OracleClient as a part of our ADO.NET roadmap.

 

意思是說,雖然在 .net 4.0 仍然會支援 OracleClient,但會被標示為deprecated (過時,不被建議),請使用 3rd 的元件。

那我們的因應對策呢?新開發案,請使用 ODP.NET,維護案,就維持原來的狀況即可。

2009年6月29日 星期一

伺服應用程式集區 'DefaultAppPool' 的處理序已意外中止了。處理序識別碼為 '6060'。處理序結束碼為 '0x800703e9'。

客戶那裡一直出現這樣的問題。asp.net 1.1 版的程式升級到 2.0 後,速度出奇的慢。

在事件檢視器上,找到了下面的問題。

  1. 伺服應用程式集區 'DefaultAppPool' 的處理序已意外中止了。處理序識別碼為 '6060'。處理序結束碼為 '0x800703e9'。
  2. 事件類型:    警告
    事件來源:    W3SVC
    事件類別目錄:    無
    事件識別碼:    1011
    日期:        2009/6/29
    時間:        上午 10:03:02
    使用者:        N/A
    電腦:    ComputerName
    描述:
    伺服應用程式集區 'DefaultAppPool' 的處理序與 World Wide Web Publishing 服務通訊時發生嚴重錯誤。處理序識別碼為 '3800'。資料欄位含有錯誤號碼。

    請在 http://go.microsoft.com/fwlink/events.asp 查看說明及支援中心,以取得其他資訊。
    資料:
    0000: 6d 00 07 80               m..€   

 

救命啊!即使我在 asp.net 上已在 global.asax 上,在Application_Error上已做好了寫 exception log 的準備,無奈完全看不到任何的 log ,因為在 IIS 上就掛了,來不及讓 asp.net 來寫出log。

怎麼辦呢?解決過程如下。

  1. 在 C:\WINDOWS\system32\LogFiles\HTTPERR 下找到錯誤訊息。
    2009-06-29 08:15:32 172.16.1.87 56735 172.16.1.64 80 HTTP/1.1 POST /myApp/csharpwrapper/Company.WEB.SystemName.FunctionNAme.ClassName,MyApp.ashx?_method=ServerSideGetProductDummy&_session=rw - 1 Connection_Abandoned_By_AppPool DefaultAppPool
  2. 以'0x800703e9' 在 Bing 上追問題,第二個是微軟 msdn上的說明。微軟的問題,當然找微軟的文件。一看,是 stackOverFlow 的 exception.
  3. 再以 Vistual Studio 2008 在 Windows 2003 上 debug,會發現程式碼一如往常,只是跑完ajax 後,就進入的無限迴圈了。

之前同事在 asp.net 1.1 上為了達到 ajax 的效果,使用了一個 open source 的 ajax library,沒想到升級到 2.0後,會造成如此驚人的效果

解法呢?當然是把元兇換掉,讓正牌的 asp.net ajax 上場囉!

2009年6月27日 星期六

MVC (1): Asp.NET MVC 概念說明

MVC

MVC是一個 UI Presentation Pattern。與三層式架構並無直接關聯。但因為我們也常三層式架構,不可避免的,要如何將 MVC 與三層式架構一起使用呢?首先就必須了解什麼是 MVC.

MVC 是一種展現層(Presentation Layer)的架構。

Model 即資料
View 根據Model的數據,進行內容展示的組件
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容

Asp.net MVC

Asp.net MVC 當然是將 MVC Pattern 使用於  asp.net  上。因此,會多了一些特定的特色。

Model 即資料
View 根據Model的數據,進行內容展示的組件。以 asp.net MVC 來說,就是輸出成HTML。
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容。以asp.net MVC來說,就是負責Page flow or Page logic

Asp.net MVC + 3-layer Application

若加上三層式架構概念後,又加上了下表的粗體字。

Model 即資料。取得資料時,需呼叫業務邏輯層,再呼叫資料邏輯層以存取資料。因此,Model 與業務邏輯層相關性高。
View 根據Model的數據,進行內容展示的組件。以 asp.net MVC 來說,就是輸出成HTML。展示層
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容。以asp.net MVC來說,就是負責Page flow or Page logic,(中文可翻成UI呈現邏輯)。展示層

 

image

相依性

有個非常重要的地方,是 MVC 的相依性,即下圖箭頭的方向。例如,View 相依於 Model,意即 View 組件有參考到  Model 組件。相反地,Model 並不知道 View 的存在。

這樣帶來了一些好處。首先,是同樣的數據(Model)可以使用不同的View來展示出不同的呈現方式。再者,我們可針對有邏輯的部份(Model的商業邏輯,Controller 的UI呈現邏輯)做測試。最難的部份View,即包含網頁的部份,才進行人工測試,如美工編排是否正確等。

image

2009年6月25日 星期四

Visual Studio 2008, Test not excuted

今天初次使用 Rhino Mocks 來進行單元測試時,發生了下面的問題。

image 

從來沒看過這樣的奇景。
再點擊「Test run error」的連結後,發現有下面的錯誤訊息。

Failed to queue test run 'charles@MOSSDEV 2009-06-25 11:27:20': Test Run deployment issue: The location of the file or directory 'c:\qa2009\qa2009\epmosslibtest\bin\debug\Rhino.Mocks.dll' is not trusted.
原來,此 dll 是從網路來的,是被鎖定住的。按下「解除封鎖」鍵
image

之後,重新打開Visual Studio,重新進行測試後才正常了。

2009年6月18日 星期四

在 GAC上的元件,如何以得到 StackTrace infomation?

一般在開發元件時,通常不會選擇放在 GAC。除了 GAC 需要 strong name 及版本號,需要管理外,也有一個常見的問題:放在 GAC 上的元件,若出現 Exception 時,會得不到在 .pdb 檔上的資訊。

那真的沒辦法嗎?今天終於找到答案。

以 command ,進入 c:\windows\assembly 後,dir 一下,得到下面左邊畫面。

image image

此時你會發現,此目錄結構與檔案總管的不同。(右邊)
再深入一些,你就會發現,原來放到 GAC 的元件,是放到這些目錄的。而且,在 GAC_MSIL 目錄下,出現了一堆的元件,其中,我的元件 EPMossLibrary 就在其中了。
進入子目錄後,就會發現,原來同一個元件,可以有不同的版本、公開金鑰,是因為目錄編排的關係。

image

再進子目錄,就是元件放置的地方。使用 GACUtil 或檔案總管來註冊,只會複製 *.dll 檔的。那就自行使用 dos command: copy 來複製元件 pdb 吧!

image

這樣一來, StackTrace 的資料就有行號了。

微軟將釋出免費的防毒軟體 Code name Morro

根據 http://www.networkworld.com/news/2009/061109-microsoft-readies-free-antivirus.html 所述,微軟”很快地”將釋出一個免費的防毒軟體,Code name Morro。
很快?是什麼時候呢?應該是這一兩個月的事。

另外,一旦成了免費的軟體,其他的防毒軟體廠商勢必受到影響。到時難免各家廠商又要宣揚自家軟體的功能、效能、防毒率等,讓吸引消費者掏出錢錢來。

看來一場防毒軟體大戰又要開打。

有沒有其他免費的防毒軟體?有,多的是
但、總沒有微軟的聲勢強。

2009年6月11日 星期四

如何在 Vista 上安裝 Windows SharePoint Service 3.0

這是個老問題了。解答是下面的網址
http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2008/05/21/how-to-install-windows-sharepoint-services-3-0-sp1-on-vista-x64-x86.aspx 

該網址的內容會隨著WSS版本更新,也會不斷的更新、修正內容。

真是佛心來著

[Asp.Net] 網頁如何在 Enter 鍵被按下時,改成 Tab 鍵

客戶原本使用 AS400 的系統,非常習慣輸入後按 Enter 鍵,游標會移到下一個輸入框。
這個在Windows 上是不make sense的。但不管在 WinForm,甚至是 Web Form,都有客戶這樣要求。
原因當然是:讓操作人員在新舊系統上的操作具一致性。

在 Asp.net 上要怎麼做呢?由於此行為已經是 client side 的行為了,與伺服器無器。當然需要借重 jQuery  了.
程式碼如下

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication11._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <script src="jquery-1.2.6.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(
            function() {
                $('input[hhh=xxx]').keydown(
            function() {
                if (event.keyCode == 13)
                    event.keyCode = 9;
                if (this.value.length == this.maxLength)
                    event.keyCode = 9;
            });
            }
        );
        
    </script>

    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        input 1:<asp:TextBox hhh="xxx" ID="TextBox1" runat="server" MaxLength="8"></asp:TextBox><br />
        input 2:<asp:TextBox hhh="xxx" ID="TextBox2" runat="server"></asp:TextBox><br />
        input 3:<asp:TextBox hhh="xxx" ID="TextBox3" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Submit it" UseSubmitBehavior="false" />
    </div>
    </form>
</body>
</html>

重點如下:

  1. function myKeyDown 將 Enter 鍵改成 Tab 鍵,另外,當 text 輸入的長度已達 maxLength 時,也強迫改成 Tab 鍵
  2. 當 document ready 後,將具有 hhh 屬性值為 xxx 的 input ,當 keydown 事件發生時,呼叫  myKeyDown
  3. 之後需要這樣行為的 text box,只需增加 hhh=’xxx’ 的 attribute 即可

Asp.net 4.0 Whitepater

http://www.asp.net/learn/whitepapers/aspnet40/ 

隨手一看,有個新功能是 Auto-Start Web Applications

以往,無論是 jsp or aspx,特色是「第一個 Request」都是啟動程式的 reqeust,都跑的最慢。之後的 reqeust 就不會這麼慢了。

但真的很難說服客服這樣的行為是合理的。有時伺服器為了節省資源,也會自行 showdown application pool 的 process 。
如下圖,預設20分鐘沒有任何的新的 request 後,這個 application pool 的 process 就會被回收 (recyle)。

image

Auto-Start Web Applications 必須跑在 IIS 7.5 (Windows Server 2008 R2)上,可以不必收到第一個 request ,就會自行建立 Process。

這算是一個小的進步吧。

2009年6月9日 星期二

Office 常見 FAQ

根據資料分析,這十篇文章看似簡單,但卻是 Office 基礎使用者最想知道的內容。也歡迎您上去瞧瞧或分享給你的客戶或夥伴。

KB ID

Title

879137

PC 對話 – 如何可以容易及快速地開啟 Word 或 Excel

879152

PC 對話 – 為什麼 Excel 2007 中的數字顯示不正確 ?

879161

PC 對話 – 如何利用 Excel 來完成一些簡單的計算

902991

PC 對話 – 為什麼無法在全新的電腦上找到預先安裝的 Word 和 Excel ?

929630

PC 對話 – 如何在 Office 2007 中讓表格看起來更美觀

942129

PC 對話 – 如何在 Excel 2007 中使用文字藝術師讓文字更美觀

942829

PC 對話 – 如何在 Office 2007 儲存檔案格式為 PDF 格式

954219

PC 對話 – 如何在 Excel 2007 中的圖表新增第二個垂直軸

959355

PC 對話 – 如何在 Office 2007 中使用美工圖案來裝飾你的文件

959356

PC 對話 – 如何在捲動工作表時,讓特定的列與欄固定不動

更多完整內容,請參考進化型知識庫文章大蒐集 http://support.microsoft.com/gp/kbplus/zh-tw

clip_image001

該使用哪一種 Mock Object Framework

在撰寫單元測試時,為了降低相依性,必須自行撰寫 mock, stub 等物件。這樣的工作量太大,又不易維護。

於是 smart people 開始發揮想像力與執行力,創造了許多的 Mock Object Framweork.

這一堆的 framework,該用哪一種好呢?尤其是剛入門的我,當然希望採用最多人用的。

參考 http://weblogs.asp.net/rosherove/archive/2007/04/26/choosing-a-mock-object-framework.aspx,發現投票的結果,Rhino Mocks 是最多人使用的了。

image

2009年6月8日 星期一

亂碼的形成

延伸判斷字串內是否有中文字的話題,有人問到了是否可以判斷亂碼的存在?

我知道亂碼的產生原因有兩種

1. 不知道原有的編碼,而以非原編碼來檢視文件。

例如由判斷字串內是否有中文字例中產生的 all.txt文件 (unicode編碼),以ultraedit 打開來檢視 (會以 ANSI 編碼 打開),就會看到不一樣的文字。

由於這些文字顯示時並非預期的樣子,常常看不懂,俗稱亂碼。

這個文件並非亂碼,只是用錯了編碼來檢視文件。因此只要找到了正確的編碼來檢視即可。

clip_image002 clip_image004

        2. 資料儲存體 (storage) 無法支援編碼。例如 sql datatype varchar(50) 存入了王建煊,因為煊存入後會遺失資料,導致讀出時,煊變成了?。

?或方格等,是指無法顯示的字,因此也是亂碼常見的癥狀。

舉例來說,all2.txt 是 all.txt 以 ANSI 編碼另存來的。在儲存時會出現下面的警告。

clip_image006

強迫儲存後,分別找到 29002 的地方,就會發現 ANSI 的字變成了?

clip_image008clip_image010

再以 UltraEdit 來比較,發現兩邊儲存時的不同。「煊」在unicode 存儲成 4A71,而在 ANSI 只存了 3F。

image image

由於亂碼的形成原因不一,因此也難以判斷進而偵測亂碼的存在。

VS2010 Beta1 在 debug 時超慢?

剛剛在 debug 時,發現在 Virtual PC 2007 SP1 上,VS2010 Beta1 的 debug 效能令人無法忍受,每一次都要等個 10秒左右,才會停在中斷點。
爬了一下文,原來是 historical Debugging 在作崇。
打開 tools/Options, 找到 Historical Debugging, 將之 disabled 掉吧!

image

判斷字串內是否有中文字

這是個老問題了,今天做一個完整的 demo

由於 dotnet framework 內的 string 儲存的是 unicode, 因此我們將字元寫到檔案內,看看哪些字碼是中文字。

      Stream stream = File.Open(@"C:\temp\all.txt", FileMode.Create, FileAccess.Write, FileShare.Read);
      using (StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.Unicode))
        for (int i = 256; i < 65536; i++) sw.WriteLine("{0}:{1}", i, (char)i);

打開 all.txt,發現第一個中文字是 19968 的「一」,最後的中文字是40869的「龥」。

image image

所以呢,所有的中文字都在「一」跟「龥」的範圍之內。
最後,要如何判斷字串內是否有中文字呢?這當然是 regular expression 的工作了。程式碼如下

      Regex ex = new Regex("[一-龥]");
      bool isMatched = ex.IsMatch("jjsss 中文 ksks");  //isMatched will be true

PS: 特別符號,日文等,算不算中文字呢?如果連這些都考慮進來,就有得玩了。跟您的客戶 check 一下吧!

image image

2009年6月7日 星期日

iis search engine optimization toolkit

還記得兩三年前,主管問我如何讓搜尋引擎找到我們公司的首頁,並且讓它排的前面一點?

當時記得有 SEO (Search Engine Optimization) 這件事,也看過了 Lynda 相關的課程。 但說實話,在asp.net 上還真的麻煩。

究竟要如何 SEO比較好呢?微軟出了這一個 toolkit,希望在IIS 7 上做 SEO 能更簡便一些。

詳請見 http://weblogs.asp.net/scottgu/archive/2009/06/03/iis-search-engine-optimization-toolkit.aspx

VS2010: Test Project 之 Coded UI Test

在 VS2008 以前,是沒有辦法對 Window Form Application 進行測試的。只能以 Unit Test 的方式進行。這樣會產生一個不良的後果:UI 增加或減少了 control 後,就很難再進行測試了。因為修改UI 後,程式不一樣,測試通常會失敗。

相同的道理,也發生在 Web test 上。例如,一個已經錄製好的 Web Test, 後來因需要增加一個 hidden field. 即 <input type=’hidden’/> …。
在 Web UI 上,使用者鐵定看不到任何變化,因為此欄位是隱藏的,但對於錄製過的 Web Test ,其 Request/Response 會因此而改變。當測試的結果發現了新的資料,該測試到底是正確還是錯誤呢?無法判斷。而這類的問題, Test Project 進行測試時,一律以 Error 回報。
碰到UI 修改後,我們只能重新錄製 Web Test。試想我們錄製的test 不能重複測試,直到錯誤發生後,第一個反射動作是:「錄製的測試不再適用了」,而非「程式有例外」時,以後任何類似的測試結果我們都無法再相信,該測試已經失去了意義。

現在要介紹的 Coded UI Test 不再是解析錄製過程中的 Request/Respose,至少 Windows Form 的程式未必有 Reqeust/Respose 的資料。Coded UI Test 記錄的是測試過程式對哪幾個 control 進行什麼動作,例如對一個名為 txtInput 的 TextBox 元件輸入 “hello, 程湘之間”的 text,或者對 btnGo 的 button 進行 left mouse click 的動作。

舉個例子,一個典型的 asp.net web form, 如下。

Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>





    


    
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblNow.Text = DateTime.Now.ToString();
        }

        protected void btnGo_Click(object sender, EventArgs e)
        {
            txtHello.Text = "Hi, " + txtHello.Text;
        }
    }
}

結果很簡單,不需要做任何說明。
我們增加一個 Web Test, CodedUI Test來做為相互比較。由於 Web Test 已經存在很久了,我僅說明新增 CodedUI test 的過程

首先,在 Test Project 上新增一個 CodedUI Test,再來選擇第二項的「use the recorder」。

image image

按一下「Record Actions」後,開始錄製我們在 Windows 上所有的一切動作。

image

此時點擊 「Internet exploree」,執行我們正常瀏覽網頁的一切,完成後,按「Generate Method」鍵。

image

測試一下吧!兩種測試皆會通過。

image

但,世事多變化,客戶認為 lblNow 永遠顯示最新的伺服器時間是不對的,應改為第一次登入網頁的時間,因此增加了一個 hidden 欄位,並修改 code behind 的程式,如下。

更改後的 Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>





    


    
更改了的 Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                lblNow.Text = DateTime.Now.ToString();
                Hidden1.Value = DateTime.Now.ToString(); // add this line
            }
            else
            {
		//add following line
                lblNow.Text = string.Format("Last time you login is {0}", DateTime.Parse(Hidden1.Value));
            }
        }

        protected void btnGo_Click(object sender, EventArgs e)
        {
            txtHello.Text = "Hi, " + txtHello.Text;
        }
    }
}

測試的結果,Web Test 會發生錯誤,而 Coded UI Test 仍然正確。

image image

看一下 WebTest1 的錯誤原因是 String was not recognized as a valid DateTime. 怎麼會呢?網頁明明執行的好好的。
檢查一下Request ,由於修改前錄製的 Request 並尚未包含 hidden control,因此並不會傳該 control 的值,當然伺服器找不到這個值就會出錯。
而 CodedUI Test 並沒有這個的問題。

image

結論

以往修改網頁後,碰到這樣的問題,只能默默地摸摸鼻子再錄製一次 Web Test。現在有了 CodedUI test 的幫助,就快活多了。

2009年6月4日 星期四

Visual Studio 2010 Beta 1 on Virtual PC 2007 安裝教學

這裡 。好心人永遠不嫌多。

此安裝教學包括了 Team Foundation Server 及 Team Suite

Visual Studio logo

微軟新一代搜尋服務Bing於全球同步登場

與您分享!微軟新一代搜尋服務Bing於全球同步登場,台灣地區的中文介面新功能將在未來陸續釋出。歡迎MVP至www.bing.com 體驗。

三分之二的網路使用者越來越依賴搜尋來做決定1,然而超過七成的受訪者反映目前的搜尋結果過於零碎2。台灣微軟深入了解使用者期待,搭配全新搜尋品牌Bing推出在地化「Bing繽紛搜尋」服務 (isearch.msn.com.tw)。智慧型分類介面不僅讓搜尋結果系統化地依使用者習慣分門別類呈現,提供使用者更方便有效的搜尋體驗,並進一步提供台灣的商家、地圖搜尋、以及台灣的影視、名人和實用搜尋等快速連結。

微軟線上服務事業群台灣、香港暨澳門總經理朱會泳表示:「時下搜尋服務多能協助使用者大量探索網路及尋找資訊,然而使用者往往需要耗費心力從龐大的搜尋結果找到可用資訊。『Bing繽紛搜尋』的智慧分類模式有效協助用戶尋找資訊,並且優化使用者搜尋體驗,再次印證微軟長期致力提供創新搜尋服務的承諾。」

更方便有效的Bing繽紛搜尋

l 在地化的搜尋體驗:搜尋介面除了顯示台灣的美景、名勝之外,同時提供台灣的商家搜尋、地圖搜尋、影視、名人和實用搜尋等,豐富在地化經驗。

l 分門別類的使用介面:調查顯示搜尋結果分門別類是多數使用者最需要的功能,繽紛搜尋可將搜尋結果中找出最具關聯性的資料並分門別類,用最適合使用者瀏覽的方式呈現結果。

l 快速導覽按鈕:半數以上搜尋是為了特定類別的搜尋結果3。點擊快速導覽按鈕,網友可輕鬆的跳到想要的搜尋類別進一步閱讀,改變過往需要頻繁更改、輸入關鍵字、不斷切換分類或開啟新分頁的複雜過程。

l 地圖和商家查詢:使用者可輕易尋找與分享地圖和商家資訊,更進一步的地圖功能可顯示空照圖,了解周遭交通路線,也能透過商家功能尋找住家或其他指定地點附近的各類型商店。

l 熱門資訊:提供時下精彩的熱門資訊,如最夯關鍵字、名人、影視、實用搜尋連接等,滿足使用者對時髦訊息的好奇心,繽紛使用者的網路生活。

微軟新一代搜尋服務Bing於全球同步登場,提供美觀俐落的使用介面搭配方便使用的搜尋類別,台灣地區的中文介面新功能將在未來陸續釋出。

使用者可至www.bing.com 體驗。

 

上面這一段是微軟提供的哦!
我使用的結果還不錯。不過與現有的 google 相較之下,google 除了搜尋到更多的結果(雖然後面的通常不是我想要的),更多兄弟(如 ig, google tool bar)等,還是略勝一籌。

看看 Project NatalWii 的例子吧,我認為 bing 後來勝出的機率實在相當高!

2009年6月3日 星期三

Windows 7 確定10月22日上市

剛剛才看到。Windows 7 確定10月22日上市 

尚未 study 的人,可到 這裡 下載, 可免費使用一年哦!

IE 8 + Asp.Net + Forms Authentication + Multi User Test

已改用 IE8 好一段時間了。
最近,測試 asp.net 寫好的程式時,突然發現以前的登入測試邏輯不通了。

以往,使用 IE 6/7 時,測試不同帳號在 Asp.Net + Forms Authentication 的功能時,會再執行一個 IE。由於這招會開啟不同的 process,asp.net 會因找不到 authenticated cookie 而再度開啟 login page,以完成新的驗證。

因此,可以在同一個開發機器,完成多使用者測試。

IE 8 呢?在 process 的管理上做了相當程度的改變。
首先,開新的 tab ,window, 甚至新的 iexplore.exe ,對使用者來說幾乎是一模一樣的行為。以往的process 管理方法,不但導致了不一樣的結果,也可能因為別的網站有問題,導致同一個Process 的window 全部掛掉,更弄不清楚是哪個網站有問題。因此,IE8 在設計機將這些動作視為相同,因為其目的都是在「瀏覽」。

再來,連到不同的網站,會開啟不同的 process。以不同的tab, window, 瀏覽相同的網站時,會使用相同的 process。這可以使用工作管理員,觀察 PID就可以了解這樣的行為。這樣的行為,稱為 process merge.

因為 process merge 的行為模式,導致上述的測試方法失敗,因為連到了相同的網站,就會使用相同的 process,asp.net 就讀到了相同的 authenticated cookie ,也就會認為是同一個 session 了。

解法呢?就是不要讓 IE 8 進行 process merge.

做法?看下圖便知,加個參數 –nomerge 即可。

image

 

PS: 20090624 微軟有這個連結,其實早就已經設計好這個行為及解法了。真是後知後覺!
新增工作階段

2009年6月2日 星期二

進化型中文知識庫入口網站

微軟不斷地想要讓使用者更方便的找到資訊、找到解決問題的方法。
更進一步地,想要一鍵解決問題。

請參考以下資訊。

進化型中文知識庫入口網站

對於近期所推出各式各樣的中文化技術文章,例如一點通,PC 互動對話以及 Fix it 自動化解答,我們特別設計一個入口網站,讓使用者可以悠遊在不同類型文章中找到最符合自己所需的文章。
馬上體驗…

clip_image001

微軟新的搜尋引擎:Bing

請到 http://www.bing.com search 一下吧!
我使用的結果,大出我意料之外的快!!!真是沒想到!

進入首頁後,速度已經出乎預料快。但是這個底圖…微軟的老毛病還是犯了,忍不住還是放了漂亮的圖案。

image

心想搜尋的結果與速度,和以前的 Live Search 應該不會差到哪去。

以tfs web access做為key words, 搜尋到的資料很多啊!有373,000 筆。與 google 的結果 768,000 也差不了多少。
這時候看倌可能會問:差了一倍,怎麼能說差不了多少。
這時候小弟我會回答:373000,或 768000 ,無論哪一個都看不完。

image

速度呢,Bing 需要0.55 秒,而 Google 需要 0.64 秒。下圖為證

image

image

看來微軟的搜尋大大長進了。
現在就把首頁改到 Bing ,試用一陣子吧!

2009年6月1日 星期一

Microsoft Visual Studio Lab Management 2010 Beta 1

這是一套測試用的工具。此結合了 Hyper-V 的特異功能,讓測試時發生的一切能「盡數還原」,讓開發/測試人員能面對同一個 bug/issue。不會再有「我的開發環境不會發生」的問題。

 

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=9df71545-4524-451b-8a17-9925b64010d2

Overview

Visual Studio Lab Management lets you create and manage virtual environments on a pool of Hyper-V hosts and System Center Virtual Machine Manager library servers. You can group virtual machines into environments and perform life-cycle and snapshot operations on those machines. Used together, Lab Management, Team Foundation Server, Team Test Load Agent, and Team Test Load Controller provide an integrated software testing experience that lets testers attach comprehensive snapshots of the environment to their bugs. Lab Management also lets you automate the authoring and running of end-to-end application life-cycle management workflows.
This release will expire on April 15, 2010. This software is not supported by Microsoft Customer Services and Support (CSS).

當然,我還沒試。

Share with Facebook