2015年4月6日 星期一

為了開發iOS App,要如何先學好Objective C? How to learn Objective-C well in order to develop iOS App?

這個寒假以來大概是我腦力消耗最多的時候了。自從學校的網頁設計課程教授網頁手機版設計後,我就打算改成iOS版,然後開始想買哪種Mac,後來在室友的幫助下買到一台二手但是狀況極佳的Macbook Pro,就這樣開始了學習Objective C的旅程。

而剛好買玩電腦前後,學校有了個做App的比賽,剛好就藉這機會報名參加。那時候剛好是期末考,要在期考時完成作品說明書也是很累人。他有分初審和決賽,結果初審只有格式不符的沒通過,對於自己的辛苦準備實在有點過意不去啊。

實際上也是到1/25之後才有時間學習,剛開始被MVC的觀念卡住,還有一些瑣碎的物件導向知識又會出來反咬我。所幸後來就慢慢克服。我使用的教材以Stanford CS193p Fall 2013-2014為主,查資料時使用"Programming in Objective-C Fifth Edition",對我來說這線上課程真的就有如在史丹佛上課一般,老師講得緊湊又有趣,非常推薦。

回歸正傳,要開發iOS App還是蠻建議從Objective-C開始,理由不外乎有:

  1. Objective-C現有的程式碼多,Stackoverflow上一堆相關問題回答
  2. Objective-C已經存在許久,穩定度經得起考驗
  3. 學會Objective-C轉換到Swift根本無痛轉移,只是有些微語法差異
學了一陣子後發現重要的還是基礎觀念,每次有Bug大概有一半以上都是基礎觀念在咬我。很多想說我這功能不知道怎麼寫、不知道有什麼函數可用,其實網路上很快就可以查到。StackoverflowApp Coda上就有很多可用的程式碼。可是你如果不知道函數要吃的參數型態、這邊該不該alloc、NSDictionary要怎麼用、MVC架構如何導入,那很快還是會卡住。

我個人蠻推薦高見龍大大在部落格上的說明,像是protocol、instancetype都介紹得很詳細。另外雖然說語法常常會讓人卡關,可是相對應的電腦科學背景也頗需要。像是我最近剛讓iOS去跟SQLite做query,一些資料庫背景知識有時候會跑出來咬我。

不過我相信只要有毅力,真的就會慢慢地把App做出來。加油!

2015年3月11日 星期三

跳脫舒適圈一直都是好事?

有人說,跳脫舒適圈,可以讓人成長,挑戰自己的極限,還能擴展視野,看到不一樣的東西。

現代產業強調跨出舒適圈,投入其他領域,找到不同的商機,甚至異業結盟都有可能,讓自己的專業無限擴展。換言之,窩在自己的舒適圈,一樣可以活得很好,但是可能就看不到外面更美好的世界了。

不過,大二後我對這個有了不同看法。第一,一個人如果突然跑到自己完全不熟悉的領域,而且完全都沒準備,這樣用「救火」來說是否比較貼切呢?一位法律背景突然要去開刀也不太可能。因此,應該說是要找個跟自己有「一定」關聯的產業去做,才不至於出現極大的反感。好比法律系的可以去打醫療官司,可以去對付專利蟑螂。縱使之前不知道這是什麼,一做下去仍是很有意義的。

反之,如果新領域僅是要你幫忙、替他人賣勞力、絲毫不給你發揮空間,而且又跟自己背景極大的無相關。此時,就要審慎評估了。當然也有不乏救火的人才,柯P就是很典型的例子,受到刺激之下出來競選成為台北市長。他在手術房的經驗給政治人物新的看法,做事快狠準,乾淨俐落。

而這當然建立在他願意去做,他也覺得很有意義。於是乎,我試著探討「跳脫舒適圈」是否要什麼前提?倘若我覺得沒意義還要去做嗎?萬一我覺得有意義,但是做了之後發現不是自己想要的呢?這都見仁見智。重點在於,至少要有意願去做,也要去模擬看看做了之後會發生什麼事情。

其實當自己做了全盤考量,就等於跳出了舒適圈了。

因此,我會覺得,要跳去的地方最好要跟自己領域有關聯,或是符合自己某些特質。這樣做起來才會有意義,縱使可能會很累,但是已經做過全盤考量,才有本事走下一步,也才讓「跳脫舒適圈」的意義完整體現出來。


2015年1月31日 星期六

能力 v.s. 熱情:寫程式要有滿腔熱血,但是我們要怎麼把程式學好? Ability v.s. Passion: Being enthusiastic is the essence in programming, while learning skill counts.

