2013年10月30日 星期三

EmguCV 出現 Cv.Invoke 例外可能原因

  1. 沒有把需要的 opencv dll 放進程式執行資料夾
  2. 使用 x64 版本卻未將 Project 改為 x64
其它遇到補上 ...

2013年8月9日 星期五

C# 取得正在執行的 function(method) 名稱

有時在 debug 或者 log 一些錯誤訊息的時候,希望可以知道當下執行到的程式碼是位在何處,可透過 C# 的反射機制,得知目前正在執行的 function 名稱。程式碼如下,取得的是一個 string。

System.Reflection.MethodBase.GetCurrentMethod().Name

2013年5月24日 星期五

安裝 .NET Framework 4 時出現 Error HRESULT 0xc8000222 解決方法

從 Microsoft Download Center 下載 .NET Framework 4 安裝時,出現「Error HRESULT 0xc8000222」錯誤訊息。(下載連結)

解決方法:

  1. 開啟命令提式字元,鍵入 net stop WuAuServ 並按下 Enter,此指令是關閉 Windows Update 功能。
  2. 在 C:\Windows 目錄下尋找 SoftwareDistribution 資料夾,將它命名為其他名稱,例如 SD.old。
  3. 再度開啟命令提示字元,鍵入 net start WuAuServ 並按下 Enter,來開啟 Windows Update 功能。
  4. 再次嘗試安裝 .NET Framework 4

如果還是不行的話,可以嘗試在第 2 步驟後就安裝 .NET Framework 4。

2014/07/23更新
根據熱心匿名網友分享,使用命令提示字元時,要使用系統管理員身分執行才有權限關閉 Windows Update,遇到問題的朋友不妨試試看。

本文參考 How to fix Failed install Code Error HRESULT 0xc8000222 .NET Framework 4.0

2013年5月5日 星期日

C# 跨 Thread 存取 UI

在 Form 裡加下面這行就對了!但不是好方法,會有 lock 問題,急忙情況可先使用一下。

CheckForIllegalCrossThreadCalls = false;

2013年5月1日 星期三

C# SqlCeConnection 無法使用 ? 沒有 System.Data.SqlServerCe namespace ?

在 C# 中要對 SQL Server Comapact Edition 進行連線,需要使用 SqlCeConnection 來幫忙,參考 MSDN『SqlCeConnection 類別』內容說明,SqlCeConnection 存在 System.Data.SqlServerCe 該 namespace 下

但直接 using 會顯示『命名空間 'System.Data' 中沒有型別或命名空間名稱 'SqlServerCe' (您是否遺漏了組件參考?)』


看來似乎是沒有預設參考這東西,需要自行加入參考,據 MSDN 說明文件指出,該組件存在 system.data.sqlserverce.dll,其路徑為 『C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll』,視版本,4.0 存在『C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll』,只要將這個 DLL 加入參考就可以正常使用了。

32位元版則在『C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll』與『C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll』

若找不到以上所述路徑,代表你的電腦沒有裝 SQLCE 啦!
請至 Microsoft Download Center 下載。3.5版4.0版



相關參考
SQL Server CE 4.0 deployment issue--which files are necessary?


2013年4月15日 星期一

Android Virtual Device 無法開啟

在 Android Virtual Device Manager 選擇虛擬機按下 Start 後出現以下錯誤,無法開啟虛擬機

Starting emulator for AVD 'AVDNAME'
PANIC: Could not open: AVDNAME

原因是因為 Android SDK 放置安裝在 C 碟以外的地方 以我來說,放在 D 碟就出現這樣的錯誤,這時候查看 D 碟目錄下,會發現有一個 .android,代表 SDK 是放在 D 碟以下路徑沒錯,只要在系統環境變數加入一個變數名稱 ANDROID_SDK_HOME,變數值 D:\ 即可。如下圖所示。

 

2013年4月12日 星期五

Telnet C# - 簡單好用的 C# Telnet lib

Telnet C# 是一款 C# 語言上用來模擬執行 Telnet 的 Open Source Library,可以設定對指定的 IP、Port連線,並可在成功連線後,等待指定的訊息出現以及送出相對應的訊息,可以說是一款相當簡單好用的 Lib。程式最後一次更新的日期是 2011 年 7 月,算是不會太舊的 Lib,目前使用上沒有什麼問題。

Lib 放置於 CodePlex 網站上,官方網站 Telnet C#


