Monday, April 30, 2007

空間判斷小問題(一)

最近同事的工作上出現了一個小小的問題與主管討論,這是一個關於空間的判定問題,簡單的說就是:今天有一個圖形上面充滿了許多的區域,也就是說一個有許多polygon的圖形,當使用者用滑鼠點選螢幕的一個位置的時候,程式必須決定使用者選取了哪一個位置而做出相對應的反應。這樣的問題在graph裡面算是一個簡單的小問題,當然也可以不用graph的方式解決,後來同事似乎用顏色判別來解決(每一區用一個顏色代表),但是當我們必須使每一區域都一樣的顏色或是顏色會改變時,就得真正的去面對空間的問題.....繼續閱讀

Wednesday, April 11, 2007

Google notebook

google最近開啟了一個新的服務: notebook
這個記事本的功能我個人覺得很挺好用的
除了你可以登入去使用外
google notebook也有firefox的擴充套件
因此你可以把記事本放在你的firefox右下方
我覺得挺方便的

我覺得google notebook對我來說最好的是當作工作筆記
因為它可以有分享的功能(筆記本旁邊的兩個小人就是有分享)
我覺得這對於再工作時候的共用筆記很棒
因為一些小小的project要去弄個project網站弄共用筆記好像很麻煩
因此這樣的東西就是一個很好的替代品

不知不覺我的google service也越來越多了耶 ㄏㄏ

Thursday, March 22, 2007

AGG: Anti-Grain Geometry

最近在學習AGG這個2D圖形library,覺得他真的很棒
反鋸齒的展示2D圖形在向量圖中的表現關係到整體感覺
AGG在這個方面表現的十分出色
AGG是一個用C++來實作的library,他用了大量的template來作泛型化設計
因此它的使用十分具有彈性
在跨平台上面他也是很棒
幾乎所有的code都是跨平台的
惟一與平台有關的是在OS event與drawing上面
因此他利用了一個類別稱為platform_support來處理與OS相關的
在platform_support裏面的platform_specific他只宣告它是一個類別
所有跟OS相關的資料結構妳可以宣告在這個類別中
因此將AGG放進目前不支援的drwaing library是非常簡單的
AGG目前有X11、SDL、Mac與win32的支援
我實作了DirectFB的支援,還挺容易的

AGG自己有一套control系統,現在已經有一些基本的control
譬如check box與slide-bar等等的控制元件
在字型顯示方面,他有提供freetype的支援
因此在文字顯示也不是問題
我試過utf-8的中文顯示很棒
但是在轉換unicode碼的部份妳要自己實作
不過這部份並不困難就是

結合AGG+DirectFB+SVG
或許可以有一些有趣的project可以玩玩歐

Wednesday, March 14, 2007

淺談OpenSER(三)

在整個openser.cfg中最重要的大概就是你怎麼處理route裏面的規則,這裡給你做一個簡單的示範。

通常一開始會先檢查SIP message是否是合法的,因此我們對SIP message的forward header與message長度作檢查.......繼續閱讀

Thursday, March 01, 2007

淺談OpenSER(二)

如果妳打開openser.cfg這個檔案,第1眼印象妳可能會以為它是一個script檔案,其實這樣說也沒有不對,但是之前說過這個script其實是lex的輸入文檔,因此妳必須滿足它的字彙規則,讓我們先簡單看一下這個檔案。

這個設定OpenSER的動作檔案簡單可以分成4個部份,分別如下......繼續閱讀

Tuesday, February 13, 2007

淺談OpenSER(一)

VoIP這種應用已經常識了很多年,卻似乎一直沒有太大的成果,當然這涉及到很多的問題,不過以SIP為基礎的原則也越來越確定(好啦,我知道妳用 Skype)。很多人對於VoIP總是感覺像是高不可攀的技術,但其實它並不如此的困難,尤其是有了自由軟體世界的努力,很多Project都可以讓妳輕 鬆的完成你的VoIP規劃。

