2010年8月14日 星期六

重構與否,不要陷入迷思

很多對程式有著很大熱情的工程師們都會認為良好的程式碼才是一切,於是不斷找空檔將其重構。但事實上這些年我慢慢試著阻止自己這樣作,當然,如果是真的寫的很差的程式,例如每個地方都有相同一塊塊的code,整理是必需的。

不過常常重構也是產生更多問題的開始,例如已經穩定的產品,工程師為了要加入一些設計模式而造成出貨時間的延宕。在台灣大多數的公司都沒有系統架構師這個職位,所以都由工程師來擔任設計,一開始所思考的想法便不是宏觀大局的眼界,日後才會需要一直改...

寫程式的初衷是要達到它的功能,並不是為了要做出藝術品,這就是我的觀點,因為使用者不會在意背後到底是怎麼做的,如果能讓人用的滿意,就是好產品!

2010年5月14日 星期五

iPhone App[iPeg] 上架摟~



經過一次的reject,整體審核時間約14天(所以其實沒有意外的話,Apple每次的審核大約是7個工作天(當地時間)),終於在今天上架了,我自己很感動的去購買第一個app(0.99 us)... 
其實這過程中,程式不是最難的,是美工...程式只花2天,但美工改了6次阿...
希望各位給予一點建議指教^^, 順便膨場一下!!



2010年4月29日 星期四

iPhone開發技巧(5) 找到先前版本的 iPhone SDK 與 Xcode

抱歉隔了好長一大段時間才又寫了新的文章,因為Sam最近在忙論文口試與準備上架第一個iPhone App,在整個開發過程中有參考不少的網路OpenGL ES for iPhone教學,但是有些人可能會發現到因為Apple更新速度很快,所以很多程式框架是在2009年被拍成教學,但在2010年那些框架就全改了。並且,在你申請完ADC帳號後,作實機測試的時候也有一項很麻煩的問題,例如Sam的iPhone更新到3.1.3但是Xcode與SDK是3.1.2,然後執行時候它會和你說裝置版本不符合所以不能Run,這時候千萬不要Restore版本歐!!(除非你裡頭資料不要了...),於是你上去ADC找,會發現只有最新版本Snow Leopard,通常像Sam還沒升級(還是leopard)的就認命Restore...。

2010年3月25日 星期四

iPhone 開發技巧(4) 通知追蹤

我們平常對於iPhone App的開發,都是著重在MVC或商業邏輯上,當然大家一定會有自己的一套除錯方式,或是利用Performance Tool等來進行調效,不過這裡Sam想和大家說一下通知追蹤。

iPhone應用程式中的互動可分為三大類:Delegate(委派)、Target-Action(目標-動作)及Notification(通知)。

Delegate(委派)的作用方式可將它想像成使用者告知A去做事,而A事先把這份責任委派給B,因此,A在接收到做事指令後會直接轉交B來執行(聽起來有點類似推卸責任...雖然最後還是會把事情做完...)。

2010年3月24日 星期三

iPhone 開發技巧(3) 不用NIB(XIB)產生應用程式

延續技巧(2)的結論,Sam覺得還是示範一下怎麼樣不用NIB(XIB)來產生應用程式。
首先,新建一個Window-based Application的Project,然後你會在左方看到如下圖所示的檔案清單。

2010年3月19日 星期五

iPhone 開發技巧(2) 要不要使用NIB(XIB)?

我們在開發應用程式的時候都會使用InterfaceBuilder的視覺化界面來配製NIB(XIB)內的元件,這樣的確是比較省事,不過說穿了,NIB(XIB)在編譯的時候一樣是去產生一堆code。如果想知道你的NIB(XIB)到底在幹嘛,Adrian Kosmaczewski這位仁兄寫了一套轉換模組nib2objc,可以拿來玩看看。
一般開發者總是會認為從頭到尾都用code去產生的效能會最好,事實上這個觀念也沒有錯,Matt Gallagher 針對 UITableView 的顯示進行了比較,一方是由InterfaceBuilder產生,另一方用code來建立視圖。

2010年3月9日 星期二

iPhone 開發技巧(1) release 的使用

