2008年4月3日 星期四

Using script to Write Notes - (我用 Script 寫筆記)

I am a firmware engineer and I often write notes to record my trial and experience on installation of software, tools, and some other things! These notes help me a lot because I can redo any thing after a long time!!

Recently, I tried the Ubuntu Hardy with version Alpha 5 and got some problem with my amd64 machine. I have to re-install it several times! The installation of Ubuntu is quick, but it takes me a lot of time to tune it to fit the my used environment! I have to install a lot of other software and re-write the configuration files!!

If I have write down the steps by script, I can save a lot of my time after each installation!!

The second experience is: When I try the building of Glibc, I keep on write down the notes. And suddenly I think: Since it is step by step, why don't I use the script to note it instead of simply text?

For a software / firmware notes, such as software and program build, the notes style is something like:
---------------
Description
....
Commands
....
Description
...
Commnads
...
---------------
You describe something, and then show up your command or program!!


if what you note down can not be realized step by step, the information must be obsolete or outdated!!! So I have to revise my old notes frequently!! If that is true, why do I not to make my note runnable? This can save my time a lot for the second round!!!

This is not a new idea!

I am not very sure, but I did know there are some tries and maybe some useful tool available. For example, to embedded the notes in the program, such as C or others!! You write the remark by some tags or format such that you can extract your notes by utilities!!

Or the XML that can do almost anything!!

After consideration, there are some choices:
1. Search for some ready tools
2. Write my notes with the commands with some special tags so that I can use utilities to extract and run
3. Write more remark and use more "echo" in the Bash Script

For item 1, First, I have no time to learn if the grammar or tags are complicated. Second,it maybe hard to trim it for my used usage. and third and also the major reason: I don't know any ready tools and I don't search the Web. If anyone have good suggestion can tell me!!

For item 2, I think it is workable! But I think it would be more complicated to parse the runnable commands out of a plain text!! And it is not flexible or it would be more complicated if you want flexibility!!

For item 3, it is good, but it is not intuitive!! Although it is closest to our notes, but for flexibility sake, we often use the function call, indirect reference, and many flow control that make your remark trivial!!

1 Easy to note down
Not too much tags or grammar!!
2 No need more utilities or tools
As simple as good!!
3 Flexibility
Sometimes I want to just run parts of my script for some tests!! And I can turn on/off the notes when execution, or I simply want to know the usable steps to do it and don't really run

I choose the Bash Script because I often work on it and I used to it. Although I am not familiar with script programming, this is the chance that I can learn it. And it has the following benefit:

1 Its function is easy
2 Its file management is easy
3 It is easy for it to execute program
Thanks to the Unix Design, it can call almost any program to help the job

