最近又開始把C++拿出來用(太久在linux system中都是使用C),重新在開始寫C++卻發現以前對C++的coding有很多不是很好的習慣。以前一開始使用C++比較多其實是在我剛出社會時做windows engineer的時候,那個時候因為都是寫些小程式,所以習慣用UI的角度看整個程式,常常都是以UI為中心,所以程式的靈活度很低......Read More
PS. 我的網站改版了歐, 去看看吧
Friday, December 16, 2005
Monday, December 12, 2005
cat on TCP/IP
別誤會, 我沒有要賣貓
習慣使用Unix-like command-line的朋友
一定對於"cat"這個指令十分熟悉
他可以把檔案的內容顯示在terminal中
(device node也可以啦, 其實大概可以open與read的VFS都可以)
但是如果我不想把結果放在本機端顯示
而想要透過網路傳送到另一個machine呢?
我想Gnu-netcat是你的好選擇
簡單來說, 這個程式其實與cat沒兩樣
只是他將結果傳送到網路罷了
所以說, 你可以將本機上的一些資訊傳送到其他地方
有啥用途呢?
看你怎麼用吧....ㄏㄏ
舉個簡單的例子: syslog
雖然syslog可以用-R的方式將log message送到遠方的logserver
但是如此一來本機將沒有log file
利用本機端的cat或tail指令, 配合netcat可以構成一個簡單的solution
另外, 如果兩邊都用cat來顯示與存入
也是一個簡單到不行的"單次"ftp
(傳完一個檔就結束呀...ㄏㄏ....好啦, 我知道有wget比較好用)
甚至於例如在工廠中, 遠端可能使用一個embedded device或是laptop
可以將一些serial port的資訊直接送到後端server
(例如barcode scanner, GPS mouse, RFID reader, Card-reader....等等)
運用上就看你的智慧了(或是PM的智慧....ㄏㄏ)
Anyway...這是一個很棒的小程式
習慣使用Unix-like command-line的朋友
一定對於"cat"這個指令十分熟悉
他可以把檔案的內容顯示在terminal中
(device node也可以啦, 其實大概可以open與read的VFS都可以)
但是如果我不想把結果放在本機端顯示
而想要透過網路傳送到另一個machine呢?
我想Gnu-netcat是你的好選擇
簡單來說, 這個程式其實與cat沒兩樣
只是他將結果傳送到網路罷了
所以說, 你可以將本機上的一些資訊傳送到其他地方
有啥用途呢?
看你怎麼用吧....ㄏㄏ
舉個簡單的例子: syslog
雖然syslog可以用-R的方式將log message送到遠方的logserver
但是如此一來本機將沒有log file
利用本機端的cat或tail指令, 配合netcat可以構成一個簡單的solution
另外, 如果兩邊都用cat來顯示與存入
也是一個簡單到不行的"單次"ftp
(傳完一個檔就結束呀...ㄏㄏ....好啦, 我知道有wget比較好用)
甚至於例如在工廠中, 遠端可能使用一個embedded device或是laptop
可以將一些serial port的資訊直接送到後端server
(例如barcode scanner, GPS mouse, RFID reader, Card-reader....等等)
運用上就看你的智慧了(或是PM的智慧....ㄏㄏ)
Anyway...這是一個很棒的小程式
Sunday, December 11, 2005
SQLite3的C++ wrapper
最近使用SQLite3來做一些自己的東西
因為是使用C++當作程式語言
所以找了一下網路上有沒有相關的project可以利用
(建立sqlite3的database程式我用C語言解決)
果然讓我找到一個(Open Source萬歲)
Sqlite Wrapped
我在SQLite3中試過滿好用的
可以用object的方式處理database又不用自己寫wrapper
有在C++使用SQLite3的朋友可以試試
因為是使用C++當作程式語言
所以找了一下網路上有沒有相關的project可以利用
(建立sqlite3的database程式我用C語言解決)
果然讓我找到一個(Open Source萬歲)
Sqlite Wrapped
我在SQLite3中試過滿好用的
可以用object的方式處理database又不用自己寫wrapper
有在C++使用SQLite3的朋友可以試試
Wednesday, December 07, 2005
GNU screen
我的工作環境雖然大多已經在X window下運作
但是依然有大量的時候必須使用CLI(command line interface)
之前我最愛gnome-terminal
因為可以開一堆tab window在同一個gnome-terminal之中
但是有些時候當X不在執行的時候
當然gnome的程式也無能為力
後來看到GNU的screen這支程式
真是愛死了
他是一個讓你做到類似上面所述的功能
甚至在沒有X可使用的情形下
你可以開啟許多虛擬的screen執行不同的工作
在各個screen中copy-paste文字
支援unicode
太好了, 這樣的工具喜歡用CLI工作的朋友怎能不試試
但是依然有大量的時候必須使用CLI(command line interface)
之前我最愛gnome-terminal
因為可以開一堆tab window在同一個gnome-terminal之中
但是有些時候當X不在執行的時候
當然gnome的程式也無能為力
後來看到GNU的screen這支程式
真是愛死了
他是一個讓你做到類似上面所述的功能
甚至在沒有X可使用的情形下
你可以開啟許多虛擬的screen執行不同的工作
在各個screen中copy-paste文字
支援unicode
太好了, 這樣的工具喜歡用CLI工作的朋友怎能不試試
Tuesday, December 06, 2005
簡介Cairo

從一開始我發現Cairo這個drawing library後
一直覺得一定要花時間好好研究一下
因為他一定是一個明日之星
看到Gtk+-2.8已經開始使用cairo當成backend
越來越覺得可以思考一下他的利用
最近試了一下gtk與cairo的整合部份
其實gtk並沒有將cairo包裝起來
而是你可以利用cairo的一樣寫法在gtk程式中
舉例來說
我使用一個drawingarea來示範
GtkWidget *target;
cairo_t *cr;
target = lookup_widget((GtkWidget *)button, "drawingarea1");
cr = gdk_cairo_create ((GtkWidget *)target->window);
cairo_move_to (cr, 10, 10);
cairo_line_to (cr, 150, 20);
cairo_rel_line_to (cr, -50, 100);
cairo_close_path (cr);
cairo_move_to(cr, 150, 100);
cairo_show_text (cr, "中文測試");
cairo_stroke (cr);
cairo_destroy (cr);
(PS. gtk都是使用UTF-8編碼, 所以中文沒問題)
這是一個簡單的glade所完成的gtk+程式(執行畫面如最上方圖)
你可以看到除了得到cairo_t的部份外, 幾乎都是cairo原身的語法
其實gtkmm似乎有在完成cairo的widget元件
但是我其實還挺欣賞這種作法的
gtkmm也可以直接使用cairo的function
唯一差別只在取得cairo_t的方式
對於GUI後端顯示技術與向量式繪圖有興趣的朋友
不妨去看看cairo吧
Subscribe to:
Comments (Atom)