Category Archives: Uncategorized

台灣軟體產業的失落十年穫得 Readmoo 年度推薦電子書 ─ 眼光犢具獎

  台灣軟體產業的失落十年穫得 Readmoo 年度推薦電子書活動 「2013 犢力回顧」之 眼光犢具獎   歡迎有興趣的讀者前往Readmoon或Leanpub購買。

Posted in Uncategorized | Comments Off on 台灣軟體產業的失落十年穫得 Readmoo 年度推薦電子書 ─ 眼光犢具獎

新書發表: 台灣軟體產業的失落十年

軟體開發是一個很困難的過程,近日大家受到對岸淘寶網的天文數字成交金額的震憾,就如同我在一至千萬的藝術 — 如何養成支撐網路巨量交易的伺服器艦隊這篇文章裡所寫的一樣,這些都是需要一步一步累積經驗成長的,比起不管是對岸還是其它先進國家,台灣的軟體產業落後國外十年以上,身為軟體工程師,我懂得不多,有一點心得分享,於是我寫了一本書─「台灣軟體產業的失落十年」,其中所指的軟體產業的範圍包括網路產業。失落十年的意涵是指落後國外十年的技術、觀念與各種不同的面向。 這本書不只寫給技術人看,也希望對於管理者或決策者有一些幫助,就像拋磚引玉這句話所說的,希望能引起更多人思考該如何走出現在的困境,歡迎有興趣的讀者前往Leanpub購買,而因為Leanpub只支援PayPal和信用卡付款,欲使用ATM轉帳、支付寶等其它方式付款,也可以前往Readmoon購買。

Posted in Uncategorized | Comments Off on 新書發表: 台灣軟體產業的失落十年

曾經,我有個夢想….

曾經,我有個夢想…. 我還記得那是大一的時候,那是一切的開始,我偶然在PTT上聽見了一個叫小鯨電臺的線上廣播電臺,聲音甜美的國中小女生所架設的電台,講述著她在國中生活遇到有趣的事情、拿起吉它自彈自唱,在學校辛苦了一天之後回到家裡,打開了電腦,連上網路,就有個人在對你說說話,談談心,一天的辛苦全都忘記了,就是這樣簡單的感動,讓我有了這個想法,當時架設網路電台不是容易的事,那小女生有交大的朋友幫忙提供了頻寬才有辦法做到的,那我為什麼不能做一個這樣的平台來讓每個人都能夠架設自己的網路電台? 我什麼都沒有,我有的只有技術和無限的熱情 我生長在網路成長的年代,見證了無數的網路創業,他們都靠著創新與熱情改變了全世界,台灣自稱科技矽島,每年賣出那麼多電腦,但卻連個像樣的軟體產業都沒有,所以我想做這個網站,我有個夢想,有一天大家可以很自豪地向外國人介紹 「Now.in is from Taiwan」 有了目標,我在心中漸漸有了藍圖,我在夢中看見了平台的價值,聽眾可以透過電台找到並且購買喜歡的優質音樂,DJ可以透過電台推薦好的音樂給聽眾,只要經過平台購買,DJ也能獲得收益,而唱片公司的優質音樂也會因此提升銷售量,這是一個多贏的局面 然而這只是我們能想得到這個平台所能帶來價值可能性的一種而已。 為了實現我的夢想,老師在課堂上課,我在書桌上畫著系統的設計圖   一張又一張地畫,一張又一張的畫,架構不好重新設計,架構不好再重新設計,程式寫有問題再改,有問題再改 為了表達即時廣播的意思,選了Now.in這樣的網址,列出無數個標語中選出了「Broadcast and listen to the world」,終於在,看著她一天一天的成長,就好像我的女兒一樣 為了盡量避免影響到線上的電台和聽眾,我半夜爬起來更新伺服器 有時出門在外,接到通知網站故障了,克難地在捷運站用手機連上主機一個鍵一個鍵地輸入指令進行維修 到噗浪兼職,身兼學業、開發噗浪、還有開發Now.in的負擔,為的是能夠負擔昂貴的主機費用 每一個細節,每一行程式,一次又一次的改版,為的只是能夠帶來最好的服務 參加了Gulu.com公司所舉辦的學生網路創業交流活動,希望在場可以認識許多有志一起奮鬥的創業夥伴 興奮地向在場的所有人解釋我的理想好像還是昨天剛發生的事情而已 我都已經想不起來我到底為了這個網站到底付出了多少代價 經過這麼多的努力,終於開始受到了一點的肯定…,我們參加了經濟部商業司主辦的IDEAS Show,獲得了ASUS和Intel的企業獎….. 接著受到Intel的邀請代表台灣到美國博克萊大學參加創業比賽,我們和二、三十幾組來自全世界各地大學代表的創業團隊競爭,用破爛的英文介紹Now.in,我們進入前八強,在那裡我很驕傲地說 「We’re from Taiwan!」 一位柏克萊大學商學院的學生在展場看見我們的作品,向我們表示這真是創新想法,邀我到他們學院去演講這樣的概念,然而我們機票已經訂好了時程很緊湊也就沒有接受 看著流量分析的報表,我們的使用者已經遍佈了來自世界各地有網路的角落 當時我還很天真,以為我們已經離夢想很近了。 我只是一個來自離島的窮學生,有著滿腔的熱情想要改變這世界,我所有的武器就只有我的知識和我的雙手,但我知道不可能我們單薄的資源來達成我們的夢想,我們花了更多的心血,和有興趣投資的公司進行交涉,進行了無數次的Business Plan簡報和會議,我們拒絕了千萬等級的投資,只因為我們希望能夠找到一家能夠配合我們理想的公司來投資我們,而不是為了短期的利益就這樣賤賣我們的心血,我們也單槍匹馬跑去跟MUST談各種授權的可能性 然而,三月二號這一天,這一切都成了泡影,有誰能來告訴我這些付出到底是為了什麼!!?? 「關掉它。」 我聽著命令的語句,帶著無限的驚恐,用我顫抖的雙手在一堆闖入我房間的陌生人面前敲了指令殺死了我的親生女兒Now.in,看見網頁伺服器停止運行的瞬間,我不知道該如何表達我當時的心情…. … Continue reading