To do it, first I create two simple function:
-------------------
n() {
if [ "$NOTE" != "n" ];then
echo "$*"
fi

p() {
if [ "$VERBOSE" != ];then
echo "executing $*"
fi
if [ "$GO" = "y" ];then
eval "$*"
fi
}
------------------------------
and then you can use them in your following script!!
------------------------------

n your notes
p ls
------------------------------
So that I can write down your note and command nearly as easy as my notes in plain text!!

You can see your notes on the standard output, and you can also see the execution command and result! I use some variables to switch the notes, execution command line, and the real execution on / off

To improve the flexibility, I use the program style used by the scripts in /etc/init.d/*. Which has the following pattern:
-----------------------
#!bin/sh
..
..
..
case $1)
start)
...
stop)
...
restart)
...
*)
;;
esac

exit
--------
It uses the CASE execute different work in one script! And I can use it o divide your stream-like flow into separate segment so that I can test them separately!!

Follow this idea, I use the compilation of glibc on PC as an experiment!! If you are using the Ubuntu Hardy and have the internet conncetion, just download the two attached files my_methods and glibc_build in the same directory and run:

./glibc_build go=y

and it would download the glibc-2.17 source package and build the source automatically. Please notes: it doesn't use the dpkg-related utilities!!

you can show the basic options by

./glibc_build show=basic

you can the basic information by

./glibc_build act=preface

you can show the building steps

./glibc_build

and it would show your notes and your steps, but not run:

########### Do Preface
Platform: Ubuntu Hardy i386 20080401
The Glibc version-glibc-2.7.tar.gz
Based on the book: The Definitive Guild To GCC, 2nd, Chapter 12


########### Do Download
$----- apt-get source glibc -----'
$----- cd glibc-2.7 -----'


########### Do Unpack
Note: We use the GNU tar so that we can use the following commands, if not, please reference the book!!
The official downloaded version is glibc-2.7.tar.gz


########### Do Intaling Tools
Install the required tools
$----- aptitude install -y autoconf automake -----'
Install the gawk to prevent the erors:mawk: scripts/gen-sorted.awk: line19: regular expression make failed
No rule to make target xxx/Versions.all, needed by ..../abi-version.h
If you do not use the gawk, it would use the mawk and casuse this error
You will needs to re-run configuration if you face this error in make
$----- sudo aptitude install -y gawk -----'


########### Do Configure
Configuraing the glibc-2.7.tar.gz
The best way to build the Glibc is to create a separate directory for buiild
The glibc is default to be installed in /usr/local
The Glibc search and load search path is determined by
LD_LIBRARY environment varialbes or configuration file /etc/ld.so.conf
Set the installation directory by --prefix= option
run the configure --help to get more configuration options
Optimize for kernel --enable-kernel=, --enable-kernel=current>


Creating a directory
$----- mkdir /home/black/workarea/glibc-2.7/tt/glibc-build -----'
$----- mkdir /home/black/workarea/glibc-2.7/ttglibc-installed -----'
$----- cd /home/black/workarea/glibc-2.7/tt/glibc-build -----'
$----- /home/black/workarea/glibc-2.7/tt/glibc-2.7/configure --enable-add-ons --prefix=/home/black/workarea/glibc-2.7/ttglibc-installed -----'


########### Do Make
Compiling the glibc-2.7.tar.gz
Fix the __stack_chk_fail_local fail by adding the -fno-stack-protector
However it would overlap the -O2 options so that glibc would complain
#error: glibc cannot be maked without optimization
So I add the -O2 together and succeeded
$----- cd /home/black/workarea/glibc-2.7/tt/glibc-build -----'
$----- LANG=C LC_ALL=C make -j2 CFLAGS+='-O2 -fno-stack-protector' -----'


########### Do Check
do the check
$----- cd /home/black/workarea/glibc-2.7/tt/glibc-build -----'

You can look a piece of my code:

do_configure() {
n "$SEP Do Configure"
n Configuraing the $PKG
n The best way to build the Glibc is to create a separate directory for buiild
n The glibc is default to be installed in /usr/local
n The Glibc search and load search path is determined by
n LD_LIBRARY environment varialbes or configuration file /etc/ld.so.conf
n Set the installation directory by --prefix=\ option
n run the configure --help to get more configuration options
n Optimize for kernel --enable-kernel=\, --enable-kernel=current\>
n "\n"
n Creating a directory
BUILD_DIR=$(pwd)/glibc-build
INSTALL_DIR=$(pwd)glibc-installed
PKGDIR=$(pwd)/glibc-$VER
p mkdir $BUILD_DIR
p mkdir $INSTALL_DIR
p cd $BUILD_DIR
p $PKGDIR/configure --enable-add-ons --prefix=$INSTALL_DIR
}

do_make() {
n "$SEP Do Make"
n Compiling the $PKG
n Fix the __stack_chk_fail_local fail by adding the -fno-stack-protector
n However it would overlap the -O2 options so that glibc would complain
n "\t\t"\#error: glibc cannot be maked without optimization
n So I add the -O2 together and succeeded
.......
.......

case "$ACT" in
preface)
do_preface
;;
download)
do_download
;;
tools)
do_tools
;;
usage)
do_usage
;;
patch)
do_patch
;;
restart)
do_restart
;;
precheck)
do_precheck
;;
addon)
do_addon
;;
unpack)
do_unpack
;;
addon)
do_addon
;;
configure)
do_configure
;;
make)
do_make
;;
check)
do_check
;;
install)
do_install
;;
clean)
do_clean
;;
summary)
do_summary
;;
*)
do_preface
do_download
p cd $PKGNAME-$VER
do_unpack
do_tools
do_configure
do_make
do_check
do_summary
;;
esac
exit 0

I use the function to group each step, and write the note and script inside them. Of course I want more robust and flexibility so many variables are added and many skill used. If you just want it run in your own limited situation, you can just write it serially and you can modify it if you have free time!!

2008年3月20日 星期四

一種奇怪的 C 寫法

在 Porting ARM Linux for NO MMU system 時, 遇到一個奇怪的寫法, 在 binfmt_flat.c 之中的 load_flat_binary() 函式之中, 有一段 code:


#include &lt include &gt
int main(int argc, char **argv)
{
char j;
int k;
int q[10]={1,2,3,4,5,6,7,8,9,10};
int *p= (int*) q[5];

for(j=0;j<3;j++) {
k = (j)[(unsigned int*) &q[5]];
printf("k is %d\n",k);
}

}


它的輸出是:

black@black2:~/workarea$ ./a.out

k is 6
k is 7
k is 8

如果我把

k = (j)[(unsigned int*) &q[5]];

改成

k = (j)[(unsigned char*) &q[5]];

則輸出會是 6,0,0, 若改成 unsigned short, 則輸出會是 6,0,7!

但是我改變 j 的型態為 char, short, long 都不會有影響!!

事實上, 一個陣列名稱不過是代表某個位址的 symbol, 因此, 它的元素的位址本來就是

symbol address + index*element_size

所以也許我們可以把 j 看成一個變動的 symbol address!! 於是我作個實驗, 把 [ ] 中的指標拿掉, 結果出現錯誤:

error: subscripted value is neither array nor pointer


C 似乎期待在中間一定要有一個 pointer 或 arrary!! 事實上, 在 C 中 array 和 pointer 本來也是互相為用!!

從以上結果可以推論: 它的位址計算方式, 是 ( (unsigned char*) &q[5] + j), 如果你是 unsigned char 的話!! 我們再作一次實驗:

#include

int main(int argc, char **argv)
{
short j;
int k;
int l;

int q[10]={1,2,3,4,5,6,7,8,9,10};
int *p= (int*) q[5];

for(j=0;j<3;j++) {
k = (j)[(unsigned char *) &q[5]];
printf("k is %d\n",k);
l = ((unsigned char *) &q[5])[j];
printf("l is %d\n",l);
}
}

在此的 k 和 l 會得到完全相同的值!!

因此, 我們可以說: (j)[(unsigned char*) &q[5]] 幾乎就是 ((unsigned char*) &q[5])[j]!!

當然, 行文至此, 我只是用實驗的方式知道段程式的行為, 但仍不知那一條規則容許它這樣寫? 這有待高手替我解答了!!

我也不了解這位老兄為什麼用 (j)[(unsigned char*) &q[5]] 而不用 ((unsigned char*) &q[5])[j], 也許有我不知道的秘密也說不定!!

2008年3月19日 星期三

我們住在紅燈區

今天看到中時電子報的獨家: 歐晉德家半年2度遭竊 治安亮紅燈
又讓我回憶起前一陣子胡自強座車遭竊: 春安第2天 胡志強座車被砸竊物

胡市長的車子在三天內就找到了! 我相信那個不知死活的竊賊偷到歐晋德的東西, 也很快就會被抓到! 但是, 一般老百姓的呢? 我想, 不是被吃案就是不了了之!

身為苜善之區的台北市, 光是在這兩年, 在我家附近我認識的人, 包我們自己, 至少就有三件竊案! 第一次我們有報案. 最後這一次, 我們想算了, 不要多找麻煩了!!

為什麼會不想報案呢? 我們的報案經驗是: 你花了兩三個小時在那邊作筆錄. 警察會在那一直吐苦水, 講他們人力不足云云. 最後還會要你成立專案小組哩! 怎麼說, 他還會要求報案人自己去調監視錄影帶, 這不就是我們報案人自己成立專案小組了嗎?

這就是警政署之前的標語: "警力有限, 民力無窮" 的實踐嗎?

市長的車子遭竊, 警方可以成立專案小組, 我們遭竊, 警方不吃案就偷笑了!

市長的案子三天可以找回來, 一般老百姓的車子卻一年半載找不回來, 這說明了警方對於這類案子, 是不為也, 也不能也!

每次出現社會名人遭竊遭詐騙這種新聞, 就讓一般市井小民更覺得有特權, 差別待遇, 對警察的印象也更差!!

如果名人的案子也是一年半載破不了案大家還會欣慰地說: 嗯, 至少警察一視同仁地不爭氣!!

每次這種新聞, 記者們的寫法都有固定的模式: "治安亮紅燈". 我覺得這些高官名人, 可能久久才遇到一次紅燈, 很快就綠燈了! 而這我們就一直住在紅燈區了!

2008年3月3日 星期一

我是猴子

相信大家常常接到理專的電話, 對話大體上是:
"我們公司最近有一個很棒的方案回饋給客戶, 就是每個月你只要花 XXX 元, 就可以亨有 XXX 的保障 ..."
相信這種電話很快就會被掛掉!!

就在上星期, 我接到 "台灣北部有錢的城邦" 銀行的理專電話! 一開始他說是在調查我們對他們信用卡的意見. 我當然抱怨了一下他們福利一直縮水, 而且我不小心多繳了錢, 退費居然要收手續費!! 退回帳戶要收100元, 如果其它帳戶要收 300 元 等等!!

他很耐心聽完, 好像也搞不太清楚他們公司的規定, 說 "我回去幫你查查"

接下來, 他進入正題: "先生, 我們公司最近有一個優惠方案給老客戶, 你不用花一毛錢!!"

哇, 有這種好康, 我當然要聽下去!!

"你可以 XXX 的保障, YYY 年可以 ZZZ, 可以不用花一毛錢"

可是要怎麼做呢?

"你只要在銀行帳戶存一筆錢"

好啊, 我本來就有帳戶呀!!

"我們會每個月從您的信用卡扣 xyz 元到您銀行的帳戶"

聽到這兒我開始有 "風蕭蕭兮易水寒" 的感覺!!

"20 年期滿你還會有 5% 的利息喔"

最後我還是把這個荊軻給拉出去斬了, 喔不, 把電話給掛了!! 還好我以前對保險的觀念還下過功夫, 好險我有一些親朋好友讓我了解保險的生態!!

事後想想, 這位先生
的修辭是有練過的, 他把這種到期可領回的保險講成 "不用錢", 把本來是在保險公司的保單改成放在銀行的帳號. 所不同的是: 他沒有提說即使放進銀行, 我還是 20 年不能動用!!

看來這位先生悟道了, 莊子齊物論有一段著名的故事:

"勞神明為一而不知其同也, 謂之"朝三". 何謂"朝三"? 狙公賦芧,曰: "朝三而暮四" 眾狙皆怒. 曰:"然則朝四而幕三"眾狙皆悅. 名實未虧而喜怒為用....

狙就是古時候的猴!! 我屬猴, 可不喜歡被人當成猴子耍!!

現代金融業想不出什麼創新的服務來幫顧客顧錢, 也幫自己賺錢, 整天想的就是把客戶當猴子耍!!

別懷疑, 這就是我們的金融業!!

聽朋友說, 有人在這類電話中應了一聲好, 就損失了十萬元!! 因為解約損失更多!! 他們都有電話錄音!! 當然, 這可能是極端的案例!! 但最常發生的是: 你不小心保了你不需要的險!!

我想到以前好像在數字周刋中訪問過一個人, 他是黑道轉行作保險, 十分成功!! 他說: "因為保險和黑道一樣, 都是靠恐嚇在賺錢"

這麼說來, 電話詐騙集團不就適合轉行作金融業的理專?

話說也是同一家銀行, 前一陣子我太太拎了50多萬要去存錢, 沒有想到忘了帶本子. 大家也都有常識, 銀行是有無摺存款的!! 沒想到櫃枱要我太太找理專去辦!! OK, 找理專就找理專. 因為我太太只想辦存款. 結果這個理專發現無法把我太太當猴子, 居然拉下臉, 說連存錢都不行, 直接請我太太出去!!!!!!!

這就是我們的銀行的服務嗎?

這就是我們的銀行的服務嗎?

大宗存款利息較低就算了, 不買產品都不行!! 我們銀行的服務都作表表面, 空把最底層的小姐訓練地很客氣, 但她們只是負責挨駡, 什麼有意義的決定也沒有辦法作!! 銀行不能存錢, 或是找各種理由直接 "避免" 客戶存錢!!

存錢, 不正是銀行最基本且最天職的服務嗎?

我不怪這些底層直接面對客戶的可憐員工!! 他們一定被高層逼的! 而這些領高薪的金融高層, 除了整天想著兩岸三通併購防止被併購買卡位人事想著賺完大戶的錢賺小戶的錢怪政府怪東怪西之餘, 可曾真的想過好好服務曾讓你長到今天金融巨獸的客戶?

這種和人民切身相關的零星瑣事, 不斷地在我們身邊上演!! 金管會在哪裏? 隨便發個聲明, 或是留個官僚的申訴管道就了結了嗎? 這就是我們的政府嗎?

我是猴子!! 大家也都是猴子!!

2008年2月29日 星期五

生育率低的胡言亂語

今天在中時電子報看到這則新聞:內政部:人口負成長不利經濟發展
開頭是這樣:

台灣第一部「人口政策白皮書」公布,其調查數據讓政府高層十分吃驚,理由就在於台灣人民的生育率已逼近全球最低水準。內政部長李逸洋表示,過少的新生人口,將造成國家未來勞動力不足、經濟無法發展、青壯年負擔過於沉重等危機。政府必須立刻行動,以挽救台灣的未來。
...

忽然想一吐為快!!


我們政府在藍綠惡鬥之下, 而且藍綠皆靠攏財團和黑道下, 大眾民生早已被拋在腦後!!

我們生育率低早已不是新聞. 我們的高層現在才開始吃驚?

問問我們周遭的朋友吧, 有多少中產階級的人不想生小孩, 又有多少人不敢生小孩? 如果真的用心, 有那麼難知道嗎?

在之前的文章中我就提過, 在台北縣市, 百萬年薪根本不能算是高薪! 以隨便一棟 30 坪 20~30 年的中古屋來算, 以一坪 30 萬來算, 將近 900 萬, 再加上稅, 仲介費, 裝潢, 1000 萬元跑不掉. 假設 20 年還清, 平均一年還 50 萬 (我還沒有加計利息). 所以一年可以有50 萬元運用. 如果養一個小孩, 褓姆費至少就 1 萬5 了, 一個月 2 萬元跑不掉. 50 - 2 *12 = 16 . 如果要養 2 個小孩, 50 - 4 * 12 = 2 萬元!!

一年的生活費就 2 萬元!!

我還沒有算貸款的利息!!

所以, 百萬年薪, 或是夫妻合起來百萬年薪, 如果想要有個自己的窩, 生活必需要多節省!!


有很多人是靠父母幫忙! 可是前一陣子我們的政府在一周一利多的可笑的政治操作中, 提過要提供褓母費, 初聽起來似有牛肉, 細按之則是只剩湯而己. 因為後來執行細則中, 前提卻是要 "有執照的褓姆才能申請". 這又讓人有不知民間疾苦之感!! 因為有執照的褓姆行情高出一般沒有執照的褓姆. 而一般人為了省錢, 一定會找沒有執照的褓姆或自己父母, 所以這群最需要的人反而不能申請!!

政府喜歡看經濟發展數據來宣揚自己的政績, 於是房地產漲, 出口旺等容易看的先搞, 但房地產漲到我們努力一輩子也買不起父母的房子! 而房地產大亨可以公然在大眾媒體嗆一些不看多的學者, 搞的學者也不敢講話了!! 不好的數據就靜靜躺在官方網站, 好的數據就敲鑼打鼓! 我們的政府主管機關在哪兒呢?

這些房地產大亨炒房地產也炒股票, 真的建設公司倒閉他們的股票早就倒給散戶, 他們的債早就套給銀行, 他們了不起一拍到對岸去吃香喝辣. 以前就東X土等發生過一次了, 我們的主管機關, 看來又要坐視它再發生一次!!

為什麼執政會慘敗? 因為我們感覺起來真的沒什麼不一樣.

最近大選, 又在炒陸資來台炒房地產了, 這真的是一般只想有個安棲之所的百姓想要的嗎?

我記得前一陣子經濟部吧, 又說要"釋出" 婦女的勞動力!! 我也鼓勵婦女就業, 因為這樣才不會悶在家裏, 才可以跟上社會. 可是婦女就業充其量薪水就剛好付褓姆費, 而小孩子怎麼辦? 每次寒暑假和只有學校放假時, 是雙薪家庭最苦惱的!! 這樣的鼓勵, 對缺人力的企業有好處, 因為又有便宜的勞力可以使用. 可是對家庭而言, 既因雙親工作而失去了親情的相處, 又沒有為家裏帶來多大的經濟改善, 得不償失!!

再過一陣子, 到了我六七十歲, 可能政府又要鼓吹 "充份利用老人的勞動力" 了吧!! 而且看這態勢, 以後年輕人養不起老年人, 可能退休年紀又要延後了!!

對於老人需要勞動我十分贊成! 但是我很怕的是: 我們老兩口和小孩一起努力, 也沒辦法為家裏那棟超過 50 年的小公寓換成舒服一點, 稍大一點的房子哩!!

我們勞苦到老, 大部份的成果還是給企業高層去變得更有錢!!

政府能不能幫忙把我們多付出去的勞力, 多分 "一點點" 回來呢?

由此引申, 也解釋了為什麼資理財這麼風行: 因為大家都有這種焦慮感!!

可是大家投資了半天, 除了電視上的名嘴, 好像都給電視上的老師, 理專, 金融業的高層給賺去, 成了被掠奪的沙丁魚!! 唉, 前門引狼, 後門進虎, 這是現代中產階級的悲哀!!

你可以怪我在職場不認真, 你可以說我不夠聰明, 你可以說我不認真理財, 你可以說我不用功, ....

是啊!! 我承認!! 看來 M 型社會的型成, 和我相同境遇的人還不少!!

我心中有時會閃過一絲絲悲觀, 偏激, 也許有一點點怪異的想法: 假設人性都好逸惡勞. 如果讓所有員工都富有了, (以我的標準, 工作十年內可以付清房貸, 退休基本生活無虞) 都開始如同商X周刋或天Y雜誌講的某些高階主管急勇退, 跑去極地旅行或是開始作公益, 一個社會何來為這些資本家作牛作馬的員工呢? 這個社會如何進步呢?

從此推論, 一個資本社會的公司們之所以能夠運作, 靠的就是不斷地維持佔大部份 "比例" 的 "不得不為生計工作" 的眾生!!

從我們的歷史看來, 隱隱呼應著我的看法:

我們台灣也曾經歷過薪水年年上漲的年代! 但是那個年代, 卻有著更大的通貨膨脹和房地產颰漲! 在那個時代, 買房子辛苦, 不買更辛苦, 因為後來你發現你買不起! 現在的中國大陸有著和我們當初類似的狀況!!

大部份的人經一輩子努力之後, 好像還是停在原來的 "階層" : 本來是月薪 1000 元的窮人, 後來變成年薪 3 萬的窮人.

接下來, 大家開始瘋房地產, 瘋股票, 瘋投資理財, 當你發現某項東西變成全民運動時, 想想上面的邏輯: 如果每個人都因房地產, 股票, 投資理財變得富有, 那誰來替資本家作牛作馬呢? 大家都去追求自我了!!

所以大部份的人, 在忙了一陣子之後, 好像還是停在原來的 "比例" !!

有一個笑話: 有兩個人遇到熊時, 一個人拔腿就跑, 另一個人問他: 我們也跑不過熊, 為什麼還要跑? 他說: 我只要跑過你就好了!!

當然, 現實上, 另一個也不是儍瓜, 他也會跑, 於是我們就像是一群拉著雪橇的阿斯基摩犬, 大家忙著因為怕窮而往前跑, 我們是辛苦地前進, 但是雪橇上的資本家卻是舒服地前進!! 遇到路況不好或上坡時, 雪橇上的資本家就說: 你那在家照顧幼犬的母狗也一起來拉好了!! 當狀況更不好時, 就說: 年紀大的也一起來拉好了!!

因此, 有時想想, 物價上漲有何關係呢? 實質利率為負有何關係呢? 如果大家都一起變窮, 其實你也沒有比較窮! 更何況, 如果大部份人投資理財都虧損, 你是否反過來變成龜兔賽跑裏的那隻龜呢?

當然現實不是這樣子, 在 M 的另一頭, 有許多人跑比你快!! 這世界和政府的的許多遊戲規則, 讓他們越跑越快, 這是讓人心生不舒服的地方!!

在葛林斯藩的大作 "我們的新世界", 不斷提出 "看不見的手" 對許多未開發國家的貢獻, 如中國大陸和印度, 從貧窮中走了出來, 讓更多人吃的飽!! 我從書中看到和學到許多! 但我覺得資本主義對開發中國家的貢獻, 從亞伯拉罕.馬斯洛的需求層次理論而言, 在滿足生理需求上, 有重大的貢獻!! 至於其它層次, 可能還是要視各國政府和社會而定!! 至於 "自我實現" 的需求, 則是無能為力!!

從出生率低講到這兒好像離題很遠了. 我認為年紀大還可以工作是一種幸福, 但是是為了 "興趣" 而工作, 不是在政府逼我去工作, 不是房子逼我去工作, 不是子女逼我去工作!!

2008年1月1日 星期二

安裝 Windows XP 在無法開機的 Toshiba Portege R100

我妹妹拿給我一台 Toshiba Portege R100! 這算是舊機種! 但十分薄, 日系機種的工藝實在是令人欣賞!!

但因為我拿到手時沒有底座, 且它有沒有光碟機. 我第一次安裝時, 是強迫在原有的 XP 上安裝, 再想辦法砍掉舊的 OS 目錄!!

後來發生了無法登入 Windows! 無論如何進不去, 即使使用救援模式也進不去! 而它的 BIOS 又不支援 USB 光碟開機!!

我試過了 Sony 和 LG 的外接式光碟, 都無法重新開機!! 從網路上看, 似乎要用它自己的外接式光碟機才能用 USB 開機!! 且 BIOS
也沒有什麼選項!!

日系機種的封閉性實在令人不敢恭維!!

雖然是很舊的機器, 但是就這樣丟掉也是很可惜!! 我也不可能再去買一個 Toshiba 外接光碟或底座. 拆開來它的硬碟來看, 還好它的硬碟很好拆, 是 1.8 吋硬碟!!

於是我到網路上買了一個 99 元 + 運費 50 元共 149 元的 1.8 吋硬碟轉接頭!! 想先用 PC 來安裝 OS!! 至少能開機, 再來修正它的硬體!!

等轉接頭到了, 我隨便開一台 PC, 安裝 XP, 沒有想到安裝完畢換過來時, 居然開機後卡住了!!

怎麼辦呢? 後來再試一次, 但是在 PC 上當 XP 安裝程式複製完程式要重新開機時, 就關機, 拔下 1.8 吋硬碟, 裝回 R100, 開機, 這時安裝程式會要求 把光碟片放進去, 這時把 XP 的安裝光碟放進去 Sony 的外接式光碟, 安裝程式可以認到光碟並繼續安裝! 就大功告成了!!

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...