狂賀! Kimi Räikkönen世界冠軍!!

那個醜話說在前面, 本Blog不歡迎火腿迷的程度跟不歡迎韓國人跟支那中國Copycat是相同的

我從週日半夜(或者應該說週一清晨)一直興奮到現在, 只要一想到Kimi衝線時左邊的排名, 我就高興到情緒指數滿點.

一個車手可以衰到怎樣呢? Kimi是佼佼者, 掉尾翼, 螺絲沒鎖好, 最後一圈爆胎, 可以衰的事情我看他都衰過了, 這大概是所有芬蘭人的常態, 他的前輩Mika也是這樣衰過來的.

如果說我到今年巴西站前還對Kimi奪冠抱有希望, 那絕對是騙人的! Kimi的100分前頭有個Alonso103, 還有一個黑心火腿107, 所以他要奪冠的前提是他得比Alonso多拿3分, 比黑心火腿多拿7分, 意思就是, 假如Kimi拿第一, 那個Alonso得要在三名後, 而黑心火腿得要在六名後. 這看起來好像不是太夢幻? 可是排味賽結果是F.Massa拿PP, 黑心火腿第二, Kimi第三, 而Alonso第四. 就算F.Massa願意把第一位讓給Kimi, 也得要Kimi有超過黑心火腿. 而且就算超的過且拿到第一位, Massa守住第二位也只是解除Alonso的威脅, 要讓那個只會開小便車的黑心火腿排在第六之外, 那不是可以控制的啊! 劇本怎麼寫都不大可能把黑心火腿的劇本寫死, 這點你問Ron Dannis 就知道.

但是! 畢竟這個世界還是存在公理與正義奇蹟的!

黑心火腿開賽就被三人夾攻逼到第四位, Kimi也很順利的夾到Massa跟Alonso 之間, 劇本看來不錯! 接著黑心火腿為了搶回Alonso拿走的位置自己鎖死了一下排名往後掉, 奇蹟似乎出現了!! 可是還不夠, 因為其他隊的車幾乎都很難跟McLaren的速度抗衡, 要阻止火腿搶進前五名還是很難.

所以黑心火腿大概被幾億人的念力影響是著急煮熟的世界冠軍飛走, 竟然自己按到空檔鈕導致ECU當機重開! 一下子掉到18了啊, 哈哈. 人在做天在看啊!

所以我現在可以抱持著滿足的情緒結束這個F1賽季! 不用像以往一樣感嘆: Kimi你真衰!

當然也趁機懺悔一下, 因為失望加上無望, 這一整年我都沒有逐場寫F1相關的, 明年我一定認真寫! Kimi明年在拿一座回來吧! 正式在此宣佈我成為Tifosi, 呃….到2009年為止, 我是Tifosi.

Upgrade to WP2.3

其實知道自己Trackback爛很久了, 自己也爛很久了, 所以根本不想去Tracking問題在哪裡.

索性直接Upgrade到WP2.3吧, 懶人的特色是直接暴力升級, 整個覆蓋後跑一下Upgrade Procdure就好. 不過懶人的報應馬上來了.

因為WP 2.3把原本的catelogy改成tag mode, 所以會幫你把原先的wp_catelogy轉移到wp_term_taxonomy, wp_term_relationships, wp_terms, 可是問題就來了, 若原先的分類內含中文且用了UTF-8, 在Upgrade完後, 會因為Upgrade Procdure中建立wp_terms時所用的wp_terms.name文字校對是 latin1_general_ci, 所以中文就整個爛光光, 就算事後改成utf8_general_ci也沒用.

還好Google有頁庫存檔, 不然Ellen blog那堆分類我會改到昏倒.

所以還是乖乖查了一下codes. 發現其實upgrade-schema.php裡頭有去偵測一下DB用的Collate, 只是….查的方式不是去找原先的wp_catelogy用什麼, 而是….去查wp-config.php裡頭設定的DB_CHARSET跟DB_COLLATE.

所以正確的暴力升級法應該是:

