2010年10月27日

創業的勇氣

IMG_20101025_145356.jpg

終於來到這一階段,辦公室已經有個雛型,就等著重新油漆後把辦公家具、電腦等搬入,就可以開始運作。

以前的我,從來沒想過有這一天,我只想單純的寫程式,一直寫、一直寫,寫到哪一天我的手動不了為止。但出社會後,我發現這樣的想法太過天真,在公司上班後有許許多多的問題不在寫程式上,每天花最多的時間反而跟程式無關,但我不想當一個全能的員工,我只想當一個很無能、只喜歡寫程式的 Programmer。

於是這個念頭開始萌生,如果可以,我要打造一個可以讓愛寫程式的 Programmer 盡情寫程式的環境,所以,我創業了。

萬事起頭難,我總覺得創業最一開始面臨的難處就在這個地方,要下定決心,要有拋下一切的決心,如同和尚出家一樣,拋棄三千髮絲,抱著無法回頭的決心,勇往直前。而這決心怎麼來,我認為是要以勇氣相陪。

說的很簡單,但要真的要提起勇氣時卻很難。要放棄穩定的薪水、在公司的職位,提出辭呈很難。沒收入時早餐靠著土司果醬、中午吃麵、晚上自己煮飯,要撐下去很難。要花費畢生積蓄甚至要面對負債,拿出一大筆錢創業更難。每一個階段都在考驗著我有沒有足夠的勇氣。這是創業的難處,也是創業好玩的地方。

創業前我也猶豫著,因為創業是一片茫茫大海,離開溫暖的碼頭後只有兩種結果,尋找到另一個靠岸或是餓死在海洋上,一旦離開就無法回頭。想到這就讓人退縮,人總是害怕失敗,害怕不確定,創業集結了這兩要素,要提起勇氣下定決心真的好難。

在要與不要之間,天使跟惡魔來來回回不知道大戰了多少回合,不過站在山腰回首來時路,我發現找尋勇氣的來源其實一點都不難,根本就是在身邊俯拾即是。

不要說郭台銘、王永慶這類成功的企業家帶給我們的影響,這對我們這種小老百姓來說太遙遠,只會讓人覺得我怎麼可能會有一樣的機會成功。想想身邊的親朋好友,是不是有人已經在創業,他們可能學歷不如你,能力不如你,但因為環境所逼,他們早已創業,而且還活得不錯。

如果你沒這樣的親朋好友,想想巷口賣早餐的阿姨(我沒鄙視的意思,相反地,我很尊敬這些願意為生活努力的人),他們也許連電腦都不會開機,但他們就是每天早上五點打開大門在那做生意,從不間斷,而且一做就是好幾年。

我的條件有他們差嗎?如果沒有,為什麼我做不到?

就是這句為什麼我做不到,勾起了我的好勝心,心跳加速,腎上腺素激增,拳頭緊握,我可以做到的,勇氣就如湧泉般,在心中源源不絕的冒出。

每當在創業的過程中遇到退卻,我總是用這樣的想法激勵自己,沒有理由別人做得到我做不到,這招還挺好用的。

除了這種勇氣來源外,我還比別人幸運許多。

我有支持我的家人,當我一說出我要創業得到的是肯定的答案,還默默幫助我。我有體諒我的女朋友,容許我整天在家坐在電腦前實驗我的想法卻不去洗衣擦地。我有兩個單細胞生物的朋友,當我萌出創業的念頭他們頭也不回的決定與我一起並肩作戰。

時至今日,船已啟航,茫茫大海還等著我們去挑戰。我們不會成為硫磺島上的英雄但希望哪天我們可以在無人島上享受人生。有時想想,其實創業的人一點都不孤單,只要提起勇氣,誰都可以進入這充滿挑戰的國度,這裡早已有許多前輩在這等著你的光臨。

2010年7月21日

炎炎夏日來去童玩節玩水

今年夏天天氣特別熱,不去玩水整天在家吹冷氣簡直太辜負上天的一番美意。夏天講到玩水的首選當然非童玩節莫屬,每年夏天腦子都想著要去朝聖一番卻一直無緣一探廬山真面目,看在今年是復辦的第一年,說什麼也要去觀光一下。

門票

一張350大洋的門票今年如果沒提早買優待票,現場買票就是 350 大洋(提早去iBon 買是 300)。園區入口對面有家商店在賣門票送礦泉水,如果想貪點小便宜可以去那家店買。

拿到票後猛然一看,這還是第一回看到這種玩樂的票有印上防偽雷射標籤,是我太少見多怪了嗎。

