2007-10-08

VMWare ESX Server 彼此之間不能 scp 的問題

今天在整理 ESX 上面的虛擬機器, 想要在某台 esx1 上面用 scp 的方式把另一台 esx2 的檔案 copy 過來, 一直發生 Connection refused 的錯誤, 可是從我自己的 pc 不管是 scp 或是 ssh 到 esx1 或是 esx2 都沒有問題, 只好又向谷大哥求救, 才知道原來在 ESX Server 上有一個設定叫 sshClient 要先開啟, 才能夠讓 esx hosts 之間彼此互相連線, 如圖:

image

如果沒有 UI 的話, 也可以用指令 esxcfg-firewall -e sshClient 達到同樣的效果!

2007-10-07

.NET 類別庫的原始碼釋出

ScottGu 在他的 Blog 上說 .NET 的原始碼包含 BCL, ASP.NET, Windows Forms, ADO.NET, XML 和 WPF (接下來還有 WCF, Wordflow, LINQ) 將會和 .NET 3.5 以及 VS2008 一起釋出。

剛看到這個標題的時候本來沒什麼感覺, 因為 Reflector 就可以做到這件事了, 雖然有些程式碼編成 IL 之後會和原始程式有些出入, 但是已經可以看出 8, 9 成的邏輯了, 可是再往下繼續閱讀之後, 才知道原來不只是這樣!!

以前在使用 Delphi 開發程式的時候, 最令我愛不釋手的特色之一就是不管在設計時期或是執行時期都可以直接進入原始程式碼觀看使用到的類別庫的內容和註解 (雖然不是全部的類別, 但也足夠了)! 後來在使用 Eclipse 撰寫 Java 程式的時候, 只要把用到的 source code 下載回來, 也可以在 IDE 環境中做好相關的設定之後達到和 Delphi 一樣的效果! 有了這項功能, 除了可以了解那些類別的設計哲學之外, 更有助於釐清一些從外表看不出來 (像是 bug 之類) 的秘密!

本來想說這項功能應該是不會在 Microsoft 的產品中出現的, 沒想到 ScottGu 竟然宣布將會在 VS2008 加入這項功能, 並且會在需要的時候下載正確版本的原始程式碼, 不勞 Develper 動手, 的確符合 Microsoft 貼心的一貫作法, 真是令人期待!! 真相圖如下: (2 張就足以說明一切了!)

設定畫面

參考: Releasing the Source Code for the .NET Framework Libraries

2007-10-05

如何讓 TeamBuild 的 BuildLog.txt 顯示更多的資訊

相信如果有在使用 Team System 的人, 應該多少都知道可以建立 TeamBuild 讓建置的工作自動化, 但是也一定會發生一種令人沮喪的情形, 就是任何人 Get 到本機都能 Build, 可是 TeamBuild 就是不會過, 這都是因為 TeamBuild 的建置流程並不完全如我們所想像, 所以 BuildLog.txt 就成為找問題的重要線索了!

習慣看 Visual Studio Output 視窗的人(很多人都不看), 都應該知道在 Build 專案的時候, 可以在從它看到很多訊息, 雖然 Error List 視窗的結果比較美觀, 但是有時候它會保留著之前的錯誤, 就可能會誤導開發人員 Debug 的方向, 所以建議大家如果看不懂 Error List 裡面的訊息, 就找 Output 視窗吧!!

回到正題, 如果在 IDE 環境中, 想要讓 Output 視窗顯示更多更詳細的資訊, 可以從 [Tools]->[Options]->[Projects and Solutions]->[Build and Run]->[MSBuild project build output verbosity] 調整, 如下圖:

image

但是如果希望調整 Team Build 的 BuildLog 又該怎麼辦呢? 在 Source Control 上會有一個 TeamBuildTypes 的目錄, 裡面會有所有已建立的 Build, 每一個 Build 目錄中會有一個 TFSBuild.rsp 檔案, 這個檔案是讓你用來傳一些參數給 MSBuild.exe 程式的, 所以如果想要讓輸出的 BuildLog.txt 更豐富的話, 就先把它 Check Out 下來並加上一行 /v:diag 就可以了, 如下: (改好要記得 Check In 回去才會生效!)

