Posts

[讀書心得] apple i系列不支援 adobe flash 的理由?!

最近 iPad 出來馬上成為話題, 不過相較iPhone 的出世,iPad首賣銷售量僅只一半,但這不是我care的。 比較好奇的有兩個:1. iPad的市場跟價值在哪?  2. apple不支援adobe flash的理由何在? 先從第2項談起好了,從網路上蒐集的資訊可以歸納出3點: 0. 歷史因素:(但這點我認為影響不大啦,畢竟商場上沒有永遠的朋友與敵人) 1. OSX與Adobe Flash 間的支援性:      apple:  Adobe 是間不知成長的保守公司,對於自家產品的不穩定及缺陷報告漠不關心                   (ex.Apple向 Mac OS的Flash 發布的缺限報告有400多項, 但現今只修復25項 )                  Adobe 的ASA(Adobe Software Activation) 機制在不考慮系統的保護機制下,                  直接讀取cpu跟ram,會導致系統不穩定。                  Flash 相當耗cpu, 又有中毒的危機。      adobe心中os: 自己的 os 不穩定,還要遷拖。 2. 價格:      apple: adobe 產品的介面老舊,很久沒有更新了。而且create suite又賣那麼貴,相較之                 下,Unity小巧的多。      adobe:  你們家的產品是多便宜? 所以這也表示你們只賣外表? 結論:我也認為apple 這理由實在牽強,擺明了就是要主導行動裝置的市場,不然大可開放  ...

[讀書心得] 程式之路

關於寫程式這檔事,自己起初是為了個不服輸,寫到現在似乎是興趣?! 人家都說要當一個好的程式設計師至少要花1萬個小時或十年,這可真是慢慢磨。 今天大大推薦一篇文章 【程式設計】十年自學程式設計 其中有幾點我想要記錄下來: 十年自學程式設計   研究學者( 海斯 、 布盧姆 )的研究說明,在許多領域,大約十年才能培養出專業技能 ;包括下西洋棋、作曲、繪畫、鋼琴演奏、游泳、網球,及神經心理學和數學拓撲的研究 。似乎沒有真正的捷徑;即便是莫扎特在四歲就展露出音樂天才,在他寫出世界級的音樂 之前仍然用了超過十三年的時間。   再看另一種類型的代表,披頭四樂團,他們似乎是在1964年的艾德˙蘇利文劇場 表演,突然地成為熱門樂團首席。其實他們從1957年開始,就在利物浦、漢堡等地的 小型俱樂部表演了。雖然他們很早就顯現強大的吸引力,但他們具決定性的成功作品《胡 椒中士》也要到1967年才首次發行。山姆爾˙強森則認為十年根本不夠:「任何領域 的卓越成就,只能用一生的努力才能取得;稍微低一點的代價是換不到的。」喬瑟抱怨說 :「生命如此短促,學習技藝卻要這麼地長。」   以下是我在程式設計這個領域獲致成功的秘訣: ˙對程式設計感興趣,因為樂趣而寫程式。確信你自始至終都能樂在其中,這樣你才願意 將十年光陰投入。 ◎與其他程式師交流;閱讀其他人的程式。這比任何書、任何訓練課程都來得重要。 ◎不斷地寫程式。最好的學習方式是 做中學 。更專業地說,「在特定領域的個人最高績效 ,並不是經驗夠久就會從天下掉下來;但若個人極具經驗,那麼可以透過有計劃的努力來 改進並提昇這種層次的績效。」( 第366頁 )   而「最有效的學習需要,定義明確的任務,特定人則有其相應難度,能增進知識的回 饋,還有重複及修正錯誤的機會。」(第20~21頁)《 實踐中認知:心智、數學與日 常生活的文化 》是這個觀點的一本有趣參考書籍。 ◎如果你想,你可以去讀四年大學(或再讀研究所)。這是你找工作時所需的資格,同時 也可讓你對這個領域有更深的認識。但如你不喜歡學校,你還是可以(得有犧牲)透過工 作獲得類似的經驗。就任何情況來說,只從書本上學是不夠的。「電腦科學的教育無法讓 人成為程式設計的專家,正如研究畫筆跟顏料,也不會讓人成為專業畫家。」艾瑞克˙雷 蒙,《新駭客辭典》的作者這麼說。   我曾聘請最優秀的程式師之一,他只有高...

[python] 關於thread的timer

