網頁

搜尋此網誌

2009年9月24日 星期四

Dear PePe‧以文會友‧以友輔仁

PePe同學保衛國家平安歸來,即將進入職場工作,記得當年與他共同研究DSP與Switching Power Supply,可說是互相學習、共同成長。論語裡面,曾子曰:「君子以文會友,以友輔仁。」,我想大概就是這個樣子!

這次PePe同學贈與我兩本書籍(感謝他特地挑選),跟大家分享與推薦!

第一本是PePe同學的母親推薦他,他再推薦給我,特別是推薦給即將進入職場的新鮮人。
聯合報編輯部企劃,我的第一份工作,台北:聯經,2009。訂價:新台幣150元

另外一本是:PePe同學當時準備TOIEC的書籍。
聯合報策劃編輯,敢於大膽希望:歐巴馬七篇關鍵演說,台北:寶瓶文化,2009。訂價:新台幣350元

先來分享第一本書的心得(第二本還沒看...所以稍後),書中舉例15位人物分享他們的第一份工作經驗,我認為這些觀點可以借鏡,此外,我還覺得新鮮人不一定只看這些"成功人物"的經驗,不妨和自己的老師、父母、長輩相互討論,他們的觀點也是很值得學習的。

我倒是不認為一定只向"成功人物"學習,因為失敗的價值更可貴,或許從一些長輩"失敗的成就",進而知道他對於的工作看法與做事的態度,更可以思考成功的"工作成就"代表成功的人生嗎?更重要的疑問是,我未來要做什麼?我想要怎麼做?我未來要成為怎樣的人。

