2009年12月15日 星期二

這樣的夢是有什麼暗喻嗎? 希望不是壞事才好

今天居然夢見ㄚ公,ㄚ公在15年前就過世了,我記得只有一次或從來沒夢見過他

夢裡,他從一個臺階上走下來,因為臉上的皺紋變得更多,看起來更老了
就像是8~90歲該有的樣子,但身體依然硬朗

他用一個喉嚨中似乎有痰的低沉聲音說了一聲:ㄚ翰阿
然後我看了一下左手邊,ㄚ嬤躺在那裡側臥著睡覺
接著ㄚ公對我說:那邊有一粒西瓜,拿去剖一剖

我看了一下我的右手邊,有一個平台上面放了一顆大西瓜
那顆西瓜大概長50公分直徑30公分左右,我上了前去看一看
然後將那西瓜往自身的方向轉了一下,發現西瓜已經被橫切了一片起來
(一般正常情況下我們會順著西瓜心的方向下去切),看了一下旁邊已經有幾片西瓜切起來放在那了。黃色的肉,是小玉西瓜,好大一顆的小玉西瓜,從沒看過這麼大的。

接著聽到阿公說:那邊有刀子

我轉過身後發現ㄚ嬤不見了,應該進去屋子裡面睡了吧!
往ㄚ公所說的方向走去,看見了一把短短可摺疊收納的刀子
刀身的長度就只有普通訂書機的長度。正在想說這麼小的刀子該怎麼切,轉過頭準備要問ㄚ公的時候,發現ㄚ公坐在那跟一個人聊天。

看了一下原來那個人也是ㄚ公,是6~70歲的ㄚ公,年輕的ㄚ公跟老的ㄚ公在互相對話,當我在計算我揪竟有幾個ㄚ公的時候,才猛然驚覺他們是同一人,不同時空的ㄚ公居然再互相交談

就當我覺得很神奇的情況下...夢醒了

2009年11月15日 星期日

唐先生與自然人憑證的相遇

2009年11月8日 星期日

ubuntu 9.10 開機啟動 number lock (Num Lock)

這裡有教學


但是在 /etc/X11/ 底下已經找不到gdm資料夾,因為他被移至到 /etc/底下
因此在終端機中操作順序如下:
sudo apt-get install numlockx //先安裝numlockx這個小程式,用來開關number lock
sudo cp /etc/gdm/Init/Default /etc/gdm/Init/Default_backup //此行只是為了備份可有可無
sudo gedit /etc/X11/gdm/Init/Default //編輯Default設定檔

然後在此文字檔中找到exit 0這一行,將以下文字加到此行之前,儲存後重新開機即可

if [ -x /usr/bin/numlockx ]; then
/usr/bin/numlockx on
fi

Firefox下Flash字體變成方塊字

用文字編輯器修改 /etc/fonts/conf.d/49-sansserif.conf
將裡頭的 sans-serif 修改成 san serif
重新打開瀏覽器就完成了

Linux 切換gcin輸入法平台

在ubuntu預設並未使用gcin輸入法平台,安裝完gcin之後依然無法切換
此時只要在終端機下輸入 im-switch -s gcin 後重新登入即可

2009年10月25日 星期日

DirectCompute examples compile 失敗

出現 fatal error LNK1104: 無法開啟檔案 'dxerr9.lib'

因為裝的是 Microsoft DirectX SDK (August 2009) 版本的SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4&displaylang=en 這裡,我們找到以下段話:

DXERR9 library removed from the DirectX SDK

The DXERR9 library has been removed from the DirectX SDK as of the August 2009 release. The DXERR9 error look-up library has been deprecated for some time in favor of DXERR which supports a broad range of DirectX and related error codes. The DirectX SDK Error Look-up Tool uses DXERR.


很好= = ! 讓我們回到visual studio 下
解決方法:
1. 在 nBodyCS專案下按右鍵 -> 屬性 -> 組態屬性 ->連結器 -> 輸入 -> 其他相依性 ,打開編輯視窗後,找到dxerr9.lib的地方,將它改為dxerr.lib,別以為這樣就結束了,在往下一點找到d3d11_beta.lib的地方,將它改為d3d11.lib,之後按下確定就OK了。

2. 在 SimpleParticlesCS專案下如同上面的操作方式,將dxerr9.lib及d3d11_beta.lib,改為dxerr.lib及d3d11.lib,再次compile後就順利成功了。


後記:
bulid出來的檔案執行後,不知道為什麼都沒有任何動作,還在找原因... 就先寫到這... 冏