寫MT實在很惱人,特別是讓threads定期做些事情時,一不小心就busy loop... 先前的做法都是使用os內建的sleep(),  但缺點是無法掌握程式結束的時間。 前幾天偉任建議使用threading模組內建的Timer class 看了做法後,它是使用Event()做為timer,  然後每次invoke一個新的thread去執行該function (其實BT源碼就是這樣做Timer了,只能說當時太弱,不懂期間的差異) Results: import  threading import  thread   mutex = thread. allocate_lock ( ) def printm ( msg ) :      with  mutex:          print   "[%s]"  % threading. current_thread ( ) . name , "say:" , msg     class  MyThread ( threading. Thread ) :     def __init__ ( self,  name ) :         threading. Thread .__init__ ( self )         self. name  =  name         self. timer  = threading. Event ( )         def do_dialog ( self ) :         printm ( "How do you do?!" )         self. setDialogTimer ( )         def setDialogTi...

[python] 隱藏 console

python 要如何做到隱藏console 這個應該是屬於windows的問題吧 因為作業系統是xp 所以去找了 win32api and python相關 果然找到 前人的解法 Python代码  import  win32api, win32gui   ct = win32api.GetConsoleTitle()   hd = win32gui.FindWindow( 0 ,ct)   win32gui.ShowWindow(hd, 0 )   很简单吧,就是获得console的handle,然后隐藏(0分别代表NULL和SW_HIDE)。启动还是用python.exe。 不過在啟動前還是得先去下載 pywin32api  (我是用py26), 不然python無法找到這兩個module 唉呀越寫越上層的話,若上面的AP沒有提供解法,底層實做原理又不懂的話,是很惱人的...

[ironpython] AddReference

在ironpython 中為使用 .net 函式庫, 需要加入一個reference給 .net assembly,  由此動作後 import進來的 namespace 才能夠被辨識 ex.  from System.IO import TextReader class PythonFileReader(TextReader):     def __init__(self, f):         self.f = f     def Read(self, buffer, index, count):         chars = self.f.read(count).ToCharArray()         chars.CopyTo(buffer, index)         return  len(chars) import clr clr.AddReference('System.Xml') from System.Xml import XmlReader f = open('test.xml') fr = PythonFileReader(f) xr = XmlReader.Create(fr) while xr.read():   if xr.IsStartElement():       print xr.Name, 上面的動作是 1. 建立一個python file-like ojbect  PythonFileReader 繼承自.net TextReader  2. 將 PythonFileReader 傳給.net的 api. 3. print all name of tags in 'test.xml' 在module clr中的AddReference method family有: - clr.AddReference - clr.AddReferen...

[c++] namespace

寫過一些些c++, java跟 python 但是對於物件導向(Object-Orientated) 的解釋,一直說不上話 今天來複習一下... 1. 命名空間 namespace 這是一開始寫c++時都會停住的問題,就竟什麼是命名空間? 為什麼需要有命名空間? 看了網上諸多解釋後,我自己認為是由於程式越長越大時,常會有變數、函式或類別名稱 相同的情況,甚至同類別名稱又同變數名稱等,這時後容易混淆,甚至覆蓋掉先前的定義。 c++提供一個空間的概念,即在各自的空間上定義的任何變數、函式,彼此是互斥的。 使用的方式是 namespace NAME {     // method, variable, etc. } ex. #include using namespace std; namespace cat{   int shout;   int act; } namespace dog{   double shout;   double act; } int main(void) {   cat::shout = 2   cat::act = 4   dog::shout = 1   dog::act = 3      cout< <   cout< <   cin.get();   return 0; } 亦可寫作兩個file ex. cat.h namespace cat{    int shout;    int act; } main.cpp #include #include "cat.h" using namespace std; int main(void) {     cat::shout = 9;     cat::act = 2;     cout << cat::shout + cat::act ...

[讀書心得] 金字塔原理

"清楚寫作唯一重要的行動,便是控制表達觀點的順序。" -- Barbara Minto 之前YEF的業師推薦了麥肯錫的一本書"金字塔原理",是用來訓練邏輯思考與寫作的書。 因為覺得自已的邏輯思考能力的不足,偶然間想起這本書,所以在這個過年借了本來瞧瞧。 作者說一般人詞不達意有兩個原因,一個是缺乏練習、另一個則是文章的結構出了毛病。 然而對於讀者而言,最簡單的順序是先接受主要的、最抽象的觀點,接著才是次要的、支持性的觀點。基於主要的觀點永遠源自於次要的觀點,而這些觀點的最理想結構,則是源自於中心思想綁住好幾個觀點所組成的一個金字塔結構。 這些觀點彼此的關係可以是縱向 (任何一層的一個論點永遠是下面一層組成觀點的總結) ,也可以是橫向 (幾個觀點因為共同呈現一個邏輯論點而被歸類為一組)。利用 question/answer dialogue 的方式,當讀者對於某個論點基礎產生質疑時,其金字塔的下一層就是要回答那個問題。 這本書主要是說明 1. 為什麼金字架構的反應最好 2. 組成金字塔的邏輯子結構間如何互動 3. 教你一些基本原則,幫助你將想法建構成簡單的金字塔結構。