2008年12月27日 星期六

墨子

近來看到了一些事。感謝友人介紹墨子給我。以古鑒今,讀得我汗流直下…不得不佩服古人的智慧,真的是真知灼見。歷史果然是以不同的面貌一再重演。今日看著一些人花了大把大把的銀子,得到的卻是一個謊言。雖然花了很多工夫來說服自己,這些是別人的錢,而且這也不在手臂範圍內,在自己的範圍內對得起自己,對得起投資人。投資人也不是笨蛋,如果事態這麼明顯了還看不出來,他們自己就要承受風險。看著台灣投資人的錢就這樣的被糟蹋,揮霍,心裏相當的難過。
一場大卡司的真實戲碼在眼前上映著,一面難過著一個看似美好的機會在眼前破滅, 也一面慶興著自己在年輕之時就可以上到這麼昂貴的一課,學到相當寶貴的經驗。更加了解在夢想這條路上有那些陷阱,和風險。在這場大卡司的戲碼中,看著一個有理想有才華的人被小人包圍,看著他的恐懼、看著他逃避、封閉自我、在精神上吸毒、不停的欺騙、最後沉淪,變得和他身旁的人沒兩樣。我們雖然被一些人欺騙、惡搞、看似受害者,雖然我們幫不上什麼忙,在這恐怖的經驗之中替他感到痛心,替投資時間、金錢於他的人感到可惜,也學得深刻的教訓,也許能保持自我且依然年輕的我們才是最大的受益者。

這讓我想起了第一份工作的公司所標榜的企業精神:"誠信正直"。真的說得很好。

夢想讓我們充滿熱情、創意讓我們與眾不同、技術讓我們拿到門票、運氣讓我們得以進入門檻,而要真正的成功:“誠信正直” 真的很重要。

這真的很難,也很重要。我想…成功的人那麼少,也許就是要真正落實實在太難了吧,不然也不用拿出來標榜。
修鍊、修鍊…

國高中時,完全不讀不下去的古文。沒想到在經歷了一些事之後,讀起來卻是異常的深刻…熟悉…
念書、念書…

墨子、卷一


親士
入國而不存其士,則亡國矣。見賢而不急,則緩其君矣。非賢無急,非士無與慮國,緩賢忘士而能以其國存者,未曾有也。

昔者文公出走而正天下,桓公去國而霸諸侯,越王句踐遇吳王之醜,而尚攝中國之賢君。三子之能達名成功於天下也,皆於其國抑而大醜也。太上無敗,其次敗而有以成,此之謂用民。

吾聞之曰:“非無安居也,我無安心也。非無足財也,我無足心也。”是故君子自難而易彼,眾人自易而難彼,君子進不敗其志,內究其情,雖雜庸民,終無怨心, 彼有自信者也。是故為其所難者,必得其所欲焉,未聞為其所欲,而免其所惡者也。是故偪臣傷君,諂下傷上。君必有弗弗之臣,上必有詻詻之下。分議者延延,而 支苟者詻詻,焉可以長生保國。

臣下重其爵位而不言,近臣則喑,遠臣則唫,怨結於民心,諂諛在側,善議障塞,則國危矣。桀紂不以其無天下之士邪?殺其身而喪天下。故曰:“歸國寶,不若獻賢而進士。

今有五錐,此其銛,銛者必先挫。有五刀,此其錯,錯者必先靡,是以甘井近竭,招木近伐,靈龜近灼,神蛇近暴。是故比干之殪,其抗也;孟賁之殺,其勇也;西施之沈,其美也;吳起之裂,其事也。故彼人者,寡不死其所長,故曰:“太盛難守也。”

故雖有賢君,不愛無功之臣;雖有慈父,不愛無益之子。是故不勝其任而處其位,非此位之人也;不勝其爵而處其祿,非此祿之主也。良弓難張,然可以及高入深; 良馬難乘,然可以任重致遠;良才難令,然可以致君見尊。是故江河不惡小谷之滿己也,故能大。聖人者,事無辭也,物無違也,故能為天下器。是故江河之水,非 一水之源也。千鎰之裘,非一狐之白也。夫惡有同方取不取同而已者乎?蓋非兼王之道也。是故天地不昭昭,大水不潦潦,大火不燎燎,王德不堯堯者,乃千人之長也。