2009年9月19日 星期六

openSUSE 安裝 Firefox 安裝 flash-plugin

首先至http://www.moztw.org/下載linux版本的firefox
抓下來的檔案為 firefox-3.5.3.tar.bz2

打開終端機後輸入
sudo tar xf firefox-3.5.3.tar.bz2 解壓縮
sudo cp -r firefox /usr/share/ 將解壓後的資料夾複製到/usr/share目錄下
sudo ln -sf /usr/share/firefox/firefox /usr/bin/firefox 建立捷徑之後就可以由命令列呼叫
sudo ln -sf /usr/share/firefox/firefox /usr/bin/mozilla-firefox 建立捷徑之後就可以由命令列呼叫
爾後要開啟firefox只需要在命令列輸入firefoxmozilla-firefox即可

接下來要安裝flash-plugin, 因為無法直接由firefox安裝
所以必須到adobe官網 http://get.adobe.com/flashplayer/ 下載
下載時請選擇 .rpm 版本
抓下來的檔案為 flash-plugin-10.0.32.18-release.i386.rpm
打開終端機後輸入
sudo rpm -Uvh flash-plugin-10.0.32.18-release.i386.rpm 直接安裝套件
sudo cp /usr/lib/flash-plugin/libflashplayer.so /usr/share/firefox/plugins 將套件複製到firefox的plugins資料夾

OK! 重新開啟firefox後完成

2009年9月7日 星期一

VirtualBox 變更解析度 for openSUSE

VirtualBox:v2.2.4 r47978 openSUSE:v11.1

在VirtualBox下安裝完openSUSE後,發現解析度只能選擇800x600





其實是因為還沒安裝顯卡的driver,但因為在VirtualBox下的顯卡是模擬出來的,因此必須安裝VirtualBox自帶的顯卡driver

在安裝driver之前,系統提示要先更新 linux kernel
依據以下步驟即可完成更新

1.首先在桌面按右鍵,接著點選"在終端機中開啟"



2.開啟終端機後,輸入 sudo zypper install gcc make automake autoconf kernel-source



3.接著輸入密碼(root的密碼),等待幾分鐘後即可完成kernel的更新







完成kernel更新後,可以開始安裝driver了

首先,先將VirtualBox工具掛上去


取消自動執行



回到剛剛的終端機畫面
輸入 cd /media 切換資料夾
再輸入 ls 可看到 VBOXADDITIONS_2.2.1_47978 資料夾
接著再輸入 cd
VBOXADDITIONS_2.2.1_47978 切換到VBOXADDITIONS_2.2.1_47978 資料夾
再輸入 ls 可看到 VBoxLinuxAdditions-x86.run

接下來正式要安裝了
使用Intel CPU的人,請輸入 sudo sh ./VBoxLinuxAdditions-x86.run
使用AMD CPU的人,請輸入 sudo sh ./VBoxLinuxAdditions-amd64.run


安裝完之後請重新開機。

接著會發現無法進入X-Window了 ......
好吧! 先使用root帳號進去



接著輸入startx嘗試進入X-Window


結果根本進不去... 沒關係他有提示是xorg.conf設定檔出錯
好吧! 使用vim去修改囉

輸入 vi /etc/X11/xorg.conf


進入編輯器


利用方向鍵往下移,找到 InputDevice "VBoxMouse"的地方,然後按下鍵盤上的 i 鍵進入編輯模式(下方會出現 -- INSERT -- 字樣)



InputDevice "VBoxMouse" 這行字串刪除後,按ESC進入命令模式
然後輸入 :wq 存檔並離開編輯器



接著回到終端機命令列輸入 reboot 重新開機



順利的話應該可以成功進入X-Window了,接著看看解析度設定式窗

YA! 有三種解析度可以設定了,雖然最大只到1024x768 (聽說跟顯示器的頻率設定有關?)
不過已經很開心了

=================
今天偶然發現,可以由以下步驟更改解析度

1. 點選左下"電腦",選擇 "控制中心"



2. 點選"圖形配接卡與顯示器"



3. 輸入root密碼,進入X11設定






4. 恭喜,可以選用其他解析度了


2009年6月24日 星期三

App.config 按右鍵找不到 Edit WCF Configuration

參考 http://dotnetframework.blogspot.com/2008/01/creating-wcf-service-how-to-create.html這篇文章學習WCF時,其中有一個部分是需要新增一App.config。

