-
Recent Posts
Recent Comments
Archives
- December 2013
- November 2013
- March 2012
- February 2012
- December 2011
- November 2011
- October 2011
- August 2011
- July 2011
- June 2011
- May 2011
- March 2011
- February 2011
- January 2011
- October 2010
- August 2010
- July 2010
- May 2010
- April 2010
- March 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
Categories
Meta
友站連結
Author Archives: victor
我有一個夢想
我很幸運,出生在網路快速成長的年代,感謝網路的發明,我從國一就有機會開始學習寫程式,在這些年裡,心底一直都有一個疑問,我相信很多人都跟我一樣有同樣的疑問 「為什麼台灣沒有軟體服務產業?」 我們從新聞看見Yahoo成功、Google成功、Facebook成功,但是卻很少看見來自台灣的軟體服務產品能夠站上國際舞臺,台灣的硬體毫無疑問的是相當有競爭力的產業,然而隨著競爭國家的掘起、工資物料成本的提升,到後來就只能爭取幾毛錢的毛利,相對於硬體,軟體和服務才是能增加最多價值的產品,搭配台灣的硬體優勢將會是最強的組合,然而縱觀千百種不會成功的理由,不管是教育的問題、硬體產業的排擠效應、社會風氣的問題等等,這些都不是一朝一夕就可以改變的,因此我相信只有透過一些人來開路,先建立成功的典範,以這些人當種子散播就有機會帶動整個台灣軟體發展,不管是Google、Yahoo等等公司,有很多新創的公司都是從這些公司出去的員工 「那麼誰來做這些事?」 我知道,不管我有再多的想法,不去做都只是空想而已,我告訴我自己,不要期待別人來完成你的夢想,只有靠自己才有辦法改變這世界,我相信 「做的比說的大聲」 或許有人會說,這會失敗,我們的教育都傾向教我們一定要成功,卻沒有教我們要如何失敗,或許最終會以失敗收場,但又如何呢? 在我大學一年級決定開始Now.in的計劃時,我想過各種失敗的可能性,但是我這樣問自己 「如果因為怕失敗不去做,難道你要等到哪天看見別人做出你想做的東西,那時才大聲嚷嚷那是我的想法嗎?」 我不想成為最後只剩一張嘴的人,於是我開始動手,在大學上面講課時我在下面畫伺服器架構的設計圖,回到宿舍上網找適合的技術,當別人在寫程式作業時,我在寫Now.in的程式,當別人在打魔獸時 . . . . . . . . 我也在打魔獸,終於網站在2009年年底上線,隨著時間過去,從一開始只有最簡單的廣播功能,到後來漸漸增加了一些功能,看著使用人數越來越多,就像生了一個女兒看她長大一樣 她在 Alexa的排名也來到了全台458,全球57K 而在前陣子我們也在IDEAS Show得到不錯的成績,朝我們的夢想邁進了一小步,我們希望有一天我們可以成為廣播界的Youtube,然而隨著我們想做的東西越來越多,而技術人力只有我自己一個,很多使用者都以為我們是一個公司或團隊,當收到抱怨信說為什麼出問題時我們也只能無奈的賠不是,因為使用者不知道這其實是一個人做出來的,直到前陣子我找了我兩位同學幫忙寫iPhone和Android的app,才有其它的人加入,雖然手機只是我們很久以前就有的想法,但只因為人力不足,所以一直都沒辦法實現,甚至一開始我還打算連手機的app都自己完成,因此我想在這裡大聲地說 「我們需要你的幫助」 在擁抱美好夢想前,我想先把醜話說在前頭 「我們沒有資金」 很不幸的是我們並沒有太多的資金能夠雇用人力,我們沒有豪華的辦公室,沒有員工旅遊,沒有錢請全聯先生替我們代言,我們只能提供微薄的薪水雇用實習的員工,所以為什麼你要加入我們? 我們有技術 我們有的是以Python為核心的相關技術,在Now.in裡幾乎所有程式都是用相當新的Python技術寫的,而且範圍牽涉之廣,從桌面應用程式、網路伺服器、網頁應用程式甚至到伺服器管理都是,所以加入我們你可以學到技術,這些是花錢去補習班或請家教也學不到的 我們有使用者 身為一個程式設計師,我想最傷心的事情大概莫過於寫出來的程式沒有人使用,對於Now.in來說,現在每天有十萬個訪客,線上聽眾的鋒值可以達到一萬,電台可以達到一千個,我相信最開心的事情就是看到自己的程式有人使用,我同學推出的iPhone和Android App在短短幾週內都達到了五千次的下載,並且一直在成長,這成就感我想是金錢無法比擬的 我們有理想 就如同我們的口號 「廣播和收聽全世界」 我們希望能夠打造一個線上的廣播社群,讓任何人都可以有發聲的管道,除此之外我們還希望能夠讓人們可以更緊密地在我們的平臺上互動,還有太多太多我們想達成的目標,簡單的來說 「我們想改變世界」 這些理想都是在大公司很難找到的 我們需要你的參與 我們需要以下的人才 … Continue reading
那些在Now.in學到的 – Software engineering practices
Now.in這個網站在2009年年底上線,在這幾天參加IDEAS Show之前終於來到了台灣前五百大,全球六萬名,這期間只花了一年半,而事實上這個網站早在我大學一年級約2006年左右就開始有這樣的想法,接著花了一兩年的時間開始構思和找相關的技術,2009年開始實作,從開始到上線只花了一年的時間,其中專案之龐大還有牽扯到的層面之廣,從架構的設計、後端伺服器的譔寫、前端網頁、Client端、伺服器管理、資料庫管理,很多人都不相信這只有我一個人完成的,而且還是在讀大學和碩士的課餘時間,直到最近上線的Android和iPhone才找了同學幫忙寫,感寫他們這幾週的辛苦 這整個過程的經驗,事實上多到可以寫一本書,不只是技術上的,之後有空我也會寫一些文章來分享我在其中所學到的一些東西,今天我要分享的是我在碩士一門軟體工程課以Now.in為主題所分享的一些經驗,主要是一些我在開發Now.in前後所體認到的一些經驗與想法,因為我發現很多人不是沒有技術,而是缺少對於服務、軟體工程等等的相關思維,或許這篇文章會有一些幫助,除此之外,我也希望能夠將我自己的想法記錄下來,當我要接受新的想法時,就可以回頭看看以前的自己為什麼會有這樣的想法 人越少,越有效 這樣的想法主要來自人月神話這本書,軟體開發不像是收割小麥,人越多越有效率,因為需要溝通,這意味著當你有越多人牽扯在這其中,所花的溝通成本也越高,每個人的平均效率就越低,除此之外,有一句話這麼說 讀程式比寫程式困難 相信有寫過真正程式的人都會有這樣的體認,寫程式的過程是將你的思想轉化為程式寫出來,而讀程式則是透過這些字句語法來理解程式原本的想法,就有如瞎子摸象一樣,因此當你的團隊裡有越多人寫同一份程式,光是在讀程式理解想法才能繼續寫的這整個過程中就損耗了不少生產力,因此甚至知名的電腦科學學者Dijkstra主張程式應該由單一個人來寫,因為它是一個人的想法 這樣的想法除了來自人月神話,也受最近出版的一本書Rework影響,它是來自37Signals公司的經驗,37Signals是一家小型軟體公司,雖然只有十幾個人的規模,但是推出的產品都很受歡迎,他們強調要找對的優秀開發者,還有開會是造成生產力浪費的原因之一,我認為Now.in之所以能以我一人之力完成,正因為我不需要開會做決策、不需要溝通,將我自己的生產力發揮到極致才有可能完成的 然而,如果是小型的專案能夠一個人寫當然是最有效率的,但是當專案的規模大到一定的程度,超過一個人或少數人能完成的地步,增加人力資源就是不可避免的事,不過在此之前,要慎重考量引入新的人力所造成的影響 保持敏捷 很常見的錯誤軟體開發方式就是一口氣推出一大堆功能,然後期待使用者會喜歡這些功能,但是可悲的事實是這些功能推出來通常都不是使用者所要的,就如投影片所表示的,一口氣在單一個開發循環中推出了一大堆的功能,這花了很多的時間與心力,但是卻發現使用者要的的只有一小部份和目前所做的有所重疊 在現實上,你總覺得你可以抓到使用者所想要的,但仔細想想會發現那是你自己想要的,並不一定每個人都跟你想要的是一樣的東西,一口氣在一個循環內開發如此多的功能,對於變化如此快速的網路世界來說,你永遠都趕不上變化 邊移動邊開火才是正確的方式,這有一部份的想法是來自約耳談軟體,如投影片所看到的,一開始先從最核心的功能做起就好,然後看使用者的反應與需求再來改版與新增功能,盡量保持每個開發循環很小,才能抓到使用者所要的 Now.in就是這樣的開發方式,就如投影片裡的抓圖,在一開始只有最核心的廣播功能,其餘的功能都是後來才加上去的,因我看見了需求,我看見使用者們邊聽廣播邊在PTT上推文討論,顯而易見的聊天是必需要有的功能,此後才開發了聊天室 右手邊這張圖是來自Rework裡的插畫,他們認為計劃就是在猜測,是的,沒錯,網路上充滿了創新與變化,很多東西是以前從來沒有人做過的,那麼你要如何計劃? 你沒辦法計劃,任何五年、十年計劃之類的東西都只是在賭博而已,不要浪費時間做太過長遠的計劃,邊移動邊開火才是正卻的做法,阿里巴巴的馬雲也說過,他們成功是因為 沒有資金、沒有技術、沒有計劃 這裡指的沒有計劃就是這麼一回事 老程式不死只是凋零 很多人會犯的一個毛病就是認為舊的程式都是很糟的,要完全砍掉重新寫才是好的,但是事實上從我的經驗告訴我,那些在線上跑經過多次修改的,遇過一大堆你在開發中想都想不到的詭異問題才存活到現今的,它們是如此的老練,有很多失敗的例子就是因為將舊有程式丟棄,直接採用全新的程式來面對實際的應用,事實上這樣就有如送沒見過世面的新兵上最慘烈的前線戰場送死是沒有兩樣的,我想或許Digg就是這樣的一個例子 Digg在去年推出全新的版本,但是不停地出現嚴重的問題,加上新的使用方式受到原本的使用者反彈,導至使用者大量且快速地流失,另一個例子是Netscape在推出新版時將舊的程式全部丟掉,在約耳談軟體的Things you should never do裡有提到 所以我們就一直使用舊程式就好了? 請別會錯我的意思,我想表達的是在前線跑的程式裡有太多是你重新寫不會想到的問題處理,請不要單純為了想砍掉重練而重寫,你需要的是重構而不是重頭寫過,就算你真的打算重新寫過,也請好好重視原本的寫法,以Now.in來說,有些東西就是從最早的版本傳承到現在的經驗 # XXX Workaround for fucking IE6, fuck you IE6! response.cache_control = “no-store, no-cache, … Continue reading
技術應為服務而生
在前面的一系列文章裡,我發現有些人有些很有趣的想法,有些人覺得使用Windows是很落後的事,或是要用vim、gcc、gdb來寫程式才顯得有技術,我自己也是從小玩技術長大的人,事實上我很能理解這樣的想法,或著說我以前也是這樣的想法,但後來漸漸地想法就改變了 在大學時有位組合語言很強的傳說中的教授,他的組合語言課真的很令人印相深刻,他從來不帶課本,一上台就開始畫圖,然後用很粗俗易懂的例子講解,可以看得出他對低階的這塊領域實力有多深厚,有一次他在上課談到 我以前在做賭博電玩時,有人來跟我推銷繪圖晶片,可是我跟他說,不用,我覺得自己寫一個pixel一個pixel畫才有技術 可是後來發現別人用繪圖晶片來畫圖,一下子就做出來了,我還在刻低階的繪圖功能 後來因為這樣做不過別人就不做了 聽了之後仔細想想我自己也是這樣的想法,以前在寫遊戲時最初是用Direct Draw,後來覺得使用現成的函式庫沒什麼技術,在之後重寫的版本中,就自己寫畫圖的函式庫,一個pixel一個pixel去填,半透明混色也是自己去算,甚至想自己寫3D的繪圖引擎,雖然確實在這過程中學到很多東西,但事實上整個寫遊戲的過程中有好一大半的時間是花在底層的這些基礎繪圖功能上,後來漸漸理解,重覆利用別人做好的輪子是很重要的事,只因為覺得 “那樣才叫有技術” 而去自己做別人已經做好的東西是很不成熟的想法,後來我終於理解到 技術只不過是在工程中完成目標的手段,並不是最終的目的 除了技術以外,事實上在整個軟體的工程當中,還有太多值得注意的事,從你學習那項技術需要花多少心力,技術相關的社群,如果你是商業公司還得考慮到有沒有支援商業服務,還有你用這項技術的話能不能找到人來接替你的位置? 你用了這項技術生產力有因此而提升嗎? 以先前提到的例子,用gcc直接下指令編譯,用gdb下指令除錯,你的生產力有因此而提升嗎? 為了從一般的IDE環境下切換到這樣的環境需要多少的學習成本? 如果你找一個人來接續你的工作,他是否有辦法像你一樣熟練地使用這些工具? 如果你要教新來的人熟悉你的環境,你需要花多少時間? 我相信,大部份提到要使用這些工具的人都沒想過這些問題,這很正常,因為他們熱愛技術,但是實際的工程應用這些都會是很重要的問題。 人適應工具 而在這些提到的一些工具中,有個很極端例子,那就是vi/vim,我自己有用vim,因為打大量程式會比較有效率,或在Linux下改程式都得用到,為什麼說vim是很極端的例子,因為它的設技概念與我們一般常見的IDE是相反的,一般的工具都是設計工具來適應人,然而vim卻是設計工具要人去適應它,因為如果需要打大量的字,手一直保持在鍵盤上是最有效率的,所以它設計讓你手都不用離開鍵盤,就能進行所有的操作 Vim cheat sheet 來自 http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html 當然,缺點是它的學習曲線很陡,在一開始你可能打幾個字都會弄得灰頭土臉,身為技術人員如果你覺得打大量的字是很常有的事,這投資是值得的話,學一學vim確實是不錯,但推薦初學者學vim就不是什麼好事 所以,當你很興奮地覺得這個東西才算有技術,或著是開源萬歲之類的理由,推薦給別人時,想想你自己花多少時間學這東西,別人又能因此得到什麼好處好嗎? 而當你開始設計產品時,你想想如果Apple的Macbook廣告詞是 經過三個月的練習,使用我們的系統工作效率提升了50%!! 你覺得還會有人買這樣的產品嗎? 工具適應人 另一種設計的想法,也是主流的設計思維就是讓工具去適應人,大多數你能在市面上看到的產品都是這樣的設計,我們舉一些例子,Visual Studio最近推出了一種新的UI,叫Debugger Canvas,是將整個debugging trace的過程以泡泡視窗的方式串聯在一起,讓你可以很直覺地理解程式呼叫的過程 [yframe url=’http://www.youtube.com/watch?v=3p9XUwIlhJg’] 有這樣視覺化的輔助,除錯的過程會輕鬆許多,在有現代化工具可用的情況下,除了學習以外的炫技理由堅持使用原始的工具,就只是浪費寶貴的開發時間而已 再舉另一個例子,就是git或mercurial在送commit之前,我個人都會對送出的內容review一次,以免將測試用的程式也送進去,例如像是這樣糟糕的例子 def auth(user_id, password): # … Continue reading
常見的Linux暴炸原因
今天看大家在搶COSCUP報名,報名頁面一如往年掛掉了,以我自己的經驗看來這樣等級的流量樣打掛Nginx應該還有很大的距離,我自己處理過Now.in在運行中遇過無數各種奇奇怪怪的問題,所以很多常見的Linux暴炸原因都見怪不怪了,對於上千等級連線的伺服器這些是很常遇到的事,如果沒有弄好的話很容易就整個Linux卡住或炸掉,以下介紹一些我所知道Linux會被塞暴的主要原因,都是參數沒設好為主 最大檔案數沒設好 我想這是最多常犯的錯,當然我也犯過,linux預設每個user可以開1024個檔案,嚴格來說是file descriptor,當然socket也算在內,如果這個數字沒有調的話,就算你的Nginx或是什麼鬼伺服器再怎麼威猛,1024這麼少的數字,稍微大一點的流量,都一樣是被塞暴的下場,因為執行伺服器的使用者開不出新的檔案、socket來,而這個問題最常遇到是因為一般情況下你的網站連線數量要達1024不是每天都會發生的,可能發生一下子就沒了,等到哪天真正大流量來時才會發現整個網站暴炸了,但是1024個以上的同時連線數對於目前的now.in伺服器來說隨時都在發生的,所以如果我有哪台伺服器忘記設,很快的就會炸掉 至於要怎樣提高檔案數限制,請參考 Linux Increase The Maximum Number Of Open Files / File Descriptors (FD) ip_conntrack已滿,丟失封包 另一個常見被塞暴的是ip_conntrack,是iptables用來追蹤連線用的表,如果滿起來的話,新進來的封包會被丟掉,你可以在/var/log/message裡看見 Jul 15 19:22:30 hostname kernel: ip_conntrack: table full, dropping packet 這樣的訊息,可以透過修改最大值來解決,參考Linux Iptables ip_conntrack: table full, dropping packet error and solution 或是重開iptables service也可以洗掉目前的table … Continue reading
你沒遇過的編譯器鬼打牆,許功蓋問題
我想在前面的文章裡很多人可能都沒遇過所謂的鬼打牆,大學四年中我遇到最多鬼打牆的狀況全是Dev C++引起的,其實如果都一一記下來應該是個很長的列表,只是問題解決通常我自己也忘記了,其中一個我印相最深刻的鬼打牆問題不是由Dev C++引起的,而是Visual C++ 6.0引起的,程式碼大略像這樣 class SocketHandler { // 此函數會被呼叫以通知連線成功 void onConnectionSuccess(); }; void SocketHandler::onConnectionSuccess() { // some code here } 這是我自己寫的一個socket連線程式,不管怎麼試,編譯器總會跟我抱怨它不認識onConnectionSuccess這個函數,從表面上看起來程式也沒有任何問題,所以問題到底出在哪裡? 答案是許功蓋問題,看到了嗎? 註解的最後一個字是”功”,而我們知道”功”在 big5 其中最後一個字元是 “/”,且VC6不懂得unicode,它會以ASCII的方式來處理程式碼,所以程式碼就變成 // 此函數會被呼叫以通知連線成 void onConnectionSuccess(); 如此一來,註解就被延伸到了下一行,onConnectionSuccess的宣告就因為這樣被忽視掉了,為了找到這個問題,我重讀了好多次程式碼,都找不到任何缺陷,一整天的時間就花在這個上面 這個故事告訴我們什麼? 從此之後我就強迫自己改用英文寫註解,我想沒有多少人有機會遇到這問題,而誰也想不到註解也會造成程式的編譯問題,這個故事告訴我們,工具的好壞遠比你想像重要,不要以為這種缺陷沒什麼,事實上是那些缺陷可以讓你debug一整天都找不到原因,除了你的工作時間浪費了,學習的時間更是浪費在其中,更慘的是還帶來了嚴重的挫折感,再一次,工欲善其事,必先利其器,學習更是如此
Posted in C/C++, 中文文章
5 Comments
[筆記] 手動編譯MySQL
Download mysql source tar xvf mysql.tar yum -y install cmake Compile Follow guide here: http://forge.mysql.com/wiki/CMake mkdir bld cd bld cmake .. make sudo make install Set permissions of linux user and group Follow guide here http://dev.mysql.com/doc/refman/5.6/en/binary-installation.html groupadd mysql useradd -r -g mysql … Continue reading
[筆記] 讓ec2的user-data script每次都會執行
修改 /etc/init.d/cloud-init-user-scripts 裡面的 /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure 為 /usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure 參考來源:https://forums.aws.amazon.com/thread.jspa?messageID=247082
我的open source專案整理列表
從很久以前,我就覺得open source是一件很酷的事,覺得能夠免費讓大家用自己心血的結晶真的是件很了不起的事,因此我自己除了使用了不少的open source資源,也一直希望自己也能夠多少有點貢獻,所以在過去多年中確實也有寫了一些open source的專案,雖然都不大,但都很多都是我自己會用到的工具,雖然以前可能有寫過一些介紹,但其實還有不少是沒有介紹過的,會寫open source專案其實多少就是希望有人能使用,而隨著時間久了,我自己會在看到時才想起原來我有寫過這個專案,所以想說弄篇文章來整理一下我所做過的open source專案 Python HGE HGE以前是一款商用的2D遊戲引擎,後來開源,因為我覺得他的引擎挺簡單好用的,重點是有硬體加速,不像SDL純軟體算圖很慢,所以想說把它移植到Python,於是就用Boost.Python寫了一個專案,完成度大約7~8成,裡面有些比較難處理的部份還沒弄好,但主要功能大多都已經可以使用 專案網址: http://code.google.com/p/python-hge/ Gluttony Glottony是一個用來分析Python函式庫在PyPi上的相依情況,主要是有一次我安裝TurboGears時遇到其中一個package的伺服器似乎掛掉了,整個進度就因為那個檔案載不了而無法進行,因此我覺得或許這種相依的情況也是選工具時重要的考量,於是就寫了這樣的工具 專案網址: https://bitbucket.org/victorlin/gluttony Po translator 這是一個用來將.PO檔中的內容透過Google自動翻譯的工具,主要是因為我自己的網站有中文版,想翻成簡體中文,手動一個一個實在太花時間,於是就寫了一個這樣的工具,不過目前有個缺點是當送的量太多,會被Google擋掉一陣子的樣子 專案網址: https://bitbucket.org/victorlin/po_translate Apply firewall iptable幾乎是所有用Linux主機多少都會用到的服務,但是在重設iptable的過程中,難免有時會不小心擋掉自己,如果是遠端登入就麻煩大了,主機在美國也碰不到,只有遠端重開機一條路可走,為了解決這問題,我做這個小工具,可以讓設定iptable像是切換螢幕解析度一樣,會有一段時間讓你確認,沒反應的話會自動取回更動前的設定 專案網址: https://bitbucket.org/victorlin/apply_firewall Correct pycountry 這是一個pycountry的fork,主要是因為pycountry引用ISO裡的國家名稱,但大家都知道台灣的名稱被ISO亂訂,看了心情就不是很爽,所以就fork出一個專案然後改掉裡面的名稱部份 專案網址: https://bitbucket.org/victorlin/correct_pycountry Middleman Middleman是一個基於gevent的簡單網頁proxy,主要是我自己寫來抓論文用的,不過現在已經沒在使用,middleman的名稱主要是取自middleman attack 專案網址: https://bitbucket.org/victorlin/middleman/ Logy 一個簡易的中央日誌記錄用的網頁服務,目前沒有繼續開發的打算 專案網址: https://bitbucket.org/victorlin/logy Loso … Continue reading
軟體產業的失敗藉口 – 台灣的市場太小了?
最近在網路上越來越多軟體產業相關的部落格,也有很多不少相關的討論,其中我發現很多人將台灣軟體產業發展不起來歸究到台灣的市場太小了,我個人覺得這是最糟糕的藉口,因為事實上網路並沒有國界,只要有能力,一台電腦,一條網路線,一個人一樣可以做全球的生意,把自己能力不足怪到沒有市場是很奇怪的事,在這世界上有無數軟體成功的案例,都不是來自美國等軟體大國,我想在這裡舉出這些我所知道的一些例子,來證明確實在地的市場並不能做為軟體產業發展失敗的理由 EVE online – 冰島 冰島這個國家,人口數三十幾萬人,主要的產業活動是漁業,除此之外軟體產業也是這個國家的產業之一,是世界主要軟體的輸出國之一,有趣的是,在不久之前冰島還是被選為所謂最幸福的國家,吸引大量外資到當地投資,但因為炒作過度,導致整個國家銀行破產,幸福國度的神話也從此破滅,這個國家軟體產業最為人知的代表作就是一套以科幻星探險的線上遊戲,玩家可以駕駛太空船,在太空進行買賣、挖礦,還有海盜的冒險,我曾經有玩過一陣子,這遊戲有個公司的機制,玩家可以組成公司,一起行動來達到最佳的利益,例如有些公司以挖礦為業務,為了防止被海賊攻擊,就得有護衛艦負責保護,也有些公司是專門四處獵殺玩家的,我就有因為貪圖在高危險區的高任務獎勵,被守在星門外的海賊集團打暴過,印相相當深刻,值得一提的是這套遊戲的核心語言是Python 來自官網的遊戲畫面截圖 想想看一個人口只有三十幾萬的非英語系國家,國家還破產了,居然可以推出一套受全球玩家歡迎的線上遊戲,台灣有兩千餘萬人口,中文使用的人口是世界上最多的,居然說台灣沒有市場,這真的是一件很丟臉的事,請不要再提台灣市場很小做為失敗的理由 Minecraft – 瑞典 Minecraft是一套以挖礦和建造建築為主要活動的遊戲,很難以常見的遊戲類型分類,可以說是很特別的一款遊戲,這款不起眼的遊戲已經在全球賣出了兩百多萬套 作者是Notch,他來自瑞典, 瑞典的人口有九百多萬人,使用的主要語言是瑞典語,不用說市場當然是比台灣小,除此之外他在遊戲前期的開發都完全只靠他一人,在遊戲賣到一定量時,他就拿資金成立的公司,這又是另一個和在地市場無關的成功案例 Angry bird – 芬蘭 紅遍全球的手機遊戲,這家公司是來自芬蘭,國家人口數五百多萬,主要語言是瑞典語或芬蘭語,我想這遊戲不用太多介紹大家都很清楚了,同樣是來自比台灣人口少的國家,使用的也是人口數較少的語言 ICQ – 以色列 ICQ是一款在十幾年前相當流行的即時通軟體,在MSN Messenger之前ICQ可以說是獨佔了即時通的市場,ICQ是來自以色列的軟體,以色列的人口數七百多萬人,這國家的四週被敵國環繞,即使今天ICQ已經沒落了,但以色列依然還是全球的主要軟體輸出國之一 還有很多 這類非英語系小國家在軟體成功的例子其實還有很多很多,平時看到我沒有特別記下來,而且這類的例子有越來越多的情況,常常我會想,台灣的人口兩千多萬人口,這樣算市場小,所以是軟體產業發展不起來的原因? 我覺得反而是相反的,台灣的市場要大不大,要小不小,除了國際市場還有中文市場,上面所列出來的這些例子,這些國家都沒什麼在地市場,連語言都很小眾,如果他們沒有能力一口氣打進國際市場,沒什麼生存空間,反觀台灣這個不大不小的市場,吃不飽餓不死,接接企業專案、做做政府專案,都還可以活下去,因為這樣的環境,讓很多人以為市場就只有台灣這麼小的地方,忘了連上網路沒有所謂的國界這件事,所以請別再說台灣市場太小了,只能怪你自己能力太爛沒辦法在國際市場競爭 靠自己最實在 台灣現在很多人都還在用許多十年前的過時方法/技術在開發軟體,因為吃中文市場就能活下去,國外也不太可能來搶中文市場,倒頭來還是只能怪自己不精進技術、語言能力等等的能力,真的要成功,還是得靠開發者們加強自己的能力,我一直都這樣認為,台灣要有軟體產業,必然要先有一些開發者當種子,先靠自身的能力闖出一遍天地,才能帶出更多優秀的開發者,確立經營的方式等等,而這些後起之秀才能出去帶出更多優秀的人才,只是坐著抱怨起不了太大的作用
A little play with HTML5 – 2.5D RPG Map Engine
Recently, I want to play those cutting edge HTML5 technologies for fun, especially on game developing. I think it would be really interesting to write some cool games with HTML5. Therefore, I took one night to wrote a simple prototype … Continue reading