其直如矢,其平如砥,不足以覆萬物,是故溪陝者速涸,逝淺者速竭,墝埆者其地不育。王者淳澤不出宮中,則不能流國矣。


修身
君子戰雖有陳,而勇為本焉。喪雖有禮,而哀為本焉。士雖有學,而行為本焉。是故置本不安者,無務豐末。近者不親,無務來遠。親戚不附,無務外交。事無終始,無務多業。舉物而闇,無務博聞。

是故先王之治天下也,必察邇來遠,君子察邇而邇脩者也。見不脩行,見毀,而反之身者也,此以怨省而行脩矣。譖慝之言,無入之耳,批扞之聲,無出之口,殺傷人之孩,無存之心,雖有詆訐之民,無所依矣。

是故君子力事日彊,願欲日逾,設壯日盛。君子之道也,貧則見廉,富則見義,生則見愛,死則見哀。四行者不可虛假,反之身者也。藏於心者,無以竭愛。動於心者,無以竭恭。出於口者,無以竭馴。暢之四支,接之肌膚,華髮隳顛,而猶弗舍者,其唯聖人乎!

志不彊者智不達,言不信者行不果。據財不能以分人者,不足與友。守道不篤,偏物不博,辯是非不察者,不足與游。本不固者末必幾,雄而不脩者,其後必惰,源濁者流不清,行不信者名必秏。 名不徒生而譽不自長,功成名遂,名譽不可虛假,反之身者也。務言而緩行,雖辯必不聽。多力而伐功,雖勞必不圖。慧者心辯而不繁說,多力而不伐功,此以名譽 揚天下。言無務多而務為智,無務為文而務為察。故彼智無察,在身而情,反其路者也。善無主於心者不留,行莫辯於身者不立。名不可簡而成也,譽不可巧而立 也,君子以身戴行者也。思利尋焉,忘名忽焉,可以為士於天下者,未嘗有也。


所染
子墨子言見染絲者而嘆曰:“染於蒼則蒼,染於黃則黃。所入者變,其色亦變。五入必而已,則為五色矣。故染不可不慎也。”

非獨染絲然也,國亦有染。舜染於許由、伯陽、禹染於皋陶、伯益,湯染於伊尹、仲虺,武王染於太公、周公。此四王者所染當,故王天下,立為天子,功名蔽天地。舉天下之仁義顯人,必稱此四王者。

夏桀染於干辛、推哆,殷紂染於崇侯、惡來,厲王染於厲公長父、榮夷終,幽王染於傅公夷、蔡公穀。此四王者所染不當,故國殘身死,為天下僇。舉天下不義辱人,必稱此四王者。

齊桓染於管仲、鮑叔,晉文染於舅犯、高偃,楚莊染於孫叔、沈尹,吳闔閭染於伍員、文義,越句踐染於范蠡大夫種。此五君者所染當,故霸諸侯,功名傅於後世。

范吉射染於長柳朔、王胜,中行寅染於籍秦、高彊,吳夫差染於王孫雒、太宰嚭,智伯搖染於智國、張武,中山尚染於魏義、偃長,宋康染於唐鞅、佃不禮。此六君者所染不當,故國家殘亡,身為刑戮,宗廟破滅,絕無後類,君臣離散,民人流亡。舉天下之貪暴苛擾者,必稱此六君也。

凡君之所以安者,何也?以其行理也,行理性於染當。故善為君者,勞於論人,而佚於治官。不能為君者,傷形費神,愁心勞意,然國逾危,身逾辱。此六君者,非不重其國,愛其身也,以不知要故也。不知要者,所染不當也。

非獨國有染也,士亦有染。其友皆好仁義,淳謹畏令,則家日益,身日安,名日榮,處官得其理矣,則段干木、禽子、傅說之徒是也。其友皆好矜奮,創作比周,則家日損,身日危,名日辱,處官失其理矣,則子西、易牙、豎刀之徒是也。《詩》曰:“必擇所堪。”必謹所堪者,此之謂也。