遊樂設施

進場後放眼望去是一池又一池又一池的水,水池中到處都是玩水的人潮,我想應該有上萬人同時擠在這幾個水池內吧。不像八仙有很多遊樂設施,這裡比較少大型的玩水設施,取而代之的是適合親子一起同樂的水上活動。

如果是跟朋友一起出去,去八仙會比較好玩,但如果是帶小朋友或是爸爸媽媽去玩水,那去童玩節準沒錯。
看到水心情跟著涼好大的泳池(誤)
大家玩得不亦樂乎天氣真好
噴到讓你張不開眼睛的水迷宮滿坑滿谷的人

其中推薦水床跟迷宮。

迷宮是黑色的圓球棚子,進去後會被來自四面八方的水噴到睜不開眼睛,撥完臉上的水又有水噴來,手忙腳亂中不知不覺就繞了一圈。

水床則是上去後很容易站不穩摔倒,除了要自己站穩外,還要想辦法害別人摔倒,管他認不認識,看到別人摔倒爬不起來就是個爽。

這才是人生

各個遊樂設施中午 12:30 ~ 13:00 會暫停噴水,去的時候玩沒兩項剛好遇到休息時間,超掃興的。如果沒中場休息,我想那些小孩子應該死都不會上岸吃午餐,商店的生意就會變差,美其名是讓大家休息,但背後應該都是$$$$$的因素吧。

玩累了,水池旁就是一片的休息區,主辦單位很好心的放了許多洋傘讓大家可以休息,但現場人那麼多,再多的陽傘也不夠用吧。

像我們這種晚去的,只能坐在樹下石頭上啃便當,不像台北一出門就是悶熱,這裡雖然太陽很大,但風也很大,即使大中午也是舒服的很。

超級 High-Net

除了這些水上設施外,今年來童玩節一定要挑戰的是橫跨冬山河兩岸的「超級High-Net」。以往只有在園區內有座 75M長的「High-Net」吊橋,但今年重新改版出發,整座吊橋橫跨冬山河,全長變成 220M,高 18M 約六層樓高,分為上下兩層。 去的時候走上層、回來走下層。
等等就要來去過天橋我要上天橋另一個角度
滿滿的排隊人潮高聳入雲霄180M的天橋

六樓有多高,沒多高啦,但有些人一上去就腿軟了,開始用坐的坐過去。最好去之前就做好心理準備,一定要去走一趟,不然就真的就白去童玩節了。
剛出發就有人腿軟YA 完成剛出發往回看過一半 回首來時路角度喬得不錯吧

也因為夠高,吊橋上的景色超好,可以一覽整個園區,慢慢走不會有人趕,如果膽子大一點可以在橋上多停一會,放開心胸欣賞風景。
從天橋上拍的遊樂園全景
連龜山島都看得到的全景

交通

天氣真的很好 我們出發的日子選的真好,天公作美,天氣超級好。這麼好的天氣我想去玩水,別人也想去玩水,星期六早上八點多,北二高還沒到國道五號閘道就排隊排的超長,回堵兩三公里有,比蘋果迷排 iPhone4 還誇張,更別說過了閘道還要再十幾公里才會到雪隧。

於是我們改走北宜,從下二高新店交流道,開過北宜到宜蘭也才一個鐘頭多一點,如果不想跟別人擠還是走北宜好,北宜的風景雖然不到超級漂亮,但比起塞在高速公路上動彈不得,還是走北宜的好,中途還可以在坪林休息一下,到了頭城界碑再去吃一下茶葉蛋,放假幹嘛擠在車堆中勒。

同場加映亞尼克蛋糕

爽 在海邊吃亞尼克準備開盒
很可口吧這是我的

回程時從基隆走北海岸回三芝。路過萬里亞尼克蛋糕順路去買了蛋糕,雖然常常經過萬里,但還是頭一次吃到亞尼克蛋糕。

傍晚時在海邊吃蛋糕真的很享受,一度有想要去海邊的咖啡車坐著喝咖啡、吃蛋糕,但念在今天花費過多就打消念頭,單純坐在吃蛋糕配海浪聲也不錯啦。

吃完在海邊吹海風總有一天會實現的

2010年5月21日

在 Android 2.2 Froyo 上開發者應該注意的事

froyo-android.png昨天是 Google I/O 大會的第一天,早上一起來就被 Day1 的部份 Session 嚇到說不出話,不是恐慌,是超級興奮。Google App Engine、GWT 這兩個一直有接觸的 Product 都有更新,而且是大幅更新。加上其他大大小小的更新,一天的時間根本來不及消化。

