Total Pageviews

2018/12/11

[SQuirreL SQL Client] How to change font size and font type in SQL entry area ?

Problem
How to change font size and font type in SQuirreL SQL Client's SQL entry area ?

How-To
Step 1. File => New Session Properties




Step 2. Click SQL tab


Step 3. Change font in SQL entry area


Step 4. Close and launch SQuirreL SQL Client



2018/12/10

[Database] [Sybase] datetime-related example

Here has some examples:
-- get current timestamp
select getdate();

-- cast datetime string to datetime
select cast('2018-07-13 23:59:59' as datetime);

-- get year from datetime
select year(getdate());

-- get month from datatime
select month(getdate());

-- get day from datetime
select day(getdate());

-- get datetime string with YYYY-MM-DD hh:mm:ss format
select str_replace(CONVERT (VARCHAR, getdate(), 23), 'T', ' ') ;

-- add 3 days
select dateadd(day, 3, getdate());

-- minus 10 days
select dateadd(day, -10, getdate());

-- add 2 hours
select dateadd(hh, 2, getdate());

-- minus 3 hours
select dateadd(hh, -3, getdate()) 

-- get current datetime and set its time to 0:0:0
select cast(substring(convert(varchar, getdate(), 23), 1, 10) + ' 0:0:0' as datetime);


2018/12/09

[Microsoft Word] 解決打開頁數與實際頁數不符的問題

Version
Office 365

Problem
當我打開一份 Word時,實際頁數是 12 頁,但是打開卻只有 7 頁


How-To
發生的原因,目前還不知道,但是可以透過以下步驟,讓 Word 文件顯示完整頁數
Step 1. 檔案 => 資訊 => 轉換

Step 2. 按下確定,並儲存此文件即可




2018/12/08

[XStram] XStream Annotation Example

Scenario
If I would like to :
- annotate the list to be recognized as an implicit collection
annotate an alias the desired class / fields

How-To
Here has sample code:
@Service
public class XmlService {
    
    public String generateXmlString(Root xmlObject) {
        XStream xstream = new XStream();
        // Process the annotations of the given types and configure the XStream.
        xstream.processAnnotations(new Class[] { Root.class, MyObjectList.class, MyObject.class });
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xstream.toXML(xmlObject);
        return xml;
    }
    
    // create an alias to the desired class
    @XStreamAlias("MyObject") 
    @Data
    private static class MyObject {
        // ignore fields
    }

    @Data
    private static class MyObjectList {
        // whenever you have a collection which doesn't need to display it's root tag,
        // you can map it as an implicit collection
        @XStreamImplicit
        private List<MyObject> resultObjects;
    }

    @Data
    // create an alias to the desired class
    @XStreamAlias("TEST") 
    private static class Root {
        // create an alias to the field
        @XStreamAlias("MyObjectList") 
        private MyObjectList objectList = null;
    }
}    


The generated XML content looks like:
<?xml version="1.0" encoding="UTF-8"?>
<TEST>
  <MyObjectList>
    <MyObject>
    </MyObject>
    <MyObject>
    </MyObject>
  </MyObjectList>
</TEST>

2018/12/07

[Java] How to zip and extract file by zip4j

Add dependency into your pom.xml
    <dependency>
        <groupId>net.lingala.zip4j</groupId>
        <artifactId>zip4j</artifactId>
        <version>1.3.2</version>
    </dependency>


Here has sample code:
package com.demo.util;

import java.io.File;
import java.util.ArrayList;

import com.google.common.base.Strings;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

public class ZipUtils {

    /**
     * 將檔案壓縮成 zip file.
     * 
     * @param files
     *            來源檔案
     * @param dest
     *            路徑 + zip file name
     * @param password
     *            密碼 (optional)
     * @throws ZipException
     *             若壓縮過程發生錯誤,會拋出 ZipException
     */
    public static void addFilesIntoZip(ArrayList<File> files, String dest, String password) throws ZipException {
        try {
            deleteExistingFile(dest);
            ZipFile zipFile = new ZipFile(dest);

            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

            if (!Strings.isNullOrEmpty(password)) {
                parameters.setEncryptFiles(true);
                parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
                parameters.setPassword(password);
            }

            zipFile.addFiles(files, parameters);
        } catch (ZipException e) {
            throw new ZipException("壓縮檔案發生錯誤,錯誤原因: " + e.getMessage(), e);
        }
    }
    