Posted in Uncategorized | 640 Comments

Mr.DJ 2.0.3 Mac OS X版發佈

Mr.DJ 2.0.3 Mac OS X版正式發佈 截圖 下載頁面

Posted in Uncategorized, 中文文章 | Tagged , , , , | 3 Comments

讓Python程式出錯時自動寄信給你

我喜歡Python的原因之一就是它的標準函式庫把該有的東西幾乎都包進去了,像是ConfigParser用來讀取設定檔,而logging更是不可缺少的,用來記錄程式的訊息非常好用的函式庫,而且這些函式庫不是只是陽春的玩具,而是功能齊全的基礎,其中logging一個很棒的功能就是將錯誤訊息寄給你,因為通常錯誤發生雖然都可以寫到記錄檔中,但是你有多少時間會去翻記錄檔? 通常程式出錯了,你也不會有認何知覺,將錯誤訊息寄給你的好處就是,一有錯誤你就立刻可以知道,而且少見的錯誤也不會被漏掉,例如有人試圖攻擊你的伺服器,在這過程中如果伺服器發生錯誤會寄信給你,在他成功之前你可能就有機會發現,總之將錯誤訊息寄給自己是很有用的技巧 一個錯誤報告的例子 最棒的就是,要用此功能非常簡單,以下是一個簡單的範例: # -*- coding: utf8 -*- import logging import logging.handlers rootLogger = logging.getLogger(”) rootLogger.setLevel(logging.ERROR) handler = logging.handlers.SMTPHandler( mailhost=’smtp.example.com’, fromaddr=’marines@starcraft2.com’, toaddrs=’player@starcraft2.com’, subject=”Houston, We’ve Got a Problem”, credentials=(‘username’, ‘password’) ) rootLogger.addHandler(handler) log = logging.getLogger(__name__) log.fatal(‘HELP! We are under attack!’) … Continue reading

Posted in Python, Uncategorized, 中文文章 | Tagged , , , | Comments Off on 讓Python程式出錯時自動寄信給你