一般而言,iPhone開發的時候要自己管理記憶體,雖然可以使用autorelease pool來讓Objective-C自動回收,但大多數的程式設計師還是喜歡自己掌控變數的生死,因此就會使用到大量的release方法。
例如:
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"A", @"B", @"C", nil];
[array release];

2010年1月22日 星期五

再會了~昇陽 So long, old friend

歐盟今天通過了Oracle與Sun的併購案,也等於宣告Sun這個偉大公司的離去~
Java之父James Gosling在他的部落格貼出一幅畫,應該非常貼切許多Java人(或者是傾向Open Source程式開發者)的心聲...


2010年1月21日 星期四

心智圖與甘特圖運用

最近這兩天在整理論文的東西,也順便預定了一下論文時程,老實說,又要系統實作、手機應用加上專家訪談,真的是相當累人,所以只要一環進度落後就會造成很大的影響,因此甘特圖就是必備的東西。
甘特圖(Gantt Chart)由亨利·甘特於1910年開發的,主要為透過條狀圖來顯示項目、進度、和其它時間相關因素隨著時間進展的情況。
其中,橫軸表示時間,縱軸表示活動(項目)。線條表示在整個期間上計劃和實際的活動完成情況。甘特圖可以直覺地表明任務計劃在什麼時候進行,及實際進展與計劃要求的對比。管理者由此可以非常便利地弄清每一項任務(項目)還剩下哪些工作要做,並可評估工作是提前還是落後,亦或正常進行。除此以外,甘特圖還有簡單、醒目和便於編制等特點。

2010年1月20日 星期三

Google GO 語言獲得 TIOBE 評選為2009年度程式語言

TIOBE的年度語言排名又出爐了 ~ Java仍然穩站第一位,php排名提升,python仍然不動,不過由於iPhone的關係,Objective-C 躍昇到12名,而去年11月才發表的Google GO語言則莫名其妙的一下跳到13名...

原文出處:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

2010年1月16日 星期六

安裝PostgreSQL on Mac OSX

之前Sam使用過資料庫的經驗有Oracle、MSSQL,當然最常依然是MySQL。基於php全球使用人數眾多,而通常與MySQL直接綁在一起變成書籍、課程等,也讓MySQL的聲名大噪。不過最近由於論文要研究一些國外的典藏系統(DSpace),發現他們除了商用資料庫外,也有使用PostgreSQL(念法為post-gres-ql)。PostgreSQL首次發行日為1989,MySQL為1996,所以請不要因為沒聽過它的名號就認為它很新或不夠成熟...

2010年1月14日 星期四

如何做一個出色的程式人員(轉)

轉自 http://blog.csdn.net/lkjxshi/archive/2010/01/07/5149541.aspx
愛這行! ! !
從事任何行業都一樣,只有真正的愛上了這份工作,才會投入熱情,才會在順境中自我警醒,在逆境中尋找突破。這個行業的競爭很激烈,你停下來走,別人就立刻會跑步超過你,沒有對這一行業的一種熱情,就很難在困境中保持一種執著的態度堅持到底。
踏踏實實“紮馬步”
今天無意中看了“校長”的“程序員&司機”,其中談到了關於程序員速成的問題。其實速成班畢業的“系統殺手”早已在遍布大江南北,只是在互聯網時代,互聯網的應用型軟件生命週期越來越短,業務驅動主導的情況下,這種速成方式看起來反而提高了企業生產效率。但這樣的人才也就只能寫幾個Facebook上的插件應用或者iGoogle上的Gadget,真的要出Google,Amazon,Yahoo改變互聯網世界的企業,還是需要踏踏實實先學“紮馬步”的人。

2010年1月13日 星期三

反三段論

剛在JavaWorld@TW上看到有某大軟體公司在徵人,並且面試題目考的是相當有難度的Syllogism
三段論是由亞里士多德創立,用於推出結論。至於反三段,是人們日常思維中常用到的推理模式。其形式如下:
如果P並且Q則會R
所以,如果非R並且P則會非Q
或者
如果P並且Q則會R
所以,如果非R並且Q則會非P