法儀
子墨子曰:“天下從事者,不可以無法儀,無法儀而其事能成者無有也。雖至士之為將相者,皆有法,雖至百工從事者,亦皆有法。百工為方以矩,為圓以規,衡以水,直以繩,正以縣。無巧工、不巧工,皆以此五者為法。巧者能中之,不巧者雖不能中,放依以從事,猶逾己。故百工從事,皆有法所度。”

今大者治天下,其次治大國,而無法所度,此不若百工辯也。然則奚以為治法而可?當皆法其父母,奚若?天下為 父母者眾,而仁者寡,若皆法其父母,此法不仁也。法不仁不可以為法,當皆法其學,奚若?天下之為學者眾,而仁者寡,若皆法其學,此法不仁也。法不仁不可以 為法,當皆法其君,奚若?天下之為君者眾,而仁者寡,若皆法其君,此法不仁也。法不仁不可以為法。故父母、學、君三者,莫可以為治法。

然則奚以為治法而可?故曰莫若法天。天之行廣而無私,其施厚而不德,其明久而不衰,故聖王法之。既以天為法,動作有為,必度於天,天之所欲則為之,天所不 欲則止。然而天何欲何惡者也?天必欲人之相愛相利,而不欲人之相惡相賊也。奚以知天之欲人之相愛相利,而不欲人之相惡相賊也?以其兼而愛之,兼而利之也。 奚以知天兼而愛之,兼而利之也?以其兼而有之,兼而食之也。

今天下無大小國,皆天之邑也。人無幼長貴賤,皆天之臣也。此以莫不犓羊牛、豢犬豬,絜為酒醴粢盛,以敬事天,此不為兼而有之,兼而食之邪?天苟兼而有食之,夫奚說以不欲人之相愛相利也?故曰:“愛人利人者,天必福之,惡人賊人者,天必禍之。”曰:“殺不辜者,得不祥焉。夫奚說人為其相殺而天與禍乎?是以知天欲人相愛相利,而不欲人相惡相賊也。”

昔之聖王禹、湯、文、武,兼愛天下之百姓,率以尊天事鬼,其利人多,故天福之,使立為天子,天下諸侯皆賓事之。暴王桀、紂、幽、厲,兼惡天下之百姓,率以詬天侮鬼。其賊人多,故天禍之,使遂失其國家,身死為僇於天下。後世子孫毀之,至今不息。故為不善以得禍者,桀、紂、幽、厲是也。愛人利人以得福者,禹、湯、文、武是也。愛人利人以得福者有矣,惡人賊人以得禍者亦有矣!


七患
子墨子曰:國有七患。七患者何?城郭溝池不可守而治宮室,一患也。邊國至境四鄰莫救,二患也。先盡民力無用之功,賞賜無能之人,民力盡於無用,財寶虛於待客,三患也。仕者持祿,游者愛佼,君脩法討臣,臣懾雨不敢拂,四患也。君自以為聖智而不問事,自以為安彊而無守備,四鄰謀之不知戒,五患也。所信不忠,所忠不信,六患也。畜種菽粟不足以食之,大臣不足以事之,賞賜不能喜,誅罰不能威,七患也。以七患居國,必無社稷;以七患守城,敵至國傾。七患之所當,國必有殃。

凡五穀者,民之所仰也,君之所以為養也。故民無仰則君無養,民無食則不可事。故食不可不務也,地不可不力也,用不可不節也。五穀盡收,則五味盡御於主,不 盡收則不盡御。一穀不收謂之饉,二穀不收謂之旱,三穀不收謂之凶,四穀不收謂之餽,五穀不收謂之饑。歲饉,則仕者大夫以下皆損祿五分之一。旱,則損五分之 二。凶則損五分之三。餽,則損五分之四。饑,則盡無祿,稟食而已矣。故凶饑存乎國,人君徹鼎食五分之三,大夫徹縣,士不入學,君朝之衣不革制,諸侯之客,四鄰之使,雍飧而不盛,徹驂騑,塗不芸,馬不食粟,婢妾不衣帛,此告不足之至也。

