星期一, 3月 28, 2016

收集 Windows 效能資訊

雖然有 Cacti 這種萬用工具,但有時受限於安裝,也要有替代方案。Windows 都有內建「效能監視器」,記得先挑一下取樣對象與頻率,大概常用的就是 Processor Time % 之類的,不要留太多(檔案會爆大);時間範圍可以搭配排程來切割。
實際抓朝九晚五的 CPU 使用率,每秒取樣一次,產出預設的 .blg 紀錄大約不到 30MB。
若事後要縮減時間範圍,可以用 Relog 這個微軟官方工具。

星期五, 3月 25, 2016

如何在多人共用的 Windows 找到誰開啟(鎖定)了檔案

微軟官方有提供一個工具 Handle 可以適用在 Vista 或 Server 2008 以上的作業系統,執行的方法也很簡單:Handle.exe -u Part_Of_FileName(完整檔名當然也可以,不需路徑)。
如果找不到,試著用 Administrator 權限執行,看會不會有比較好的結果?

星期四, 2月 18, 2016

FxCop 設定

有時我們在開發的程式會遇到如下圖的狀況
這個問題在編譯或執行階段常見且不算複雜,但若是在 FxCop 因此卡住,就有些棘手。其實有兩種辦法(參考此處):
  • 增加命令列參數 /AssemblyCompareMode:StrongNameIgnoringVersion
  • 修改 FxCop 的設定檔 AssemblyReferenceResolveMode 設定,將 StrongName 改為 StrongNameIgnoringVersion 即可。

星期二, 2月 16, 2016

安裝 Node.js + Oracle Client

Node.js 的火紅,雖然 Oracle 原廠都出來支援了,但在 Mac 的部份,這篇實在也卡了我好久:
  • 裝在 /opt 這段應該是少寫了什麼,目前只有在 user directory 成功的經驗。
  • 最後的 npm install oracledb 請好心點,直接寫成 sudo -E npm install oracledb。
  • 只要稍有差池,莫名其妙的錯誤訊息「node-gyp rebuild」幾乎是誤導大王,還是仔細地核對每個步驟比較實際。
在 Windows 也是依照原廠指示,幾個容易忽略的地方:
  • Visual Studio 預設安裝選項應該是沒有 C++ 的,不符 PreCondition 的要求。
  • 要以「系統管理員」身分在 Developer Command Prompt 先設好 OCI_LIB_DIR / OCI_INC_DIR,再執行 npm install oracledb,否則誤導大王將再次出現!

星期一, 2月 15, 2016

藉由 WebServices 開放資料

通常在跨系統整合面臨的抉擇:到底要直接開放應用系統後端的資料庫,或是在應用系統上準備一些 WebServices 來服務其他的應用系統?比較安全的作法當然是後者,不過通常被認為成本較高,但果真如此嗎?其實這些輪子通常是已經存在的。以 Oracle 來說可以參考這篇,以 MS SQL 來說可以參考這篇以及這篇

星期三, 1月 20, 2016

IIS + Oracle 的系統開發

  1. .NET Framework 內建 System.Data.OracleClient,已被標為 Obsolete,就別再留戀了。
  2. 開發環境一般會安裝 Oracle Client 與 ODAC (Oracle Data Access Component) 兩者,但事實上只要 ODAC 就夠了。若是要直接連 Oracle 查、改資料這個理由,除了 Oracle Client 之外,DBeaver、TOAD、甚至 Visual Studio 都可以用才對。
  3. ODAC 也有分 XCopy 或其他一大堆帶不同元件的包裝,看來 XCopy 的比較單純,利用解壓後批次檔安裝所有部份比較保險,記得要用系統管理權限,事後還要對安裝路徑加入全域 PATH 環境變數,甚至較舊的作業系統可能還要調整該目錄的安全性,開放給所有 Authenticated Users,如果已經開了 Visual Studio 也要重開才能讀到新的環境變數。
  4. 在 64 位元的作業環境,32 / 64 位元的 ODAC 都可運作,但事實上 32 位元的比較方便,原因是 Visual Studio 附帶的 IIS Express 預設還是 32 位元(設定在 Tools -> Options -> Projects and Solutions -> Web Projects),兩者必須搭配。
  5. ODAC 畢竟還是 Native,其實早就有 Oracle ManagedDataAccess NuGet Package 可用,安裝管理都方便。就算是舊程式轉換也只要改 Namespace (Oracle.DataAccess -> Oracle.ManagedDataAccess) 就好。
  6. 也不再仰賴 tnsnames.ora 設定連線資訊,可以查查 Oracle 有個名詞叫 EZCONNECT。例如我們以前在設定檔寫 DataSource=abc;User Id=... 還要搭配 tnsnames.ora 其中一段 abc=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...,現在只要改成 DataSource=<HostNameOrIP>:<Port>/abc;User Id=... 就夠了,幹嘛要分兩個地方設定?

星期日, 1月 17, 2016

調校 64 位元環境下的 Visual Studio + IIS Express 執行 32 位元應用程式

過去常在 64 位元環境下的 IIS 接觸到這個議題,通常都是多人共用的測試機或正式機,沒想到為了難搞的 Oracle,連個人開發環境也要講究 32 / 64 位元的參考與執行環境搭配,而且驚訝於許多人們因此被迫放棄了 IIS Express。其實這個問題不難,但由於 IIS Express 一直沒有管理介面,讓人總搞不清楚設定,就參考一下這篇吧。