[生活]開發好創意的七件事 Get link Facebook X Pinterest Email Other Apps January 25, 2010 來自 Youtube的一個 影片 1. 決定腦力激盪的 目的 2. 選定一個 腦細胞活躍的時間 3. 擬定 目標藍圖 和 創意發想的重點 4. 補充 腦力食物 ,用食物解放思緒 5. 舒適空間 讓思考有交流的空間 6. 書寫刺激想法、記錄網住靈感 7. 指定目標追蹤的負責人 - 認可創意人的點子是最大的鼓勵;扼殺士氣最快的方式就是,從不執行創意人提出的好點子。 Read more
[python] xmlbuilder Get link Facebook X Pinterest Email Other Apps January 23, 2010 最近在測試官方版的 xmlbuilder 寫法有兩種 1. with x = XMLBuilder with x.tag_name('value', attr1_name=attr1_value, ....): with x.tag_name('value', attr1_name=attr1_value, ....): ... 這樣分層下去 2. << x << (tag_name, value, {attr1_name:attr1_value, ...}) 記錄一下 Read more
[讀書心得] 測試(二) Get link Facebook X Pinterest Email Other Apps January 18, 2010 接下來談的是一些關於測試的伎倆。 1. 學弟建議的 code Coverage 程式碼涵蓋範圍 這是用來計算程式碼有被執行的的比例,占的越多不表示程式碼品質好, 但占的少表示測試品質差。這就像是很多條路徑,要怎麼設計多組cases來 走完全部的路徑。 2. 邏輯涵蓋範圍 去計算全部的邏輯運算式中,所走過的有幾個。這表示,假設一段程式碼 有6個if, else, for, ... 等等等判斷式,則至少需要6個test cases 3. 資料流程測試(我覺得稱做資料生命周期測試比較合適= =a) 一個資料它可以分成三個型態: 已定義- 已初始化但尚未使用 已使用- 已在運算中 已停用- 表式運算結束 另外對於從 已定義->已使用中間可以插個 已進入, 以及從 已使用->已停用中間插個 已離開,做為進一步描述。 一般正常的資料流程是 定義、使用到停用,這都沒有問題。 但是常出包的地方就是發生在一些情況: a. 已定義-> 已定義 重複定義,雖這不一定會出錯,但可能造成問題,應避免。 b. 已定義-> 已離開 一般變數沒使用就離開,是挺奇怪也不合理的。 c. 已定義-> 已停用 表示這是個多餘的變數 d. 已進入-> 已停用 表示在進入時,就停用,但尚未定義或使用。這樣對於區域變數會有問題。 e. 已進入-... Read more
[python] Crypto Get link Facebook X Pinterest Email Other Apps January 17, 2010 下午試了一下Crypto的東西,來寫一下筆記 參考 1 From Crypto.Cipher import DES shared_key = '12345678' # 這個一定要是8的倍數 obj = DES.new(shared_key, MODE_ECB ) plain_text = 'hello, welcome to the world' # plain_text 應為8的倍數 #encrypt padding = '$' extra = len(plain_text) % 8 if extra: plain_text += padding * (8-extra) ciph_text = obj.encrypt(plain_text) #decript origin_text = obj.decrypt(ciph_text) print origin_text.strip('$') 註1:可以在sharedkey上動手腳,改為 binary string 註2:strip() 是去掉所有的 padding, 所以先確保該padding不在plain_text中 Read more
[讀書心得] 測試(一) Get link Facebook X Pinterest Email Other Apps January 15, 2010 工作即將進行到測試階段,但老實說我從未做過相關工作,所以看了本書 Code Complete ,這裡來寫一些筆記+心得。 這本書提到測試依層次有分幾類: 1. 單元測試: 這是用來測試某一個完整類別中的函數或變數而常使用的一個方法 2. 元件測試: 用來測試一個完整類別、封裝。 3. 整合測試: 用來測試複數類別、元件或子系統。 4. 迴歸測試: 重覆已執行過的test-case,藉以找出先前測試中未察覺出的缺失。 5. 系統測試: 讓軟體在最終設定下執行,並與其他軟硬體結合,包括安全性、效能、資源損耗、計時問題以及其他無法在低階段整合中測試的問題。 其實還有一堆,像是客戶接受度、效能、設定、平台、壓力及可用性測試等等等,太多了。 知道一堆名詞後,我還是不知道怎麼著手。 一般人將測試分為兩類:黑箱測試及白箱測試,這大家都懂。 然而測試的目的為何? 測試與除錯的差異? 為何測試對於大部分的開發人員來說相當困難? 書上解釋了幾項原因: 1. 因為測試的目標與當初開發的目標正好相反。 測試的目標:找出可能的錯誤,讓軟體掛掉 開發的目標:除去所有臭蟲,讓軟體順利執行 2. 測試無法證明錯誤不存在。 (ㄜ... 這是表示錯誤是NP-H嗎 = =+) 3. 測試本身不能提升軟體品質。 這應該是倒過來說,測試的結果可以做為品質的一種評估指標,但無法提升其軟體品質。 4. 要假定你自己的程式碼中存在錯誤。 (這不是廢話嗎... 但要揪出他又是另外一回事了xD) 了解什麼是測試後,書上建議了一些測試前的準備工作: 1. 測試相關需求,確認需求實做是否存在。 這裡指的應該是客戶需求那玩意。書中也提到可以針對那些需求中,常被遺漏的部分,像是安全性、storage、安裝程序即系統可靠性測試,因為這些常是在需求階段被忽略的東西。 2. 對於1的問題,撰寫即規畫test-case 3. 使用基本測試。 4. 在檢查清單中記錄在過去開發中曾犯的錯誤。 另外也提到了測試的順序應該是邊寫邊測還是最後再測? 書中建議是- 事先寫做test case, 有助... Read more
[讀書心得] 關於學習這門事 Get link Facebook X Pinterest Email Other Apps January 14, 2010 讀書這檔事,雖然大家都會,可是真要問問自己,自己學習的效率好嗎? 有沒有存在一種"正確"的學習方式,可以讓讀書這苦差事(大部分的人應該都覺得讀書很苦XD) 更有趣、更有效率? 一般人學習方式都是: 1. 看懂它 2. 確定沒有遺忘它 hmm... 在過去的念書裡,很少人會告訴我一些學習,所以我總習慣於追逐頁面上的文字在玩文字遊戲,導致花了很多時間在玩文字遊戲,這種人叫做"head-first",表示他做任何事前習慣先將頭探出去,是指那種做事情未事先深思熟慮的人。 今天看到一些不錯的學習首則,希望之後對於自己的學習方式能多留意: 1. 盡量視覺化 在Mr. Brain裡頭也提到了,人類對於顏色的敏感度勝於文字。而影像相較於文字對於人類更容易記憶,可以提升學習效率,甚至將回想及轉述效率提升至89% ( 根據認知學習理論中的雙通道假設,人類學習主要藉由視覺及聽覺,唉... 難怪我學習能力很差,因為我近視破千加上輕度聽障 = =.... ) 2. 對話格式 + 人性化風格 根據統計,使用第一人稱或對話方式來教學比起正常中規中矩的方式,學生學習效果可以提升至40%。所以若閱讀時(甚至回顧時?!),以說故事的方式、用口語來表達所看到的文字,更能挑起自己的注意力。 3. 學習深入思考 我覺得這個很難,究竟要怎做呢? 首先必須被驅使強迫自己參與其中、產生好奇心、並自發地解決問題、做出結論、最後產生知識。這個說易行難阿! 需要有人來問你問題引誘思考、並用活動或測驗來活化左右腦。 4. 保持注意力 5. 試著被感 動 至於如何思考? 我也不知道,但是網路上很多答案,目前覺得最中肯的是從 這個網頁 看到: 1. 跟頂尖的人做朋友 這個真的是除了砍掉重練外最快的方式 = = 在研究所這一年多裡我見識狠多,不管是學長或學弟,真的都超優秀的... 2. 多看書 說到這點我真的很慚愧,以前我超愛看書的... 但自從看教科書加上工作性質的關係後,我變得很少看課外書... 要多提醒自己再忙也要花時間... Read more
[c++] 使用TinyXml Get link Facebook X Pinterest Email Other Apps January 12, 2010 今天跟學弟討論XML的document object 屬性數目問題。 首先回憶一下python DOM所描述的XML由上到下分成 Document -> Element(s) ->NodeList -> Node(s) 在python 裡頭,因為Document object是minidom lib自己建的, 取出某個Node的Attr或Text很容易。 而在TinyXml 裡頭要找做到相同的事情: 0. TiXmlDocument doc('mytest.xml') 建立Document obj 1. 使用 doc.Parse('mytest_xmlstring') 讀入xml並建立XML-tree 2. 要取得Element(s)可用 TiXmlElement *elem = doc.FirstChildElement() or TiXmlElement *elem = doc.FirstChildElement('selected_element_name') 3. 要找某個Element obj裡頭特定Node的Attr or Text 可用 *Assume only one Element in elem sp_attr_name, sp_attr_value TiXmlAttribute *attr = elem->FirstChildAttribute('specified_element_name') while (1): if (!attr) break; else{ if (attr->Name() == sp_attr_name) and (attr->Value() == sp_attr_value){ fprintf(stdout, "match... Read more
[c] 如何在linux上使用 getch() Get link Facebook X Pinterest Email Other Apps January 06, 2010 剛剛同學問我的問題,我也沒在linux上實做c,但總覺得這問題一定很常見, 所以就把他註記下來。 主要步驟是 0. include curses.h [ getch()在裡頭 ] 1. 使用initscr() [ WINDOW *W = initscr() ] 2. ch = getch() 3. endwin() 另一個則是透過posix實做 getch() http://heresy.spaces.live.com/blog/cns!E0070FB8ECF9015F!5092.entry Read more
[生活] 一些定理假說 Get link Facebook X Pinterest Email Other Apps January 04, 2010 有些詞我一直記不住它真正的意思,第一個就是 邊際效應 marginal effect 。 今早又想到它,所以這次來寫點東西,希望能夠最後一次忘記它。 網路上 是這麼形容的,他說就好比吃東西,當吃第一口的時候覺得非常好吃, 第二口的時候還不錯,等到第五、第六口的時候那種滿足感漸漸不再那麼強烈, 而邊際效應就是最後一個單位比前一的單位的效用。以上面這個例子來說,此 邊際效應是遞減的。 不過以微積分的角度,這不正好是微分的觀念嗎。 [ f(x0+1) - f(x0) ] / 1 = [ f(x0+h) - f(x0) ] / h = f'(x=x0) 而一般分析的經濟問題常將離散型的函數(成本函數)連續化,所以成本函數 Cost(x) 的邊際成本即是它的導函數(一次微分)。 而通常我們想求最大淨利時,邊際成本 = 邊際收益。 Profit(x) = Earn(x) - Cost(x) => To maximize P, find minimum of Cost(x) => 發生在微分 C' =0處。 另外貼個五個人性定律 [出處] http://www.newscientist.co m/article/dn18301-five-law s-of-human-nature.html?ful l=true 最近一直在檢討人生的意義,找到了個有趣的玩意,是討論 人的五個習性定律。 "You are so predictable!" 哈,挺有趣的起頭。 1. Parkinson's Law 這是在說人們總是會在自己空餘的時間內塞工作進去,搞得 自己行程滿檔。 Parkinson 同時也提出另一個定理:Law of triviality. 這是說開會時討論某件議題所花的時間總與它的重要性成反 比。 * Parkinson有推導出inefficiency coefficient, 並定義一次開會最多的人數為 19.9~22.4. 超過此range則表示此會議將不會得到任何結論。 2. Student syndrome If it weren't for the last minutes, I wouldn't get anything done. 哈哈,這當過學生的都知道,非到最後一個moment... Read more