2008年1月28日 星期一

MSN 地頭王

從別的網站看來的,是一種將 MSN 結合地理圖資的新玩法,玩家可以在地頭王系統中註冊自已的地理位置,然後你可以看到其它玩家的地理位置,當你對某個地區有特定的問題時 (例如你想找信義區有那些好吃的店),你都可以在地頭王中找到某些玩家並詢問他或是跟他聊天。但這會不會給玩家帶來騷擾呢,其實也還好,因為大家看不見你真實的 MSN 帳號,只看得到位置及你的 ID,除非你自己透露出你的個人資訊,否則就像聊天室一樣使用匿名,一點負擔也沒有,真是個有創意的玩法。

官方網站:http://www.localking.com.tw,你只要加入 im@localking.com.tw 這個 MSN 帳號,然後回答幾個資料問題,就可以加入地頭王的行列了,簡單又有趣。

localking_big.jpg

2008年1月26日 星期六

Moteiv Boomerang Bug Fixes

新版的 msp430-gcc 搭配 nesc 工作時會有個小問題,就是在編譯某些 code 時,會產生 segmentation fault 如下:
/opt/moteiv/tinyos-1.x/tos/platform/msp430/HPLUSARTFeedback.nc: In
function `VirtualizeAlarmC$0$signalAlarms':
/opt/moteiv/tinyos-1.x/tos/platform/msp430/HPLUSARTFeedback.nc:46:
internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make: *** [exe0] Error 1

好在官方已經修正了這個 bug,而且還釋出了一個 script,把它抓下來然後取代 /opt/tinyos-1.x/tools/src/mspgcc/build-mspgcc,直接執行就會幫你修正, 在 install patch 的過程會自動從網站下載修正檔,請保持網路通暢,在等候一段時間完成後,再去編譯程式就不會發生錯誤了。如果是使用 Vista 或 Linux 的話,要記得用管理者來執行這個 script。

參考網址

2008年1月14日 星期一

踩地雷的秘技

從 ptt 八卦板看來的

作者  kick (慶次)                                            看板  Gossiping
標題  Re: [好奇] 有沒有踩地雷的八卦啊?
時間  Sun Jan 13 19:23:22 2008

踩地雷秘技:
1.打開踩地雷,然後在鍵盤上依序輸入xyzzy
2.按下右邊的shift
3.螢幕最左上角會出現很小的白色小亮點提示你有沒有地雷,
沒有雷的話會亮,有雷的話就不會亮。
因為亮點真的很小,所以最好把桌布換成深色系的。
P.S:這個秘技我用XP試可以,Vista就不知道了。

2008年1月9日 星期三

[note] 常用的 design patterns

整理一下常見的 Design Pattern (從 Code Complete 2/e 上抄下來的)

Abstract Factory:以同一介面來建立一整族相關或相依的物件。

Adapter:轉換 class 的介面。

Bridge:將介面與實作分開。

Composite:建立與自已俱有相同介面的物件,可遞迴呼叫其內含的子元件的介面,而外界只要對上層的物件操件。

Decorator:對物件動態地附加責任,而不必為每一種可能的責任配置建立子類別。

Facade:對沒有提供一致介面的 code,提供一致的介面。

Factory Method:提供一介面用來建立物件,各物件的建立由抽象類別去實作。

Iterator:依序對集合中的物件提供存取權。

Observer:讓某物件監視著其 data member,在資料有變動時通知相關物件,達成資料同步。

Singleton:讓某一物件在全域的環境裡可以安全地被存取。

Strategy:定義一組演算法,讓他們可以動態地抽換。

Template Method:定義演算法的結構,由子類別實作演算法內容。

2008年1月7日 星期一

新書

其實我看書的速度很慢,也許是平常太不積極了,然後看書時也不能夠專心,今年一定要改掉這個不好的習性。

上上週又購入了兩本好書(雖然我lag很久了):

1. C++ 設計新思維 ( Modern C++ Design 中文版 ) / 侯捷 / 2003 年出版 (果然lag很久)

這本書主要在進階的 C++ 設計技巧,像是 meta-programming、design pattern 這種近年來紅起的技術,這本書非常硬不太好讀,最主要是它的內容不是傳統講語法的規格書,而是介紹如何套用範式到C++的code中,以及一些進階的技術,希望我不會遇到太多問題。



2. 軟體建構之道 2e (Code Complete 2/e 中文版) / Steve McConnell 原著 / 譚詠歸譯

這本就比較敘述性質一點,在講 coding 時的一些概念以及如果寫出好的、有品質的 code,是一本值得一讀再讀的聖經書。

2008年1月6日 星期日

Personas for Firefox

最近 Mozilla Lab 釋出了一款外掛 Personas,是個能讓 Firefox 不重開就變換主題的工具,試用了一下,發現他能夠改變的是Firefox的背景,使用的是HTML、CSS、JavaScript 等標準的格式,跟原有的佈景主題不太一樣也能搭配著使用。這工具的 logo 是隻可愛的小狐狸,喜歡它的朋友就裝來試試看吧。

2008 新年快樂

2007 的結束,也是101大樓最後一年放跨年煙火,也是我學術生涯的最後半年。最近是找研發替代役的時期,應屆畢業的我也開始面試了不少公司,在 2007 年底之前大概也有了五六家的 offer,如果沒有大變革的話,畢業後我應該會去訊連服務,未來工作內容跟目前 Lab 的研究方向沒有太大的關係,又準備要轉行了,嗯,說轉行也太嚴重,因為我本來就沒有很執著的一個領域,或許說,只要是從事資訊業或軟體開發的工作,都是我喜歡的目標,儘管有人認為沒有自己的專業並不是很好,但我就是不喜歡把自己限定在一個圈圈裡,能夠開開心心地當一個電腦玩家,不是很好嗎?希望未來的一年,能夠學到更多的東西,還有,如期畢業:)。

看了 Run PC 的報導,2008 年在軟體業上的大新聞應該是 Visual Studio 2008,因為這是微軟在 Vista 推出後第一套全新的版本,微軟在 Visual Studio 2003 後,把產品及 API 的文件 ( 即 MSDN ) 都整理的不錯,Visual Studio 2005 後也有釋出 Express 版本,所以想自己學習的學生們,不用花錢就可以使用 Visual Studio 這個強而有力的工具。Vista 的環境容入了 3D 的特效,GUI 的設計也變得跟以往很不一樣,因此 WPF/Sliverlight 及 3D 相關的 API 技術,將會是微軟推行的一個重點。另外隨著多核心處理器的流行,如果軟體不配合的話,很難發揮其效能,所以 multi-threading 的開發技術,亦會是個熱門的重點,如 Erlang 也開始得到大家的重視。程式語言方面,Ruby、python、C#、Lua、D 等等的,也慢慢進入主流,而原本學術界在用的函數語言,也會慢慢走入業界,2008 真是令人興奮的一年。

2007年12月24日 星期一

[note] More Effective C++ 2/e (3)

item 25:Virtualizing constructors and non-member functions
將 constructors 及 non-member functions 的行為虛擬化。

item 26:Limiting the number of objects of a class
限制 class 能產生的物件數量。

item 27:Requiring or prohibiting heap-base objects
了解要求或禁止物件產生在 heap space 的手法。

item 28:Smart Pointers
了解 smart pointer (auto_ptr) 的用法。

item 29:Reference counting
了解 reference counter 的實作手法。

item 30:Proxy classes
了解 proxy class 的用法。

item 31:Making functions virtual with respect to more than one object
讓函式可以根據一個以上的物件型別來決定如何虛擬化。

item 32:Program in the future tense
在未來時態下開發程式:提供完整的 class、設計容易被正確運用的 class、儘量使 code 一般化。

item 33:Make non-leaf classes abstract
如果有一個俱象類別 C 繼承另一個俱象類別 B,應該想辦法提煉出抽象類別 A,使 B 和 C 都繼承自 A。

item 34:Understand how to combine C++ and C in the same program
了解在 C++ 中使用 C 函式所會引發的問題,如 Name Mangling、Statics initialize、dynamic memory allocation 和資料結構的相容性。

item 35: Familiarize yourself with the language standard
儘可能地習慣 C++ 語言。

[note] More Effective C++ 2/e (2)

item 9:Use destructors to prevent resource leaks
使用 auto_ptr 配合 destructor,避免在 exception 發生時產生 resource leak。

item 10:Prevent resource leaks in constructors
注意 constructor 裡發生 exception 時,是否會產生 resource leak 及避免之。

item 11:Prevent exceptions from leaving destructors
當 destructor 產生 exception 時,別讓它被丟出 destructor (一定要處理之)。

item 12:Understand how throwing an exception differs from passing a parameter or calling a virtual function
了解丟出 exception 與傳遞一個參數或呼叫虛擬函式的不同。

item 13:Catch exceptions by reference
用 by reference 的方式來取得 exception。

item 14:Use exception specifications judiciously
明智地使用 exception specifications。

item 15:Understand the costs of exception handling
了解 exception handling 的成本。

item 16:Remember the 80-20 rule
讓 80% 的時間都在執行 20% 的程式碼。

item 17:Consider using lazy evaluation
考慮使用 lazy evaluation (拖挺戰術)。

item 18:Amortize the cost of expected computations
分期償還期的計算成本。

item 19:Understand the origin of temporary objects
了解暫時物件的產生時機。

item 20:Facilitate the return value optimization
了解並會協助 compiler 做 return value optimization。

item 21:Overload to avoid implicit type conversions
使用 overloding 技術來取代隱型轉型

item 22:Consider using op= instead of stand-alone op
使用 op= 來完成 op 的動作,例如使用 += 來完成 +。

item 23:Consider alternative libraries
考慮使用更理想的函式庫。

item 24: Understanding the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI
了解虛擬函式、多重繼承、虛擬繼承及 RTTI 的成本。

2007年12月12日 星期三

[note] More Effective C++ 2/e (1)

item 1:Distinguish between pointers and references
了解 pointer 及 reference 的差異。

item 2:Prefer C++-style casts
使用 C++ 的轉型。

item 3:Never treat arrays polymorphically
別以多型的方式來處理陣列。

item 4:Avoid gratuitous default constructors
非必要不提供 default constructors。

item 5:Be wary of user-defined conversion functions
小心隱式轉型所帶來的危險 ( 以explicit禁止之 )。

item 6:Distinguish between prefix and postfix forms of increment and decrement operators
了解前置式累加(減)與後置式累加(減)的本質及差異。

item 7:Never overload &&, ||, or ,
不覆寫 && || 及 ,,否則會影響傳統上 compiler 對於條件式的 short-circuit 特性。

item 8:Understand the difference meanings of new and delete
了解不同意義的 new 與 delete,如 new operator、operator new 及 placement new。