    /**
     * 將某個目錄下的檔案,壓縮成 zip file.
     * 
     * @param sourceDir
     *            來源目錄
     * @param dest
     *            路徑 + zip file name
     * @param password
     *            密碼 (optional)
     * @throws ZipException
     *             若壓縮過程發生錯誤,會拋出 ZipException
     */
    public static void addDirectoryIntoZip(String sourceDir, String dest, String password) throws ZipException {
        try {
            deleteExistingFile(dest);
            ZipFile zipFile = new ZipFile(dest);

            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

            if (!Strings.isNullOrEmpty(password)) {
                parameters.setEncryptFiles(true);
                parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
                parameters.setPassword(password);
            }

            zipFile.addFolder(sourceDir, parameters);
        } catch (ZipException e) {
            throw new ZipException("壓縮檔案發生錯誤,錯誤原因: " + e.getMessage(), e);
        }
    }

    /**
     * 刪除現有檔案.
     * 
     * @param file
     */
    private static void deleteExistingFile(String file) {
        File existingFile = new File(file);
        if (existingFile.exists()) {
            existingFile.delete();
        }
    }

    /**
     * 解壓縮檔案到指定目錄.
     * 
     * @param zip
     *            路徑 + zip file name
     * @param dest
     *            解壓縮到目的地的位置
     * @param password
     *            解壓縮檔案
     * @throws ZipException
     *             若解壓縮過程發生錯誤,會拋出 ZipException
     */
    public static void extractZipFile(String zip, String dest, String password) throws ZipException {
        try {
            ZipFile zipFile = new ZipFile(zip);
            if (zipFile.isEncrypted()) {
                zipFile.setPassword(password);
            }
            zipFile.extractAll(dest);
        } catch (ZipException e) {
            throw new ZipException("解壓縮檔案發生錯誤,錯誤原因: " + e.getMessage(), e);
        }
    }

}


2018/12/06

[閱讀筆記] Value Investing: From Graham to Buffett and Beyond (3/7)


  1. 對投資人來說,投資風險越高,借錢方須負擔的資本成本 (cost of capital) 就越高
  2. 企業真實的 earnings power value 應扣除 cost of capital 與借錢產生的 interest。如調整前的 value 388 million,假設 cost of capital rate 6%,利息為 1 million,調整後的 EPV = 388 - ( 388 * 0.06 ) - 1 = 364 million
  3. 建立顧客忠誠度並不是白吃的午餐,你可能要花費銷售額的 10% 來進行廣告與促銷,若潛在競爭者想要進入市場,你就要花這筆費用 (甚至更多) 當在評估資產的 reproduction costs 時,別忽略了廣告與促銷這兩項費用
  4. 加權平均資金成本(WACC, Weighted average cost of capital) 就是依公司的長期資金來源市價,佔所有長期資金來源的總市價的百分比,加權平均算出公司的平均資金成本。
負債與股東權益
市價
財務結構
資金成本
長期負債 (wb)
4000
40%
6%
特別股
1000
10%
9%
普通股
5000
50%
12%
合計
10000
100%
WACC = 0.4 * 0.06 + 0.1 * 0.09 + 0.5 * 0.12 = 9.3%

  1. 企業的資金來源包含