今有負其子而汲者,隊其子於井中,其母必從而道之。今歲凶,民饑道餓,重其子此疚於隊,其可無察邪?故時年歲善,則民仁且良;時年歲凶,則民吝且惡。夫民 何常此之有?為者疾,食者眾,則歲無豐。故曰:“財不足則反之時,食不足則反之用。”故先民以時生財,固本而用財,則財足。故雖上世之聖王,豈能使五穀常 收而旱水不至哉?然而無凍餓之民者,何也?其力時急而自養儉也。故《夏書》曰:“禹七年水。”《殷書》曰:“湯五年旱。”此其離凶餓甚矣。然而民不凍餓者,何也?其生財密,其用之節也。

故倉無備粟,不可以待凶饑;庫無備兵,雖有義不能征無義;城郭不備全,不可以自守;心無備 慮,不可以應卒。是若慶忌無去之心,不能輕出。夫桀無待湯之備,故放;紂無待武之備,故殺。桀、紂貴為天子,富有天下,然而皆滅亡於百里之君者,何也?有 富貴而不為備也。故備者,國之重也;食者,國之寶也;兵者,國之爪也。城者所以自守也。此三者國之具也。

故曰:以其極賞,以賜無功,虛其府庫,以備車馬、衣裘、奇怪,苦其役徒,以治宮室觀樂;死又厚為棺槨,多為衣裘。生時治臺榭,死又脩墳墓。故民苦於外,府庫單於內,上不厭其樂,下不堪其苦。故國離寇敵則傷,民見凶饑則亡,此皆備不具之罪也。且夫食者,聖人之所寶也。故《周書》曰:“國無三年之食者,國非其國也;家無三年之食者,子非其子也。”此之謂國備。

辭過
子墨子曰:古之民,未知為宮室時,就陵阜而居,穴而處,下潤濕傷民,故聖王作為宮室。為宮室之法,曰:室高足以辟潤濕,邊足以圉風寒,上足以待雪霜雨露,宮牆之高,足以別男女之禮,謹此則止。凡費財勞力,不加利者,不為也。役,脩其城郭,則民勞而不傷;以其常正,收其租稅,則民費而不病。民所苦者非此也,苦於厚作斂於百姓。是故聖王作為宮室,便於生,不以為觀樂也。作為衣服帶履,便於身,不以為辟怪也,故節於身,誨於民,是以天下之民可得而治,財用可得而足。

當今之主,其為宮室則與此異矣。必厚作斂於百姓,暴奪民衣食之財,以為宮室,臺榭曲直之望,青黃刻鏤之飾。為宮室若此,故左右皆法象之,是以其財不足以待凶饑、振孤寡,故國貧而民難治也。君實欲天下之治,而惡其亂也,當為宮室不可不節。

古之民,未知為衣服時,衣皮帶茭,冬則不輕而溫,夏則不輕而凊。聖王以為不中人之情,故作誨婦人治絲麻,梱布絹,以為民衣。為衣服之法:冬則練帛之中,足以為輕且暖;夏則絺綌之中,足以為輕且凊,謹此則止。故聖人之為衣服,適身體和肌膚而足矣。非榮耳目而觀愚民也。當是之時,堅車良馬不知貴也,刻鏤文采,不知喜也。何則?其所道之然。故民衣食 之財,家足以待旱水凶饑者,何也?得其所以自養之情,而不感於外也。是以其民儉而易治,其君用財節而易贍也。府庫實滿,足以待不然。兵革不頓,士民不勞, 足以征不服。故霸王之業,可行於天下矣。

