2012-04-14

CentOS

Check CentOS Version

cat /etc/*release*
or
$ cat /etc/redhat-release

install httpd
$ yum install httpd




Accept port 80
vi /etc/sysconfig/iptables
add line into iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
restart iptables
service iptables restart

2012-04-03

常用軟體工具 Software & Tools

Virtual Machine
VirtualBox
VMware Player VMware 的免費產品,從4.0版開始可以建立自已的虛擬機喔


SSH Client
PieTTY Free telnet/ssh client
PuTTY Free telnet/ssh client
WinSCP Open source SFTP/SCP/FTPS/FTP Client for windows




Microsoft Visual Studio
MSBuildShellExtension Build Visual Studio solutions and projects from Windows Explorer.
Git Source Control Provider 在方案總管操作 GIT 版本控制的擴充功能

Version Control System
Apache Subversion Open source version control system.
TortoiseSVN Windows Shell Extension for Subversion
Git The fast version control system.
msysgit Git for Windows
TortoiseGit Git Version of TortoiseSVN.

Browser
Google Chrome
Firefox
Safari Safari-zh-cht
IE IE-zh-TW

Chrome Extension


DNS
Dual DHCP DNS Server


2012-03-22

Excel VBA: Remove Empty rows


Remove active cell empty rows
------------------------------------
Sub RemoveEmptyRows()
    Dim R As Range
    Set R = Application.ActiveCell
   
    Columns(R.Column).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

2012-03-15

CentOS 6 install VMware Tools

# cd /mnt
[mnt]# mkdir cdrom
[mnt]# mount /dev/cdrom /mnt/cdrom
[mnt]# cp /mnt/cdrom/VMwareTools-8.8.2-590212.tar.gz /tmp
[mnt]# cd /tmp
[tmp]# tar zxvf VMwareTools-8.8.2-590212.tar.gz
[tmp]# cd vmware-tools-distrib/
[vmware-tools-distrib]# ./vmware-install.pl


安裝完成後可用下面指令更改設定:
vmware-config-tools.pl

2012-03-11

Get Method Name


取得目前執行的函數名稱
using System.Diagnostics;

// get call stack
StackTrace stackTrace = new System.Diagnostics.StackTrace();
// get calling method name
Debug.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);
Debug.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name);
Debug.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name);

偵測到 ContextSwitchDeadlock

程式用迴圈長時間處理Excel 檔結果出現以下訊息。


偵測到 ContextSwitchDeadlock
---
CLR 在過去 60 秒一直無法從 COM 內容 0x16ce00 轉換為 COM 內容 0x16cbd8。擁有該目的內容/Apartment 的執行緒,很可能正在進行非提取等候或正在處理非常長的執行作業,而未提取 Windows 訊息。這種情況通常會對效能產生負面影響,甚至可能導致應用程式停止回應,或導致記憶體使用量持續隨時間而累積。若要避免這個問題,所有單一執行緒的 Apartment (STA) 執行緒都應該使用提取等候基本方法 (例如 CoWaitForMultipleHandles),並且在長時間的執行作業中定期提取訊息。



這個訊息只會在偵錯時出現,發佈的後並不會有,所以可以按繼績不理會。
如果確定程式沒有錯誤,又不想讓它顯示,可以透過以下選項取消讓它不顯示。
Debug -> Exceptions -> Managed Debug Assistants 去掉ContextSwitchDeadlock的勾選
偵錯 -> 例外狀況 -> Managed Debug Assistants 去掉 ContextSwitchDeadlock 的撙回項目勾選

VSTO Excel Copy row to another worksheet


//複製資料
Excel.Range srcRange = wsSrc.Rows[target.Row] as Excel.Range;
Excel.Range destRange = wsDest.Rows[dest.Row] as Excel.Range;
destRange.Value2 = srcRange.Value2;

//複製無formulas
Object template = Settings.Default.TemplatePath;
Workbook wb = Globals.ThisAddIn.Application.Workbooks.Add(template) as Workbook;
Excel.Range r = (Excel.Range)wb.Application.ActiveCell[1, "A"];
const int xlShiftDown = -4121;
Excel.Range oRow = r.EntireRow;
oRow.Insert(xlShiftDown, Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow);


//複製有formulas
Object template = Settings.Default.TemplatePath;
Excel.Workbook wb = Globals.ThisAddIn.Application.Workbooks.Add(template)
    as Excel.Workbook;
Excel.Range r = (Excel.Range)wb.Application.ActiveCell[1, "A"];
Excel.Range oRow = r.EntireRow;
oRow.Select();
oRow.Copy();
Excel.Range rg = (Excel.Range)rg[2, "A"];
rg.Select();
rg.PasteSpecial(Excel.XlPasteType.xlPasteAll,
    Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
    Type.Missing,
    Type.Missing);
wb.Application.CutCopyMode = Excel.XlCutCopyMode.xlCopy;

adsense