① 負債 (Debt)
貸款、發行公司債
② 業主權益 (Equity)
發行股票、保留盈餘

  1. 資本結構 (Capital Structure) 代表負債與業主權益的比例 (D/E)。資本結構合理與否,直接影響企業的財務狀況。負債率不應超過50%,長期負債與短期負債比例應適當。
  2. 若某個品牌已經經過多年的廣告、促銷與建立起很好的客戶滿意度,這間企業就擁有很好的進入障礙,確保競爭者很難說服使用者去使用另外一個廠牌的產品 (high switching costs)
  3. 市值(Market Capitalization) 指上市公司普通股的總市值,等於公司最新股價,乘以公司發行在外的總股數。投資圈通常以市值,而非營業額或資產總值,來衡量一家公司的規模。英文常簡稱為 market cap。  

  4. 集中市場在證交所掛牌交易股票的市場叫做集中市場。目前台灣證券交易所都是以電腦搓合的方式交易,但是有些國外交易所還是用人工搓合的方式。
  5. 店頭市場 (OTCOver-The-Counter) 又叫櫃檯交易市場,是提供上櫃股票交易的市場。一般來說比較大型的公司會在集中市場掛牌,比較小的公司會在櫃買市場掛牌。集中市場的大公司,流動性比較好,資訊也比較透明。櫃買市場的小公司,流動性可能稍差,不過如果股市走多頭的時候,小公司漲幅會比大公司還大,不過相對的風險也比較高
  6. 資產需要企業的投資,投資需要獲得回報,這才是正向循環。有獲利的成長 (profitable growth) 指的是營收的成長,超過為了支撐成長所投資的資產的成本。也就是說,無論你投入多少錢建置新廠房,付多少薪資給增加的員工、銷售數字多高,最重要的是你的每股盈餘是否有增加且超過所投入的成本
  7. 葛拉漢的 Net Net 股票投資法 (net net valuation) 不只是便宜的股票,便宜的股票的定義是股價低於內在價值的股票Net net股票則是那種被遺棄十年的股票,而這是一種價值投資方法,其股票估值純粹是根據其流動資產:現金 + 應收帳款 + 存貨 - 債務。事實上,葛拉漢會說這些net net股價幾乎等於清算價值,完全無視廠房、財產與設備 (PPE, Plant, Property and Equipment) 或其他長期資產的價值。葛拉漢所描述的是NCAV(淨流動資產價值, Net Current Asset Value), 你可以看到他談論的不是帳面價值,因為他把無形資產和其他非流動資產假定為0,當人們提到net nets,他們通常意味著 NCAV
  8. 葛拉漢購買NCAV股票的標準是,當股票價格為NCAV2/3時買入。例如:如果每股NCAV10美元,那麼當股票價格為6.66美元時,葛拉漢就會想購買。計算NCAV的公式很簡單,邏輯是找出NCAV高於市場價格的股票:
NCAV =流動資產 – 總負債
計算NCAV的公式很簡單,邏輯是找出NCAV高於市場價格的股票
每股NCAV =(流動資產 – 總負債)/流通在外股數
要獲得每股價值,只需要再除以稀釋後的已發行流通股數
 

  1. “如果你以足夠低價買進一檔股票,通常是公司在業務上有些狀況,讓你能夠有機會以不錯的獲利賣出,儘管公司長期的營運表現可能很糟糕。我稱這種方法可稱為“雪茄屁股”,指的就是在街道上發現只剩一口可抽的雪茄,你沒辦法抽太久,但以“便宜的價格買進”還是會使你獲利。除非你是清算人,否則買進這種企業是愚蠢的。首先,原始“便宜”的價格最終可能已經不便宜。對於處於困境的企業,問題會一個個浮現,廚房通常不會只有一隻蟑螂
  2. 最初你購買所獲得的安全邊際,可能會被公司獲利的低報酬率快速侵蝕。例如,如果你以 800 萬美元買進一間企業,其清算或賣出可賺到 1000 萬美元,那麼你就可以實現高報酬率。但若 10 年內才能以 1000 萬美元賣出,那麼這筆投資就會令人失望,因為公司這 10 年間恐僅能賺取微薄的利潤。時間會是優質公司的朋友,平庸公司的敵人。
  3. 運用 P/B (Price-To-Book Ration, 股價淨值比) 衡量股票價值,還有個科目值得留意:商譽 (Goodwill)。這個因素往往讓帳面價值高度膨脹,使得最昂貴的企業看起來也頗具價值。不幸地,商譽往往只代表併購公司迫不及待要在其他公司出手前,其買下標的公司的慾望,因為標的公司的價值經常被嚴重高估。對於任何企業,商譽如果佔有整體企業帳面價值的很大比率,務必要謹慎對待。對於這些企業的股票,P/B比率可能很低,不過業者一旦認定商譽應該「減值」(換言之,業者承認過去的併購價格過高而決定註銷其價值),帳面價值很大部分可能一夕之間憑空消失。
  4. 市場價值 (market value),即是俗稱的股價,為每天股票市場的行情,由市場供需及對未來前景而定。衡量股票價值的方式有三種:票面價值、帳面價值、市場價值,市價為其中之一
  5. 當一家廠商的 market share 越高,其所創造的規模經濟 (economies of scale) 的優勢就會越顯著。以 microprocessors 來說,其 R&D 的成本非常高昂,但是當你賣出更多的單位,每一個單位的設計成本 (R&D spending) 就會越低。以 Intel AMD 為例,Intel R&D 投入資金比 AMD 多非常多,但是由於銷售量的差異,AMD 的每個銷售單位的研發成本 (R&D per each dollar of sales)反而是 Intel 的兩倍
  1. 無論是哪個領域,銷售的兩大特性:客戶的需求越強勁,每單位的成本就會越低 (more customer demand and lower cost per unit)Microsoft 也是受益於極度規模經濟的優勢,並且以極高的轉換成本 (switching costs) 鎖住客戶
  2. 當商品的利潤越高,商品的價值就越高。超高的利潤就會吸引潛在競爭者進入,其會想辦法拆除進入障礙 (barriers to entry) 或重塑 (reshape) 市場。若想維持超額利潤 (excess returns),企業就必須繼續保護進入障礙,獲取高於資金成本 (cost of capital) 的利潤
  3. 對於有些公司,成長可以創造財富 (Return On Capitals > Cost of Capital )當所賺得錢大於投入的成本,成長越多,賺得就越多,形成正向循環: 
