2017年6月28日

解決 homebrew 修正成不用 root 身份執行後,mysql 無法啟動的問題

最近手邊要管的機器太多了,想試試用 Ansible 來處理,查了一下如何安裝,網路上是推薦用 homebrew 來裝最簡單,但是在使用很久以前安裝的 homebrew 時,出現了以下錯誤訊息:

$ sudo brew update
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.

上網查了一下相關討論,大意就是 homebrew 不要讓你用 root 執行了,網路上找到的解決辦法就是,更改 /usr/local 的權限,如下:

sudo chown -R $(whoami) /usr/local

這樣一來,homebrew 就能正常運作了,執行以下指令就不會出錯,再也不需要加上 sudo 指令了:

brew update

但是問題來了,如果原本透過 .pkg 檔案來安裝 MySQL 的話,這時 MySQL 就會無法使用了!

$ mysql -uroot -p
Enter password: 
mysql> show databases;
ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)

問題確認:

先查看一下 /usr/local 底下的目錄:

$ ls -al /usr/local/
total 80
drwxr-xr-x   29 mayer  wheel   986  6 28 09:55 .
drwxr-xr-x@  13 root   wheel   442  2 24 15:07 ..
drwxr-xr-x   16 mayer  admin   544  6 28 10:19 .git
......
lrwxr-xr-x    1 mayer  wheel    27  1 28  2014 mysql -> mysql-5.1.72-osx10.6-x86_64
drwxr-xr-x   16 mayer  wheel   544 12 17  2014 mysql-5.1.72-osx10.6-x86_64
drwxr-xr-x   10 mayer  admin   340 12  8  2015 opt
......

可以看到,/usr/local/ 底下有 MySQL 的目錄,由於剛剛我們改了 /usr/local 目錄底下所有目錄 owner 的關係,很可能是因為這樣出了問題。

先進入 Mac 的系統偏好設定 -> MySQL,看到正常運作中:

然後點擊 Stop MySQL Server 按鈕,會看到 MySQL 服務停止了,並且出現警告訊息:

/usr/local/mysql/data 目錄的 owner 不是 mysql 或 _mysql,可能會出問題。

問題解決:

先查看機器上,系統上有什麼樣的 mysql 使用者:

grep mysql /etc/passwd
_mysql:*:74:74:MySQL Server:/var/empty:/usr/bin/false

這邊發現到,只有一個 _mysql 這個使用者,很顯然的是在安裝 mysql 套件時一併建立的,因此我們將 /usr/local/mysql 相關的目錄更改目錄的 owner:

sudo chown -R _mysql /usr/local/mysql*

之後,在點 Start MySQL Server 按鈕,就能看到 MySQL 正常啟動了。

最後,透過 mysql command line 確認是否能正常讀取 database 了:

$ mysql -uroot -p   
mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| ..................  |
| ..................  |
| test                |
+---------------------+
27 rows in set (0.01 sec)

一切又恢復正常了!

2017年6月26日

The Ten Commandments of Egoless Programming

