2011/09/15

送信給加西亞 Send Message to Garcia

還記得我寫過這篇『態度決定一切摘要』嗎?現在回想,這篇是2004年寫的,因為當年陳水扁競選連任成功。裡面有一篇章叫「送信給加西亞」,當年我沒查到故事來源,此事我以為就從此沒下文了,誰知,今天開完會後,有個同仁竟然幫我查到了,底下錄下原文章,因為寫的比我要表達的還好:




在一切有關古巴的事情中,有一個常常從我記憶中冒出來讓我難以忘懷。
美西戰爭爆發時,美國必須立即與古巴的起義軍首領加西亞取得聯繫。加西亞在古巴廣闊的山脈裡──沒有人確切地知道他在哪裡,也沒有任何郵件或電報能夠送到他手上。而美國總統麥金菜又必須盡快地得到他的合作。
怎麼辦呢?
有人對總統說:”如果有人能夠找到加西亞的話,那麼這個人就是羅文”。於是總統把羅文找來,交給他一封寫信加西亞的信,關於那個名叫羅文的人,如何拿了信,用油紙袋包裝好,打封,放在胸口藏好;如何經過4天的船路到達古巴,再經過3個星期,徒步穿過一個危機四伏的國家,終於把那封信送給加西亞──這些細節不是我想說的。我要強調的重點是:美國總統把一封寫給加西亞的信交給羅文:而羅文接過信之後,並沒有問:”他在甚麼地方?”
像羅文這樣的人,我們應該為他塑造銅像,放在所有的大學裡,以表彰他的精神。年輕人所需要的不僅僅是從書本上學習來的知識,也不僅僅是他人的種種教誨,而是要加強一種敬業精神:忠於上級的托付,迅速地探取行動,全心全意地完成任務──”把信送給加西亞”。
加西亞將軍已經不在人世,但現在還有其他的”加西亞”。沒有人能夠經營好這樣的企業──在那裡雖然有眾多人手,但是令人驚訝的是,其中充滿了許多碌碌無為的人,這些人要麼沒有能力,要麼不情願去集中精力做好一件事。
懶懶散散﹑漠不關心﹑馬馬虎虎的做事態度,似乎已成常態;沒有人能夠成功,除非苦口心﹑威逼利誘地強迫他人幫忙。或者,除非奇跡出現,上派一名天使提供幫助,不然沒有人能把事情辦成。
不信的話,你可以做個試驗;此刻,你坐在辦公室裡──周圍有6名職員。把其中任何一名叫過來,對他說:”請幫我查一查百科全書,把克里吉奧的生平做成一篇摘錄。”
他會靜靜地說:”好的,先生。”
然後他會去執行嗎?
他敢說他絕對不會,他會用死魚般的眼睛盯著你,然後滿臉狐疑他提出一個或數個問題:他是誰呀?
哪套百科全書?
百科全書放在哪兒?
這是我的工作嗎?
為甚麼不叫喬治去做呢?
他死了嗎?
急不急?
需不需要我拿書過來,你自己查?
你為甚麼要查他?
我敢以十比一的賭注你打賭,在你回答了他提出的所有問題,解釋了怎樣去查那些資料,解釋了怎樣去查那些資料,以及你為甚麼要查的理由之後,那個職員會走開,吩咐另外一個職員去幫他查那些資料,然後,會回來告訴你,沒有這個人。當然,我可能會輸了這個賭注,但是根據平均概率法則,我不會輸。
現在,如果你夠聰明,你不會對你的助理”解釋”,克里吉奧編在甚麼,而不是甚麼類,你會滿臉笑容地說:”沒關係。”然後自己去查。
這種自主行動的無能,這種道德上的愚行,這種意志上的脆弱,這種惰性的風氣,這就是十來社會被帶到崩潰境地的根源。
如果人們都不能為了自己而自主行動,人們又怎麼可能心甘情願地為他人服務呢?
乍看起來,所有的公司都有許多可以委以任務的人選,但是事實真是如此嗎?你刊登廣告招聘一名速記員,應聘者中,十有八九不會拼也不會寫,他們甚至認為這些都無所謂。
這種人能夠寫一封給加西亞的信嗎?
“你看那個職員。”一家大工廠的主管對我說。
“我看到了,他怎麼樣?”
“他是個很好的會計,不過如果我讓他去城裡辦個小差事,他可能會完成任務,但很可能在途中走進酒吧,而到了鬧巿區,他還可能根本忘記了他的差事。”
這種人你能把給加西亞送信的任務交給他嗎?
近來,我們聽到了許多人對”那些薪水微薄而又無出頭之日的工人”以及”那些為了尋找一份舒適的工作而顏繁跳糟的人”表示同情,同時把那些僱主詛咒一通。
這是從來沒有人提到,那些年齡正在不斷變老僱主們白費了多少時間和精力去促使那些不求上進的懶蟲們勤奮起來;也沒有人提到,有些僱主持久而耐心地想感動些當他一轉身就投機取巧,敷衍了事的員工。
在每個商場和企業,都有一些常規性的整頓工作。僱主們經常送走那些不能對公司有所助益的員工,同時也接納一些新的成員。不論務怎麼忙碌,這種淘汰工作都要進行。只有當經濟形勢不景氣的時候,就業機會不多的時候,整頓才會有明顯的績效──那些不能勝任﹑沒有才能的人,都被擯棄於公司大門之外,只有最能干的人,才會被留下來。這是一個優勝劣汰的機制。僱主為了自己的利益,只會保留那些最佳的職員──那些能把信送給加西亞的人。
我認識一個有真才實學的人,他沒有獨自創業的能力,並且對他人也沒有絲毫的價值,因為他總是偏執地懷疑他僱主在壓榨他,或有壓榨他的傾向。他沒有能力指揮,也不願意被他人指揮。如果你要他去把信送給加西亞,他的回答很可能是:”你自己去吧﹗”
當然,我知道像這種道德不健全的人比那些肢體不健全的人更不值得同情;但是我們對那些用畢生精力去經營一個偉大企業的人也應該予以同情:下班的鈴聲不能夠停止他們的工作,他們因為努力維持那些漠不關心﹑偷懶被動﹑不知感激的員工的工作而白髮日增。那些員工從來不願想一想如果沒有僱主們付出的心血,他們是否將挨餓或者無家可歸?
我是否說得太嚴重了?可能如此。但是,就算整個世界變成貧民窟之時,我也要為成功者說幾句同情的話──這些人在成功機極小的情況下,承受巨大的壓力,導引眾人的力量,終於獲得了成功;但他從成功中所得到的是一片空虛,除了食物和衣服,其他甚麼也沒有。
我曾經為了衣食而他人工作,也曾經當過一些僱員的老板,我深知其中兩方面的種種甘苦。貧窮沒有甚麼優越之處,也不值得贊美;衣衫襤褸更不值得驕傲;並非所有的僱主都是探取高壓手段極力壓榨員工,並且我敢說大多數僱主都更富有美德。
我欽佩的是那些不論老板在還是不在都會努力工作的人,我也敬佩那些能夠把信交給加西亞的人,迅速地接受任務,不會提出任何愚蠢的問題,更不會隨手把信扔到水坑里,而是全力以地把信送到。這些人永遠不會被解僱,也永遠不會為加薪而罷工。

