Shell Script in Makefile

不知道大家有沒有試圖在 Makefile 裡面寫個 shell script 呢?

打個比方來說, 如果這是一個 script

read -p “key in your name: " yourname

echo -e “Your Name is: " $yourname

隨便貼到一個 shell.sh, 然後執行, 保證很順利.

不過呢, 把這兩行貼到 makefile 之後就變樣了.

首先, 第二行不認識第一行的 yourname 了….

Why? 要 export 嗎?

不是!

因為 makefile 裡面的指令, 每一行是單獨在一個 sh 裡面執行的, 所以第二行當然不認識第一行的 yourname 囉!

解決之道是, 加上一個 ‘\’, 表示這兩行希望用同一個 shell.

read -p “key in your name: " yourname    \

echo -e “Your Name is: " $yourname

 

然而, 肯定還是失敗啦! 因為, 因為第一行裡面的 yourname 是經過求值的, 所以第二行要用 $$yourname 來取值. 這樣就會對了!

read -p “key in your name: " yourname    \

echo -e “Your Name is: " $$yourname

對了, 還要分號. 因為分號可以讓這行指令告一段落.

 

read -p “key in your name: " yourname ;   \ 

echo -e “Your Name is: " $$yourname;

如果有 do 迴圈, 分號的位置如下:

for d in logic ui; \