1.先去wp-config.php裡頭加上DB_CHARSET跟DB_COLLATE
2.整個覆蓋過去
3.去wp-admin/下跑一下upgrade procdure.

不然就等著跟我一樣找Google頁庫存檔慢慢改吧.

Blog主機搬遷

終於還是受不了ADSL頻寬限制.

原先以為這個Blog應該沒多少流量, 放在家裏的NAT上既方便又省的到處管機器, 另一方面雖然接觸的機房多, 要偷放也不是沒地方沒頻寬, 只是偷放總有一天會被抓到, 而且搬移一次要搬快10G的東西(照片很佔的), 所以一直都沒有動搬遷的念頭.

這陣子工作需要, 得抓一大堆東西回來測試, 每次只要一開BT抓iso, 就開始感嘆網路總是不夠快, 動輒一兩張DVD的大玩意兒也讓我抓得很頭疼, 更重要的是Ellen說, 她的Blog越來越冷清了! 想必是我吃光頻寬讓她的Blog越來越慢.

所以痛定思痛還是搬一搬吧.

現在所有的Blog, Gallery等等都搬移到Rmail開發機上, 整個是新的安裝, 雖然機器不算頂快的機器, 不過至少頻寬夠(感謝L君機房支援:p), 容量上也沒大問題, 現在該煩惱的是備份了.

果然一搬完隔天, Ellen Blog的訪客數又慢慢爬回去. 乾脆來個Blog大連盟好了, 跟我夠熟想弄個主機放自己Wordpress的人, 自己想辦法聯絡我吧!

Custom Kickstart RedHat EL4 Installation DVD

我是不玩Linux的, 要不是要幫 G 社搞這上百台機器, 我才不會出賣靈魂委屈自己去碰Linux勒. (A君聽到沒?)

為了避免忘記, 因為看來 G 社將來的量只會更多不會更少, 所以還是記錄一下.

1.先把原始安裝CD/DVD都copy一份進系統, 這裡是DVD的, 如果是CD就一片一片來