今夏必看國片: 夏天協奏曲

夏天協奏曲DM 夏天協奏曲預告片 昨天去看了在金門拍攝的電影第二場首映會 “夏日協奏曲”,人多到沒地方坐,只好坐在走道上,這部電影真的非常好看,把金門拍得非常美,名為協奏曲的電影,在音樂上做得也非常好,背景的音樂都很能帶出情境來,女主角沙拉作曲和唱的曲子也都非常動聽,鋼琴也彈得非常棒,我個人對於這部片有很高的評價,很多人常常說要支持國片,在我個人看來,不是所有國片都值得支持,食之無味的爛片支持再多也沒有任何幫助,如果拍片的人沒有心,再多的支持也只是浪費而已,但這部片確實是有笑有淚的好片,可以感受到導演的用心,這樣用心的好電影值得大家的支持 官方部落格 女主角沙拉的部落格

Posted in Uncategorized, 中文文章 | Tagged , , , , , | 3 Comments

Python的進步: ctypes

石器時代 在很久很久以前,想要擴充Python要使用API來包裝成Python可用的模組才可以,面對囉唆的一堆C API是一件痛苦的事,接著,進入了石器時代,人們開始使用工具,出現了SWIG、boost::python等,讓擴充Python變成一件更簡單的事情,但是即使是如此,這還是笨重的方法,產生了笨重的二進制檔,笨重的編譯工作,對於只是要將c語言的library擴充給Python使用而言這還不夠好,接著,終於有了進化,ctypes出現了,人們想說,與其做出pyd來給python使用這種多此一舉的事情,東西就在那裡,dll就在那裡,為何不能直接使用呢? ctypes的目的就是讓Python可以直接操做c語言寫的dll,這是一個大躍進,到了python2.5 ctypes還成為了標準的模組之一,這表示新的時代的到來 對ctypes的懷疑 相對於熟悉的事物,面對類似性質但是不同的事物時,總難免有多少疑惑,我在一開始也懷疑這樣能做到什麼地步? 但是在看了它的文件後我瞭解到,大部份dll使用ctypes都可以應用得很好,像是我擔心的callback,ctypes一樣可以提供方法來把python的函數包裝成c語言的callback丟給c語言的dll,運作得很好,其中我最擔心的是多緒的問題,因為有些callback是從其它thread呼叫的,因此如果沒考慮到multi-thread問題的話,callback就廢一半了,但是它一樣也考慮很週到,即使是從不同thread呼叫的python callback,也一樣可以運作得很好 舉個例子 DSPPROC = WINFUNCTYPE(None, HDSP, DWORD, c_void_p, DWORD, c_void_p) 在有了c語言函數的原形建立後,我們就可以使用它來包裝python的函數丟給c語言的dll處理 print BASS_Init(-1, 44100, 0, 0, 0) stream = BASS_StreamCreateFile(False, ‘c:\god know.mp3’, 0, 0, 0) print stream def dspProc(handle, channel, buffer, length, … Continue reading

Posted in Uncategorized, 中文文章 | Tagged | 2 Comments

期待Spam comment

期待 話說,我一直很期待有Spam comment進來,可是幾天過去了,spam comment還是0,真希望快點有spam comment出現,我真是奇怪 XD

Posted in Uncategorized, 中文文章 | Tagged , | 4 Comments

2001年的Google頁面

七年過去了 七年過去了,Google已經從原本的搜尋引擎變成網路界的龍頭老大,還記得小學時參加查資料比賽,發現有Google這個搜尋引擎,又對它搜尋的速度和準確度感到驚訝 共費0.xx 秒 不起眼的小字在一旁卻讓人感到驚奇,其它入口網站的搜尋引擎,相較之下都對於做搜尋引擎起家的Google相形失色,還記得當年最常用首頁的是奇摩站(Kimo),後來被Yahoo買走,時間過得真快,轉眼間Google已經成為網路的龍頭,為了記念Google十週年,他們還特地製作了刻複版的 http://www.google.com/search2001.html 有興趣可以懷念一下

Posted in Uncategorized, 中文文章 | Comments Off on 2001年的Google頁面