無我編程的十條戒律,最早出現在由Gerald Weinberg於1971年出版的經典著作《程序開發心理學》裡。這十條準則,除了告訴 programmer 要鍛鍊自己的人格修養之外,更多的是提醒大家,要擺脫 geek的形象,走入社會及人群。

  1. Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry, so we can, and should, learn, laugh, and move on.

    接受自己會犯錯的事實。關鍵是要在錯誤進入到生產環境之前把它們找出來。所幸的是,除了小部分在噴氣推進實驗室裡開發火箭制導系統的程序員,大部分錯誤都不會造成致命的後果。所以,我們一定能夠而且也應該要學會嫣然一笑,然後繼續。

  2. You are not your code. Remember that the entire point of a review is to find problems, and problems will be found. Don't take it personally when one is uncovered.

    不要使用代碼來針對個人。要記住,代碼評審的目的是為了找出問題,而且總歸會找到問題。如果真的找到了問題,請不要把它作為針對個人的藉口。

  3. No matter how much "karate" you know, someone else will always know more. Such an individual can teach you some new moves if you ask. Seek and accept input from others, especially when you think it's not needed.

    不管你知道多少“秘籍”,總有人比你知道得更多。如果你開口,他們就會教你更多的東西。在你認為沒有必要的時候,學會接受他人的建議。

  4. Don't rewrite code without consultation. There's a fine line between "fixing code" and "rewriting code." Know the difference, and pursue stylistic changes within the framework of a code review, not as a lone enforcer.

    不要不經討論地重寫代碼。“修復代碼”與“重寫代碼”是有明顯的區別的。瞭解這些區別,並在代碼評審的框架之內進行程式化的變更,而不是單獨作戰。

  5. Treat people who know less than you with respect, deference, and patience. Nontechnical people who deal with developers on a regular basis almost universally hold the opinion that we are prima donnas at best and crybabies at worst. Don't reinforce this stereotype with anger and impatience.

    尊重比你懂得少的人,並對他們抱以耐心。與技術人員打交道的非技術人員認為技術人員要麼是妄自尊大的討厭鬼,要麼是愛撂挑子的倔驢。所以,我們不要用我們的憤怒和不耐煩去加深他們對我們的這種印象。

  6. The only constant in the world is change. Be open to it and accept it with a smile. Look at each change to your requirements, platform, or tool as a new challenge, not as some serious inconvenience to be fought.

    這個世界唯一不變的就是變化。敞開胸懷,面帶微笑地去擁抱變化。把每一個需求變更、平台變更或工具變更都看成是一個新的挑戰,而不是令人厭惡的麻煩。

  7. The only true authority stems from knowledge, not from position. Knowledge engenders authority, and authority engenders respect – so if you want respect in an egoless environment, cultivate knowledge.

    真正的權威來自於知識,而不是職位。知識造就了權威,而權威會迎來尊重。如果你想要在一個無我的環境裡得到尊重,那麼充實你的知識吧。

  8. Fight for what you believe, but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don't take revenge or say, "I told you so" more than a few times at most, and don't make your dearly departed idea a martyr or rallying cry.

    堅定你的立場,優雅地接受挑戰。要知道,你的想法有時候會遭到反對。你可以證明自己是對的,但不要試圖報復,不要總是叫嚷著“我早就說過”,不要把被否定的想法看成是一個犧牲品或者某種戰鬥口號。

  9. Don't be "the guy in the room." Don't be the guy coding in the dark office emerging only to buy cola. The guy in the room is out of touch, out of sight, and out of control and has no place in an open, collaborative environment.

    不要成為“小黑屋裡的人”。不要躲在小黑屋裡寫代碼,就算偶爾露個面,也只是為了買一杯可樂。躲在小黑屋裡只會讓你與其他人失去聯繫,淡出他們的視野,失去控制。在一個開放的協作環境裡,你會找不到自己的位置。

  10. Critique code instead of people – be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.

    批評代碼,而不是人。對人好一點,而不是代碼。讓你所有的評審為代碼帶來積極的改進,把你的評審與局部標準、程序規範和更好的性能結合在一起。

References

無我編程的十條戒律

The Ten Commandments of Egoless Programming

2017年6月19日

Volumio2

Volumio 是支援類似 Raspberry Pi 等多款小電腦主機的音樂播放器,只要有一台 Raspberry Pi,就能夠接上網路上的串流、區域網路內的音樂庫、YouTube,進行音樂的播放。

內建的 Audio Out 就能夠播放音樂,但如果要得到更高語音品質的音樂輸出,則需要再購買 USB Speaker 或是 USB/I2S DAC。

安裝 volumio2 只要到 DOWNLOAD VOLUMIO FOR YOUR PLATFORM 網頁下載 Raspberry Pi 的 image,燒錄到 micro sdcard,直接用 RPi 開機就可以運作。

網路設定

如果直接接上 RPi console,可以用

帳號: volumio
密碼: volumio

登入進入 RPi,root 的密碼也是 volumio。

