發表文章

目前顯示的是 12月, 2018的文章

羅輯思維與時事

      《羅輯思維》的節目歷史題材內容最好,目前看到201集,其中有幾集可與時事對照看,觀眾可以有更深的體悟。 184 第一百八十四集羅胖談到「戰略思維」與「戰術思維」的區別。「戰術思維」如同象棋下棋到最後一定要把對方將死,不是你死就是我亡。「戰略思維」如同圍棋,目標不是要弄死對方,雙方都有得到想要的東西維持均勢,而最後的結果己方稍微佔優勢,。 中美貿易戰很明顯中共與美國都是「戰略思維」,坊間流傳一種說法雙方在打假的貿易戰。果然美國期中選舉之後,川普宣布休戰九十天,恐怕最後會不了了之,雙方對彼此的國民宣告自己獲勝。 台南市議長選舉國民黨的思考屬於「戰略思維」,國民黨立委只有十六席不足以選上議長與副議長,謝龍介操盤居中協調,願意支持原本的副議長郭信良當議長,但要求對方退出民進黨,國民黨又願意讓出副議長給無黨籍議員,換取無黨籍議員支持郭信良當議長,最後郭信良變成無黨籍當選議長,另一位無黨籍議員當選副議長,國民黨在最深綠的台南成功分裂民進黨。 台南市議會驚天變局!抄了賴清德起家厝 謝龍介首度公開幕後操盤! 會演變成這樣的結果主要原因是民進黨新潮流一直採取「戰術思維」,什麼都要還要把對方打死,台南新潮流不讓郭信良當議長與副議長,因為郭信良不是同派系的人,郭信良火大才會讓國民黨趁虛而入的機會。 韓流現象也是新潮流「戰術思維」的產物,當初韓國瑜在北農當總經理再過幾個月就退休了,新潮流就一定要弄死他,要韓國瑜立刻離開北農。韓國瑜離開北農才會有日後翻轉高雄的歷史。大選結果民進黨慘敗,民進黨搶了菜攤丟了江山。 196 《羅輯思維》用較多的集數講述晚清的歷史,晚清歷史的核心人物是慈禧太后,第一百九十六集羅胖講述庚子拳亂的經過。 原本我預期「東南互保」的故事選後會在民進黨身上歷史重演,不料選前在國民黨上演,吳敦義的「母豬說」讓國民黨候選人紛紛與吳敦義切割,反對吳敦義暗指陳菊是母豬。選後民進黨反而沒有出現「東南互保」的情況,只有少數獨派希望蔡英文不要選2020總統,其他諸侯還是支持蔡英文,政論節目有名嘴分析原因,大家知道如果推翻蔡英文,2020也不會贏,眼下派誰出來都選不上,蔡英文想選總統就讓他選吧。 從這點可反推為何地方督府不會想要推翻滿清,滿清已經破破爛爛如同一艘快要沉沒的船,就算能夠造反成功自己當皇帝,這個皇帝非常難做事。 慈禧從西安回到北京之後,慈禧改變作風「清理戰場」,同樣地

侯文詠 :4、5百個瀕死的人告訴我一個真理

       作家侯文詠曾經是癌症的主治醫生,看過許多生與死,三十七歲的時候棄醫從文。文中侯文詠談到許多自己對人生的體悟,非常有參考價值。 原文網址 侯文詠 :4、5百個瀕死的人告訴我一個真理 影片網址 侯文詠:烈士或漢奸,看你怎麼選?|親子天下 社會存在許多黑暗面,讓人感到心灰意冷。侯文詠給某位小朋友的話得很好,我們要先做好自己,當自己成為強者的時候才有能力有機會改變社會的不公不義。 侯文詠曾經身為癌症的主治醫生,見過了許多生與死。觀察結果發現人將死的時候什麼也帶不走,接近死亡的人不會想要更有錢、更有名氣,而是在想人際關係,我這一生的價值是什麼?侯文詠醫生有所領悟,三十七歲的時候決定棄醫從文。 「智者所見皆同」賈伯斯生前說過:「死亡是上帝給人類最好的禮物。」有死亡才會讓人類珍惜活著的每一天。 「你怎麼知道自己選擇是對的?」、「你後悔過嗎?」是人生必定會遇到的問題,人生一定會面臨選擇。我認為只要是自己的選擇就沒有什麼好後悔,應該做的事是持續努力證明過去的選擇最後是對的選擇。 「我是誰?」也是人生常見的問題,侯文詠認為人在困境的時候才能真正知道自己是什麼樣的人。我認為人在顛峰狀態意氣風發的時候也能從另一面看出自己是什麼樣的人。  

