2009年12月17日 星期四

boost::noncopyable

trace到一半忍不住…又忍不住來打混又來跟大家分享了。
還記得陳欠欠之前提到的
雞婆的
C++
嗎?
這篇告訴我們一個該養成的好習慣,防止一些可以避免的錯誤。

還我漂漂拳

上次欠有貼過的link
SyntaxHighlighter
基本上竹林新文章的template已經有幫忙加好script了
想貼code的時候如以下的形式就可簡單的放好

2009年12月16日 星期三

Composite VS Private Inheritance


這兩天和阿伯討論Composite VS Private Inheritance
事實上這是effective C++的item38 和 39
都是在論述"is-implement-in-terms-of"
相信大家都懂composite得用途
當你需要他的一些特性,但你不是他,得要客製化他的behavior就可以使用composite

2009年12月14日 星期一

2009年12月13日 星期日

指標常犯錯誤一

最近NJ在談指標, 我昨天剛犯了一個常見的指標錯誤, po來和大家分享, 順便秀一個po程式碼的語法.

我寫了個小routine要parse字串, 把"aaa_bbbb_cc"拆成"aaa", "bbbb", "cc", 其中"_"代表切分用的字元, 程式碼大概如下(忽略buffer size checking等細節)

2009年12月11日 星期五

Michael Say Hello

Hi Guys,

我是Michael, James欠的朋友, 和他前後當過三次同事, 包括現在這次 :)

這裡的文章質量都不錯喔 有機會再和大家分享我的經驗

Some facts about me:

1. 慣用的程式語言: C/C++, Java
2. 喜歡用 SDK style 作 Windows programming
3. Favorite editor: vi
4. 最近在玩OpenGL ES

Michael

Bridge Patthern

昨天真是愉快(打混)的一天,因為欠上篇提到coding convention與link裡的Herder files dependencies讓我想起之前effective c++報告過的item 31 Minimize compilation dependencies between files。在大家討論的過程中,forward declaration 的精神相信大家都透過hsu的 abow-stara類別圖更了解了,現在來點實用的吧! Bridge Pattern。我小改了以前item31的sample(因為貼code篇幅還有天生的惰性,在Person端的implement有偷懶),總之,review以前的code再擴充些亂七八糟的想法真是太有趣了。

2009年12月10日 星期四

指標非常淺的淺談

由於對 C/C++ 實在很不熟悉, 最近就跑去唸 K&R 的 The C Programming Language, 作者在指標章節提供了一個 declaration 的簡單定義如下:


dcl: optional *'s direct-dcl
direct-dcl: name
(dcl)
direct-dcl( )
direct-dcl[optional size]

借用書內的圖表, 可以比較清楚的知道他的關係如下:

Coding Convention

在看上一篇阿伯的文章後,找了一些關於objective-c #import的資料,無意間看到這篇 Google Objective-C Style Guide 覺得值得參考google怎麼訂定coding convention的,重點在哪,等等。
C++版在這-> Google C++ Style Guide

還有Apple版的

2009年12月7日 星期一

Include guard VS. #pragma once

一個簡單的小觀念,卻是我工作以後才開始的習慣-Include guard
Include guard解決了大型專案修改時,牽一髮動全身的already be defined問題(同一個header被include兩次在c++是不合法的)。另外還有一招叫作#pragma once 有同樣的效果,不同點在於它是用”物理”的檔案位置來避免重複include。所以今天如果專案裡有兩份"一模一樣'"的header file,就…還是會出包。稍微比較一下兩種方法的優缺點。

JSON String Encoding

最近在找關於JSON string encoding的時候額外發現一個有趣的技巧可以分辨Unicode家族。
JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. Since the first two characters of a JSON text will always be ASCII characters [RFC0020], it is possible to determine whether an octet stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking at the pattern of nulls in the first four octets.
00 00 00 xx UTF-32BE 
00 xx 00 xx UTF-16BE 
xx 00 00 00 UTF-32LE 
xx 00 xx 00 UTF-16LE 
xx xx xx xx UTF-8
Read more: http://www.faqs.org/rfcs/rfc4627.html#ixzz0V5v8SI97

2009年12月6日 星期日

UML Modeling/Drawing Tools

最近在找一些跨平台的UML Modeling/Drawing Tools,意外發現兩個很有特色的東西。
  1. yUML
  2. Gliffy

2009年12月5日 星期六

Stack-Based Class Design

我學過一招,也在前幾天施展給Hsu跟阿伯看,所以在這裡撰文分享一下。

(靠~招式快用完了,沒神秘感了)

事情是這樣的

2009年12月4日 星期五

Configure Unit Test in Xcode 3.1.3

Test Driving Development 是一種開發 Project 的方式. 可以自動化去檢查每個要檢查的地方有沒有正常工作. 可以有效的減少許多在開發和除錯過程中產生的 side effect 的發生. 因此, Refactoring , 非常的倚賴這種工具來加強開發的安全性. 除此之外, 要先寫好 test case 然後才 implement 實體 method 的邏輯, 也可以讓 method 的邏輯會更明確, 否則 test case 會難以設計. 所以, 今天在介紹在 Xcode 裡面, 應該如何設定 test unit.

Burden of Using Dynamic Link Library

濫用DLL是我長久以來看到的一個現象。這裡提到DLL泛指各平台的dynamic link library,不是單指Windows的DLL。而且dynamic link也分成Load-Time Linking 與Run-Time Lining兩大類,本文是針對Load-Time Linking做個探討。