但基本上是 console mode。

volumio 必須要用 browser 進去設定以及使用,主畫面就像下面這樣。

我們除了設定連接到 NAS 的音樂庫,另外還下載了 YouTube Plugin。

設定「播放選項」

因為我沒買 DAC,在設定播放的輸出裝置時,一直發現一些問題,最後就是參考這個網頁

LIBRARY UPDATE: SEEMS TO CRASH VOLUMIO ON RASPI

把 /boot/cmdline.txt 裡面

由
"smsc95xx.turbo_mode=N"
改為
"smsc95xx.turbo_mode=Y"

另外把音量選項的 Mixer Type 改為 Software,就能運作了。

輸出裝置

RPi 內建的 Audio Out 聲音效果很差,會聽到很多雜音。

後來把一個 USB Speaker 接上 RPi,也沒有裝 Driver,就能在輸出設備中選到該 USB Speaker,聲音的品質改善很多。

APP

Volumio iOS 是個非常好用的工具,在 LAN 裡面把 app 打開,馬上就自動連接到 LAN 的 volumio。

References

Raspberry Pi 的應用 - 連音響發燒友也愛用的音樂播放器:Volumio

Raspberry Pi 的應用 - 數位音樂播放器的再進化:Volumio 2

2017年6月13日

Google Computer Engine 價錢相關

每次有人問到價錢相關問題時,都要上官網去查,官方資料雖然詳細豐富,但有時候還是覺得太多了,不需要看到這麼細,不如就自己整理一份堪用的吧。

基本

instance

最貴費用會在 instance 的費用,instance 會影響到 CPU 與記憶體。根據你選的機器類型,會得到相對應的費用。以 zone asia-east1-a 為例:

  • n1-standard-1 (1 個 vCPU、3.75 GB 記憶體) 費用一個月為 28.50 美金
  • n1-standard-2 (2 個 vCPU、7.5 GB 記憶體) 費用會變為一個月 56.61 美金。

region

region 也就是你 instance 的所在區域,比如說台灣的話就是 asia-east1,而東京的話就是 asia-northeast1。

所選的 region 與 zone 會影響價錢,比如若使用 n1-standard-1 的機器類型,於 asia-east1-a 一個月要 28.50 美金,位於 us-west1-a 一個月要 24.6 美金,位於 asia-northeast1-a 則要 31.69 美金。

images

所選 image 使用的作業系統會影響價錢,用一般 Linux 如 Debian、CentOS、Ubuntu 等等的是免費的,但是若是使用 Windows Server 或是 Red Hat 則要付授權費用。詳細看這邊 Premium images

網路

網路的收費有點複雜,有以下幾點:

  1. 外部網路傳進 GCE 機器的流量 (Ingress) 是不用收費的。
  2. 在相同 zone 內兩台 GCE 機器透過內部 ip 互傳的網路流量是不用收費的。
  3. GCE 機器傳至相同 region 的服務或是產品是不用收費的。
  4. GCE 機器若是透過外部 ip 傳出去的流量,則要根據地區與用量算錢,大多區域的價錢都一樣,只有到中國(香港的流量價錢和其他區域一樣)和澳洲的流量價錢會不一樣。每月使用流量 1TB內,則大多區域的價錢會是每 GB 0.12 美元,到中國會是每 GB 0.23 美元,到澳洲會是每 GB 0.19 美元。若你使用 1TB 以上,會便宜一點,若你使用到 10T 以上,價格會在便宜一些。

在白話一點就是,從外部送給 GCE instance 的流量都不用錢;GCE instance 之間若是透過內網 ip 互傳的流量也不用錢;若是透過外網 ip 從 GCE instance 傳出的流量就要收錢。

負載平衡

啟用則每小時 0.025 美金 (5 條規則內統一都是一樣價錢),之後額外加一條規則加 0.010 美金。而負載平衡處理的流量每 GB 為 0.008 美金。

硬碟