最近在學ios objective c開發,突然有些感觸。自己學寫程式兩三年了,早就知道程式是我這輩子最想做的事情。但是有時候熱情並不會讓自己突然變成程式高手,也不會一夕之間變成比爾蓋茲。你可能聽過身邊的人說他覺得寫程式很有趣,但是到後來能變成程式高手的又有幾個呢?他們會持續做這份工作嗎?

對於非英語系國家的人來說,在英文環境下寫程式同時也變成一種障礙。

你看出來了嗎?有時候固有滿腔熱血很重要,但是一股腦兒地往前衝只會讓自己跌個狗吃屎。

我之前寫程式就是一直往前衝,我看到什麼文章就看,別人推薦的也看。雖然說多多益善,但是卻沒有深刻理解,就像過往雲煙一下子消散而去。我一直以為多看、多寫、多想就可把程式學好,但是顯然地我想得不夠深。而且我看來,學習能力也是很重要的一環,孔子說:「學而不思則殆。」真有他幾分道理。好比說學習函數我就會注意:

  1. What(追本溯源):函數的作用是什麼?語法是什麼?為什麼要有這個函數?設計理念是?如果有類似函數,他可帶來哪些效益?如果不使用它我還有哪些函數可用?
  2. How(運籌帷幄):這函數要怎麼用?放在哪個區塊?他有哪些parameters?他和其他元件可以怎麼互動?我怎麼發揮它的最大效益?
  3. When(抓住時機):什麼時候要用這個函數?為什麼有些programmer在這裡要用這個,原因是?
只要想要把這三個東西抓住,我就會一直查很多資料,同時間我也學會了。而這也是為何給同一份程式作業,有些人會腦袋一片空白,有些人很快就知道如何下手。差別很可能就在這裡。

整體來說熱情是幫助自己在遇到障礙時不會退縮,但是寫得好不好就很攸關學習能力和思考能力了。以學習能力來說,一定要不斷地問自己為什麼,讓你的思考得到極大化。

而在學習一個新語言時,因為程式語言的基礎理念大同小異,有先學過c其實就很夠用。使用高中的讀書技巧也很有用:
  1. 掌握程式整體脈絡、語法特色、函數寫法、資料型態等
  2. 把握來龍去脈:寫程式就像蓋房子,基底(使用何種程式)怎麼建?建材(資料型態、函數)選擇?
  3. 上機實作、多看別人的程式碼,還有Don't reinvent the wheels!
相關自學能力可看這篇:自學能力 - MBAlib

最後著看到這篇文章的人都能變得愈來愈強!

2014年1月9日 星期四

對於大學生活的省思(三):讀書和玩樂

上一篇:對大學生活的省思(二):偏差的國際觀、不足的國際競爭力

我覺得我們就算經歷過教改,甚至十二年國教,學生還是只會念書,根本不知道自己要什麼。找到興趣和人生目標所在絕對比念好書還重要。可惜我們還停留在只要上頂尖大學就會成功的想法,進好大學後就可以玩四年了。

在大學,玩和唸書一樣重要,玩不是說在宿舍打一整天的LOL,而是要玩出名堂,除非你玩四年的Game然後做出不得了的遊戲或是當個電競玩家(可惜在台灣還不被鼓勵);念書也絕非是一直念書,而是學到終身可用的知識。我有個同學每天就是念書,談話多半離不開考試、報告,一心只求高分。看在眼中也是蠻變態的,說不定他喜歡念書,可能適合走研究路線,但是長遠來看那思維還是停留在國高中時代:只為分數而唸書。

關於念書我覺得還有一點很奇怪,大家好像都見不得別人好:看到別人念書就會酸說好認真啊~裝認真喔~。我不懂你這樣說有何用處,奇怪這資源是我努力拿到的,我想要認真學習你就是不爽;其二,你覺得你大學都不念書出來會有競爭力嗎?你說課業又不是全部,對,不是全部,但是處於知識經濟的時代,四年後你說你培養了膽識和社交能力,的確這很重要,但你拿什麼見識給面試官?

我覺得大學還有一很重要的功能:讓學生會學習自我學習、會自動學習。我念的資管要寫程式,老師教得不錯,就是細節沒有教很多。問題來了,每次寫程式時同學對題目不會來問我時,我給他們一個函數或想法,他們就很訝異說老師沒教這個啊~我又不會。的確這不是你的錯,可是大學資源這麼多,網路和圖書館就在你周遭,你怎麼不花一點點打Game的時間來查個資料呢?

可能是因為我的高中畢業生進成大的較少,所以我有幸能進成大讓我十分感動,也十分珍惜在成大的每分每秒。想要讓今天比昨天更好,想要學更多我想知道的事,雖然可能很累,但我不會後悔。