當今之主,其為衣服則與此異矣,冬則輕煥,夏則輕凊,皆已具矣。必厚作斂於百姓,暴奪民衣食之財,以為錦繡文采靡曼之衣,鑄金以為鉤,珠玉以為珮,女工作文采,男工作刻鏤,以為身服,此非云益煥之情也。單財勞力,畢歸之於無用也,以此觀之,其為衣服非為身體,皆為觀好,是以其民淫僻而難治,其君奢侈而難諫也。夫以奢侈之君,御妤淫僻之民,欲國無亂,不可得也。君實欲天下之治而惡其亂,當為衣服不可不節。

古之民未知為飲食時,素食而分處,故聖人作誨男耕稼樹藝,以為民食。其為食也,足以增氣充虛,彊體適腹而巳矣。故其用財節,其自養儉,民富國治。今則不 然,厚作斂於百姓,以為美食芻豢,蒸炙魚鱉,大國累百器,小國累十器,前方丈,目不能遍視,手不能遍操,口不能遍味,冬則凍冰,夏則餲饐,人君為飲食如此,故左右象之。是以富貴者奢侈,孤寡者凍餒,雖欲無亂,不可得也。君實欲天下治而惡其亂,當為食飲,不可不節。

古之民未知為舟車時,重任不移,遠道不至,故聖王作為舟車,以便民之事。其為舟車也,完固輕利,可以任重致遠,其為用財少,而為利多,是以民樂而利之。故法令不急而行,民不勞而上足用,故民歸之。

當今之主,其為舟車與此異矣。完固輕利皆已具,必厚作斂於百姓,以飾舟車。飾車以文采,飾舟以刻鏤,女子廢其紡織而脩文采,故民寒。男子離其耕稼而脩刻鏤,故民饑。人君為舟車若此,故左右象之,是以其民饑寒並至,故為姦邪。姦邪多則刑罰深,刑罰深則國亂。君實欲天下治而惡其亂,當為舟車,不可不節。

凡回於天地之間,包於四海之內,天壤之情,陰陽之和,莫不有也,雖至聖不能更也。何以知其然?聖人有傳:天地也,則曰上下;四時也,則曰陰陽;人情也,則 曰男女;禽獸也,則曰牡牝雄雌也。真天壤之情,雖有先王不能更也。雖上世至聖,必蓄私,不以傷行,故民無怨。宮無拘女,故天下無寡夫。內無拘女,外無寡 夫,故天下之民眾。當今之君,其蓄私也,大國拘女累千,小國累百,是以天下之男多寡無妻,女多拘無夫,男女失時,故民少。君實欲民之眾而惡其寡,當蓄私不可不節。

凡此五者,聖人之所儉節也,小人之所淫佚也。儉節則昌,淫佚則亡,此五者不可不節。夫婦節而天地和,風雨節而五穀孰,衣服節而肌膚和。


三辯
程繁問於子墨子曰:“夫子曰:‘聖王不為樂’,昔諸侯倦於聽治,息於鐘鼓之樂;士大夫倦於聽治,息於竽瑟之樂;農夫春耕、夏耘、秋斂、冬藏,息於瓴缶之樂。今夫子曰:‘聖王不為樂’,此譬之猶馬駕而不稅,弓張而不弛,無乃非有血氣者之所不能至邪?”

子墨子曰:“昔者堯舜有茅茨者,且以為禮,且以為樂。湯放桀於大水,環天下自立以為王,事成功立,無大後患,因先王之樂,又自作樂,命曰《護》,又脩《九招》。武王勝殷殺紂,環天下自立以為王,事成功立,無大後患,因先王之樂,又自作樂,命曰《象》。周成王因先王又自作樂,命曰《騶虞》。周成王之治天下也,不若武王。武王之治天下也,不若成湯。成湯之治天下也,不若堯舜。故其樂逾繁者,其治逾寡。自此觀之,樂非所以治天下也。”

程繁曰:“子曰:‘聖王無樂’。此亦樂已,若之何其謂聖王無樂也?”子墨子曰:“聖王之命也,多寡之。食之利也,以知饑而食之者智也,因為無智矣。今聖有樂而少,此亦無也。”

2008年12月14日 星期日

迷人的 git

如果你常常寫 code,一定會遇到一種情況:寫改目前會動的 code,又怕會改壞…這時,就是 SCM (Source Code Management) 程式的時候了。