睡覺前照例打開 Google Reader 就收到 Android 2.2 SDK(Froyo) 發布的消息,不意外,但也來得太快了,本想說今天 Android Session 後才會發布,沒想到 Session 開始前就發布,大概可以猜出來今天又是熱熱鬧鬧的一天。

早上打開 Google Reader 前就有被 Android 2.2(Froyo) 攻佔版面的心裡準備,果不其然,十篇文章中有五篇是跟 Android 2.2(Froyo) 有關的報導,趕緊上官網下載新版本順便瞧瞧改了什麼。

一些新聞媒體會報導的改變就不說了,這裡主要是 Focus 在開發者應該會有興趣的改變。

版本更新

隨著新版本的發行,SDK Version 從 2.1 跳到 2.2,API Level 從 7 跳到 8。

有下載新版 SDK 的人應該會發現,存放 SDK 的資料夾,以往是以 SDK Version 做為資料夾名稱,現在則改成了 API Level。這跟當初 Java 在 1.5 的時候改名為 Java 5 有異曲同工之妙,Java 的說法是 5 比 1.5 看起來較威,難道 Android 改成 8 除了比較威,另外一個原因是為了壓過 Windows Mobile 7.0 跟 iPhone OS 4.0 嗎?
2010-05-21_132456.png

App2SD

眾所期盼可以安裝 App 到 SD card 上的功能在 2.2 上實現了,使用者在設定應用程式管理應用程式內可以看到新版本採用 Tab 區分不同類型的 App(以往是要按 Menu Key 選不同的 Filter 過濾出要看的 App),多了一個於 SD 卡的 Tab。
2010-05-21_141224.png

點選 Ap 後可以在手機內部記憶體跟 SD card 間自行搬移 App 存放的位置,前提是 App 要允許能夠安裝在 SD card 上。
2010-05-21_141335.png

為此,新版本 SDK 在 AndroidManifest.xml 內新增了 android:installLocation 屬性讓開發者決定程式是要安裝在內部記憶體還是 SD card 上,其值可以是 "internalOnly"、"auto"、"preferExternal" 三選一,但注意看 preferExternal 的說明

The application prefers to be installed on the external storage (SD card). There is no guarantee that the system will honor this request. The application might be installed on internal storage if the external media is unavailable or full, or if the application uses the forward-locking mechanism (not supported on external storage). Once installed, the user can move the application to either internal or external storage through the system settings.

但該做的事還是沒做,對開發者來說,Android 上並沒有一個很好的防盜版機制,雖然說 forward-locking 是防心酸的,但聊勝於無。現在安裝在 SD card 上的 App 連這一點點的小保護都拿掉了,這會讓更多開發商不想進入 Android 上阿。App2SD 對使用者來說是天大的好事,但開發商要的是防盜版機制,Android 快點拿出來吧。

雲端備份

這個功能真是太讚了,以往使用者重新安裝 App(非更新 App,更新 App 資料不會遺失),之前存在 Preferences 或內部 Cache 的資料會不見,如果要做到重安裝後還能保存之前的資料,要開發者自行處理。(嗚~我處理過)

現在備份這件事 Google 幫你作掉了,對開發者來說只需要撰寫一隻 Class Extend BackupAgentBackupAgentHelper,在程式內說明你要備份什麼資料,然後在 AndroidManifest.xml 設定一下 android:backupAgent,讓系統知道這隻 App 有備份功能。

需要備份時呼叫 BackupManagerdataChanged(),系統會在適當的時機呼叫你寫的備份 Class,然後把資料傳上 Google 自己的 Server。

當使用者重新安裝時,系統會自動把 Server 上的資料還原到手機內,背後的備份機制開發者完全不用理會,指定好要備份的檔案即可。

這功能還是 by User Account 的,用戶換手機後可以還原同一份資料,除非手機版本差異過大無法還原,照 Google 的說法,使用者完全感覺不到備份跟還原的存在,如果是這樣 User Experience 會非常好。

參考:Data Backup

OpenGL ES 2.0

在今年三月釋出的 Android NDK Revision 3 中已經支援 OpenGL ES 2.0,不過對於不會寫 C 的開發者來說,這功能離真正應用稍微遠了點。現在 SDK 內新增了跟 NDK 內的 OpenGL ES 2.0 直接對應的接口(稱 Wrapper 好像比較恰當),Java 開發者可以無痛直接呼叫 OpenGL ES 2.0 來使用。