# This is a response file for MSBuild
# Add custom MSBuild command line options in this file
/v:diag

附註: /v:diag 會產生非常非常多的 log 資訊, 如果覺得太多的話, 可以試著把 diag 換成其他的參數, 包括 q[uite], m[inimal], n[ormal], d[etailed] 和最詳細的 diag[nostic]

2007-10-04

Vista 連線網芳和 Samba 的解決方式

Vista 預設裝好之後, 網路共用部分的功能是被關閉的, 想要讓別人可以連到自己的電腦, 必須自己改變一些設才行:

1. 開始->網路->滑鼠右鍵->內容
vista01

2. 啟動[網路探索], [檔案分享權限設定], [以密碼保護的共用]
vista02

這樣子別人就可以看到自己了!

[Samba 篇]

連線一般的 Windows 分享都沒什麼問題, 可是如果要連線用 Samba 架的伺服器, 就會發生無法驗證的問題, 上網 Google 了一下, 找到這篇寫的很詳細!

http://www.builderau.com.au/blogs/codemonkeybusiness/viewblogpost.htm?p=339270746

簡單記一下步驟:
1. 在命令提示字元下輸入 secpol.msc 開啟[本機安全性原則]
2. 選到[本機原則]/[安全性選項], 將[網路安全性: LAN Manager 驗證層級]從原來的[只傳送 NTLMv2 回應]改為[傳送 LM 和 NTLM - 如有交涉,使用 NTMLv2 工作階段安全性]

這樣子應該就可以連到 Samba 伺服器了!! 真是麻煩的 Vista!!

後記: 原本以為從此就可以過著幸福快樂的日子了, 沒想到遇到了 Vista Home Basic 之後, 發現它沒有 secpol.msc 可以用, 真是@!#@$, 不得已只好再向谷先生請教, 終於找到解答, 但是要修改到機碼, 所以要小心點!

步驟如下:
1. 在命令提示字元下輸入 regedit
2. 找到 HKLM\SYSTEM\CurrentControlSet\Control\Lsa
3. 將 LmCompatibilityLevel 從 3 改為 1
搞定!!

註: LmCompatibilityLevel 數字的意義
0=Send LM & NTLM responses  (never uses NTLMv2)
1=Send LM & NTLM - use NTLMv2 session security if negotiated
2=Send NTLM response only, use NTLMv2 if server supports it.
3=Send NTLMv2 response only, if DC accept LM, NTLM and NTLMv2 auth, use NTLMv2 security if supported.
4=Send NTLMv2 response only, if DC refuse LM, accept NTLM or NTLMv2 auth, use NTLMv2 security if supported.
5=Send NTLMv2 response only, if DC,refuse LM & NTLM and only accept NTLMv2 auth, use NTLMv2 security if supported.

vista03

2007-10-03

XSL: 如何計算節點深度

又是一個常用的任務, 簡單, 但是會忘!

<xsl:value-of select="count(ancestor::node())" />

2007-10-02

每次建置 Setup Project 就會跳出 Installer 安裝畫面 - VS2003

今天把一個 VS2003 的程式拿出來做一些修改, 改完之後準備建置 Setup 程式的時候, 只要一 build 就會跳出一個 VS2003 的安裝畫面, 然後就會出現錯誤畫面, 安裝程序倒回, 再前進, 錯誤, 再倒回.....

可是只要把安裝取消, 就一切又順利進行下去, 雖然是無傷大雅, 只要按個取消就能 build 好, 可是好奇心驅使, 就又稍稍查了一下"事件檢視器", 嗯! 有一個警告, 把內容丟給 Google, 找到了!!

只要重新註冊 mergemod.dll 這個 com 元件就行啦!!

cd "C:\Program Files\Common Files\Microsoft Shared\MSI Tools\"
regsvr32 /u mergemod.dll
regsvr32 mergemod.dll

搞定!