======= 分割線 ============
後來我又查到了一篇,也許是正牌的原文翻譯,不過這故事就如同我的那位同事說的,也許是美國家戶喻曉的故事吧。



2011/09/07

隨身碟多重開機又一章 Advanced for multi-OS on usb disk

寫過一篇 grub on usb disk, 再加上上一篇的從隨身碟開機, 後面這篇其實我沒表達的很完整,主要要講的是如何從隨身碟放進 liveCD 的 iso 檔,然後做多重開機。而前一篇則示範如何將 usb disk 放進 grub.....不過以現在的 Ubuntu 來說,你可以直接從 LiveDVD 安裝到 usb disk 也可以做到。

不過,grub on usb disk 這篇文章還示範了一個很有用的使用情境,你可以用 dd 來產生一個 usb disk image file, 然後再搭配從隨身碟開機,這樣可以得到另一個好處:

不必隨身碟,也可以用 VirtualBox 來虛擬隨身碟的多重開機,然後必要的時候,把它 dd 到隨身碟裡,你的隨身碟就有最新的多重開機環境。而且在製作多重開機隨身碟時,若使用這個方法,因為 image file 是在硬碟中,所以速度上會快很多。

底下以 16G 為例


1. $ dd if=/dev/zero of=16G.dd bs=262144 count=1 seek=61696
2. $ sudo losetup /dev/loop0 16G.dd
3. fdisk .... mkfs.....,用法上就跟硬碟/隨身碟一樣:
    $ sudo fdisk /dev/loop0