魔法少女まどかマギカ Measure the size of the magical girl

         網路上有影片結合《魔法少女小圓》和《七龍珠》,用《七龍珠》的戰鬥力測量器評估魔法少女們的「戰鬥力」,為了手機遊戲現在又新增一些魔法少女。 影片網址 【マギレコ】水着 魔法少女の胸の大きさをスカウターで測る( 悠木碧 小倉唯 雨宮天 石原夏織 )魔法少女まどかマギカ Measure the size of the magical girl 0:14 ほむら 小燄的戰鬥力78 。 0:25 さな 新角色一看就知有立體感,網友評估鬥力約84或85 。 1:21 杏子 杏子的戰鬥力 81。 2:05 フェリシア 有元氣的新角色一看也頗為有料,戰鬥力83。 2:53 レナ 新角色有事業線,網友判定86以上。 3:46 さやかちゃん 沙耶香判定戰鬥力83以上 。 4:33 かえで 貧弱的新角色戰鬥力78 。 5:21 やちよ 御姊型的新角色,戰鬥力 80。 6:24 つるの 新角色戰鬥力82 7:15 まどか 小圓戰鬥力79 8:15 いろはPV 新角色戰鬥力77 8:46 ももこ 新角色很像麻美,戰鬥力評估86或87以上 9:35 マミ 麻美當然是戰鬥力的保證,網友評估88以上!我認為太保守,麻美至少90起跳。 《叛逆的物語》有一幕有五位女主角的比較,麻美>沙耶香>杏子>小燄>小圓 ,根據最新測量小圓>小燄 ,其實沒什麼差別,反正新動畫出來還是看麻美。  

CODE COMPLETE 2 軟體開發實務指南 第9章 虛擬碼程式設計流程

        第九章主題是虛擬碼程式設計流程,我認同作者提到設計類別、子程式與持續迭代的部分,這是最簡單實用的設計方法,不贊同寫虛擬碼再轉成註解與程式的部分。 9.1  建立類別和子程式的步驟概述 圖9-1  顯示設計流程,先設計類別,再設計類別中的子程式,最後復審整體,整個過程是迭代的過程會不停地重複。 建立一個類別的步驟 建立類別的總體設計 定義類別的職責、要隱藏的秘密、定義類別介面所代表的抽象概念。 決定類別是否為衍生類別,關鍵的公用方法,類別所用到的重要成員。   建立類別中的子程式 建立子程式的過程還會反過來影響類別的總體設計。 檢視並測試類別 最後會整體進行檢視和測試,以便發現子程式獨立測試無法檢測出問題。 建立子程式的步驟 成員存取子程式,傳遞到其他物件的子程式。 通常以圖9-2 所示的順序進行。   9.2  如何寫好程序的虛擬碼 虛擬碼程式設計流程是透過書寫虛擬碼簡化建立子程式程式碼的專門方法。 有效使用虛擬碼的指導原則: 用類似英文的語句來精確描述特定的操作。 避免使用目標程式語言中的語法。 在意圖的層面上編寫虛擬碼,用虛擬碼描寫解決方法的原意,而不是撰寫如何在目標語言實作這個方法。 在一個足夠低的層次上編寫虛擬碼,以便自動地產生程式碼。   惡例的虛擬碼像是C語言。   良例的虛擬碼都是英文,沒用任何程式語言。 使用良好方格的虛擬碼可以得到下列好處: 虛擬碼使得檢視容易,無需檢視原始碼就可以檢視細節設計。 虛擬碼支援反覆迭代精鍊的概念。 虛擬碼使修改變得容易。 虛擬碼能幫程式碼加上註解這項工作的量減到最少。PPP的寫法虛擬碼會轉變成註解。 虛擬碼比其他形式的設計文件更容易維護。   9.3  透過PPP建立子程式   假設要設計一個函式ReportErrorMessage(),能夠根據錯誤碼輸出錯誤訊息。   設計子程式   檢查先決條件   定義子程式要解決的問題   高層設計應說明下列資訊   子程式要隱藏的資訊 傳給子程式的各項輸入 從子程式得到的輸出 前置條件 後置條件   ReportErrorMessage()範例如何考慮這些問題:   子程式隱藏兩個事實,錯誤訊息的文字和目前的處理方式(互動式介面或命令行) 沒有任何可保證的前置條件 輸入資料式一個錯誤碼 兩種輸出:首先是錯誤訊息,其次是返回方程式的狀態值。 子程式保證狀態值Su