使用範例如下 (節錄自 Telnet C# > Documentation > Example)

Terminal tn = new Terminal("giga", 23, 10, 80, 40); // hostname, port, timeout [s], width, height

tn.Connect(); // physical connection
do 
{
    f = tn.WaitForString("Login");
    if (f==null) 
        break; // this little clumsy line is better to watch in the debugger
    Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
    tn.SendResponse("telnet", true); // send username
    f = tn.WaitForString("Password");
    if (f==null) 
        break;
    Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
    tn.SendResponse("telnet", true); // send password 
    f = tn.WaitForString(">");
        break;
    tn.SendResponse("df", true); // send Shell command
    if (tn.WaitForChangedScreen())
        Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
} while (false);
tn.Close(); // physically close on TcpClient

使用 Terminal 建構子參數來設定 Hostname 或 IP,以及 Port 、 Timeout …等等。

Terminal.WariForString(string) 用於等待指定的 string 出現,會一直等待直至 Timeout,若沒出現指定的 string 則會回傳 null。

Terminal.SendResponse(string, bool) 用於送出 string,並可設定是否要送出換行(Enter)訊息。

2013年3月31日 星期日

Windows 7 環境變數 TEMP、TMP 預設值

使用者變數 TEMP、TMP
%USERPROFILE%\AppData\Local\Temp
系統變數 TEMP、TMP
%SystemRoot%\TEMP

Unity 開啟錯誤 Creating directory












Creating directory
Creating directory Temp faled. Please ensure there is
enough disk space and you have permission setup
correctly.

Unity project 存在路徑含有中文會造成上述錯誤。路徑似乎只能有英文。

2013年3月29日 星期五

Dropbox Error - 設定 Ramdisk 後無法執行 Dropbox


Could't start Dropbox
This is usually because of a permissions error. Errors
can also be caused by your home folder being
stored on a network share.

將環境變數的 Temp 以及 Tmp 更改路徑至 Ramdisk 之後,執行 Dropbox 時會出現以上錯誤,很可能是因為 Dropbox 找不到 Ramdisk 碟內的 Tmp 目錄。

在 Ramdisk 內新增了 Tmp 目錄後,將環境變數的 Temp、Tmp 設定在 Ramdis/Tmp,但該 Ramdisk 設定的是不會在開關機時儲存、讀取映像檔,導致重新開機後 Ramdisk 內的 Tmp 目錄消失,造成 Dropbox 找不到該 Tmp 目錄。

解決方法很簡單,只要設定 Ramdisk 啟用時,自動產生 Tmp 目錄即可,下圖是 Primo Ramdisk 的設定。


若所使用的 Ramdisk 沒有提供此功能,可以自己寫一個批次檔(.bat),在 Ramdisk 下產生 Tmp 目錄,再將此批次檔放置 Windows 啟動裡即可在開機時自動產生此目錄。批次檔內容只要簡簡單單的下面兩行即可。
R:
mkdir Tmp
以上範例為 R 碟,若磁碟機代號為 T 則輸入 T: 以此類推。

2013年3月14日 星期四

asp.net 4.0 ReportViewer IE9 報表欄位寬度顯示問題

在 ASP.NET4.0 使用 ReportViewer 在 IE9 瀏覽時,報表內的表格欄寬,不會依照設計時所設定的寬度顯示。


在檢視 ReportViewer 所產生的 iframe 內,發現有一 <td width="100%" height="0/">,在某些瀏覽器下,該 <td> 會占據大量版面,導致原有的報表表格受到擠壓。


解決方法很簡單,只要在網頁內加上少許 CSS,讓該 <td> 無效即可。如下。
<style type="text/css">
    td[id*='oReportCell'] {width:100%; !important;}
</style>
並在 ReportViewer 屬性加上 AsyncRendering="false" 使 iframe 套用外層的 CSS 屬性
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
    Font-Size="8pt" Height="0px" ProcessingMode="Remote" Width="100%" AsyncRendering="false">
</rsweb:ReportViewer>

本文參考
ReportViewer doesn’t take full width in Internet Explorer

apktool - apk 反編譯 unpack 工具

簡介

apktool 是一款可以將包裝好的 apk 解開的 open source 工具,目前支援 windows 、 linux 、 osx

網站

Google code - apktool
https://code.google.com/p/android-apktool/

下載

https://code.google.com/p/android-apktool/downloads/list

需求

 JAVA JRE 1.6 (或以上?)

安裝

下載 apktool1.5.2.tar.bz2 (或更新版本) 、 apktool-install-windows-r05-ibot.tar.bz2 (或更新版本),各自解壓縮後得到 apktool.jar 、 aapt.exe 、 apktool.bat ,將這三個檔案放至 C:\Windows 目錄下即安裝完成。

使用

命令提示字元  cmd

  • 反編譯 unpack
    • apktool d test.apk testapkfolder
    • 將 test.apk 解開至 testapkfolder 資料夾
  • 編譯回 apk
    • apktool b testapkfolder
    • 將 testapkfolder 編譯回 apk
  • 說明
    • apktool
    • 直接輸入 apktool 即出現說明資訊

2013年3月6日 星期三

TortoiseSVN Server 架設教學

架設步驟

1. 下載並安裝 TortoiseSVN
2. 開啟 cmd 輸入以下指令(全部為一行)
sc create "svnservice" binpath="C:\Program Files\TortoiseSVN\bin\svnserve.exe --service --listen-port 8888 --listen-host 0.0.0.0 -r C:\SVNRepository" displayname= "SVNService" depend= Tcpip

指令解說

svnservice 為 windows 服務的真正名稱

binpath 輸入要執行的程式

C:\Program Files\TortoiseSVN\bin\svnserve.exe 是 TortoiseSVN 的 serv 執行檔路徑

後方帶的參數有 port、hostip、SVN資料夾路徑

SVNService 為 windwos 服務顯示的名稱