以台灣所屬的 zone,asia-east1 為範例:

  1. 標準硬碟:1 個月 1 GB,0.04 美元。
  2. SSD:1 個月 1 GB,0.170 美元。
  3. Snapshot:1 個月 1 GB,0.026 美元。
  4. Local SSD:1 個月 1 GB,0.218 美元。
  5. 自製 Image:1 個月 1 GB,0.085 美元。

IP

你可以跟 google 要固定 ip,但是若你要了 ip 卻沒將它使用在任何 instance 上,則 google 要跟你收費,每小時為 0.010 美金,若是該 ip 有在正常使用中,則不會被收取任何費用。

價錢範例

以下價錢範例,會將美金 * 30 當成美金轉換成台幣的匯率。

規格與用量相關

規格或用量 zone 每月花費美金 每月花費台幣
1台 n1-standard (1 vCPU、3.75 GB 記憶體),使用 centOS 7 image asia-east1 28.51 855.3
1台 f1-micro (0.2 vCPU、0.60 GB 記憶體),使用 centOS 7 image asia-east1 5 150
1台 g1-small (0.5 vCPU、1.70 GB 記憶體),使用 centOS 7 image asia-east1 15.33 459.9
HDD 10 GB asia-east1 0.40 12
HDD 100 GB asia-east1 4.00 120
snapshop 10 GB asia-east1 0.26 7.8
snapshop 100 GB asia-east1 2.60 78
負載平衡,5 條規則,一個月處理 1 GB 流量 asia-east1 18.26 547.8
負載平衡,5 條規則,一個月處理 100 GB 流量 asia-east1 19.05 571.5
負載平衡額外增加 1 條規則 asia-east1 7.3 219
負載平衡額外多處理 1 GB 流量 asia-east1 0.01 0.3

網路相關

GCE 傳出流量 每月花費美金 每月花費台幣
GCE 機器傳出 1 GB 網路流量到中國(香港不屬於此價位) 0.23 6.9
GCE 機器傳出 100 GB 網路流量到中國(香港不屬於此價位) 23 690
GCE 機器傳出 1 GB 網路流量到澳洲 0.19 5.7
GCE 機器傳出 100 GB 網路流量到澳洲 19 570
GCE 機器傳出 1 GB 網路流量到各其他各地(香港屬於此價位) 0.12 3.6
GCE 機器傳出 100 GB 網路流量到各其他各地(香港屬於此價位) 12 360

免費試用

GCP 服務現在提供一年 300 美金的免費試用服務,所以可以透過你的 google 帳號啟用 GCP 服務(需要填入信用卡),則可使用 GCP 服務。預設你的帳號是不會被收取任何費用的,當裡面的 300 元花完了只會讓帳號被暫停,而不會從信用卡扣款。

若你點了升級或是升級帳戶的按鈕將你的帳號升級成付費帳號,此時信用卡才會被拿來扣款。

免費方案

若你只是需要一台機器,跑跑 wordpress,或是練習 linux,則你可以考慮使用 GCP 免費方案,GCE 提供你在 US regions 開一台 f1-micro instance,一個月可以使用 30 GB 的 HDD,與 5GB 的 snapshot。網路部份一個月 1 GB 的網路對外流量從北美至世界各地(但不包括中國和澳洲)。所以基本上可以拿到一台免費的機器使用。

reference

Google Cloud Platform Pricing Calculator

Always Free Usage Limits

Regions and Zones

Google Compute Engine Pricing

2017年6月12日

如何備份、還原處理 RPi 的 sdcard image

Raspberry Pi 使用的 sdcard 雖然同樣是 16GB,但因為不同廠牌還是有些大小的差異,備份跟還原 sdcard 有些問題,畢竟大檔案的 image 不能還原到稍小的 sdcard 中。

以下紀錄如何備份、還原及縮小 RPi 的 sdcard。

在 MAC 處理 image

  • 使用 [SD Formatter] 可格式化 SD Card
