2009年7月31日 星期五

Visual Studio Tricks: 建立臨時專案

您是不是和我一樣,常常需要測試一些小程式片斷呢?
常見的例子,如 string.Format(“{0}”, 32.331F) 如何只顯示1位小數,或測試 Regular Express ?

之前,為了測試這些臨時性的專案,也建立了一堆的程式,放到了我的硬碟。
有多少呢?太多了吧,如下圖。

image

這都需要找時間清一清,而且,這已經是努力控制之下的了。

要如何建立臨時專案呢?有兩個步驟。

步驟一:取消 Save new projects when created

在功能表的 Tool/Options,找到如下圖的地方,取消 Save new projects when created 的勾選

image

步驟二:按 Ctrl + Shift +  N

也可以在功能表上選 File/New/Project 啦!。如下圖,注意到此時不會要您選儲存的位置。

image

運作起來與一般的專案並沒有差別。但在儲存 solution 時,會出現如下圖的視窗,要您選位置啦!編號也改成最後的號碼 + 1 了。

image

2009年7月30日 星期四

CodeRush Express

覺得 Visual Studio C# IDE 環境不夠好用嗎?可以試試這個 CodeRush Express.

免費的哦!

2009年7月28日 星期二

Microsoft Visual Studio Tools for the Office System Power Tools v1.0.0.0

開發 Office 2007 的程式,如果是以 xml 的方式來處理文件時, 最為麻煩的一件事,是必須先改名為 .zip 檔,然後解壓,然後再觀察 xml 的 layout,relations。
難道沒有一個好的工具嗎?
有的。

Microsoft Visual Studio Tools for the Office System Power Tools v1.0.0.0

安裝完畢後,打開 Visual Studio 2008,之後直接在檔案總管以拖拉方式拖進 Visual Studio後,就會打開如下圖的視窗。

image

觀察一下 document.xml 吧!這是一個 word 文件的入口。Hello.docx 是一個超簡單的 word 2007 文件,裡面只有一句 Hello,及一個註解「This is good start」

image

打開 document.xml,可看到如下的 xml。看到了 Hello 的文字呢。而且,該段文字是包在一段註解 <w:commentRangeStart w:id=”0” /><w:commentRangeEnd w:id=”0” /> 。

image

而 w:id=”0” 的註解,需參考 comments.xml,如下圖。注意到反白的 <w:comment w:id=”0”  ,就是id=0 的註解。

image

這個小小的範例,可以了解MS2007 的 xml 格式是強大且充滿彈性的。了解了 xml 的格式後,就可以對 office  文件進行自動化的文件產生,對於客戶的需求,又多了一分把握。

2009年7月16日 星期四

IIS LogParser

在調整校能的過程中,除了 VSTS 的 LoadTest 之外,也常常需要分析正式伺服器上的 IIS  Log.
但是,此log為純文字檔,要如何分析呢?我們當然希望匯到資料庫,再以 sql 語法找出想要的資訊。

將IIS Log匯出到資料表的過程,微軟早就出了這樣的工具,LogParser

指令,像下面即可。

"C:\Program Files\Log Parser 2.2\LogParser.exe " "SELECT TO_LOCALTIME(TO_TIMESTAMP([date], [time])) as [createDate], [s-sitename], [s-ip], [cs-method], [cs-uri-stem], [cs-uri-query], [s-port], [cs-username], [c-ip], [cs(User-Agent)], [sc-status], [sc-substatus], [sc-win32-status], [sc-bytes], [cs-bytes], [time-taken] INTO IISLog FROM C:\IISLog\ex090714.log WHERE TO_LOWERCASE (EXTRACT_EXTENSION(cs-uri-stem)) NOT IN ('gif';'jpg';'png';'bmp';'ico';'axd')" -o:SQL -server:serverName -database:IISLog -driver:"SQL Server" -username:userId -password:pwd -createTable:ON -i:W3C

棒吧!連選資料的方式,都像是 sql  語法。

SharePoint Designer 2007 免費了

看來這個不賺錢吧。改成免費了。

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42

原來2009/04/09 就已經免費了。一直不知道這個消息。

Microsoft ReportViewer 的 Memory Leak 問題

最近,發現當ReportViewer繫結的資料太大時,會發生 Memory leak。也就是吃記憶體,而且不會吐回來。

有圖為證。

圖1:load test 初期,memory 使用量直線上升。

image

圖2:load test 停止後,memory 使用量不會釋放回來。

image

程式也極為簡單,使用了 ReportViewer,  ObjectDataSource。

程式碼可在這裡下載。相關的討論也非常多

2009年7月7日 星期二

軟體專案最重要的技術

在執行軟體專案的過程中,什麼技術是最重要的呢?