為何說濫用呢?

不知所為何事,就是濫用。我看到的狀況是通常都在不知道DLL的好處(或者是壞處)的情況下就決定每個Module都要寫成DLL,以為只要寫成DLL就一定有好處,其實不然。

2009年12月3日 星期四

Convention Over Configuration

之前在找一些web相關的framework的時候,在功能比較表裡看到一個項目叫CoC。很好奇的就去一探究竟什麼是CoC,原來CoC就是Convention Over Configuration的縮寫。

這個概念簡單來講就是用一些簡單的常規、慣例(convention)來取代繁雜的設定(configuration)。這在很多先進的framework廣泛地被應用,目的就是要簡化開發者的工作,免除一些複雜的設定。我個人認為它是一個潮流。

詳情還是請看一下列文章:

http://en.wikipedia.org/wiki/Convention_over_configuration

http://softwareengineering.vazexqi.com/files/pattern.html

2009年12月2日 星期三

包版本惹辣


最近我在包版本的時候老是出狀況
不是不能compress不然就是不能copyflash drives
實在讓人感到很機八

所以就去survey了一下到底哪裡出問題
先排除電腦本身的問題後
嘗試了用網路(drop box)取代flash drives來傳遞資料
結果發現能compress & copy!!!!

所以矛頭就指向flash drives
雖然我家小黑被我操很大
但是以往他為我傳遞了無數高槽
所以應該沒有問題才是呀

assert(I'm loving it);

我很推崇在code裡加assert,可以讓問題及早被發現,也可以透過assert與client溝通。
廢話不多說,讓我先舉幾個assert常見的用法。

2009年12月1日 星期二

Reference vs. Address

相信大家都知道C++有個特有的參數傳遞方式 - call by reference,只是
大多數都
不太確定它跟call by address的差別與使用時機。我想藉由這篇文章分享我個人的看法。

2009年11月30日 星期一

有趣~Google網頁註解

蠻好玩的,看到有趣的資訊也很容易轉貼,這個功能會取代掉社群網站預設的討論功能嗎? 我覺得更方便,至少針對一個討論區討論,不會有會員註冊的限制。

參考來源:

"單兵注意"
- on Flickr - Photo Sharing! (在「Google 網頁註解」中檢視)

雞婆的C++

AVI的應徵筆試裡有一題
What functions does c++ compiler write for your class silently?
答案是:
  1. Default Constructor 
  2. Destructor
  3. Copy Constructor
  4. Copy Assignment Operator
我相信有幾位同仁應該還記憶猶新。這個概念其實很簡單記也很重要,但很少人知道。

不過應該有不少人心裡嘀咕著"Compiler會產生什麼function關我什麼事?,我會寫class就好~"

2009年11月29日 星期日

今天吃飯我跟欠談到的那個人

http://zonble.net/

這是我在這邊工作以後不知道怎麼找到的人的文章

我覺得他有些文章的觀點還算...有趣(白爛)!?

2009年11月28日 星期六

約耳測試

簡單地替你公司的軟體開發評分
中文版的在這 英文原版的在這
你現在的公司有幾分呢?請留言分享。

約耳測試 (Joel Test)
  1. 你有使用原始碼控制系統嗎?
  2. 你能用一個步驟建出所有結果嗎?
  3. 你有沒有每天都重新編譯建立(daily builds)嗎?
  4. 你有沒有問題追蹤資料庫(bug database)?
  5. 你會先把問題都修好之後才寫新的程式嗎?
  6. 你有一份最新的時程表嗎?
  7. 你有規格嗎?
  8. 程式人員有沒有安靜的工作環境?
  9. 你有沒有用市面上最好的工具?
  10. 你有沒有測試人員?
  11. 有沒有在面試時要求面試對象寫程式?
  12. 有沒有做走廊使用性(hallway usability)測試?


The Joel Test
  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

2009年11月26日 星期四

好文章推薦

這個網頁是翻譯一個非常資深的軟體工作者對於軟體這個行業的各種認知和看法. 在看的過程中, 解決也澄清了很多自己工作一年多來內心的衝突與疑惑. 推薦給大家.

2009年11月20日 星期五

自我超越

這是我喜歡的自我(PolygonLoader)超越方式,比較單純,而上面(IResourceLoader)也不需要特別配合我修改。A story about inner class & private member.可以討論看看有沒有其他作法可以達到同樣目的。

2009年11月19日 星期四

CodeProject有沒有?

(以下故事存屬虛構,如有雷同純屬巧合。)
(為保護當事人權益,名字均為杜撰) <==阿不是說是虛構,哪來的當事人!

這故事發生在辦公室裡。
傑姆士(SW待退紅軍)正在認真的上facebook,突然電話響起~

"為~你好",傑姆士很專業地接起電話回答。

"傑姆士嗎~我是批西,你現在有空嗎?" 電話那頭傳來FW/HW老大(處長)-批西的聲音。

2009年11月5日 星期四

由private進public易,由public入private難~

昨天看到一篇有趣的菜鳥vs.老鳥文,後來發現Dr. Dobb’s也有,這個小class有許多重要觀念與巧思,值得玩味再三,我”直覺”還有許多自己不明瞭的細節在這class中。看起來像是某本書翻來的(否則就是貼文作者文筆太好拉),真應該找來看看。

2009年11月4日 星期三

竹林七賢~

我原意是想延續Athena的~
但是被小Y.... XD
無所謂~這才是真正的竹林七賢阿~

2009年11月3日 星期二