書裡提到的這十五位人物分別是:(以及他們給年輕人的話,詳細內容請買書看看)
  1. 魏德聖:不要急著想賺錢,30歲以前可以是冒險的階段。......不要認為先賺錢比較重要;因為賺到錢後,往往就失去初衷,越來越銅臭,而且人常會因循怠惰,一旦習慣就再也離不開。
  2. 阿基師:凡事量力而為,但應該體驗一次刻苦的工作經驗。
  3. 蕭青陽:只要用心學習,任何經驗都可以儲存未來的能量。不要擔心走錯路,你現在學的,都會在未來的某一刻發揮力量。所以,請珍惜每一個參與的細節。
  4. 鄭永金:懷抱惜福心,認真做每件事;我相信認真踏實、品格好的人,遲早會被發現,一定能出人頭地。
  5. 王文華:去解決問題,不是等問題解決你!
  6. 王陳彩霞:人生中有很多東西不可能齊全,你最能做的是這一生好好做好一件事。
  7. 侯友宜:不能見獵心喜,求功心切。
  8. 林義守:人的一生沒有幾次機會,機會來臨時,要緊緊掌握。如果社會不能配合你,你就要遷就社會。
  9. 陳沖:找到你「感覺對的」工作。
  10. 孫大偉:「學到」的比「領到」的多。
  11. 王金平 :要有理想和希望,更要有具體可行的步驟和方法去實踐。
  12. 徐光宇:了解自己,勇敢去做;要做好和對的事,不是任性胡為。
  13. 梁赫群:認真學習,訓練好自己的表達能力。
  14. 陳珊妮:付出十倍的努力去抓住機會。努力的過程比走捷徑更實在。
  15. 戴勝益:讓自己多去闖蕩,增廣見聞,成熟得比較快。
    第二本「敢於大膽希望:歐巴馬七篇關鍵演說」的話,我補充一下相關資料:

    本文最後,因為從PePe同學的來信指出,他現在忙碌中,而且將進入職業場所(職場)中格鬥升級,看來邀稿請他撰寫Power Electronics: Circuits, Devices and Applications的時間要稍稍延後一下!請各位拭目以待。


    2009年9月23日 星期三

    Free The Future of a Radical Price免費!揭開零定價的獲利祕密

    「長尾理論」作者新著作:「免費!揭開零定價的獲利祕密」。買這本書完全是貪圖另一本免費贈送的書(不過另一本還沒看),看完克里斯‧安德森的分析之後,對於經濟學與 Google經濟、Wiki經濟有更深的認識,推薦這本書給大家!

    另外,此書也有一個作者的網頁,請參考:http://www.hyperionbooks.com/free/free_downloads.htm,真的是免費下載喔!

    克里斯‧安德森(Chris Anderson) 著,羅耀宗、蔡慧菁 譯,免費!揭開零定價的獲利祕密,台北:天下遠見,2009。訂價380元。英文書名:Free: The Future of a Radical Price

    另一本贈書!免費的書。(還是說,我不是買「免費」,實際上是買「急迫感」。)
    約翰‧科特(John P. Kotter) 著,黃秀媛 譯,急迫感:破局致勝的關鍵,台北:天下遠見,2009。英文書名:A Sense of Urgency

    回到主題:免費。

    Free


    這本書分三大部分來討論Free這件事(應該用英文來解釋"免費"較為恰當,英文Free有不同的解釋,一字多義),詳細的目錄請大家免費Google一下查來看。

    • 第一部:什麼是免費
    • 第二部:數位免費
    • 第三部:免費經濟學與免費的世界
    此書一開始介紹免費(Free),或者說是定義,以利後續的討論,令人有趣的是還談到歷史和心理學,讀了頗有收穫。免費的類型總共分為四種,作者在第一部跟大家介紹,詳細內容請買書、借書來看,或甚至剽(ㄆㄧㄠˋ)竊來閱讀...,總共下列四種類型:

    1. 第一類免費:直接交叉補貼
    2. 第二類免費:三方市場
    3. 第三類免費:免費增值
    4. 第四類免費:非金錢市場
    第二部則主要探討數位科技下的影響,對於免費這件是發生什麼重大改變,數位的好處是邊際成本趨近於,於是乎免費。因此造成兩個極端:豐富稀少。另外,值得注意的是Free這個字的意思在軟體上,應該翻譯成「自由」比較恰當,或者是開放源碼(Open Source)。

    第三部則偏向經濟面的說明,該如何應對「免費」這項新經濟議題,很多有趣的見解值得思考玩味!

    此書最後一章「一分錢不等於一分貨‧一一破解對免費的質疑」,提出14點值得仔細思考的觀點,這些觀點普遍是你我都認同的,然而作者克里斯‧安德森卻提出另類的思考方向。

    1. 天下沒有白吃的午餐
    2. 免費一定有隱藏的成本,免費是騙人的
    3. 網路不是真的免費,因為你得付費上網
    4. 免費必須靠廣告支撐(而這種做法有其限制)
    5. 免費代表更多的廣告,因此也代表更少的隱私
    6. 沒成本等於沒價值
    7. 免費將摧毀創新
    8. 海洋資源枯竭、公共廁所髒亂、全球持續暖化,都是免費造成的
    9. 免費會鼓勵仿冒盜版
    10. 免費會讓這一代年輕人不懂得珍惜
    11. 你不能和免費競爭
    12. 我把自己的東西免費送出去,卻賺不了什麼錢!
    13. 免費的東西只有在別人必須付費使用時,才是好東西
    14. 免費使業餘人士排擠掉專業人士,並因此犧牲了品質

    最後,看來我勢必是要去買克里斯‧安德森的「長尾理論」來看囉!

    2009年9月18日 星期五

    HTTP server push推播技術

    最近學弟詢問有關Push Technology的技術,有鑑於相關資訊不是很清楚,加上我和他討論與實作之後頗有心得,因此在這裡和大家分享相關的技術。

    Push Technology(中文翻譯成"推播技術",用推的...)的技術有很多種(我們是根據Wikipedia研讀的結果),在此是用HTTP的方式實現,因此稱之為HTTP server push,也有另一個說法是HTTP Streaming

    這是一個簡單的範例,使用PHP所撰寫,功能是每間隔1秒鐘丟出XML檔案,若是用Firefox瀏覽這個PHP網頁,你會看到好像時鐘的樣子改變XML的內容。
    <?php
    header('Content-type: multipart/x-mixed-replace;boundary=endofsection');
    date_default_timezone_set("Asia/Taipei");
    
    while (1)
    {
        sleep(1);//Delay 1 second
        print "Content-type: text/xml; Charset=utf-8\n\n";
     
        $doc = new DOMDocument('1.0');
        $doc->formatOutput = true;
        $root = $doc->createElement("box");
        $doc->appendChild($root);
        $time = $doc->createElement("time",date("Y-m-d_H:i:s"));
        $root->appendChild($time);
     
        print $doc->saveXML();
        print "--endofsection\n";
        ob_flush();//Flush (send) the output buffer
        flush();//Flush the output buffer
    }   
    ?>
    

    這主要是用到MIME(Multipurpose Internet Mail Extensions)的一項內容:multipart/x-mixed-replace,這是定義在RFC 2046規範之中。

    2009年9月15日 星期二

    Herpes疱疹

    今天跟大家介紹的不是什麼專業技術,而是健康知識!Why?因為疱疹(Herpes)這種疾病可能是工程師會得到的常見疾病,而且沒有藥可以治癒,唯一的解藥是你自己的免疫與抵抗力。病發原因主要是:熬夜、疲勞、壓力大、睡眠不足、抵抗力差時才會發生疱疹。(這不是現在RD的情形嗎...)

    疱疹自己得過兩種:
    1. 單純疱疹(Herpes simplex),是由病毒引起,這種病毒是Herpes Simplex Virus(簡稱HSV),共分兩型:HSV-1和HSV-2,請自行google瞭解。可以擦藥早點痊癒,使用Acyclovir藥膏(藥局都買的到,醫生還說進口貨比較有效...),早點發現早點擦會比較快好,重點還是生活要正常讓抵抗力好。http://en.wikipedia.org/wiki/Herpes_simplex
    2. 帶狀疱疹(Herpes zoster),俗稱皮蛇,是由水痘病毒Varicella Zoster Virus(簡稱VZV)引起,會引起神經痛、水泡等,請自行google瞭解,去看醫生時也是說要靠自己好,擦藥跟吃藥都只能減緩症狀,用藥是"強力施美藥膏"。http://en.wikipedia.org/wiki/Herpes_zoster


    最後,本篇宗旨:

    身體要健康,工作賺錢還是放第二!(現實世界可能嗎...)

    2009年9月9日 星期三

    Webapp Framework 網頁應用程式框架

    開發GAE(Google App Engine)的簡單方式,截至目前學習而言,我想應該就是使用Webapp框架來建立你的網頁應用程式(Web Application)會是比較容易的方式。Webapp框架參考文件:中文英文,這裡要注意的是GAE僅支援WSGI(Web Server Gateway Interface)的介面,這是什麼東西?抱歉,我目前還在研究當中,這裡就無法說明了。換句話說,GAE上面除了Webapp這個框架可以執行之外,也可以使用Django框架囉!

    什麼是框架(framework)呢?從開發面來說,框架提供一些功能,這些功能讓你可以快速開發應用程式。好比說你買的一間房子,這間房子所在的公寓大樓就好像是框架,提供了水、電力、電信、樓梯、電梯等許多功能,至於這間房子要來做什麼用途,則是你的自由,房子就好比你的應用程式,沒有需要自己蓋一棟公寓大樓吧!這樣的好處是你很快就能住進去(也就是完成程式開發)。

    來看看利用 Webapp框架的程式吧!

    from google.appengine.ext import webapp
    from google.appengine.ext.webapp.util import run_wsgi_app
    
    
    class MainPage(webapp.RequestHandler):
      def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')
    
    application = webapp.WSGIApplication([('/', MainPage)], debug=True)
    
    def main():
      run_wsgi_app(application)
    
    if __name__ == "__main__":
      main()
    
    
    這是一個相當簡單的應用程式,「Hello World」說明的這個Webapp框架要如何使用,我們先來看看!

    第1列程式碼:從google.appengine.ext套件(package,在Python中是資料夾)中,匯入webapp模組(module,在Python中是.py檔案,一個py檔案中可以包含類別定義、函數定義、Python Script腳本),當你要使用webapp模組中的任何一個類別或是函數,都需要在前面加入「webapp.」的模組名稱。

    第2列程式碼:從google.appengine.ext.webapp.util套件的util模組,匯入run_wsgi_app函式(function)使用,這樣的寫法,使用這個run_wsgi_app函式時,就不需要在run_wsgi_app函式前加入「webapp.」的模組名稱。
    第5列程式碼:
    • 定義一個類別名稱為MainPage,而且這個類別是繼承webapp套件中的RequestHandler類別。
    • MainPage類別中,定義一個get函數,該函數是MainPage類別中的方法(method),是呼叫來處理HTTP GET要求。目前這個處理結果只會在瀏覽器中顯示Hello, webapp World!
    第13列程式碼:新增一個名為application的變數,並指定為webapp.WSGIApplication([('/', MainPage)], debug=True)的一個物件。

    第16列程式碼:定義一個函數為main函數,主要是執行run_wsgi_app(application),其中參數application必須是WSGI 應用程式物件(即webapp.WSGIApplication)。

    第19列程式碼:判斷目前的模組(.py檔案)是不是正在執行的檔案,如果是,則呼叫main函數。這裡是利用Python預設的變數「__name__」來判斷,只要這個.py檔案是正在執行的話,則__name__變數會是"__main__"。關於這個用法,請參考Python Tutorial Release 2.5.4手冊中的「6.1.1 Executing modules as scripts

    SyntaxHighlighter語法螢光筆

    寫Blogger的人,若是程式設計人員,想必有要貼Code的需求。可是直接貼上的話,又會遇到美觀的問題,經由Google的協助我找到一個不算糟的解決方案,那就是使用SyntaxHighlighter這個外掛,官網是http://alexgorbatchev.com/wiki/SyntaxHighlighter,安裝方式可以參考這兩篇文章:
    我的使用方式如下,在HTML中的head區塊最後貼上這些程式碼:

    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
    
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
    
    <script type='text/javascript'>
    SyntaxHighlighter.config.bloggerMode = true;
    SyntaxHighlighter.all();
    </script>
    
    

    當需要使用的時候,將你的程式碼放在<pre class="brush:html">和</pre>之間即可,針對不同的程式更改類別屬性,前述是針對HTML進行程式碼美化。這項SyntaxHighlighter支援的程式碼請參考這裡
    要注意的是,如果程式碼之中有特殊的HTML符號,則需要使用相對應的編碼,如小於的&lt;和大於的&gt;編碼等等。

    2009年9月7日 星期一

    Python Class類別

    此篇是紀錄學習Python 2.5的心得,主要討論Python中的類別(Class),專業說法是物件導向程式(Object-Oriented Programming)
    Python的物件導向有幾項需要注意的:
    1. Python所有的資料型態(data type)都是物件(objects)。
    2. 所有的類別成員(class member)都是公開(public)成員,意思是每個物件中的屬性都可以去存取使用它。
    3. 成員函數是虛擬(virtual)函數,子類別都可以去繼承複寫(override)父類別的函數,而且各自呼叫各類別的函數,即子類別呼叫子類別的函數,父類別呼叫父類別的函數。
    4. 沒有特別的建構子(constructors )和解構子(destructors)
    5. 一個類別可以繼承(inherit)多個父類別。
    6. 類別裡面的函數宣告,第一個參數一定是self關鍵字
    以下幾點簡述Python的物件導向。
    1.類別定義語法Class Definition Syntax
    用關鍵字class來定義一個類別,一定要在使用之前先定義喔!別忘了在類別名稱(ClassName)之後加上冒號(colon),類別中的每個敘述(statement)不需要用分號(semiclolon)結束,
    class ClassName:
    statement_1
    statement_2
    .
    .
    .
    statement_N
    
    2.類別物件Class Objects
    類別物件可以有兩個方式來使用,(1)屬性參考(2)類別實例。屬性參考(Attribute references) 的使用方式為點語法,在Python中類似指標用法的觀念,例如
    ClassName.AttributeName
    或者
    ClassName.FunctionName

    類別實例(Class instantiation)則使用函數的宣告用法,就是使用圓括弧(parenthesis)的方式,這會將類別實體化,產生物件回傳給變數,例如這樣
    variableObject=ClassName()

    傳統上(什麼用詞阿...)來說,類別實例的時候會去呼叫所謂的建構子(Constructor)的函數來將類別實體化成為物件,然而在Python中則是去呼叫類別中的「def __init__(self):」這個函數。
    3.實體物件(Instance Objects)
    類別實體化成物件之後,我們就可以開始使用了,使用的方式是採用上述「屬性參考」的方法,目前跟一般的OOP的使用方式差不多,例如variableObject=ClassName()產生物件以後,你可以:
    • 資料的存取使用
      variableObject. AttributeName
    • 函數的呼叫
      variableObject.FunctionName
    4.方法物件(Method Objects)
    這裡就要注意一下,Pyhton中所有東西都是物件,因此函數也不例外,所以程式裡面寫
    ClassName.FunctionName #函數物件function object
    variableObject=ClassName()
    variableObject.FunctionName #方法物件method object
    
    的意義有些不一樣。因為在Python當中,呼叫方法的時候,實際上是把物件丟過去,注意到函數定義時的self引數,variableObject.FunctionNam等於ClassName.FunctionName(variableObject)。
    5.類別的繼承(Inheritance)
    Python中類別繼承的語法如下,注意到,Python可以繼承多個父類別,而不是用介面(Interface)
    class DerivedClassName(BaseClassName): #單一繼承
    statement_1
    statement_2
    .
    .
    statement-N
    
    class DerivedClassName(Base1, Base2, Base3): #多重繼承
    statement_1
    statement_2
    .
    .
    statement-N
    

    2009年9月6日 星期日

    Adobe Flex奧多比Flex開發環境

    這篇文章是記述學習Flex的心得,自己學 Flex的過程斷斷續續,實在沒什麼資格在這裡發表什麼建議,因此,接下來的內容看看就好...

    Adobe Flex
    不例外的,每篇Blog都有推薦書籍,Flex目前推薦兩本:

    David Gassner, Adobe Flex 3 Bible, New Jersey: John Wiley & Sons, 2008.

    不過,如果你是要學ActionScript 3.0的話,則可以看下面這本書!
    Adobe Creative Team著,羅友志譯,跟Adobe徹底研究ActionScript 3.0,台北:上奇科技,2009。
    其他的參考資料則可以到ActionScript Technology Center參考,全都免費使用喔!另外Flex的官網http://flex.org/

    熱門文章