If ROC = 0.2 and R = 0.1
  • 即資金回報的成長超越資金投入的成長
  • F (Growth Factor) = (0.2 - G) / (0.1 - G)
    • 由於 ROC > RF value 永遠大於 1
    • F Value 會隨著成長率的增加而增加
  1. 對於某些公司,成長卻會摧毀他 (Return On Capitals < Cost of Capital )當所賺得錢小於投入的成本,成長越多,賠得就越多,形成惡性循環。沒有競爭優勢、沒有進入障礙的企業,隨著吸引新的進入者進入,形成惡性競爭,導致 rate of return <= cost of return 就是這個類型
If ROC = 0.1and R = 0.12
  • 即資金回報的成長,趕不上資金投入的成長
  • F (Growth Factor) = (0.1 - G) / (0.12 - G)
    • 由於 ROC < R,無論什麼樣的成長率,F value 永遠 < 1
    • 成長率越低, F value 反而 越高
    • 當成長率達到 0.1F value = 0
    • 當成長率越高,摧毀公司的速度越快
  1. 成長需要額外的投資,儘管投資會產生資本回報 (ROC, Return On Capitals)投資需要去借貸、融資,這些就是資金成本 (Cost of Capital)
  2. 身處紅海市場的企業,大部分都是 return on capital (ROC) <= cost of capital (R),成長無法帶來任何價值;只有在市場持續享有競爭優勢、商品有受到進入障礙的保護的企業,才能讓 return on capital (ROC) > cost of capital (R)
  3. 由成長所創造的價值依賴兩個因素
① 遞增的資本投入所創造的獲利率
  • ROC (Return On Capital) 超過 R (Cost Of Capital) 越多,每一塊錢的投資所獲得的回報就越多
  • ROC (Return On Capital) / R (Cost Of Capital)
② 可以投入獲得回報的資本
  • 此因素取決於商品販售成長速度
  • G (Growth) / ROC (Return On Capital)

    

2018/12/05