UI 的呈現技術嗎?此大類可包括 asp.net WebForm, MVC, Ajax, Silverlight, …等。
商業邏輯實作嗎?此類可包括 enterprise services, transaction, workflow, bpel, BizTalk, ADO.NET Data Service, Web Service, WCF, … 這類真的寫不完,etc.
資料存取技術嗎?此類可包括 Sql server, Oracle, ADO.NET,LINQ to SQL,… 等

每一個技術都需要 study,也有過時的時候。正因為有過時的時候,就不會是「最重要的技術」了。

那我心中最重要的技術是什麼呢?還是回到人類最基本的技巧:溝通。

不會溝通,就沒有辦法與同事共同開發專案,沒辦法良好地表達自己的意見,發表新技術,導入新的SOP。
我曾經有一次經驗,在與客戶討價還價要不要實作一個小功能。討論了20分鐘,決定放棄己見。後來實作加測試這個小功能也是20分鐘左右。

又另一個例子。公司同事利用小技巧,預填了未來的工時,以規避「每日填工時」的困擾,等到一段時間後,再一次調整。這樣的行為,我認為工時會填的不正確,有誰能很精準的在星期五時想起星期一做了哪些事情呢?光這個事情,我又花了兩小時來溝通。

溝通的成本,真的比想像中來得高很多。而且溝通的技巧,不只是在專案上,在朋友、家人都可以用到,不會過時。

所以,溝通技巧,是我認為是「軟體專案最重要的技術」,是最值的投資的事了。

2009年7月3日 星期五

網頁如何在 Enter 鍵被按下時,改成 Tab 鍵 Version 2

上一回,筆者有提到一篇 [Asp.Net] 網頁如何在 Enter 鍵被按下時,改成 Tab 鍵
這一個小技巧的確有效,可是有人提到「如何再加上自動跳下一個 textbox」?

這是什麼意思呢?例如在輸入電話號碼時,格式為 (02)87121298。在設計頁面時,會產生如下畫面。

需求

當輸完 035 後,由於區碼最多三碼,系統應將游標自動跳到下一個 textbox

image

當輸完02後,使用者可以按 Enter 或 Tab 鍵將游標自動跳到下一個 textbox

image

解法

修改上一篇的解法,並加入在 http://wnas.nl/ 找到的 autotab 功能後,修改如下

WebForm1.aspx

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

<!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">
    <title></title>
    <script src="jquery-1.3.2.js" type="text/javascript"></script>
    <script src="autotab.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="vertical-align:middle">
        請輸入電話號碼(<asp:TextBox sam="xxx" ID="TextBox1" runat="server" MaxLength="3" 
            Width="26px"></asp:TextBox>)
        <asp:TextBox sam="xxx" ID="TextBox2" runat="server" MaxLength="8" Width="66px"></asp:TextBox>
    </div>
    </form>
    <script type="text/javascript">
        $(document).ready(
            function() {
                $('input[sam]').autotab();
            }
        );
    </script>
</body>
</html>

autotab.js

jQuery.fn.autotab = function() {
    jQuery(this).keyup(function(e) {
        switch (e.keyCode) {
            // ignore the following keys 
            case 9: // tab
                return false;
            case 16: // shift
                return false;
            case 20: // capslock
                return false;
            default: // any other keyup actions will trigger 
                var maxlength = jQuery(this).attr('maxlength'); // get maxlength value
                var inputlength = jQuery(this).val().length; // get the length of the text
                if (inputlength >= maxlength) { // if the text is equal of more than the max length
                    jQuery(this).nextAll('input[sam]:first').focus(); // set focus to the next text field
                }
        }
    }).keydown(function(e) {
        if (event.keyCode == 13)
            event.keyCode = 9;
        }
    );
}

[Project 2003]如何設定專案在儲存時,自動發佈專案計劃

問題

審核完工時後,我常常只會儲存專案,忘了「共同作業/發佈/專案計劃」。有沒有更簡單的做法?

解答

設定此專案在儲存時,自動發佈專案計劃

步驟

1. 以Project 2003 打開專案,執行「共同作業/共同作業選項」

image

2. 視需要勾選「新增及變更的工作分派」、「專案摘要」、「包含完整專案計劃」後,按確定鍵。

3. 儲存專案

image

2009年7月1日 星期三

使用 MOSS 2007,要 check in 時發生this document was checked out to your local drafts folder but the local copy could not be checked in to the site

天啊!不知道為什麼,取出一個文件後,要存回時竟然發生this document was checked out to your local drafts folder but the local copy could not be checked in to the site。
如下圖。

image

這是怎麼回事?在同一目錄的檔案都正常,唯有這個檔案才這樣,難道是我編輯太久了嗎?

目前我毫無辦法。只能

  1. 保留在C:\Users\charles\Documents\SharePoint Drafts 下的檔案。
  2. 在 MOSS 上將該檔案存回。
  3. 將1步驟的檔案、改個檔名,再 check in 到該 site 上。

就是避開這個檔案。

Share with Facebook