mkdir -p /data/isobuild
rsync -rv /media/cdrom/* /data/isobuild/

2.把DVD或安裝片地一片的.diskinfo複製出來, 不然安裝時會認不出這是Redhat Installation Disc

cp /media/cdrom/.diskinfo /data/isobuild/

3.做一份kickstart config, 可以用ksconfig, 有把握的話自己做. 如果機器都是相同的規格, 那手動裝好一次之後/root下會有一份紀錄上次安裝的kickstart config, 直接把disk slice的部分un-comment掉就可以用, 丟進isobuild根目錄.

cp /root/anaconda-ks.cfg /data/isobuild/

4.放一些你想放的東西進去, 如果要放東西進RPMS裡頭的話, 要注意重做一次pkgorder, 或者是重整一下pkg dependance, 詳情請看Redhat官方文件.

5.去ks.cfg 做一下postinstall script, 如果在postinstall script裡頭要參照安裝cdrom的位置或硬碟根目錄位置, 安裝來源是 /mnt/source, 硬碟根目錄是 /mnt/sysimage.

6.編輯 /data/isobuild/isolinux/isolinux.cfg, 新增一個新的boot option, 並且把default的改掉

default ks


label ks
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192

7.用mkisofs做出iso檔

chmod u+w /data/isobuild/isolinux/isolinux.bin
mkisofs -r -T -J -V “My RHEL4 Build” -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /data/MyKS.iso /data/isobuild/

8.把md5做進iso中, 才不會通不過Disc Verify.

/usr/lib/anaconda-runtime/implantisomd5 /data/MyKS.iso

9.用任何方法把這個iso燒起來吧, 我是用Toast, Nero我試過也沒問題, 我猜應該哪一種都ok. 只要不要像某個笨蛋(M君聽到沒?)把iso檔整個拖進Nero File Explorer然後燒, 燒完了還說我iso做壞了, 不能boot.

10.拿去開機吧.

版權沒有, 轉貼請留一下原網址. 反正都是雜七雜八參考一堆文件實驗出來的, 我用iLO2裝, 所以做出iso直接透過Virtual Device, 不會浪費DVD片.

Linkin Park – Numb / Encore

Artist: Linkin Park
Album: Collision Course
Year: 2004
Title: Numb / Encore

(feat. Jay-Z)

Thank you, thank you, thank you, you’re far too kind

Now can I get an encore, do you want more
Cookin raw with the Brooklyn boy
So for one last time I need y’all to roar

Now what the hell are you waitin for
After me, there shall be no more
So for one last time, nigga make some noise

Get em Jay

Who you know fresher than Hov’? Riddle me that
The rest of y’all know where I’m lyrically at
Can’t none of y’all mirror me back
Yeah hearin me rap is like hearin G. Rap in his prime
I’m, young H.O., rap’s Grateful Dead
Back to take over the globe, now break bread
I’m in, Boeing jets, Global Express
Out the country but the blueberry still connect
On the low but the yacht got a triple deck
But when you Young, what the fuck you expect? Yep, yep
Grand openin, grand closin
God damn your man Hov’ cracked the can open again
Who you gon’ find doper than him with no pen
just draw off inspiration
Soon you gon’ see you can’t replace him
with cheap imitations for DESE GENERATIONS

Now can I get an encore, do you want more
Cookin raw with the Brooklyn boy
So for one last time I need y’all to roar

Now what the hell are you waitin for
After me, there shall be no more
So for one last time, nigga make some noise

What the hell are you waiting for

[sighs] Look what you made me do, look what I made for you
Knew if I paid my dues, how will they pay you
When you first come in the game, they try to play you
Then you drop a couple of hits, look how they wave to you
From Marcy to Madison Square
To the only thing that matters in just a matter of years (yea)
As fate would have it, Jay’s status appears
to be at an all-time high, perfect time to say goodbye
When I come back like Jordan, wearin the 4-5
It ain’t to play games witchu
It’s to aim at you, probably maim you
If I owe you I’m blowin you to smithereeens
Cocksucker take one for your team
And I need you to remember one thing (one thing)
I came, I saw, I conquered
From record sales, to sold out concerts
So muh’fucker if you want this encore
I need you to scream, ’til your lungs get sore

I’m tired of being what you want me to be
Feeling so faithless lost under the surface
Don’t know what you’re expecting of me
Put under the pressure of walking in your shoes
(Caught in the undertow just caught in the undertow)
Every step that I take is another mistake to you
(Caught in the undertow just caught in the undertow)
And every second I waste is more than I can take

I’ve become so numb I can’t feel you there
I’ve become so tired so much more aware
I’m becoming this all I want to do
Is be more like me and be less like you

I’ve become so numb
Can I get an encore, do you want more (more…)
I’ve become so numb
So for one last time I need y’all to roar
One last time I need y’all to roar

明日的記憶(明日の記憶)


如果過了明天 我連你都忘記了 也請你緊握我的手 陪我繼續走下去…

佐伯雅行(渡邊謙)是知名廣告公司主管,工作賣力認真,不但受老闆肯定,也備受下屬愛戴。他能無憂地在職場打拼,是虧得溫柔體貼的妻子枝實子始終默默支持,兩人甜蜜的感情羨煞許多人。而女兒梨惠也即將出嫁,還有個未出世的小外孫,幸福似乎始終圍繞在他身旁。直到某日,他因為不堪長期頭痛暈眩的困擾而就醫,這才驚覺原來自己的健康早在不知不覺中流逝。

 他開始想不起來每天一起工作的同事長什麼樣子,
 每天上班都要經過的街道,卻變成了陌生的風景,
 上一秒鐘才訂好開會的時間,下一秒卻完全忘記……

 直到有一天,佐伯不知不覺來到當年與枝實子相識的地方,他想起年輕時候彼此承諾相愛一生,想起了那時她說「我願意」的溫柔語調,卻怎麼也想不起她的模樣。枝實子回家找不到佐伯的蹤影,無助之餘,便也來到這個回憶之所。看到佐伯從前方走過來,她好想上前給丈夫一個擁抱,只是佐伯看著眼前這位眼中盈滿淚水的女子,覺得既熟悉又陌生……

會看這部電影, 除了Ellen強力想看之外, 我也想衝著渡邊謙(Watanabe Ken)去看看.

我對渡邊謙的認識, 從末代武士(The Last Samurai), 到藝妓回憶錄(Memoirs of a Geisha), 一直到最近看的來自硫磺島的信(硫黄島からの手紙), 他給我的印象就是鐵一般的男子, 標準的日本硬漢, 很傳神的把這樣的角色作最好的詮釋. 但這部片中的病人形象與示弱演出, 讓我看到他在詮釋角色上的功力.

當然渡邊謙的好表現是意料之中的, 而演女主角的樋口可楠子(Kanako Higuchi)卻也讓我記憶深刻. 相對之下, 我認為樋口可楠子在角色詮釋上並不比渡邊謙遜色, 相反的甚至有凌駕之勢.

對於阿茲海默症我並沒有太多的了解, 但是卻能體會逐漸失智時, 身邊親人的痛苦與不捨, 更何況是發生在中壯年的早發性阿茲海默症, 更是對親人有著無比的折磨. 而除了在兩位男女主角的深情演出之外, 導演巧妙運用日式電影最擅用的代表物: 男主角製作的陶瓷杯子. 將整部電影從頭貫穿到尾. 也帶著觀眾從一位中年好男人逐漸失去記憶的過程中, 慢慢去感受原著荻原浩與導演堤幸彥想要表達的深沈情感, 和那種「疾病固然會侵蝕一個人的一切,但是深厚的情感卻能彌補傷痛。」的感動.

劇情上也是秉持一貫日式電影的清淡雋永, 沒有太多撒狗血的橋段卻會讓人在淡淡的劇情中深深的沉入那種堅強的悲傷之中; 而運鏡上大量運用旋轉全景來詮釋那種迷失慌亂的感覺, 雖然真切卻叫人感覺太虛幻, 有些使用過度了; 而配樂上則是僅能算是中規中矩, 沒有很特殊很醒目的表現. 運鏡與配樂是我覺得有些些美中不足的遺憾.

不過除此之外, 那種夫妻之情父女之愛倒是非常完整的呈現, 不但能夠感動那些家有失智患者的家屬, 也能感動所有踏進電影院欣賞的觀眾.

在這一檔華麗大片縱橫的暑假檔期, 這倒是一部非常值得與另一半一同欣賞的好戲.

Convert UTF-8 Character to Codepoint

Pear看到的Codes, 因為用的到, 所以紀錄一下.


function utf8ToCodepoint( $char ) {
$z = ord( $char{0} );
if ( $z & 0x80 ) {
$length = 0;
while ( $z & 0x80 ) {
$length++;
$z <<= 1; } } else { $length = 1; } if ( $length != strlen( $char ) ) { return false; } if ( $length == 1 ) { return ord( $char ); } $z &= 0xff; $z >>= $length;
for ( $i=1; $i<$length; $i++ ) { $z <<= 6; $z |= ord( $char{$i} ) & 0x3f; } return $z; }

另外一個是在這裡看到的, 他的功能多一些, 是可以一次轉一整個String到一個Codepoint Array中


function utf8ToUnicode(&$str)
{
$mState = 0; // cached expected number of octets after the current octet
// until the beginning of the next UTF8 character sequence
$mUcs4 = 0; // cached Unicode character
$mBytes = 1; // cached expected number of octets in the current sequence

$out = array();

$len = strlen($str);
for($i = 0; $i < $len; $i++) { $in = ord($str{$i}); if (0 == $mState) { // When mState is zero we expect either a US-ASCII character or a // multi-octet sequence. if (0 == (0x80 & ($in))) { // US-ASCII, pass straight through. $out[] = $in; $mBytes = 1; } else if (0xC0 == (0xE0 & ($in))) { // First octet of 2 octet sequence $mUcs4 = ($in); $mUcs4 = ($mUcs4 & 0x1F) << 6; $mState = 1; $mBytes = 2; } else if (0xE0 == (0xF0 & ($in))) { // First octet of 3 octet sequence $mUcs4 = ($in); $mUcs4 = ($mUcs4 & 0x0F) << 12; $mState = 2; $mBytes = 3; } else if (0xF0 == (0xF8 & ($in))) { // First octet of 4 octet sequence $mUcs4 = ($in); $mUcs4 = ($mUcs4 & 0x07) << 18; $mState = 3; $mBytes = 4; } else if (0xF8 == (0xFC & ($in))) { /* First octet of 5 octet sequence. * * This is illegal because the encoded codepoint must be either * (a) not the shortest form or * (b) outside the Unicode range of 0-0x10FFFF. * Rather than trying to resynchronize, we will carry on until the end * of the sequence and let the later error handling code catch it. */ $mUcs4 = ($in); $mUcs4 = ($mUcs4 & 0x03) << 24; $mState = 4; $mBytes = 5; } else if (0xFC == (0xFE & ($in))) { // First octet of 6 octet sequence, see comments for 5 octet sequence. $mUcs4 = ($in); $mUcs4 = ($mUcs4 & 1) << 30; $mState = 5; $mBytes = 6; } else { /* Current octet is neither in the US-ASCII range nor a legal first * octet of a multi-octet sequence. */ return false; } } else { // When mState is non-zero, we expect a continuation of the multi-octet // sequence if (0x80 == (0xC0 & ($in))) { // Legal continuation. $shift = ($mState - 1) * 6; $tmp = $in; $tmp = ($tmp & 0x0000003F) << $shift; $mUcs4 |= $tmp; if (0 == --$mState) { /* End of the multi-octet sequence. mUcs4 now contains the final * Unicode codepoint to be output * * Check for illegal sequences and codepoints. */ // From Unicode 3.1, non-shortest form is illegal if [1](2 == $mBytes) && ($mUcs4 < 0x0080 || [2]3 == $mBytes) && ($mUcs4 < 0x0800 || [3]4 == $mBytes) && ($mUcs4 < 0x10000 || (4 < $mBytes) || // From Unicode 3.2, surrogate characters are illegal [4]$mUcs4 & 0xFFFFF800) == 0xD800) || // Codepoints outside the Unicode range are illegal ($mUcs4 > 0x10FFFF {
return false;
}
if (0xFEFF != $mUcs4) {
// BOM is legal but we don’t want to output it
$out[] = $mUcs4;
}
//initialize UTF8 cache
$mState = 0;
$mUcs4 = 0;
$mBytes = 1;
}
} else {
/* [5]0xC0 & (*in) != 0x80) && (mState != 0
*
* Incomplete multi-octet sequence.
*/
return false;
}
}
}
return $out;
}