[閱讀筆記] Antifragile: Things That Gain from Disorder (7/10)

  1. 在極端世界 (extremistan) ,你要盡可能地去嘗試,大量地去嘗試,適度的冒險(upside 回報 > downside 負面影響時才冒險),必能獲得豐厚的回報
  2. Adam Smith 提到的看不見的手 = 集體協同合作 (collaboration) = 市場機制,這機制超越任何英明的單一中央計劃者
  3. 在反脆弱的情境 (正面的非對稱性、正面的黑天鵝),如 trial and error,過去資料的抽樣結果傾向於低估長期平均,其會將數量隱藏起來、而非缺陷;在脆弱的情境 (負面的非對稱性、火雞問題),過去資料的抽樣結果傾向於高估長期平均,其容易僅顯示數量、掩蓋缺陷
  4. 在 turkey problem 裡,罕見事件就是罕見,無法在過去資料裡面得知,將罕見與負面畫上等號;在反脆弱中,觀念則是相反,將罕見事件視為機會,用正面看待
  5. 「選擇權的賣方」屬於「脆弱」:大多時候擁有高勝率、有限的獲利的特性,但有小機率會遭到極大的損失。 「選擇權的買方」屬於「反脆弱」: 大多時候擁有勝率低、虧損有上限的特性,但有小機率會遭到極大的獲利。
  6. 問題並不是機率高或低,而是許多危機我們無法辨識,這是因為「以前根本沒出過問題」,但這並不代表巨大的傷害就不存在。就像一隻火雞一直到感恩節的前一天,都不知道會遇上風險和傷害。
  7. 對於投資來說,作者的建議是用90%的資金做穩定盈利的投資,而10%的資金做高風險的投資。因為即使你10%的資金全沒了,你的損失也是有限的,但是一旦10%的資金有了收益,那將會是巨大的。對於一個企業來說,中庸的企業最終會被達摩克利斯之劍殺死,而只有願意創新和能提升反脆弱性的企業才能最終生存下來。
  8. 反脆弱的原則:
    1. 尋找你有哪些可選擇性 (optionality),並根據這些選擇權做排序
    2. 傾向選擇開放式回報 (open-end payoffs),而非封閉式回報 (close-end payoffs)
    3. 你不該投資 business plan,而是人
    4. 採用 barbell strategy
  9. 企業的運作策略很常飄移與見風轉舵,例如可口可樂原先是生產感冒藥品、珠寶 Tiffany 原先是文具店、Nokia 原本是造紙廠等
  10. 作者指試誤法其實並不是隨機的,一個人需要理性讓每次失敗能提供額外資訊,讓每一次比上一次更有價值,逐步摸索出目標。作者稱很高比率技術知識是來自試誤法的反脆弱性與可選擇性,我們所會的各種技能與觀念實際上以反脆弱的實際行事而得,卻相信這是從書本、理念與推理學會,就像聲稱鳥懂得飛是因為知道各種數學方程式一樣。
  11. 作者認為教育在國家層面上不會令國家富有,兩者不存在因果關係。教育可以帶來其他好處,但不能用於促進經濟成長。擅於做事者與擅於談論者是兩類人,前者只會動手做,用談話部門的標準衡量他們既不公平也侮辱他們。見機而作的方式,可從大利益與溫和傷害的不對稱性中得到很大優勢,反之,依賴敘事是被不確定性調適,並會往後倒退,天真地將過去投射至未來。
  12. 作者提及政府看待事情的方式過於目的導向,研究獎助與資金應該是給予人,而不是給予計劃,而且應少量分配給許多研究工作者,因為報償與嘗試次數成線性關係,贏家會有幾乎無上限的極高報酬。創新會漂移,一個人需要漫遊者的能力,捕捉眼前的機會。重要的創業投資決定是在沒有真正營業計劃下進行。資金應該給相信能掌握選擇權,作風積極的修補者。
  13. 作者以簡單的試探啟發法辨認騙子︰他們只會提供正向建議,利用我們容易受騙的傾向。實務上,在演化中存活者都是用負向方法,學習避開甚麼事,降低個人發生意外的大部份風險我們沒辦法確切判斷是成功者擁有長才,還是有長才者會成功,但我們很有能力預測負面事情,也就是不具任何長才者最終會失敗。我們知道不對的事,遠多於正確的事。
  14. 反脆弱性意味著舊優於新,時間會證明事物的脆弱性,並在必要時摧毀它們。能夠存活下來的事物,一定是長於達成某項目的,我們的感知與邏輯無法捕捉這目的,但時間則能看到。典型預測會隨時間而退化,但在預測脆弱性時,長期預測比短期預測可靠,因為受「黑天鵝」影響者相當容易會被歷史吞噬。
  15. 法令規定越複雜,懂得門道與漏洞的主管官員,日後獲益就越大,官員可以在離職後收受私人薪津。規定繁複令內部人員有機會上下其手套利,所以主管官員有誘因令法令規定越繁複越好。在複雜系統中,法令規定的字面與精神差異難以察覺,也就是更容易揩油。
  16. 每一件事情都會從波動得到利益或承受損失。脆弱性是指因為波動和不確定而發生損失。
  17. 歷史上有些國家專門生產某些產品、商品與作物,在價格激烈波動下遇上困難。病菌與天候不良等阻礙令生產出問題同樣帶來災難,例如1850年代愛爾蘭的馬鈴薯飢荒。這不表示專業分工不是好事,但需要先處理脆弱性問題,這種修補過程是由下而上緩步漸進,不是社會計劃者計劃而來。
  18. 選擇權式試誤法,因為不對稱性,小錯誤可能帶來大利得,每件事情都應該嘗試一點,因為有其中一件事情你做對了、對之深感興趣,很可能從中獲得極大收穫與效益。
  19. 由於贏家會有幾乎無上限的極高報償,所以正確的方法是採用某種盲目注資法,正確的政策即是「1/N」,將資金盡可能分散在許多嘗試上:如果你面對N個選擇權,那就等量投資他們全部。每次嘗試的金額少,但是嘗試的次數多,而且比你所要的更為寬廣。為什麼?因為在極端世界中,投入少量金錢在某種東西上,比完全錯過它重要。
  20. 教育與讀書的槓鈴策略 (barbell strategy):
    1. 20% 的時間用在應付學校課程 : 不要被當就好
    2. 80% 的時間用來自學 : 讀任何你自己想讀的書
  21. 在健身房鍛鍊出極佳的數據與肌肉線條的健身者,往往抬不起一塊大石頭,或者會輕易地被街頭小混混輕易撂倒,因為在健身房健身的人是在 domain-specfic 的環境下才能擁有較佳的表現,街頭小混混則是在混亂的條件下存活,當健身者離開其結構化的環境,勝負立判。猶如統計和風險的專家活在數學公式當中,一但把他們拖入真實世界當中,就會崩潰。
  22. 有些人之所以能夠被選為公司的高階主管,只因其擁有能夠忍受無聊、冗長會議的能力,或是能夠聚焦於無聊會議文件的能力,而非優異的決策成效
  23. 槓鈴策略的首要前提是我們要知道我們要做甚麼,我們的目標及做這件事情的目的是甚麼(例如:做股票投資、做房地產買賣…等);其次我們必須盡可能地超保守和超積極,而不是溫和的積極或保守。當你的損失極為有限時,你必須盡其可能地積極、投機,有時甚至是敢於去冒險一搏,才是對的抉擇
  24. 不斷試錯,跟著自己的興趣去自由探索和閱讀,也是提高自己反脆弱性的有效方法。如作者所說:“避免無趣是唯一值得推薦的模式。”個人和公司必須去做那些不想做但應該做的事情,習慣了在近處散步的人在保證安全的基礎上應該嘗試去遠方冒險。跳出“舒適區”,不斷嘗試,才能激發潛能。對於職場人士,有時候出點小毛病也不必大驚小怪。不要試圖完全控制你的團隊和公司,就像養小孩一樣,讓他在跌倒中學會站立。過度保護、過度防範的狀態會導致我們自身的反脆弱能力降低。反脆弱能幫助人應對未知的事,有效解決不瞭解的事。如作者在書中總結所說:“正是因為內在的反脆弱性,我們做的要比我們想像得更好。寧願做愚鈍但具有反脆弱性的人,也不做極其聰明但脆弱的人。痛苦和險境能使人變得更強,人體骨骼在適度的負重和壓力下會越發強壯,我們生活中的許多事物也會從壓力、混亂、波動和動盪中受益
  25. 史上許多重大發現,人類都是先知道怎麼做,日後才找到原理的。譬如蒸氣機,噴射引擎。人類是先做出來,之後才用比較詳細的理論解釋這些機器的運作原理。還有醫療界的重大發現,洗手可以降低產婦死亡率。這個現象也是先被發現,之後才發現細菌。經驗具有反脆弱特性,理論則是脆弱的
  26. 不是所有可以寫成論文,寫在教科書中的東西,才是智慧。經驗法則,也是智慧。這種科學與理性至上的態度,也反應在學校教育。作者說,學校只能教可以理論化,可以有條理的寫下來的東西。但,一個人不應將學習限縮在學校教給你的東西。
  27. 今天你去搭飛機,機場安檢人員看到你,會認為你是恐怖份子嗎?通常不會。大多搭機的人,不是恐怖分子。那為什麼還要掃描所有你帶的行李,甚至搜身。理由一樣,萬一這個人是恐怖份子的話,代價非常慘重,因為我們在恐怖份子面前顯得非常脆弱。這是務實的做事態度。不講機率,不要用科學估計法算百分比,而事先做好準備
  28. 你認為核電廠在明年會爆炸嗎? 通常不會。但是為什麼我們還是要花數百萬美金來提升核電廠的安全性,這是因為我們對核災顯得非常脆弱,不須計算發生核災的機率,事先做好充足的準備,才是正確的做法
  29. 很多事件都有非對稱式的報酬 (asymmetric payoff),其中一方通常會帶來更大的後果 (consequence)。該怎麼做決策呢? 你該基於脆弱性來做決策、而非機率高低;或者說,你該基於脆弱性來做決策,而非是否發生與否
  30. True or False 等同於發生機率的高或低。統計學家常稱之為信心水準 (confidence level),例如在 95% 的信心水準下、低於  5% 的錯誤機率下,有可能核電廠是安全的,你會因為機率很低,你就不去針對核電廠的安全做強化嗎?當真的發生核災時,你能夠承受嗎?因此,機率 (也就是 True / False) 在現實生活是不管用,代價 (payoff) 才是最重要的