效能應該會比原生 C 語言差一點,不過可以用、開發快速最重要,開發遊戲的人應該很高興看到這一點。

語音辨識

對提供語音辨識的廠商來說,新版本 SDK 允許第三方應用程式以 Plug-In 的方式,透過 RecognitionService 加入自己的語音辨識引擎。

以往在 Android 內有語音辨識需求時,都要打開某個 App 才能使用,例如 Google Voice 或是 Voice Go,現在則是可以讓使用者設定喜歡的語音辨識引擎,當有辨識需求時系統會自動呼叫辨識引擎,等於是主動幫你打開 App 使用。

原有舊版本在設定中的文字轉語音則被改成語音輸入裝置與輸出裝置,裡面整合了原有的文字轉語音語音輸出裝置)以及新加入的語音輸入,如果手機安裝了第三方的語音辨識引擎,就會出現在這裡。

這是安裝了 Android Sample Code 中的語音辨識引擎範例後的樣子(語音辨識引擎範例在 SDK 目錄下的 \samples\android-8\VoiceRecognitionService
2010-05-21_151114.png

對 App 開發者來說,當有語音辨識需求時,直接傳送 RecognizerIntent 給系統,系統會呼叫適當的語音辨識引擎來辨識,辨識完再把結果透過 RecognitionListener 回傳給 App,多美好的畫面阿,賽微科技,衝阿。

PS: 賽微科技已在 Android 上發表語音辨識輸入法(賽微輕鬆說)跟應用軟體(Voice Go),個人使用過覺得辨識度已經很好,去下載來玩玩吧。

強化的照相機

新版本 Android 提高了拍照時預覽的畫面更新率(Framerate),從 10 幾 FPS 增加到 20 幾 FPS,不過這只有拿到實機時才能驗證了。

另外新的 Camera Class 允許程式控制預覽時的 Zoom Level(呼叫 startSmoothZoom()),或是使用者改變 Zoom Level 時透過 OnZoomChangeListener 主動通知 App。

預覽時畫面的方向也不再固定是右撇子順手的橫向,可以透過呼叫 setDisplayOrientation() 來改變,有 0、90、180、270 四種可選。

Camera.Parameters 則提供了更多參數可以設定給 Camera 或是從 Camera 取得。還有 ThumbnailUtils 這隻小工具可以替圖片、影片產生縮圖。

放大縮小手勢

在支援 MultiTouch 的情況下,用戶最常使用的應該是用雙指來放大縮小螢幕上的圖片或網頁,以往都要自己寫程式碼來偵測放大縮小,現在新版本 SDK 新增 ScaleGestureDetector 讓開發者直接引用,不需要再自己寫啦。

原始碼在這,不知道有沒有人要改寫成支援 SDK 1.5 的版本,也就是第二指的 X、Y 座標是透過 MotionEvent.toString() 取得的版本,造福大家。

莫名其妙

ViewGroup.LayoutParamsfill_parent 被 deprecate,改成使用 match_parent,雖說 fill_parent 還是可以繼續使用,但沒事改這幹嘛?

Bug 回報

現在程式開發人員可以在 Developer Console 中看到自己程式的 Bug Report 了,這非 2.2 開發的程式限定,不管任何版本的程式都可以使用,主要是 Android 的手機都有一隻叫 BugReport 的系統程式在背景執行,

這對開發者來說真是一大福音,雖然無法精確到是哪個使用者做什麼動作造成的,但起碼可以知道程式是不是有發生大問題。如果還能看到使用者的評論跟線上回覆的功能就真的太美好了(做夢中)。
2010-05-21_162826.png

最後

Android 官網上關於 Android 2.2 更新的網頁中,跟開發者比較有關的是 Android 2.2 Platform 這一頁,文中大部份都是從這頁中擷取出來。有一些本身比較少遇到的 Topic,例如 MediaDevice policy managerAccounts and sync 就沒特別拉出來說明。

官網上的許多文章也隨著新版本釋出同步更新,Android Blog 中也有一篇介紹了這次的更新,那些都值得開發者一看。

這次新版本發表,扣掉這些跟開發者比較有關的項目,使用者應該也能很明顯感受到改變,Froyo 加入了 JIT Compilation、瀏覽器換上 V8 Javascript Engine,速度都大幅增加,光是這兩點就值得更新。

軟體 OK 了,接下來換硬體,會是搭載 Froyo 的手機先上市,或是 Nexus One 會先更新呢?Nexus Two 快出現吧

Related Posts Plugin for WordPress, Blogger...