作者說在app.config上按右鍵,選擇Edit WCF Configuration,結果我按右鍵找不到 Edit WCF Configuration的選項。之後再上方"工具"->"WCF Service Configuration Editor" 按下之後會出現WCF Configuration編輯視窗,此時再到App.config上按右鍵就會出現Edit WCF Configuration的選項。

2009年6月10日 星期三

提升SQLite刪除速度

先前在SQLite下使用BeginTransaction,作INSERT的動作的確有效提升速度。今日使用DELETE時,刪除30筆記錄居然花費到4秒鐘的時間,結果處理的方式是在資料庫連線字串加入Synchronous=OFF。如下:
string strConnection = @"Data source=C:\Datebase.db;Synchronous=OFF;";
SQLiteConnection myConnection = new SQLiteConnection(strConnection);

結果速度馬上由4000ms 提升到 1ms,這真是太~神奇了傑克

2009年5月22日 星期五

將某日期欄位與數值欄位相加後做條件判斷

假設有某一資料表為Schedule裡面有三個欄位分別為
AdName(廣告名稱),ShowDate(播放日期)和ShowDays(播放天數),內容如下

AdName

ShowDate

ShowDays

廣告A

2009-05-10 00:00:00

10

廣告B

2009-05-15 00:00:00

5

廣告C

2009-05-20 00:00:00

3


所以
廣告A 的期限到2009-05-20 00:00:00
廣告B 的期限到2009-05-20 00:00:00
廣告C 的期限到2009-05-23 00:00:00

假設我們要找尋2009-05-19還在播放的廣告就可以使用以下語法

SELECT * FROM Schedule
WHERE DATE_ADD(ShowDate,INTERVAL ShowDays DAY ) > DATE('2009-05-27 00:00:00')
AND DATE(ShowDate) <= DATE('2009-05-27 00:00:00')

2009年5月21日 星期四

在做資料SELECT時,順便將特定值轉換成要顯示的文字

有時候我們會將某些欄位以數字的資料形態來儲存
假設有一Table(Student)含有三個欄位1. Number(long) 2.Name(varchar) 3.Sex(bool)
內容如下:
Number  Name Sex
9701001 Jim  1
9701002 Jack  1
9701003 May  0

我們希望Select出來的DataTable如下:
Number  Name Sex
9701001 Jim  男
9701002 Jack 
9701003 May  

這時可以利用以下的語法來解決
SELECT Number,Name,CASE Sex WHEN '0' THEN '女' WHEN'1' THEN '男' END AS Sex FROM Student

2009年4月20日 星期一

解決TestLink時間錯誤

編輯PHP安裝路徑下的 php.ini,找 date.timezone 的地方,修改成 date.timezone = Asia/Taipei
(記得將前面的分號去掉)後儲存,然後從新啟動 apache 即可。

2009年4月12日 星期日

PICT 的使用方法

PICT必須在命令列底下執行
首先必須建立ModelFile檔案,然後將我們要生成測試用例的條件寫在裡面

先在c:底下建立一個文字檔(ex. test.txt)
編輯 test.txt 建立內容如下:

姓名:無,有
性別:無,女,男
生日:無,有

然後存檔
在command line底下輸入如下:
C:\>pict test.txt

就會出現

姓名 性別 生日
有 女 有
無 無 無
有 男 無
有 無 有
無 女 無
無 男 有

ps.在PICT的安裝目錄下有一說明文檔 PICTHelp.htm
ModelFile的詳細格式可參考說明文檔

2009年4月11日 星期六

安裝TestLink時發生錯誤的處理

本次使用的版本
MySQL : 5.1.30
Apache : 2.2.11
PHP : 5.2.9-2
TestLink : 1.7.5

