最近都忙得沒時間更新blog了... 一些文章也只寫了一半就停了...
等6月底趕完這一支程式,希望狀況會好一點...
不過,被人瞧不起還挺火大的,只能用實力來讓你閉嘴了... \_/
2009年6月15日 星期一
2009年4月8日 星期三
Inno Setup 使用ISPP 來取得主程式版本
我每次在release程式時,因為主程式的版本變動了,相對的我必需跟著修改Inno Setup script的程式版本
[Setup]
AppVersion = 1.2.3.4
這樣的做法容易會有疏失,Inno Setup script裡面常常會有4、5個地方寫著版本訊息,每次release就全部都要修改,漏改一項麻煩就大了,後來上網找了一下資料,原來這個問題可以透過ISPP(Inno Setup Preprocessor)來處理。
#define AppName "YourApp"
#define AppVersion() ParseVersion(AddBackslash(SourcePath) + "../../bin/release/YourApp.exe", Local[0], Local[1], Local[2], Local[3]), \
str(Local[0]) + "." + str(Local[1]) + "." + str(Local[2]) + "." + str(Local[3])
[Setup]
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}
AppVersion={#AppVersion}
使用以上的語法可以自動取得執行檔的版本,不需要每次都手動修改,以後當我們在release程式也更方便。
Note:
[Setup]
AppVersion = 1.2.3.4
這樣的做法容易會有疏失,Inno Setup script裡面常常會有4、5個地方寫著版本訊息,每次release就全部都要修改,漏改一項麻煩就大了,後來上網找了一下資料,原來這個問題可以透過ISPP(Inno Setup Preprocessor)來處理。
#define AppName "YourApp"
#define AppVersion() ParseVersion(AddBackslash(SourcePath) + "../../bin/release/YourApp.exe", Local[0], Local[1], Local[2], Local[3]), \
str(Local[0]) + "." + str(Local[1]) + "." + str(Local[2]) + "." + str(Local[3])
[Setup]
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}
AppVersion={#AppVersion}
使用以上的語法可以自動取得執行檔的版本,不需要每次都手動修改,以後當我們在release程式也更方便。
Note:
- ISPP是Inno Setup的額外套件,包含在Inno Setup QuickStart Pack裡,必需要先安裝完Inno Setup主程式再安裝Inno Setup QuickStart Pack.
標籤:
Inno Setup
unit testing的簡單心得
上星期去台北微軟上課,有講到Unit Testing,之前看書或是網路上也常常看到Unit Testing,也大概知道是做什麼的,和如何去做之類的東西,但是一直沒有時間去做,最近幾天終於花了一點的時間稍微的試用了一下Unit Testing,因為我手邊剛好在用boost library,就直接拿boost 的Unit Testing來玩囉。
底下是我稍微玩一下Unit Testing的心得:
上課的時候,台上的講師有demo他使用Visual Studio 的Unit Testing,感覺功能還蠻足夠的,而且還可以算目前Unit Testing做到的Code Coverage(1),可惜的是只支援C#, VB.Net, C++/CLI,不提供我目前工作上最常用的Native C++,要不然在Unit Testing使用相同IDE,直接產生GUI的testing report,應該是挺不錯的事吧(2)。
補一下上課的筆記:
Note:
底下是我稍微玩一下Unit Testing的心得:
- Unit Testing的確是不錯的玩意,特別是在我要重構(Refactoring)的時候,重構完成馬上透過Unit Testing進行驗證,方便又快速。 :)
- boost unit testing framework感覺上蠻強的,使用上可以使用boost 的unit testing framework提供的main(),他會全自動的執行test case,如果使用自己的main()則要手動啟動測試程式。
- Unit Testing建立的成本,我感覺是很值得的。
- UI或是部分無法Unit Testing的程式碼,該如何測呢?花時間去建立simulation??
上課的時候,台上的講師有demo他使用Visual Studio 的Unit Testing,感覺功能還蠻足夠的,而且還可以算目前Unit Testing做到的Code Coverage(1),可惜的是只支援C#, VB.Net, C++/CLI,不提供我目前工作上最常用的Native C++,要不然在Unit Testing使用相同IDE,直接產生GUI的testing report,應該是挺不錯的事吧(2)。
補一下上課的筆記:
- Code Coverage至少有60%~80%
- Unit Testing的Pass Rate%至少要大於98% (為什麼不是100%呢,因為當有時候程式不release你就沒飯吃的時候,或是剩下的2%是不重要或是留待下次修正的bug)
- 先寫Unit Testing再寫code (Test Driven Development)
- good unit testing應該要automated, quickly, repeatable
- Unit Testing無法測試scenarios
- 如何說服你的同事或是上司開始使用Unit Testing呢
Note:
- Visual Studio 的Code Coverage是算block coverage,沒有branch coverage, boundary test
- Visual Studio我似乎只是拿來compiler而已,version control我們是用SVN。 XD
標籤:
boost,
C++,
programming,
unit testing
TeamViewer 一個方便好用的遠端遙控軟體
現在我們的電腦常常都會掛在ip分享器後面,得到的ip都不是真實的ip,如果你用像VNC等p2p的遠端遙控軟體,是沒有辦法連線的,不過這個TeamViewer可以辦的到喔,主要他是透過server端,每一個client都會建立一個unique ID和password,當你要連線到另一個電腦的時候,改成輸入ID及password就可以了。
而且TeamViewer也可以建立帳號,方便你管理常連線的電腦。(partner)
Download: http://www.teamviewer.com/download/index.aspx
而且TeamViewer也可以建立帳號,方便你管理常連線的電腦。(partner)
Download: http://www.teamviewer.com/download/index.aspx
標籤:
software
2009年3月30日 星期一
IE8和Visual Studio 2008有衝突..
今天在用visual studio 2008的Add Class功能時,出現一個網頁語法的錯誤,之前用IE7都好好的,怎麼更新成IE8之後就變這樣了 orz,後來上網找了一下,應該就是IE8和visual studio 2008相衝吧,而且似乎沒有比較好的解決方法,因此我就先將IE降為IE7,之後visual studio 2008就很正常了,畢竟上班用的工具還是要正常一點比較好。 :)
後來在看Visual C++ Team Blog的時候才發現,他們已經有為這個問題提供一個手動的解決方案,請參考這邊的做法。
而且這個問題在Visual studio 2005也是會發生的。
後來在看Visual C++ Team Blog的時候才發現,他們已經有為這個問題提供一個手動的解決方案,請參考這邊的做法。
而且這個問題在Visual studio 2005也是會發生的。
2009年2月26日 星期四
幾何 - 打油詩
這是之前在學校的時候老師講的,昨天講給同事聽才發現他們都不知道,難不成這是當初老師自創的!? XD (對不起老師,我忘記你的名字了)
人生世上有幾何
何必苦苦學幾何
學得幾何幾何好
不學幾何又幾何
-------
這種東西以前老師常常講,像國中的「點線面」參考書,老師都會講成「點麵線」。 XD
人生世上有幾何
何必苦苦學幾何
學得幾何幾何好
不學幾何又幾何
-------
這種東西以前老師常常講,像國中的「點線面」參考書,老師都會講成「點麵線」。 XD
2009年2月20日 星期五
微軟提供免費virtual pc的image
Microsoft Virtual PC是一個虛擬機器的軟體,可以在你原本的OS上再安裝另一個OS,並且隨時可以關掉或是切換另一組OS,產生一個虛擬的OS環境,目前的最新版是Visual PC sp1,而且從virtual pc從2007版之後就是免費的囉。
而且現在微軟官方有提供免費的image可以下載,包含
可以方便你做一些多環境的測試,像我的程式有時候需要在vista測試一下是不是正常,如果只是偶而做一下測試就要再重灌一次os,這樣就太麻煩了,好險有這些免費的image方便我做測試。
不過這些image免費歸免費,他是有使用期限的,而且會定時更新新版的image,大概每3個月你就要再從微軟網站再取得更新版的。
References:
1. Microsoft Virtual PC
2. Visual PC sp1
3. Internet Explorer Application Compatibility VPC Image
4. Microsoft Virtual PC - Wiki
而且現在微軟官方有提供免費的image可以下載,包含
- IE6 - XPSP3
- IE7 - XPSP2
- IE8 - XPSP3
- IE7 - Vista
可以方便你做一些多環境的測試,像我的程式有時候需要在vista測試一下是不是正常,如果只是偶而做一下測試就要再重灌一次os,這樣就太麻煩了,好險有這些免費的image方便我做測試。
不過這些image免費歸免費,他是有使用期限的,而且會定時更新新版的image,大概每3個月你就要再從微軟網站再取得更新版的。
References:
1. Microsoft Virtual PC
2. Visual PC sp1
3. Internet Explorer Application Compatibility VPC Image
4. Microsoft Virtual PC - Wiki
標籤:
software
2009年2月11日 星期三
google的字典
原本我是都用Yahoo!字典來查單字 (更早之前是用Dr.eye),之前偶而也會用Google字典,可是一直感覺還是沒有yahoo的資訊多,頂多是用google 的fy (快速翻譯功能)。
不過最近發現fy翻譯出來的結果越來越多了,仔細連到Google字典一看才知道,Google字典變得好完整喔,有完整的單字解釋、相關詞組、同義字、網頁翻譯、網路上的定義,這樣仔細比較了一下,感覺google的字典比yahoo的好用,雖然Yahoo!字典在翻譯的時候還有「知識+」,不過google的相關詞組和網路上定義比較吸引我。 :)
幾個我常用的字典網站
1. Yahoo!字典
2. Google字典
3. TheFreeDictionary - 英英字典
不過最近發現fy翻譯出來的結果越來越多了,仔細連到Google字典一看才知道,Google字典變得好完整喔,有完整的單字解釋、相關詞組、同義字、網頁翻譯、網路上的定義,這樣仔細比較了一下,感覺google的字典比yahoo的好用,雖然Yahoo!字典在翻譯的時候還有「知識+」,不過google的相關詞組和網路上定義比較吸引我。 :)
幾個我常用的字典網站
1. Yahoo!字典
2. Google字典
3. TheFreeDictionary - 英英字典
google 的fy關鍵字
google的搜尋引擎不只可以拿來search,他還提供一些額外的功能,例如計算機、單位轉換之類,而且google還隱藏了另一個功能就是fy (翻譯)。
你可以直接在搜尋的輸入框打入fy "你要查的字"
例如:
fy lantern
打中文也是可以的喔。
fy 天氣
不過,為什麼google要用fy這個關鍵字,fy有特殊意義嗎?? :)
ps.
你打"翻譯 lantern"同"fy lantern"效果喔
你可以直接在搜尋的輸入框打入fy "你要查的字"
例如:
fy lantern
打中文也是可以的喔。
fy 天氣
不過,為什麼google要用fy這個關鍵字,fy有特殊意義嗎?? :)
ps.
你打"翻譯 lantern"同"fy lantern"效果喔
2009年2月6日 星期五
我的命名法
之前我們公司和我都是習慣用所謂的匈牙利命名法[1],不過用這麼久也遇到了一些不方便的事。
1.
一開始我要宣告某一個變數是integer型態,所以我會寫成 int iValue;
但是後來因為某件事,我要修改原本的iValue為double型態,那我除了將int換成double之外,還需要將iValue全部改成dValue,這樣才可以從「變數名稱」就可以知道「變數型別」。
這是一件麻煩的事,雖然你可以用Replace In Files來取代所有的變數,或是用Visual Assist X的rename功能來修改,但是我還是感覺因為「變數型別」的改變而修改「變數名稱」挺無趣的。 :(
2.
也許你前一天打牌或是打電動打太晚=3=,結果隔天上班將double dValue誤寫成double iValue,當你看著iValue時,你認為他是int或是double的型態?
「變數名稱」並沒有即時的對映到真實的「變數型別」。
現在我用的是編程規範一書提到的:
類別、結構、列舉型別用LikeThis
變數和列舉元用likeThis
成員變數用likeThis_
不過,因為目前只有我用新的命名法,也順便測試一下,之後有心得和結論之後,再來跟公司宣導吧。 XD
Note:
1. 也許和原本的匈牙利命名法不一樣了,不過我們還是統稱為「匈牙利命名法」.. XD
Reference:
1: C++編程規範 - 101個準則、指導方針,和最佳實踐 - 侯捷/陳碩 譯
1.
一開始我要宣告某一個變數是integer型態,所以我會寫成 int iValue;
但是後來因為某件事,我要修改原本的iValue為double型態,那我除了將int換成double之外,還需要將iValue全部改成dValue,這樣才可以從「變數名稱」就可以知道「變數型別」。
這是一件麻煩的事,雖然你可以用Replace In Files來取代所有的變數,或是用Visual Assist X的rename功能來修改,但是我還是感覺因為「變數型別」的改變而修改「變數名稱」挺無趣的。 :(
2.
也許你前一天打牌或是打電動打太晚=3=,結果隔天上班將double dValue誤寫成double iValue,當你看著iValue時,你認為他是int或是double的型態?
「變數名稱」並沒有即時的對映到真實的「變數型別」。
現在我用的是編程規範一書提到的:
類別、結構、列舉型別用LikeThis
變數和列舉元用likeThis
成員變數用likeThis_
不過,因為目前只有我用新的命名法,也順便測試一下,之後有心得和結論之後,再來跟公司宣導吧。 XD
Note:
1. 也許和原本的匈牙利命名法不一樣了,不過我們還是統稱為「匈牙利命名法」.. XD
Reference:
1: C++編程規範 - 101個準則、指導方針,和最佳實踐 - 侯捷/陳碩 譯
2009年2月5日 星期四
好站連結
最近公司在做code review,不過公司內部一點review經驗都沒有,果然昨天就從下午2點meeting到7點了,但是review後得到的東西沒有很多,相對的長時間的會議也苦了在會議室的所有人。
所以最近我一直在找code review的資料,也推薦一下喲哪桑 Speaking | 管理.軟體.產品.專案這個網站,裡頭有豐富的資料喔。
所以最近我一直在找code review的資料,也推薦一下喲哪桑 Speaking | 管理.軟體.產品.專案這個網站,裡頭有豐富的資料喔。
標籤:
好站連結,
專案管理,
inspection
boost serialization的多型指標問題serialize問題
如果你有D class繼承B class,當你在多型指標的serialization的時候,要記得在D class的serialization加入
要不然,boost的serialization會丟出unregistered_cast的exception。
(即使B class根本沒有任何資料要serialize)
底下是簡單的範例
ar & boost::serialization::base_object(*this);
要不然,boost的serialization會丟出unregistered_cast的exception。
(即使B class根本沒有任何資料要serialize)
底下是簡單的範例
#include <boost/serialization/access.hpp>
class B
{
friend class boost::serialization::access;
template<class Archive> void serialize(Archive& ar, const unsigned int file_version)
{
}
};
class D : public B
{
friend class boost::serialization::access;
template<class Archive> void serialize(Archive& ar, const unsigned int file_version)
{
ar & boost::serialization::base_object(*this);
ar & value_;
}
private:
int value_;
};
標籤:
boost,
C++,
serialization
訂閱:
文章 (Atom)