發表文章

目前顯示的是 11月, 2010的文章

歐舍,哈瑪 G2 耶加雪夫

今天下午手沖一款買豆子時歐舍額外送的豆子,哈瑪合作社的耶加雪夫。額外送的豆子因為是用一般的塑膠袋子裝的,所以我通常都會直接先煮掉,以免錯過其最佳風味的時刻。這款豆子烘培度是 M,原本以為會很酸的,但沒想到一入口首先出現的是平薄的苦味,隨後一股甘甜便立刻衝了上來。 今天沖煮的溫度是 91 度左右,15g 的豆子沖出約 150 c.c. 的咖啡。用的工具是有田燒的濾杯,沖到後段時濾杯的流速會慢很多,所以第二次時是硬沖過量的水壓出來的。超過的水就移走滴在別的杯子裡。原本有點擔心浸泡太久會萃取過度,不過第一口喝下去可以確定味道是沒問題了。 如剛剛說的,第一口並不覺得酸,反而是很平實的苦味(幾乎是沒有)跟緊接在後的甘甜。喝第二口,我想應該是因為杯子不夠熱,溫度降低的關係,第二口酸味就出來了。微微的酸氣壓過苦味,配上相同的甘甜,很合。 沒想到這款豆子還蠻令人驚豔的。

Unix 重新導向跟 2>&1

這幾天因為研究 L4D2 的專屬伺服器架設,看到 Srcds 網站針對確保 Srcds 服務程序能隨時保持高優先權,在 crontab 底下使用 renice 的方式每五分鐘調整一次程式的優先權,其指令中 renice -20 `cat /home/yoursrcdspath/srcds.pid` >/dev/null 2>&1 最後面的「>/dev/null 2>&1」為 Unix 的重新導向技巧。雖然大約知道是什麼,不過實際上的原理我卻一直不明白,大約查了一下,疑問變更多。於是我決定來搞清楚它的來龍去脈,這篇文章就是這樣來的。 首先,我們先說明一下這段語法的作用,「>/dev/null 2>&1」實際上在這裡會將左邊程式的執行結果丟給「/dev/null」,然後不管程式有什麼錯誤,也會一併丟給 null。熟悉 Unix 的人大概知道,「/dev/null」是 Unix 底下的垃圾筒+黑洞。它不帶任何意義,所有丟進去的東西都會被吃掉然後不見,反正你不想看到的東西丟給 null 就對了。而「>」的意思其實是,將「>」左邊輸出的東西重新導向到右邊去。但不止是這樣而已,系統將標準輸入輸出分成三個:標準輸入 (stdin)、標準輸出 (stdout)、以及標準錯誤輸出 (stderr),它們的 fd (file descriptor, 檔案描述子) 分別是 0、1、2。當「>」左邊未指定任何東西時,它會讀取左方程式的標準輸出 (也就是 fd=1) 重新導向給右邊的東西,但是你也可以指定要重新導向的 fd (也就是說「>abc.txt」會等於「1>abc.txt」)。所以可以想見 2>&1 的意思應該是把 fd=2,也就是標準錯誤輸出重新導向給 &1。而這邊的 &1 指的其實就是 fd=1。這邊似乎有點混淆視聽的感覺,為什麼「>」前面的 fd 不需要指定 &,後面的 fd 卻又要加 & 呢?我沒找到確切的原因,但是根據 這篇討論 ,我認為有可能是因為「>」左邊只接受 fd,但右邊所接收的語法卻應該是檔案名稱。因此若用「2>1」其結果會變成「將標準錯誤輸出重新導向給檔案名稱為 "1" 的檔案」,