sudo newfs_msdos -F 16 /dev/disk2
  • RASPBIAN 下載 RASPBIAN JESSIE WITH PIXEL,取得 2016-09-23-raspbian-jessie.zip 解壓縮得到2016-09-23-raspbian-jessie.img

  • 重新插入 SD Card,用以下指令的結果,得知 SD Card 在 /dev/disk2 或是 /dev/disk1

diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *480.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            479.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk2
   1:             Windows_FAT_32 NO NAME                 15.9 GB    disk2s1
  • umount disk2
sudo diskutil unmountDisk /dev/disk2
  • 將 img 寫入 sdcard

如果 rdisk2 有問題,就改成 disk2

sudo dd bs=1m if=~/Downloads/2016-09-23-raspbian-jessie.img of=/dev/rdisk2
  • 將 sdcard dump 到 image
sudo dd bs=1m if=/dev/rdisk2 of=~/Downloads/messenger_20170405.img

在 RPi 開機狀態直接備份 sdcard

在 RPi 上,將新的 sdcard 放入 USB sdcard Reader 接上 RPi

sudo fdisk -l

如果是 Disk /dev/mmcblk0 的設備,就是 RPi 上原始的 sdcard,以 USB sdcard Reader 接上 RPi 後,會看到增加的 /dev/sda 設備,這是新的 sdcard

下載 rpi-clone

git clone https://github.com/billw2/rpi-clone.git
sudo cp rpi-clone/rpi-clone /usr/local/sbin
rm -rf rpi-clone

用以下指令就可以將 sdcard 複製到 新的 sdcard 上

sudo rpi-clone sda -v -x

在 Windows 處理 sdcard image

使用 Win32 Disk Imager 軟體就可以備份及還原 image

縮小 RPi image

使用 PiShrink 可以在 linux 縮小 RPi image

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

chmod +x ./pishrink.sh
sudo ./pishrink.sh ./raspbian_backup.img

以下是執行結果,可看到檔案縮小了 2G

Creating new /etc/rc.local
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop0: 301607/960992 files (0.2% non-contiguous), 3200117/3841024 blocks
resize2fs 1.41.12 (17-May-2010)
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/loop0 to 3208948 (4k) blocks.
Begin pass 2 (max = 228392)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 118)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 25082)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 3208948 blocks long.

Shrunk ./raspbian_backup.img from 15G to 13G

References

How to Clone Raspberry Pi SD Card on Windows, Linux and macOS

Backup (or Clone) a Raspberry Pi SD Card

用 Win32 Disk Imager 備份和燒錄 Raspberry Pi 的 SD 卡

2017年6月5日

倖存者偏差 survivorship bias

倖存者偏差(Survivorship Bias),就是只有存活下來的人,才會被後人看到,因此我們在分析資訊的時候,非常容易忽略掉那些被淘汰的競爭者,造成對局勢的評估過分樂觀,甚至導出完全相反的結論!

在觀察不熟悉的產業時,往往被這種倖存者偏差所蒙蔽,報章雜誌更是時常針對那些所謂成功的企業案例。實際上,這些結果論的成功故事所歸納出的成功要訣往往只是其中一小塊拼圖,這些1%的倖存者因為大量曝光的資訊,讓我們以為前景一片看好,我們卻沒有看到其他99%的競爭者早就默默地消失了!由於成功者的能見度壓倒性的高過失敗者,因此,人們總是系統性的高估了獲得成功的希望。

類似的名詞有:隱藏失敗者、沉默的數據、死人不會說話

統計的抽樣方法

抽樣 是一種推論統計方法,從目標總體(Population,母體)中抽取一部分個體作為樣本(Sample),通過觀察樣本的某一或某些屬性,依據所獲得的數據對總體的數量特徵得出具有一定可靠性的估計判斷,從而達到對總體的認識。

學問就在於,如何抽樣,抽樣的個體如何能代表整個母體?統計上有另一個名詞:信賴區間,信賴區間是樣本對某個總體參數的區間估計。信賴區間展現的是,這個總體參數的真實值有一定機率落在與該測量結果有關的某對應區間。