兩個都能轉出我要的東西, 而且第二個在Parsing上對我比較方便, 但是自從PHP支援Multibyte function後, 就不這麼重要了, 兩個function拿來轉同樣10個字的String, 第一個只要0.000017秒, 第二個卻要整整三倍多的0.000052秒. 看來, 我應該會用第一個吧.

太久沒有去鑽PHP, 反應變遲鈍了, 唉.

References

References
1 (2 == $mBytes) && ($mUcs4 < 0x0080
2 3 == $mBytes) && ($mUcs4 < 0x0800
3 4 == $mBytes) && ($mUcs4 < 0x10000
4 $mUcs4 & 0xFFFFF800) == 0xD800) || // Codepoints outside the Unicode range are illegal ($mUcs4 > 0x10FFFF
5 0xC0 & (*in) != 0x80) && (mState != 0

Solaris 10 x86 on HP DL360 G5 (or Broadcom 57xx NIC)

就如同我常說的啊, 大廠不見得比較勤勞, 沒人愛的小孩總是會欠缺照顧.

已經碰到太多Broadcom 57xx這個NIC出事的情況了, 早一點是Win32的Driver會在Throughput過高時整張NIC hang死, 只有重開機能救, 不過至少OS還是活的. 這次碰到的是Solaris 10 x86底下會無預警reboot, 沒有dump kernel, 沒有syslog, 更沒有任何徵兆, 好的時候跑個幾個小時沒問題, 不好的時候只是login進去Java Desktop Environment就會死給你看.

今天在N社跟A君搞半天搞出名堂來了! 以下是正確解法

1.請先把BIOS upgrade到P58 05/01/2007 (原先是P58 04/06/2007)

2.如果有裝HP抓下來的BRCMbnx Driver Packages, 請快用pkginfo | grep -i brc 檢查一下版本, 只要不是3.5.x, 快點去Broadcom網站抓Net Extreme II Driver for Solaris x86, 照著readme.txt中的內容更新.

3.如果有用到iLo, 記得一定要裝iLo的Management Agent, 否則一旦連過一次, iLo會很客氣的接受 power save mode 指令然後一睡不起.

我對HP有點小意見啊!!!!!

a. 既然P58 04/06/2007 的BIOS在短短不到一個月就有了 05/01/2007 的更新, 表示這個更新應該是修正了某些嚴重的bug, 那為啥出機還要用有問題的舊BIOS, 然後叫客戶自己更新? 這樣不只會害慘Sales, 還會害到我這個可憐的工程師.

b. Broadcom都把Net Extreme II的Driver從2.4.5 更新到3.5.1了, 裡頭還有好幾個Major Fix, 你們自己網站上卻還是放這個問題多多的2.4.5版, 然後更好笑的是每一台抓到的bnx0跟bnx1順序還不同, 拜託你們Driver裡頭放一下 Device profile 好嗎?

c. 如果沒人會搞Solaris, 那就不要以為搞得定然後大剌剌的說自己Support Solaris 10 x86; 如果搞得定, 就拜託測試一下更新一下.

Madoka二代

Madoka是我的貓的名字, 照片可以在Ellen的Blog找到.

不過Madoka二代不是說Madoka的兒子小毛(事實上他的兒子也就是我的貓孫子正在Gene家, 當然我的貓媳婦就是他家的小媌), 而是現在看到這些字的主機名稱.

我個人用的Nat + Web Server原先的取名是Hikaru, 也就是以我另一位已經在天國的貓兒子Hikaru為名的Server(其實現在的FQDN還是hikaru.tku.info), 當時我的貓艦隊群包含了Hikaru(Nat/Web Server), Madoka(XFree86工作機), Akane(Solaris 8 x86), 跟最後一台短命的Kyosuke(Win2000 Adv.Server). 由於最重要的是Hikaru, 所以幾乎所有的硬體資源都放在上頭, 曾經跟我住過, 跟我共用過網路的人應該也都享用過Hikaru的服務.

但, 這樣一台24hr開機服務的機器總是活不久的, Hikaru在本尊過世後不久也宣告終於毀滅, 而且連當時架在上頭的圈圈站都徹底毀掉, 一點備份都沒能留下. 歷經四次大規模更換硬體的Hikaru終於不支倒地, 當時手邊沒有多餘財力可以買新的, 只好讓Madoka上場頂替, 那是在今天以前使用的Madoka一代.

從Madoka一代上場接手, 隨著Ellen的Blog日漸成長, 加上盜圖, Spider越來越多(我很討厭做robot.txt其實), Madoka一代的P3 1.3g + 1G SD-RAM已經撐不住, 所以趁著這次搬家, 組合一下手邊的硬體, 讓Madoka二代上場.

硬體上主要的變更是, CPU: AMD K7 1800+ * 2, RAM: 1G DDR(預計會衝到2G). 軟體部分, OS從6.1-Release到6.2-Release, Web Server從Apache 1.3換到Lighttpd, 還有把用很久的Postfix 2.1換成Rmail v2.0 beta(還沒完成).

希望Madoka二代跟借給它名字的Madoka一樣健康長久. 別像Hikaru一樣毀的一點不剩(合掌)