2015年11月28日 星期六

把 snapshot 放到 ramdisk 增加 revert 效能

使用 vmware 時常常會需要在某個時間點作 snapshot 然後再 revert 回去
但是 revert 時常常會等很久  研究了以後發現 vmware 會把 snapshot 存成檔案
檔案大小就是 guest host ram 的大小
而 revert snapshot 應該就是從 disk 中把 snapshot 檔案讀回 ram 中
所以會發現 guest host ram 越大 revert 越慢的情況

既然如此 效能應該是卡在讀取 snapshot 檔案的部分
假如把 snapshot 檔案放到 ramdisk 裡面應該就能增加 revert 的效率

vm 主要的描述檔 vmk 中有個設定是 fileSearchPath


我試著在這位址中加入 ramdisk 的位址
然後把 snapshot 檔(vmem, vmsn) 放到 ramdisk 中
revert 完全沒問題 看起來速度的確有變快
如果是需要常常 revert 的使用情況
這個方法應該會很有幫助

2015年11月14日 星期六

Visual Studio 2010 MVC unit test fail with IIS Express

在 visual studio 2010 下面開了一個 MVC 專案, 然後啟用 unit test 想要看 code coverage rate
但是 test fail, 看 vs 報出來的訊息是 no agents are marked online to execute test run



看不懂這是甚麼意思, 拿去 google 後也找不到甚麼有用的訊息
花了很多時間上網查資訊, 發現我當初在啟用 code coverage 時的選項好像跟網路上的教學不太一樣





怎麼別人的路徑都是<Solution Directory>, 我是 local url 呢
試了一陣子才發現, 因為我的 project 是設定成用 IIS express debug
當我把 debug server 改成 vs 內建的 visual studio development server 後
多了一個選項讓我選了


之後終於成功跑出 unit test

不過奇怪的是網路上都只有說要用 IIS Express 來 debug MVC project
誰知道跟 unit test 一起用會出問題阿~~

2015年10月20日 星期二

pietty 0.3 version 支援拖曳上傳檔案


在 windows 下連到 remote linux server 作開發
有時候會需要把檔案丟到 remote server 上

之前用過Xshell 支援拖曳檔案直接上傳到 remote server 上
不過 remote server 需要安裝 lrzsz

在不希望安裝額外套件的情形下 scp 應該是最方便的選擇
不過 windows 上沒有內建 scp command
最近才發現原來 pietty 0.3 版本有很方便的功能
ssh 連上 remote server 後直接拖曳檔案就可以上傳到 remote server
應該算是目前最簡單的做法

2015年4月15日 星期三

pymssql access sql server instance on linux

當使用 pymssql 連接 sql server 上不是 default 的 instance 時
如果是在 windows 平台上, 可以直接用
servername\instance  這樣的形式連上 sql server

但是在 linux 上就不行
一個可行的替代方案是  找出該 instance listen 的 port
然後用 servername:port 的方式連上 sql server

reference:
http://www.pymssql.org/en/latest/ref/pymssql.html#pymssql.Connection

pymssql needs commit if modify tables

用 pymssql 有一點需要注意的是  假如執行會修改 table 的 SQL 語句
在執行完必須要呼叫 commit
即使是執行 stored procedure 也是一樣
否則會發現 table 的內容都沒有被修改

2015年3月18日 星期三

設定 Windows builtin FTP server passive mode port range

當設定完 windows builtin FTP server passive mode port range 之後
按下 apply  你會發現設定沒有啟用

當你在 IIS manager 將 FTP server restart 之後  你會發現設定沒有啟用
你必須要在 service panel 中將 Microsoft FTP Service restart 才能將設定啟用

天殺的 window

Rerefence:
IIS7 FTP7 Passive Mode Problem: Ignoring "Data Channel Port Range

2015年2月26日 星期四

Windows 7 安裝 pyminizip

python 內建有 zipfile library, 但是它沒辦法創建有密碼的 zip 檔案
所以必須要用第三方 lib, 例如 pyminizip