信賴區間會聲稱總體參數的真實值在測量值的區間所具有的可信程度,也就是前面所說的「一定機率」。這個機率被稱為信心水準。

舉例來說,如果在一次大選中某人的支持率為55%,而信心水準0.95上的信賴區間是(50%,60%),那麼他的真實支持率落在50%和60%之區間的機率為95%,因此他的真實支持率不足50%的可能性小於2.5%(假設分布是對稱的)。

在倖存者偏差中,由於抽樣的對象都是整個母體中的倖存者,因此對這些抽樣對象的分析結果,並不能代表整個母體,如果誤信這些倖存者的分析結果,忽略了原本母體中沈默的失敗者,就會造成對局勢過分樂觀的評估結果。

第二次世界大戰

1941年,第二次世界大戰中,美國哥倫比亞大學統計學亞伯拉罕.沃爾德(Abraham Wald)應軍方要求,利用其在統計方面的專業知識來提供關於《飛機應該如何加強防護,才能降低被炮火擊落的機率》的相關建議。

教授針對聯軍的轟炸機遭受攻擊後的數據,進行研究後發現:機翼是最容易被擊中的位置,機尾則是最少被擊中的位置。沃德教授的結論是「我們應該強化機尾的防護」,而軍方指揮官認為「應該加強機翼的防護,因為這是最容易被擊中的位置」。

沃德教授的堅持有以下幾點

  1. 統計的樣本,只涵蓋平安返回的轟炸機
  2. 被多次擊中機翼的轟炸機,似乎還是能夠安全返航
  3. 在機尾的位置,很少發現彈孔的原因並非真的不會中彈,而是一旦中彈,其安全返航的機率就微乎其微

軍方採用了教授的建議,並且後來證實該決策是正確的,看不見的彈痕卻最致命!

這個故事有兩個啟示:一是戰死或被俘的飛行員無法發表意見,所以彈痕數據的來源本身就有嚴重的偏誤;二是作戰經驗豐富的飛行員的專業意見也不一定能提升決策的質量,因為這些飛行員大多是機翼中彈機尾未中彈的倖存者。

基金及股票市場

基金行業會對外宣布,過去10年,基金行業的整體收益率超過100%,你是不是覺得買基金肯定賺翻了?

基金市場中,計算基金類股未來多年走勢時,通常會排除下檔基金的虧損,因此會高估了基金的整體報酬率,因為已經消失在市場的基金,沒有必要列在其中。

如果長期觀察新發行證券的股價發展,並排除已經破產的公司時,也會發現類似的效應。這種「排除」模式導致投資人對未來發展過度樂觀,因為破產公司無法拉低整體的統計數據。

股票指數的表現也會遭遇這類失真問題,因為指數表現較差的股票並不會納入計算,股市指數永遠只會統計表現最亮眼的那些股票。

讀書無用論

很多人在說,某某人當初沒好好上學如今照樣掙大錢,而好多用功讀書的人,畢業後反而不如那些沒好好學習的人混得好。並且因為這樣的例子有很多,所以很多人得出「讀書無用」的結論。

因為高學歷成功者的新聞性不會比低學歷成功者來得高,在報導成功案例時,如果有低學歷,或是輟學的過程,會讓整個故事更具有傳奇性,因此我們常常會聽到這樣的案例,相反的,如果是高學歷的成功者,報導中就不會強調這個部分。

生活中的 倖存者偏差

我親戚的病就是中醫看好的,所以中醫很靈驗。

喝葡萄酒的人比較長壽。

每個成功者都很努力,所以只要努力就能成功。

References

倖存者偏差

可怕的邏輯陷阱 -- 存活者偏差

彈孔最多的地方不需要保護──倖存者偏差

無所不在的生存者誤差 (Survivorship bias)

林斯諺/國外的月亮比較圓?《返校》熱潮的「倖存者偏差」

考研,一定要注意倖存者偏差

倖存者偏差是什麼意思?

3 - 6 信賴區間與信心水準的解讀