4. $ sudo VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/usb-16G.vmdk -rawdisk /dev/loop0
......

快速產生特定大小的檔案 using dd fast create specified size file

dd 可以做很多事,這一點我想不必多說,它不止可以「複製」硬碟/隨身碟,還可以做轉換,網路上有人把它稱為瑞士刀。如果只會 dd if=/dev/zero of=my-dd-file bs=1M count=10 這樣的語法的話,那就遜掉了。以現代做嵌入式應用來說,dd 是個不可不學的指令,若你想要 remaster 自己的系統,似乎也離不開 dd.

這邊要提醒一個用法,可以「一瞬間」就產生特定大小。像我要產生一個 16G 大小的 image file,  以我手邊的隨身碟來看,原始大小是 16173498368, 我用的命令是 dd if=/dev/zero of=16G.dd bs=262144 count=1 seek=61696


其中 bs 是 block size, 這個大家都知道,因為一般的隨身碟或硬碟的 block size 都是 512, dd 的預設也是這麼大。上述 bs 也可以設計成 512, 這個是一次讀寫的量,因為記憶體都夠大,寫大一點照理會加速讀寫,所以我就設計成 512*512=262144,而 seek=61696 是計算來的,它等於 16173498368/512/512

這個命令的執行速度是
$ dd if=/dev/zero of=16G-2.dd bs=262144 count=1 seek=61696
1+0 records in
1+0 records out
262144 bytes (262 kB) copied, 0.00109749 s, 239 MB/s

2011/09/06

從隨身碟開機 raw disk image at virtualbox

這篇文章要寫的,主要是我把 Linux 安裝在我的隨身碟中,裝了幾個不同的系統,其中主要的就是 ubuntu, 加上幾個用 iso 檔的系統,例如 GeeXboX 2.0, TinyCore 等等,這當然能把作業系統隨身帶著走,不過有時找不到機器,那就可以考慮用 Virtualbox 來開機同樣的文章還可以參考這篇

先貼一下上面關於 GeeXboX 2.0, TinyCore 的 grub2 設定檔,這邊要提醒的是,Grub2 與 Grub1 的設定檔差很大。這個設定檔,按照 Ubuntu 的設定,只需要放在 /boot/grub/custom.cfg 即可「自動」生效。

menuentry "GeeXboX 2.0 alpha2" --class os {
  set isofile="/livecd/geexbox-2.0-alpha2-en.i386.eglibc.iso"
  loopback loop $isofile                          # 這個 loopback 設定,在硬碟中是 (hd1,msdos1)$isofile
                                                           # 請參考自己的環境適當修改
  linux (loop)/GEEXBOX/boot/vmlinuz root=/dev/ram0 rw rdinit=linuxrc boot=cdrom lang=en vga=788 video=vesafb:ywrap,mtrr hdtv quiet loglevel=3
  initrd (loop)/GEEXBOX/boot/initrd.gz
}
menuentry "Tinycore" --class os {
  set isofile="/livecd/tinycore.iso"
  loopback loop $isofile  # 同上
  linux (loop)/boot/bzImage
  initrd (loop)/boot/tinycore.gz
}
上面只是範例而已,要自己測試修改,其中 isofile 的目徑請務必自己修改。

上面 Virtualbox 來開機的教學是用 Windows(感謝微軟),相當簡單,若是想在 Linux Host 裡面用的話,反而要注意一件事,就是權限問題,若用 root 跑 virtualbox  當然不會有問題,若要用一般帳號的話,則要記得把隨身碟的 device 權限改成普通帳號可以存取的。至於命令很類似,參考文章改一下即可。

當然在 Linux 下命令與 windows 不太一樣,把兩者並列供大家參考:



-- Windows --
VBoxManage internalcommands createrawvmdk -filename "%USERPROFILE%"\.VirtualBox\usb.vmdk -rawdisk \\.\PhysicalDrive#
上面的 PhysicalDrive# 是透過 diskmgmt.msc 這個命令來查找的,主要就是隨身碟的「磁碟機編號」


-- Linux -- 
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/usb.vmdk -rawdisk /dev/sdb
上面的 /dev/sdb 相信大家都會,可以用 fdisk -l 命令來查隨身碟的編號