在 windows 上安裝完最新的 python 2.7.9 會連 pip 也一起安裝進去
但直接用 pip install pyminizip 會出現 error 找不到 zlib.h
pypi 上 pyminizip 的介紹有寫道它依賴於 zlib, 所以必須要先安裝 zlib

zlib 官網 可以下載到 windows 版的 zlib dll, lib 跟 header 檔
這邊有一個要注意的是下載的 lib 檔名稱為 zdll.lib, 應該是錯的
要記得改名為 zlib.lib, 否則之後 link 會出現錯誤

根據 pip 的 error log 顯示, 在 pip install pyminizip 的過程中需要 compile 一些 .c 檔
這些 .c 檔會用到 zlib.h
所以要把 zlib.h zlib.lib 放到適當的地方讓 cl.exe 找的到, 像是 VC++ 裡預設的目錄

C:\Program Files\Microsoft Visual Studio 9.0\VC\include
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib

如果安裝了不只一版 VC++, error log 裡也會告訴你他是用哪一版  VC++ 去 compile 的

接著照 zlib 的 readme, 把 zlib1.dll  放到
C:\windows\system32\
C:\windows\system

然後再執行 pip install pyminizip, 就可以很順利的成功了

2015年2月16日 星期一

log4net 沒有寫 log

曾經碰過 log4net 一個奇怪的問題, 就是在程式中呼叫 GetLogger 的時間點不同有時會讓 log 檔案出不來

後來發現這是因為在程式中有用到一個 library, 那個 library 也有使用到 log4net
但是卻沒有在 AssemblyInfo.cs 裡面宣告 log4net config
所以假如在用到該 lib 後面才呼叫 GetLogger 的話, log 檔案都不會出現
解法很簡單, 只要在使用到該 lib 之前呼叫 GetLogger 就可以了

2015年2月12日 星期四

不能直接從 Object 轉成 Enum 型別

最近遇到一個問題, 就是從 SqlDataReader 讀到的整數轉成 Enum 型別會有 exception
試過轉型成 String 沒甚麼問題, 但就是轉成 Enum 型別會出錯

後來發現因為都是用下標運算子去存取 DataReader, 所以拿到的型別是 Object
而在 DataBase 中存取的整數欄位型別是 TinyInt, 也就是 byte 型別
經過實驗才發現, 原來 Object 中存放 byte 型別時, 不能直接轉型成 Enum
Object 只有存放 int 型別時才能直接轉型成 Enum

public enum E
{
    E1
}

byte b = 1;
Object o = b;
E e = (E)o;    // Exception!!

int i = 1;
o = i;
E e = (E)o;    // Works find!

2015年1月8日 星期四

SQL query with like

在 C# 使用 SQL query 的參數如果要加 % 的話, 要用 + 號
例如


cmd.CommandText = "select * from MyTable where Arg like @Arg+'%'";

2015年1月7日 星期三

定位 PE file section table 位置

PE header 中有一個欄位叫做 SizeOfHeaders.
但是這個欄位實際上只是方便給人看得, PE 檔案實際上的 header 大小不一定要跟這個值一樣
程式也可以順利執行

因此, 當要定位 section table 時, 也不能用 SizeOfHeaders 來算
正確的算法應該是

dosHeader.e_lfanew +
sizeof(ntHeaders.FileHeader) +
sizeof(ntHeaders.Signature) +
ntHeaders.FileHeader.SizeOfOptionalHeader;

Reference:
http://bbs.pediy.com/showthread.php?t=152786

2015年1月5日 星期一

VMWare unknown invalid VM

最近在 VMWare ESXi 上面發現了有台 VM 顯示 Unknown invalid
發現是因為 VMWare host 讀不到 .vmx 檔案時會出現這個錯誤

但是去 datastore 看時發現 .vmx 檔案還在, 也可以讀取
看來應該不用重新建立 VM
只要把 VM 從 Inventory 移除再加入就好了

Reference:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2172