首先安裝MySQL 時,一切都很順利,接下來安裝 Apache時也很ok,再來安裝 PHP時發生 GetObject的錯誤,不過先不理他繼續裝完。
接下來要重新啟動Apache的時候發生問題,無法啟動伺服器。到 Apache 安裝目錄下的 conf 目錄,然後開啟 httpd.conf 檔。找到下面的地方
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
ScriptAlias /php/ "D:/app/PHP/"
Action application/x-httpd-php "D:/app/PHP/php-cgi.exe"
PHPIniDir "D:/app/PHP/"
LoadModule php5_module "D:/app/PHP/php5apache2_2.dll"
PHPIniDir "D:/app/PHP/"
LoadModule php5_module "D:/app/PHP/php5apache2.dll"
PHPIniDir "D:/app/PHP/"
LoadModule php5_module "D:/app/PHP/php5apache.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
將他們改成
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
ScriptAlias /php/ "D:/app/PHP/"
Action application/x-httpd-php "D:/app/PHP/php-cgi.exe"
PHPIniDir "D:/app/PHP/"
LoadModule php5_module "D:/app/PHP/php5apache2_2.dll"
#PHPIniDir "D:/app/PHP/"
#LoadModule php5_module "D:/app/PHP/php5apache2.dll"
#PHPIniDir "D:/app/PHP/"
#LoadModule php5_module "D:/app/PHP/php5apache.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
存檔後,Apache就可以正常啟動了
將testlink放到 apache 上也很順利的開啟 testlink的安裝頁面了
繼續進行到 testlink 安裝條款確認的時候,又發生 httpd.exe 記憶體不能為read的錯誤
把PHP安裝路徑下的 libmysql.dll複製到 windows\system32 ,然後從新啟動 apache,再次執行testlink的安裝就順利完成了

2009年3月24日 星期二

於程式執行階段實現 Alt+Tab 切換視窗功能(使用Win32 API)

這裡做一個簡單的測試,我們用TestSwitch程式執行的一個名為Form1.exe的視窗程式,當Form1.exe啟動後我們利用Alt+Tab或其他方式,將Form1.exe的視窗蓋住了,這時我們希望在TestSwitch程式中將Form1.exe的視窗再帶到螢幕的最前面,該怎麼做呢?


//要使用Win32 API前需要先加入

using System.Runtime.InteropServices;

public class TestSwitch
{
 //然後使用下面兩的API

 [DllImport("user32.dll")]
 static extern IntPtr SetActiveWindow(IntPtr hWnd);

 [DllImport("user32.dll")]
 [return: MarshalAs(UnmanagedType.Bool)]
 static extern bool SetForegroundWindow(IntPtr hWnd);

 //用來存放下面Form1.exe程序的物件
 private System.Diagnostics.Process formProc ;

 //假設有一支名為 Form1.exe 的視窗程式
 //先使用此方法執行(開啟)這支視窗程式
 public void Run()
 {
  //指定要開啟的檔案名稱
  System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo("Form1.exe");

  //開啟檔案並回傳處理程序(之後需要此處理程序來取得Form1.exe的主視窗Handle值)
  formProc = System.Diagnostics.Process.Start(startInfo);
 }

 //切換至指定的視窗(利用此方法將Form1.exe的視窗帶到螢幕的最前面)
 public void Switch()
 {
  //切換視窗時需要該程序主視窗的Handle值(注意:是視窗的Handle不是程序的Handle)

  //第一步將該視窗設為作用中
  SetActiveWindow(formProc .MainWindowHandle);
  //第二步將該視窗帶到最前面
  SetForegroundWindow(formProc .MainWindowHandle);

  //完成!
 }
}

2009年3月23日 星期一

2009年2月9日 星期一

MySQL Query Browser 無法編輯(Edit)資料列

使用MySQL Tools時,發現某些資料表無法直接使用GUI編輯,查了一下發現只要該資料表沒有設定任何Primary Key時就會無法編輯。所以只要想辦法設個Primary Key後,就可以編輯了。

2009年2月5日 星期四

列出所有列舉內容

public enum ABC
{
 x = 1,
 y = 2,
 z = 3
}

//列出所有列舉內容
foreach (string str in Enum.GetNames(typeof(ABC)))
 System.Diagnostics.Debug.WriteLine(str);

//字串轉對應的列舉值
int i = (int)Enum.Parse(typeof(ABC) , "z");
System.Diagnostics.Debug.WriteLine(i.ToString());

2009年1月28日 星期三

2009年1月16日 星期五

各種Integer所佔的記憶體大小

TinyInt ---- 1Byte
SmallInt -- 2Bytes
Int ---------- 4Bytes
BigInt ----- 8Bytes

2009年1月14日 星期三

搜尋時間區間內的所有區間


假設我們要搜尋Start與End時間點內所有的區間(3,4,5,6)
用法如下:
string expression = string.Format("(Start_DateTime<='{0}' AND End_DateTime>='{0}') OR (Start_DateTime<='{1}' AND End_DateTime>='{1}') OR (Start_DateTime>='{0}' AND End_DateTime<='{1}') OR (Start_DateTime<='{0}' AND End_DateTime>='{1}')", startTime, endTime);
DataRow[ ] rows = table.Select(expression);

//此時找到的會是 3,4,5,6 這四個區間

2009年1月1日 星期四