對大學生活的省思(二):偏差的國際觀、不足的國際競爭力

上一篇:對於大學生活的省思(一):生活習慣

在國際化方面,我真的覺得我們跟別人差太多了。以東歐的克羅埃西亞來說,路上的司機、郵局人員大多會講一口流利的英文,飯店人員就更不用說了。你會說他們母語的發音系統和文字跟英文很像所以學得很快,錯了,是因為克羅埃西亞僅有二百多萬人口,不吸引外資外國觀光客是絕對必要的。而我們呢?學那麼久英文就只是用來應付考試,就算在外語環境充足的台北,用英文隨便問一個人都不一定能回答。

我深深感受到,我們還停留在台灣比中國好、晶圓製造很強、科技品牌閃耀全球,錯了,那是過去,世界變化太快了,然而我們一直還自我感覺良好。對應到大學生的思維,就變成我不學英文又沒關係,我看國內新聞就好,國外大事關我啥事?你說你看評論網站,那很好,可是不是第一手資訊,很多也是拿過外資訊翻譯過來的。畢業標準要多益820,這點做不到的話難不成要要求國外客戶用中文跟我們溝通嗎?

成大是一所綜合性大學,也是目前南部最好大學,常常會有國際人士來演講,偏偏身邊同學很少人去聽,十分可惜。在大學把書唸好根本不夠,那只是國高中的思維,必須還要學習如何提問、批判性思考,要達到這點很簡單,多看國外的評論網站是不錯的選擇,或是看TED演講都很棒。

下一篇:對於大學生活的省思(三):讀書和玩樂

對於大學生活的省思(一):生活習慣

大ㄧ上學期即將隨著期末考而過去,對於快要過完一半大一生活的我,比對國外還有之前對大學的憧憬,深深覺得目前大學生活其實可以更好、更健康也能更完美。

就能宿舍生活來說吧,隨便問一個大學生幾點稅,如果他回答1點那真的要感到欣慰,因為大多數人是2~4點,甚至通宵的。然後幾天起床?8點?9點?好吧如果有早8那他就一定要早起,不然早上沒課的話通常是睡到中午11~12點,我室友甚至睡一整天。

你說他們都在寫報告、學習很累?錯了,有多少人是在打LOL、神魔之塔,然後一晃眼就凌晨3~4點了,然後隔天的課也都在睡覺。我的天啊,這是成大耶,你不知道有多少人死命活命想要上頂尖大學,你卻擺爛不上課浪費生命,能翹就翹,殊不知國家在你身上投資多少資源才能讓你的學費能壓到2萬出頭。你以為上台清交成就了不起嗎?我不覺得,就算上台大我還是認為自己也沒多高人一等。看到對岸和韓國正以飛快的速度向上衝,我們的大學生如此糜爛又怎會進步?然後又說中國產品爛,韓國是狗,怎不先想想自己有沒有缺點?

大學士人生的黃金時期,每天晚睡晚起、花大量時間打Game,這樣我們的父母會作何感想?納稅人又做何感想?我們的健康又會如何?這一切似乎很明白易懂。

2013年9月22日 星期日

2013成功大學新生訓練營:水手經驗談

成功大學新生訓練:水手經驗談

On September 15th, the day that National Chang Kung Univsersity Freshmen Orientation Camp was held, four people of our older students had given us many valuable experiences of their own lifes.

At the beginning, Jimmy, whom I respected the most, has been travaling around the world throught his college life. What impressed me more was that he always gets the 1st grade in his competitive class. He had been to Japan, the U.S., Thailand, Singapore, New Zealand, and so forth. Relying on his excellent grades and his determination, he made himself full of global views.


Through his talks, Jimmy threw us some important idea to encourage those who want to travel or study abroad :


  1. Recording
  2. Prepare for Anytime : autobiography, Language, Target
  3. Good Relation with Prof
  4. Good Grades : Studying Group→Sharing and Discussion
  5. Friends
  6. Just Do It

After his marvelous speeching, another girl gave us some useful perspective of facing our unknown furure. Since her Chinese name is 丁云旋 and its pronunciation relates the the Chinese term of cos, she got this special moniker.

Her words were filled with persuasion that she dreamed to live in a colorful college life with success, friendship, not just getting a diploma from in NCKU. Holding this belief, she had joined many clubs and built enormous partnerships with many companies, which successfully made a great reputation for NCKU's students club. Belowing are her beliefs :

  1. Dream is a pure creation
  2. Rest is to prepare a longer journey ahead
  3. Empower, enlarge and enrich your influence
  4. Anything is Possible
  5. Make Each Day Count
Through those special experiences and wisdom, leading a colorful and spectacular college life may become easier and more colorful than ever!
Makris