do \

  echo $$d/*.java; \

done > $@

這個簡單的撇步不懂的話, makefile 就會寫不好. 詳情請參閱 O’Relly 出版社的 “GNU Make 專案開發工具" 第三版的 page 100, “接續太長的命令".

說真的, 真本書超讚. 不過我沒有心情去一頁一頁地看它, 所以暫時不會有它的讀書心得跟大家報告. 或許想到哪裡, 寫到哪裡吧.

誰是贏家?

昨天股市大跌, 和我預想的差不多. 因為報端居然出現 “預期五月旺季業績成長, 所以股市將會上漲" 的論調. 大家都知道有句話叫做 “五窮六絕", 甚至在業績不好的時候, 我們公司的某位主管還曾經把這句順口溜延伸到 “七上吊、八進棺材" . 現在竟然出現了淡季愈看愈好的異相, 可見得已經有點物極必反, 股市跌一跌是正常的.

有趣的是, 倒底誰會是這次波動的贏家呢? 根據波浪理論, 這次應該是第二波下殺. 殺完反正會漲, 短暫被套也沒有關係.  只要撐得夠久, 昨天的股價就會回來. 不過多少人會續抱? 多少人會停損? 多少人會在反彈後賣出, 然後又從最低點再買進呢?

初步瞄了一下第四台老師的說法, 整理如下:

 黃銘揚 賣出! 反彈就賣! 
 蔡正華 停損, 空手 
 楊少凱 多單停損, 出清 
 江國中 空單留倉 
 顧葵國 多單留倉
 郭海培 不搶反彈 
 吳金潮 買進, 等反彈 
 某女分析師 上升波本來就緩漲急跌 

資料來源: 投顧明牌 http://www.s8088.com/forum-33-1.html

看來, “老師" 基本上是看空的比較多, 繼續有信心的比較少. 假設大部分的人都是錯的, 這樣比較符合 80/20 原理. 那麼, 週一會反彈還是繼續下殺? 有反彈應該要買還是賣呢? 這個猜謎很有趣, 答案也很值錢. 其實我比較相信, 對的那 20% 不見得就在老師裡面, 老師有也可能全軍覆沒啊!

怎麼樣才可以讓老師們全部輸光光呢? 那個情境應該是: 有高又有低, 這樣才會讓絕大多數的老師和散戶都輸輸去. 我覺得這就跟中樂透一樣, 能讓大家都不中的牌, 才是最常開出來的. 若是隨著氣氛而忽多忽空, 這幾天一定會吃虧的.

唯有不管開高或開低, 盤中勁升或是重挫, 都不予理會, 才會是最後的贏家. 因此, 這兩天還是去找一些沒人注意的股票, 逢低買一點放著. 畢竟做長線的股票, 是不用理會第二、四波下殺的. 只有本來就想投機的人, 需要清一清庫存,  以免股市愈往下就愈急躁. 換言之, 去年低點就買的股票不要動, 最近才受到氣氛影響跑去買的要停損.

 

戰戰兢兢 手動更新 WordPress 2.7.1

不知道為甚麼? 我不能自動更新 wordpress 了. 手動更新本來是必然的, 但是自從有了自動更新功能之後, 我已經把手動更新架站軟體的技能忘光了…

每次按下 autio upgrade  的按鈕, 它就會出現 time out, 說甚麼 3 秒或是 2 秒鐘之內只收到 X out of Y bytes 之類的. 上網查了好一陣子都沒有結果. 最後終於看到有人提到去改 wp-admin/include/file.php 的 444 行. 把 timeout 從 30 改成 600 秒之類的. (抱歉! 這位大哥, 我忘了您的 blog 位置, 不再有那個 error message 後, 就 google 不到了.) 改過之後, 顯然還是有一些問題, 畢竟我的 time out 幾乎是秒殺, 不是 30 秒.  所以還是得去試試手動更新.

唯一講得比較清楚的網址是 wordpress 本尊, 可惜那是英文的. 我雖然懶得看, 又怕漏掉哪一步, 然後就倒站了… 所以只好歸納一下做法, 中文的程序如下.

1. 先把 apache 停用, 大家先不要動. 等效就是停用外掛等功能.

2. 把新版 wordpress 抓回來, 解壓縮成另外一個目錄, 如 wordpress_2.7.1 之類的.

3. 把舊版的 wordpress 的 wp-include 和 wp-admin 兩個目錄殺掉.

4.  要確定 wp-config.php 這個檔案不會被蓋掉, 即新版的檔案不同名, 預設是叫做 wp-config-sample.php 之類的.

5. 把新版的蓋過舊版的內容, 其中 wp-content 下面的 plugin 和 theme 才能覆蓋舊版. 不然就倒站了.

6. 啟動 apache server.

7. 進入 網址/wordpress/wp-admin 或 網址/wp-admin, 重新設定. 不過我好像不用做這一步也 OK.

參考網址: http://codex.wordpress.org/Upgrading_WordPress, 英文版最大的缺點就是: 雖然 step by step 往下講, 但是提醒特別注意 wp-content 這個目錄的事情卻放在 step 1 的 note, 如果已經把檔案移除了, 才看到這一行豈不是要吐血???

uClibc v.s. glibc

這兩個 C library 的異同, 網路上已經有很多論述. 不過我看大部分的網頁都是翻譯或轉貼 uclib 的官網, 這麼一來, 大家都只會看到 uclibc 的優點, 不會嗎?

http://www.uclibc.org/downloads/Glibc_vs_uClibc_Differences.txt

不過點進去看之後, 它的描述還頗為公正.

uClibc 自稱比較小而精簡, 把一些功能刪掉了.

所以缺點包括不保證跨平台、不提供 database (libdb)、NSS (DNS 與網路認證)、libresolv (做甚麼的? 找 IP 嗎?)、libnsl (yellow page、Network  Information Service)、語言的支援 (locale)、對 long double 的支援較低、對 encryption 支援度較低 (libcrypt)、綁定 Linux 的 ‘struct stat’ 架構與 kernel type、沒有 aio 或 clock、shm (做什麼的? 簡諧運動??? 哈!).

根據由儉入奢易的原則, 把 uClibc 的程式 porting 到 glibc 是容易的, 反之則難.

對了, uclibc 不適合用於有 MMU (memory manage unit) 的環境. 在動態連結的時候, 一定是用 glibc, 不然只能用到 simple MMU 的功能, 也就是 physical memory 和 virtual memory 是一一對應的.

Glibc 由 GNU 提供, 適合各種硬體平台.

uClibc 是針對 uC LInux C 開發的.

 

日文課常用的詞句

開始        はじめます

休息   きゅうけい

結束   おわります

問題   もんでい

練習   れんしう

再一次  もういちど

第X課  だい X か

Y頁   Y ページ

午安         こんにちは

晚安   こんばんは

再見   さようなら

謝謝   ありがとう こざいます

抱歉   すみません

平假名  ひらがな

片假名  かたがな

英數字  ろまじ

漢字         かんじ

清音        せいおん

濁音   だくおん

半濁音  はんだくおん

外來語      がいらいご

上課比較不可能用到的: :lol:

早安         おはようございます

要睡了  おやすみなさい