Powentan的世界
介紹powentan的生活, 以及和蟲蟲奮鬥(debug)的過程
2008年12月19日 星期五
[VB] 利用GetPrivateProfileString來讀取ini檔
›
1. 宣告GetPrivateProfileString Private Declare Function GetPrivateProfileString _ Lib "kernel32" Alias "GetPrivateProfileSt...
2008年10月17日 星期五
[C/C++] strftime 和 strptime的format string
›
strftime是把struct tm時間轉成時間字串的函式,根據你定的format string,function會把產生的字串塞到你的buffer。 strptime是把時間字串根據你指定的format string轉換成struct tm時間。 兩者有相反的功能,但是for...
2008年9月23日 星期二
[C/C++] 轉換編碼的function (iconv)
›
在C/C++裡面使用iconv function包含下列三步驟: 1. 用iconv_open建立一個iconv_t的變數 2. 呼叫iconv執行轉換 3. 用iconv_close來結束iconv_t的變數 下面這一段code是把iconv包成一個function方便使用: ...
2008年9月19日 星期五
少使用global變數的原因
›
在最近碰到的很多bug都是和global變數有關的: 1. 使用curl + openssl做https連線,由於openssl一些變數是用global的,所以在multi-thread會有random crash的情形產生。解決方法是要實作openssl裡面提供的lock ca...
[C/C++] 使用return struct tm *的function (localtime, mktime) 要注意
›
由於回傳的struct tm *不需要做記憶體釋放,而變數也不需要初始化記憶體,所以struct tm *在系統中應該是以global形式存在。因此在連續呼叫localtime和mktime時,記得要先把上一次的struct tm * 結果給存起來,不然會造成所有的變數都指向最後...
2008年9月16日 星期二
[ACM] 解題注意事項
›
解了一題簡單的3n+1 problem來玩玩,發現要讓他Accept除了程式正確以外還有很多小地方要注意的。 1. 輸入輸出格式: 輸入通常是利用stdin當輸入,然後會把檔案導到stdin當作測試檔。輸出也是輸出在stdout 2. 對於有時間限制的程式,使用scanf...
2008年9月6日 星期六
[Vim] 利用ctags找尋函數的tags設定
›
在vim裡面用來找函數定義的時候, 要用ctags產生的對應檔tags來找到位址. 而.vimrc裡面也可以對tags檔的放置位址做設定 像是可以先對所有的C/C++ 系統的.h .c .cpp檔做成一個ctags叫做cpp.tags, 然後在設定時用 set tags=path...
2008年9月1日 星期一
[C++] string::npos
›
string::npos的值為 -1 ,但是因為它的type是 size_t 也就是 unsigned long ,所以其實 string::npos 代表的值為 size_t 裡面的最大值。 參考資料 : http://www.cplusplus.com/reference/s...
[PyGtk] 把程式縮小到系統工具列(system tray)
›
在ubuntu上面用的hinedo這個廣播程式就是用這樣的方式存在於系統工具列裡面,感覺起來方便簡潔,不會佔用到awn的空間。 而利用PyGtk配合上 GnomePythonExtras 裡面的 egg.trayicon 就能達到這樣的效果。 另外 Gnom...
[MFC] CTime的使用
›
如果要找出一個月的第3個幾個星期3要怎麼做呢? 很簡單的方法就是用CTime從這個月的1號開始,對每一天判斷使否為星期三,再利用CTimeSpan設定一天的長度往後加。如此在數到第三個星期三時,就知道是哪一天了。這是一個雖然暴力但是很簡單的做法。 程式碼: //下面這段程式碼會找...
2008年8月19日 星期二
[Blogger] 貼code語法變色
›
之前語法變色使用了 google code prettify,用起來蠻簡單的,但是還是有一些 缺點 : 1. 在貼code的時候對於特殊符號 " " 需要做encode不然會造成貼出來的內容亂掉,當然這不是它的錯誤,而是blogspot會將html語法做一些處...
2008年8月15日 星期五
[Vim] Folder, 視窗切換, 尋找關鍵字
›
Folder: zr (reduce): open all folder zm (more): close all folder zo (open):open folder zc (close):close folder r, m, o, c 如果用大寫取代,則是代表會用re...
[Python] 字串的編碼
›
在Python裡面的處理主要是以UTF-8的方式來處理字串,所以在抓一些繁體中文的文字檔時,要先把他轉成UTF-8的形式。 轉換的方式為: try: utf8_string = unicode(cp950_string, "cp950").encode(...
2008年8月13日 星期三
[Unix] setenv Memory Leak的問題
›
最近為了程式自己會莫名其妙的長大而苦惱,但是去看code卻也沒有發現什麼忘記delete或是free的pointer。本來為了避免這些麻煩,所以大部分的資料都是用string或是stl的container來實作,沒想到還是遇到這樣的問題。 把code翻了又翻,最後幾乎把所有可能發...
1 則留言:
2008年8月1日 星期五
[C++] class member function使用template注意事項
›
在寫一個class的時候,大多習慣把prototype放在.h檔,而定義則放在.cpp檔。 但是當你的member function有使用template時,如果把定義還是放在.cpp檔中, 在link的時候會出現unresolved external symbol,也就是找不到...
2008年7月25日 星期五
[vim] 自訂專案開啟 (project.vim taglist.vim)
›
在程式寫很大的時候,常常要編輯很多檔案。雖然名字取的好可以幫助記憶,但是還是需要輸入很多指令來切換編輯檔案。 下面的方式就是用一些vim的plugin,來達到輕鬆的專案開啟以及管理。也能夠很容易的做trace code的動作。 要達要目標我們需要2個vim plugins 1. ...
2008年7月24日 星期四
[google] google bookmark的使用
›
目前使用的網路書籤為google bookmark,配合上firefox的GMarks這個plugin,在瀏覽和管理上都相當的方便。GMark可以在側欄開啟,比起在menubar上面好用很多。在IE 6.0上面使用menubar來瀏覽書籤移動會變的卡卡的不好用,用側欄開啟就沒有這...
2008年7月15日 星期二
[Unix] 轉換不同時區的時間
›
轉換不同地方的時間因為有些地區的夏季時間(day light saving time)不同,所以不能只用和GMT 的差距來計算,還要知道夏季時間差、開始以及結束,非常不方便。 因此使用環境變數" TZ "來設定系統的時間,只要知道那個地區的time zone ...
[Socket] 用Multicast來傳輸資料
›
unicast, multicast, broadcast 介紹三種的網路傳輸方式。 其中 Multicast 是用廣播的方式,將資料傳送給所有加入群組的 ip。 IP區段為:224.0.0.0 ~ 239.255.255.255 下面介紹如何設定傳送和接收 Multicast...
2008年7月8日 星期二
[Vim] Class Browser : Taglist
›
taglist 是一個vim的 class browser plugin ,它能讓vim編寫程式更方便。 設定方式: 1. exuberant ctags 版本要在5.0以上 2. 下載 taglist 3. 如果沒有建立過vim的plugin,要建立 ~/.vim ,以及 ~...
›
首頁
查看網路版