前一陣子,不知怎麼的,好幾個朋友問我,他們公司/專案要選 SCM,要選用那一個呢?

SCM 百百種… CVS SVN SVK Monotone bitkeeper git etc. etc.
要用那一個比較好呢?

在過去…我會說 SVN, SVN 比 CVS 方便多了,流水號的機制讓開發過程相當的清晰。
現在我強烈推薦 git
自從用了 git 之後~我已經離不開 git 了…

為什麼呢?
1. 因為我用 notebook 寫 code, 這表示我可能會在辦公室寫,在家寫,睡不著時在床上寫,在無聊的會議中寫,在坐車時寫,在山林中寫… 而且我寫的東西大多要merge 回 upstream。可是很多地方是沒有網路的。或是網路不好…如果我用SVN 的話…就必需開始用 quilt寫 patch 了…管理 Code 變得相當的麻煩。
Git 是一個分散式的 SCM,也就是在你目前工作的環境下,就是一個完整的 source code repository. 當你從網路上用 git 抓下 code 的同時,你已經把完整的開發 tree 抓回來,放在你的電腦之中了…而 commit code 時也是 commit 到你 local 端之中。所以你就可以一直寫,到處寫,直到你有網路之時再一次 push 回去…
2. 我很愛改 Code,而 git 的版本管理是用 patch 做出來的,也就是說 branch 會變得相當的容易。當我想做任何風險較大的變動時,可以先開一個 branch 出來,在裏面惡搞一翻。如果結果不錯的話,就 merge 回主要的 branch。
3. git 超級快,因為 git 把所有的 patch 都抓回來了,要做 diff ,翻 log 就變成超級快速而且穩定的事。
4. 支援 SVN 和 CVS,git-svn 可以把 svn 之中的所有 commit 變成 git 之中的一個 branch。
也就是不管upstream 用的是 SVN or CVS ,我都可以用 git 來管理。事實上,還有一些更好玩的玩法
5. SHA1-hash 的版本管理方式,讓 git 跳脫 SVN 之類強烈線性的版本管理…可以 rebase, cherry-pick ...
6. 開始一個 repository 超級方便,git init 就好了

Anyway 說了這麼多好處…怎麼用呢?就先給 link 嘍…
戒色夫 "我愛 Git"
Git User manual

我不打算在這寫另一個 manual 就寫幾個個人覺得很實用的 use cases.
1.做實驗
當你的 master branch 可以 run,但你想要對某個演算法大修時…
a. git checkout -b test_xxxx
b. 大修你的演算法…且 做細部的 commit,直到完成
c. git checkout master 回到本來的 master
d. git pull 把再新的 master 拉回來
e. git checkout test_xxxx
f. git rebase master 把再新的 master commit rebase 上去…可能會要解 conflict
(c, d, e, f, 可變成 git fetch origin/master; git rebase -i origin/master)
g. git checkout master
h.1 git rebase test_xxxx 把 test_xxxx 的東西再 rebase 過來
h.2 git cherry-pick xxxxxx 把某個 patch 挑過來
i. git push 把修改送回main stream

2.用 git-svn 搬 SVN repository
如 project P 要從 repository A 搬到 B 玩法如下
a. mkdir A_svn; pushd A_svn; git svn init http://A/trunk/ ;git svn fetch; popd
b git clone file://`pwd`/A_svn B_svn
c. cd B_svn; git svn init http://B/trunk/
d. git checkout -b master_tmp
e. git svn init http://B/trunk/ ; git svn fetch
f. git checkout -b svn --track git-svn
g. git checkout master; git rebase svn
h. git-rev-list master_tmp (suppose the last line is 532d2f35aa73331d409475efa84c00a1afa0e1a0)
i. git svn set-tree 532d2f35aa73331d409475efa84c00a1afa0e1a0
j. git rebase master_tmp; git svn dcommit

3. 粉飾太平
當 git commit 了一些笨笨的 code
可以用 git rebase -i xxxx 來拿掉/合並 一些 commit