當然VoIP是一個很廣泛的稱乎,舉凡用網路即時傳遞交換語音訊號其實都可以稱為Voice over Internet,但是VoIP還必須要涉入一些電信的領域,也就是signaling的動作。 就如同PSTN一般,VoIP也需要一個傳遞訊號的機制來建立通訊的兩端,SIP便負責了這件工作。一個SIP的register server可以讓妳每一個SIP client來交換訊息,當你要打電話給另一個朋友,在網路上妳必須要能先找到他,也就是對方的網路位置,但是當你的網路位置會改變的時候,一個可以記錄 你的網路位置的SIP register server便可以發揮功能.....繼續閱讀

Friday, January 26, 2007

OpenSSL 0.9.8

之前提過使用OpenSSL的方式
OpenSSL 0.9.7版本的方式在0.9.8d並不能正常運作
後來發現是SSL_library_init()與OpenSSL_add_all_algorithms()的問題
不要在使用這兩個function,請使用
SSleay_add_ssl_algorithms()
來代替
換成OpenSSL0.9.8d後可以把我搞慘了呀....ㄏㄏ

Thursday, January 25, 2007

Gentoo 2006.1 stage 1

好久沒有安裝linux了
最近有了一台新的硬體
想說給他裝一下Gentoo
於是乎抓了2006.1的install CD image後
開始從stage1給他安裝
(好啦...我知道我很閒...時間多)
發現2006.1版本stage1有個問題
當我用bootstrap.sh完要emerge system後
發生perl的module有些問題
看到是ExtUtils:MakeMaker:Config.pm的問題
對於perl我是非常陌生的...
但是當我
emerge unmerge perl
emerge perl
一切就回到正常了
看來是stage1的tar ball裏面有些問題
不過....小問題....這個世界又多一台linux box了...ㄏㄏ

Wednesday, January 17, 2007

State Design Pattern

以前寫程式的時候大多數寫一些具有互動UI的程式,因此所有的程式動作都決定於某一個event的發生,不過在很多的情況知下卻需要程式自己決定下 一步的動作,這種需求在自動化的設備中更是重要。以前唸書時相信大家都唸過finite state machine這樣的觀念,自己那個時候還真的是有念.....還真的沒有懂.....因為不知道如何應用....ㄏㄏ。

慢慢在工作上遇到 一些要求後才開始體認state machine是很重要的,但是當你用條件判斷式去決定下一個動作來實作state machine的時候,你會面臨一個問題:上面的長官對於程式的行為很喜歡改來改去....ㄏㄏ。因此每每加上一個新的state的時候都會搞得人揚馬翻 的,每次遇到程式的彈性不夠的時候,就會想起C++的可愛。在之前看Design Pattern的書的時候,曾經看到一種design pattern的設計:State。這次就讓我來試試實做一下吧....繼續閱讀

Saturday, January 06, 2007

FON


很榮幸能夠獲得一台幾乎免費的FON router
等了一段時間後終於收到我的FON router了
經過一些簡單的設定後
終於正式脫離Alien進入Linus的身份了
加油吧.....FON

Friday, January 05, 2007

用OpenSSL來保護你的資料

隨著網路安全的議題越來越受重視,現在的網路應用程式多少都要加上加密保護的機制,PKI這樣的機制也漸漸成為避免不了的東西。或許我們不是網路安 全的專家,不用去完全了解那些機制的原理,但是使用open source的library來將你的網路程式加上保護卻不是十分複雜的工作,OpenSSL便是一個十分出色的library,今天我們來談談PKI的 程式吧。

簡單來說PKI(public key infrastructure)就是通訊的雙方都有一份公鑰(public key)與私鑰(private key),公鑰只能用來加密,而私鑰只能用來解密,一個PKI的session就是一個交換公鑰的過程,這樣一來對方可以用你的公鑰加密而只有你的私鑰可 以解密,你用對方的公鑰來加密,相對的也只有對方的私鑰可以解密,這樣的機制免除了網路上傳遞密碼的問題。

讓我們來看看如何用OpenSSL來幫助你寫出PKI的程式吧.....繼續閱讀