CODE COMPLETE 2 軟體開發實務指南 第8章 防禦性程式設計

        第八章內容是錯誤處理,防禦性程式設計是文青式語言,本章內容可與《Clean Code》第七章對照看。 防禦性程式設計的主要思維是子程式不因傳入錯誤資料而被破壞。 核心思維是承認程式都會有問題,都需要被修改。 8.1  保護程式免遭非法輸入資料的破壞   通常採用三種方式來處理垃圾進來的情形。   檢查來自於外部所有的資料值 檢查子程式所有輸入參數的值 檢查來自於外部的資料,差別在於資料來自於子程式而非外部介面。   決定如何處理錯誤的輸入資料 8.2  斷言 斷言assertion指在開發期間,程式運行時進行自我檢查的程式碼,通常是一個子程式或macro。 一個斷言通常有兩個參數:一個是布林運算式,描述假設為真的情況,另一則是代表斷言為假時需要顯示的訊息。 斷言可檢查以下假設: 輸入參數或輸出參數的值位於預期範圍內。 子程式開始或結束時,檔案或資料流是處於打開或關閉的狀態。 子程式開始或結束時,檔案或資料流的讀寫位置處於開頭或結尾處。 檔案或資料流已指定採用唯讀、唯寫或可讀可寫的方式打開。 只用來作為輸入的變數值,沒有被子程式修改。 指標非空。 傳入子程式的陣列或其他容器至少能容納X個資料元素。 表格已被初始化,儲存著真實的數值。 子程式開始或結束時,某個容器是空的或滿的。 比較兩種子程式的運算結果是否一致。   斷言主要用在開發與維護階段,產品程式碼可將斷言排除,以免降低系統效能。 建立自己的斷言機制 C++、Java 和 VB.NET 都有內建支持斷言。 作者提供一個C++版範例斷言範例。 使用斷言的指引 用錯誤處理程式碼來處理預期會發生的狀況,用斷言來處理絕不該發生的情況 錯誤處理通常是用來檢查有害的輸入資料,而斷言是用來檢查程式的bug。 如果發生異常狀況觸發斷言,應該修改程式的原始碼並重新編譯,然後發佈新的軟體版本。 避免把需要執行的程式碼放到斷言中 斷言可看做是可執行的註解。 兩個範例寫得清楚,斷言有可能會關掉,需要執行的程式碼放到斷言有可能會出現錯誤。 用斷言來注解來注解並驗證前置條件和後置條件 前置條件和後置條件是契約設計的一部分。 前置條件是在呼叫子程式或實例化物件之前要確定為真的屬性。前置條件是呼叫方程式碼對於呼叫程式碼要承擔的義務。 後置條件是子程式或類別在執行結束後要確保為真的屬性。後置條件是子程式或類別對於呼叫方程式碼要承擔

CODE COMPLETE 2 軟體開發實務指南 第7章 高品質的子程式

      第七章的內容是子程式,可與《Clean Code》第三章對照看,兩位大師對於函式的看法略有不同。 子程式是為實現一個特定的目的而編寫的一個可被呼叫的方法或程序。 作者從反方向說明何謂高品質的子程式,書中舉出的惡例有以下缺點: 子程式名稱HandleStuff()沒有明確說明程式做什麼事。 沒有說明文件。 佈局不好。(?) 輸入變數inputRec的值被改變了,C++應該被定義為const。如果變數會修改,不要命名為inputRec。 子程式讀寫了全域變數 ,子程式應該與其他子程式通訊。 沒有單一目的,做了太多事情。 有可能出現除零的情況。 出現過多魔術數字。 有變數宣告之後沒有使用。 參數傳遞方式錯誤,prevColor被標為參考參數(&),程式中卻傳數值。 子程式參數過多。 子程式參數混亂且沒有註解。   子程式最明顯的好處是避免重複的程式碼,還有其他使用子程式的原因。 7.1 建立子程式的正當理由 降低複雜度 隱藏細節。 內部迴圈或條件判斷的巢狀層次很深時,意味要擷取新的程式,降低外圍子程式複雜度。 引入中間的、易懂的抽象 從範例可看出提取子程式「函式名稱」增加程式碼可讀性,也降低程式複雜度。 避免程式碼重複 幫助子類別的設計 隱藏程序 看範例比較易懂,假設有兩行程式碼先讀取堆疊資料,再減少stackTop的數值,可將這兩行程式放入PopStack(),隱藏執行順序。 隱藏指標操作 提高可移植性 可用子程式隔離程式中不可移植的部份例如非標準功能、對硬體的依賴、以及對作業系統的依賴。 簡化複雜的邏輯判斷 將複雜的布林判斷寫成一個子程式可隱藏細節、增加程式碼可讀性、降低複雜度。 改善效能 作者指出不一定子程式越小越好,要根據當時情況。 似乎過於簡單而沒有必要寫成子程序的操作 最大的心理障礙是不想為了簡單的目的寫一個簡單的程式。 精巧的子程式可以有效提升程式碼的可讀性。 總結:建立子程式的理由 理由   降低複雜度 引入中間的、易懂的抽象 避免程式碼重複 幫助子類別的設計 隱藏程序 隱藏指標操作 提高可移植性 簡化複雜的邏輯判斷 改善效能   建立類別同時也是建立子程式的理由   隔離複雜度 隱藏實作細節 限制變化帶來的影響 隱藏全域資料 形成中央控制點 促成可重用的程式碼 達到特定的重構目的 7.2  在子程式層上設計 內聚力(cohesion)是指子程