1. 電腦也要過年..

    沒想到過個年, Microsoft 也有一堆更新 & 新版發行...

    1. SQL 2005 SP2
      目前為止我都還把 SQL2005 當 SQL2000 用, 嗯, 有啥新功能就不管它了, 裝了再說..
    2. ActiveSync 4.5
      換了之後, 除了 icon 漂亮點之外, 好像沒啥不一樣, 不過裝了後合作關係都要重建一次.. :@
    3. Virtual PC 2007
      這個一定要推一下, 一路從 Connectix Virtual PC, 用到 Microsoft Virtual PC 2004, 換到 Virtual PC 2007 Beta, 再換 RC, 終於換到 2007 了 :D, 支援 Intel VT, CPU 有支援的可以裝看看..
      另外一個龜很久的 Virtual Server 2005 R2 SP1 到底啥時要出來?
    4. 過年前一口氣爆出十幾個 security patch ...

    2007/02/25 技術隨筆 有的沒的

  2. Network Bridge in Windows 2003...

    又在沒事找事做了... 這次是搬硬碟, 外加把部份網路從 100Mbps --> GBE, 不過這次沒有要添購新配備...

    我很迷信大廠的硬體, 自己有在開發軟體最清楚, 只有大廠才有那個本錢把軟體的 bug 都抓乾淨, driver 更是明顯... driver 寫不好鳥問題一堆, 到這種年紀已經沒力氣跟那堆 driver 慢慢奮鬥了, 只要穩定可以用不要出問題就好...

    因此之前買了一批 Intel 82559 的網路卡 (不是只有 chip 是 82559, 而是整張卡都是貼 intel mark), 有 Intel PRO/100 S 跟 PRO/100 Management+, 當時一次買了十幾張, 因為 yahoo 賣家要一次賣掉... 所以當然就全家的網卡全部換成這批. 就算主機板有內建 GBE, 還是把它給關了用 Intel 82559... 換了果然有差, driver 比那堆 d-xxxx, rxxxxt 的好多了, 也從來沒碰過傳一堆大檔傳到一半, 網路會停掉的問題, 而且經過便宜的 hub, 網路傳輸速率隨便也有 8x% ...

    不過再怎樣, 100Mbps 終究抵不過 1000Mbps, 試過幾次從 server 拉 iso 到 desktop pc 燒 dvd 就受不了了, 一定得先把 iso copy 到 desktop pc 再燒, copy 得等上十分鐘, 燒完又是十來分鐘, 還要再 verify 又是十來分鐘... Orz

    忍了一陣子, 決定趁過年調整一下, 剛好 desktop pc / server 的主機版都內建 Marvell GBE 網卡, 就把它們的封印拿掉直接對連, hub 也省了, 反正只有兩台有 GBE. 改這個很簡單, BIOS 把 LAN 打開, 網路線拔過去插上去就收工了.

    麻煩的是網路設定的地方... 原本的架構是這樣, 有點小複雜, 除了基本的 NAT 之外, server 上的 RRAS 也設定了 demand-dial, 會自動連到公司的 VPN, 同時也是 VPN server, 接受我在外面撥到家裡的區域網路, 其它 DNS, DHCP, IIS, Net Share 等等的就不畫了..

     

     

    最初的想法是, 直接多增加一個網段, 專門放 GBE 的 node. 不過家裡也才幾台電腦, 這樣弄好像太小題大作了, 加上這麼一來設定就越來越複雜了, DHCP 要調, static routing 要改... [:'(], 後來放棄, 直接用最不用大腦的 solution ... software networking bridge! 架構如下:

     

     

    還好 windows 2003 有內建 bridge, 正好把 LAN 的兩張網卡串起來, 邏輯上只有一張 network interface, 只是實體接的線路有兩條 (100mbps / 1000mbps), 啥軟體設定都不用改...

    試了一下效果, 不錯, 直接 copy 檔案就有 30% 的使用率... 跟以前 100mbps 的 90% 來比, 隨便也有三倍多的提升. 不過 30% 的瓶頸似乎是掉在 disk i/o 上面, 同時從不同 disk 拉檔案就可以飆到 60% ..

    之前對 Marvell 的 chip 很感冒, 公司的 virtual server 2005 就是內建這個 chip, 流量很大, 開個一兩個禮拜網路就不通了, 但是怎麼看都正常, 就是網路不通, 得把 LAN 停用再啟用才會正常, 如果剛好人不在公司就完了, 得等隔天拔 monitor 直接到主機上面去點... 後來加了張 Intel 的網卡, 這張就一點事都沒有... 家裡流量應該不會這麼大吧? 哈哈, 就加減用一下就好..

    2007/02/22 Tips 技術隨筆 有的沒的

  3. IE7 終於升級成功了.. :~

    看起來沒啥了不起的標題, 哈哈... 自從IE7推出以來, 這是第四次升級了... 之前每次裝好後, 一開IE7就應用程式錯誤, IE7就自己關掉了, 連進去打網址的機會都沒有 :~

    之後每次看到 Microsoft 有新的 update 之後, 就會試著再裝一次, 終於這次過年前一大票的 security patch 裝了之後, IE7 就正常了 :D

    原來裝 IE7 也是要看時辰的, 大年初一就 ok .. Orz

    2007/02/19 Tips 技術隨筆 有的沒的

  4. Community Server 2007 Beta 1 Available Now

    終於出來了, 從 scott 的 blog 看到的... 想要試看看的可以到這裡下載.

     

    新版看來最大的改進就是換了 theme engine, 可以直接在 browser 上調整 UI, 效能也提高了.. 不過還沒試過也不曉得差在那裡 :P

    其它改進我列幾個比較特別的:

    1. share membership store
      據官方說法, 可以好幾個友站 share 同一個會員資料庫... 我在猜大概是透過 web service, 實作一套 membership provider 吧...
    2. 可以直接把文章匯出成單一檔案, 包括圖片... ( .mht 檔? )
    3. demo.exe, 不需要安裝就可以試用... 應該是把 cassini 那種東西包進來吧, 不過試了一下, 我之前自己弄的批次檔還比較好用 :P

    其它就等裝了再研究看看, 先祝大家新年快樂 :D

    2007/02/18 .NET Community Server 技術隨筆 有的沒的

  5. Web Site Application + Sandcastle

    這次要解決的問題, 跟上次想要在 Web Application 裡執行單元測試的問題類似, C# 有跟 Java 類似的 comment help, 可以把寫在註解的文字萃取出來, 製作成一份文件...

    不過, 過去的 NDoc, 到現在新掘起的 SandCastle, 都要求兩個東西:

    1. Assembly Files: 可以透過 reflection api, 取得 asm 的 metadata
    2. Compiler 在 compile code 時匯出的 xml document

    通常 help 製作工具都需要這兩種檔案才能制作 help, 不過 asp.net 2.0 引進的 web app, 正常情況下跟本拿不到這些東西, 因為 code 只要丟在 App_Code 就可以跑了, 跟本不需要 compile 成 dll, 更不用說 xml document 了.... 想到幾種可能可行的辦法, 今天就抽空試了一下:

     

    在 web.config 裡加上 compiler option 輸出 xml

    要產生 dll 倒不難, 有一堆方法, 可以用 aspnet_compiler.exe 這個工具, 直接 build web site, 可以輸出 DLL. 不過還缺 xml doc, 翻了翻 MSDN, 找到一條路, 就是在 web.config 裡可以加 compiler options.. 加上去之後, 就會產生 xml document...

    <configuration>
        <system.codedom>
            <compilers>
                <compiler ...... compilerOptions="/doc:c:\sample.xml" />
    ...

    簡單寫個 web app 試了一下可以 work, 但是放到 production site 就不行了, compile 的過程中, 你會看到這個 xml 檔案不斷的產生出來, 又被砍掉... 原來 App_Code 目錄下, aspnet engine compile 的方式是以目錄為單位, 每個目錄下的 *.cs 會被當成一個 project compile 一次, 換個目錄再來一次, 所以你指定的 xml document 檔會不斷的被覆蓋...

    氣的是這個參數還一定得指定檔名, 不能指定 *.xml 或是不指定之類的... 所以除非你的 App_Code 目錄下只有一層, 不然就放棄吧..

     

    Web Deployment Project

    Visual Studio 2005 有個附加的 Web Deployment Project, 在 SP1 之後就直接內建了, 它大概的作法就是 aspnet_compiler.exe 先輸出一堆 assembly, 然後再用 asm merge tools 把它併成單一個 assembly dll file. 是可以很簡單的拿到 dll 了, 不過產生 xml document 的部份仍然一樣無解

     

    寫 msbuild project file

    在 google 查這個問題時, 看到有老美用的作法是自己寫一段 task, 把所有 *.cs 加到 csc task 裡... 不過太麻煩了, 一來我整個 build 程序沒有用到 msbuild project file, 二來我也不熟, 寫起來有點辛苦..

     

    手動下 CSC.exe 指令

    來硬的, 我自己想辦法生個 dll + xml 總可以了吧, 反正我的目的只是要 help, dll 用完就丟也沒關係, 只要我不要寫兩份 code 就好. 查了一下指令, 可以這樣用:

    csc.exe /out:App_Code.dll /doc:App_Code.xml /target:library /recurse:App_Code\*.cs

    哇哈哈, 這次就成功了, dll 跟 xml 都成功的產生出來, 之後就丟給 NDoc / Sandcastle 就解決了. 額外抱怨一下, 雖然 SandCastle 能夠處理 .net 2.0 額外的功能, 像 generic 等等, 不過速度真是爆慢... Orz, 以前用 NDoc 約 20 min 能夠 build 好 chm, 現在用 sandcastle 要跑 60 min ...

    雖然如此, 不過這個方法還是有幾個缺點.. 列一下我已經確定的:

    1. App_Code 下可以包含 source code 以外的檔案.
      除了 .cs 這種 source code 會被自動編譯之外, 還有其它型態的檔案也會自動被處理. 比如 wsdl 放著就會自動 gen web service proxy, xsd 放著就會自動 gen typed dataset 的 source code... 這些是單用 csc.exe 沒辦法解決的
    2. 另外像 .ascx .aspx 對應的 cs, 也無法用 csc.exe 處理, 因為還有另一半的 partial class 是由 template file 會透過 asp.net engine 動態 parsing 後產生 .cs 再一起 compile, 這部份也沒有辦法單靠 csc.exe 處理掉
    3. 理論上還是有辦法把這些動作加在 batch file 或是 msbuild task 裡, 不過這些通通做下來, 那等於你自己搞一個 aspnet_compiler.exe 了... 工程太大, 不划算...

    最後我選擇放棄這些遺漏的部份. 因為 help file 主要就是為了能共用的 class library 能有對應的文件, 上面漏掉的三塊都不大會有 comment help 產出, 唯獨 .ascx 還是很需要 help, 不過在沒有更方便的工具之前就先不管它了... 哈哈

    2007/02/16 .NET ASP.NET Tips 技術隨筆