2004/09/02

Developing Microsoft ASP.NET Server Controls and Components

by Patrick M. Lencioni "Not finance. Not strategy. Not technology. It is teamwork that remains the ultimate competitive advantage, both because it is so powerful and so rare..."

Editorial Reviews

Amazon.com
Once again using an astutely written fictional tale to unambiguously but painlessly deliver some hard truths about critical business procedures, Patrick Lencioni targets group behavior in the final entry of his trilogy of corporate fables. And like those preceding it, The Five Dysfunctions of a Team is an entertaining, quick read filled with useful information that will prove easy to digest and implement. This time, Lencioni weaves his lessons around the story of a troubled Silicon Valley firm and its unexpected choice for a new CEO: an old-school manager who had retired from a traditional manufacturing company two years earlier at age 55. Showing exactly how existing personnel failed to function as a unit, and precisely how the new boss worked to reestablish that essential conduct, the book's first part colorfully illustrates the ways that teamwork can elude even the most dedicated individuals--and be restored by an insightful leader. A second part offers details on Lencioni's "five dysfunctions" (absence of trust, fear of conflict, lack of commitment, avoidance of accountability, and inattention to results), along with a questionnaire for readers to use in evaluating their own teams and specifics to help them understand and overcome these common shortcomings. Like the author's previous books, The Five Temptations of a CEO and Obsessions of an Extraordinary Executive, this is highly recommended. --Howard Rothman

Product Description:
In The Five Dysfunctions of a Team Patrick Lencioni once again offers a leadership fable that is as enthralling and instructive as his first two best-selling books, The Five Temptations of a CEO and The Four Obsessions of an Extraordinary Executive. This time, he turns his keen intellect and storytelling power to the fascinating, complex world of teams.

Kathryn Petersen, Decision Tech's CEO, faces the ultimate leadership crisis: Uniting a team in such disarray that it threatens to bring down the entire company. Will she succeed? Will she be fired? Will the company fail? Lencioni's utterly gripping tale serves as a timeless reminder that leadership requires as much courage as it does insight.

Throughout the story, Lencioni reveals the five dysfunctions which go to the very heart of why teams even the best ones-often struggle. He outlines a powerful model and actionable steps that can be used to overcome these common hurdles and build a cohesive, effective team. Just as with his other books, Lencioni has written a compelling fable with a powerful yet deceptively simple message for all those who strive to be exceptional team leaders.

See all Editorial Reviews

2004/08/10

Accessing Custom Site Templates through the Sharepoint API

Using custom site templates in Sharepoint is a really powerful feature. You can customize your WSS site through frontpage or the web UI and save the site as a template. By default the template is stored in the top-level site template gallery of the site you customized.

This template can be exported as an ".stp" file and imported on other top-level websites. But you can also place the template in two other locations. The three locations for site templates are:
Top-Level (WSS) Site Template Gallery Sharepoint Portal Server Template Gallery Sharepoint Virtual Server TemplatesTo enter the template into the Portal gallery go to Portal > Site Settings > Manage security and additional settings > Manage site template gallery and upload your ".stp" file (read on to find out why this is useless).

To enter the template into the Virtual Server Templates open the commandline at the directory \Program Files\Common Files\Microsoft Shared\web server extensions\60\BIN and run stsadm -o addtemplate -filename \sitetemplate.stp -title sitetemplate

You can run stsadm -o enumtemplates to verify that your template was added, and you'll also notice that it's been given a name like "_GLOBAL_#1". If you've added a template to the Sharepoint Portal Server Template Gallery (#2 above) you'll notice that this template is not listed when using stsadm.

  • Team Site, STS#0
  • Blank Site, STS#1
  • Document Workspace, STS#2
  • Basic Meeting Workspace, MPS#0
  • Blank Meeting Workspace, MPS#1
  • Decision Meeting Workspace, MPS#2
  • Social Meeting Workspace, MPS#3
  • Multipage Meeting Workspace, MPS#4
  • Business Activity Services Team Site, BAS#0
  • SharePoint Portal Server Site, SPS#0
  • SharePoint Portal Server Personal Space, SPSPERS#0
  • SharePoint Portal Server My Site, SPSMSITE#0
  • Contents area Template, SPSTOC#0
  • Topic area template, SPSTOPIC#0
  • News area template, SPSNEWS#0
  • News Home area template, SPSNHOME#0
  • Site Directory area template, SPSSITES#0
  • SharePoint Portal Server BucketWeb Template, SPSBWEB#0
  • Community area template, SPSCOMMU#0
  • sitetemplate, _GLOBAL_#1 <- My custom template on the Virtual Server

When you look at the Sharepoint SDK for the SPSiteCollection.Add method there is a parameter for sitetemplate. In the example they've used "STS#0", which indicated that the method expects the Name property of the SPWebTemplate, and that it makes a selection from the templates on the virtual server. So if you want to create a site with the template you just deployed with stsadm, specify "_GLOBAL_#1". If you find it uncomfortable to use this generated name a simple mapping can be applied like this:

string template = "My Template Title";
SPGlobalAdmin globalAdmin = new SPGlobalAdmin();
SPWebTemplateCollection webTemplates
= globalAdmin.VirtualServers[0].GetWebTemplates(lcid);
foreach(SPWebTemplate t in webTemplates)
if (t.Title.CompareTo(template) == 0) template = t.Name;

So what do you specify if you want to apply one of the templates in the Sharepoint Portal Server Template Gallery? After all, it's more user friendly to expose templates here than through the command line interface (if you're not doing complex automated deployments that is). Well by looking in the Gallery UI in Site settings you'll notice that the Name property of the template you've uploaded is TemplateName.stp. Supplying this as a parameter to the SPSiteCollection.Add method will not work. The template won't be found.

The only way to get a hold of these templates are by accessing the SPSite of the portal (either by using context site or creating a new object). You'll find these templates by using the SPSite.GetCustomWebTemplates method. The problem is that SPSite has no way of applying a template other than in the constructor. That leaves you with manipulating the SPSite.RootWeb object after you've created the new SPSite.

But now you've got two different SPSite objects; the portal and the top-level site you just added. Because the templates are stored on the portal SPSite object they cannot be accessed on the top level website. This is because the method SPWeb.ApplyWebTemplate(SPWebTemplate obj) actually is just an overload that reads the SPWebTemplate name property as a string and passes it down to the SPSite object, which in turn looks up in it's own template gallery.

So the conclusion is that for top-level websites you have to deploy your templates using stsadm. Then what's the use of the Sharepoint Portal Server Template Gallery? Beats me. I haven't actually found any of the templates I've added to that list anywhere else than in the SPSite object of the portal root site.

2004/07/26

Build Automation System using Cruise Control .NET (CCNET)

In a Team development environment where parallel development and testing goes we find a requirement of getting most recent build to test as well as some specific build to give the QA to do testing on. This post describes what all are needed to set up an automated source code integration and build system for an environment where we use Visual Studio for development, source control (SVN in our case) for source depot, and doc/ tracking system (trac in our case).

Why do we need a continuous source code integration and build system? well, this helps the QA team by allowing then to not spend more time in syncing the source and doing a build everytimes or even working on a relatively older build.  This works as a perfect backup for your Source Control and also the deployment server. This also allows to align the builds numbers to be same as your assembly\file version and also to the source control label there by making a particular build to be a complete unit in itself in terms of readiness for deployment or using the same for development.

Now coming back to build server where we can use cruise control .NET for source integration along with a couple of batch scripts to control the build number and assembly version. CCNET pings the source control (SVN) after every 30 mins (this is a default value and can be changed) to see if there are any modifications. If there are then it triggers a build and publishes it on the Build Server. Once done sleeps again for 30 mins unless it is Forced for a build in between i.e. you can manually force a build in between sleeps.

The core components of build server are:

1) Cruise Control .NET (CCNET):
Its an open source build and integration engine which can be downloaded freely from http://confluence.public.thoughtworks.org/display/CCNET/DownloadOnce. Once the installation is done CCNET needs to be configured according to your requirements.  The config file can be found at “%SYSTEMDRIVE%\Program Files\CruiseControl.NET\Server\ccnet.config”.

2) Batch Scripts:
You might have some tasks to do before the automated build.  In our case, we want to shift the version in every new build. It can be done by altering AssemblyVersion attribute defined in AsseblyInfo.cs file(s). Also you might need to get all the green lights in NUnit testings before you build.  CCNET integrates with NUnit & NAnt nicely for executing test cases and more powerful automated scripts.

Fpr complete reference on the configuration blocks, check out the project home at http://ccnet.sourceforge.net/CCNET/.  If you like to do the same on Linux, you might wanna check out luntbuild

2004/07/11

創業者手中的地圖

每天都有人開始創業之路,每天也都有人走下創業舞台。抱著創業夢的人不計其數,為什麼有人美夢成真?有人卻是夢醒一場空?

倫敦商學院知名的管理教授薩爾 (Donald Sull),花了五年的時間研究創業個案,歸納出創業者如何在追求機會的同時,也能維持應有的紀律 (discipline),管理伴隨而來的不確定性。他在史隆管理評論(MIT Sloan Management Review)發表研究結果,提供剛起步的創業者,一步步遵循邁進的創業地圖。

第一步,擬出實用的假設。

創業者必須先定義機會,釐清所需資源、將創造的價值,以及執行計劃等。擬定假設時,必須保持彈性,公司在穩定之前,無可避免都要歷經各種變動。加州的一家創投公司在研究過三百家新公司後發現,失敗公司擁有的一個共同特點是,太早決定了經營模式。

擬定假設時,創業者也要確定自己有能力。篩選創業機會的第一個考量應該是,創業者自問自己的經驗或專業,是否能在這個機會上佔一席之地。創業者除了必須了解顧客、對手、技術、法規之外,還必須找出公司的致命傷及成功關鍵。創業者必須能回答:「現在公司的致命傷是什麼?」(例如財力雄厚的競爭者),也要能回答:「我們壓的寶是什麼?」(例如製造出更好用的捕鼠器。)

第二步,匯集資源。

創業者在進行測試之前,必須先獲得資源,包括有形的資金、設備,以及無形的智慧財產權、收集潛在顧客的資料等。究竟多少的資金才夠?創業者匯集的資源,必須足夠支持他進行第二次的測試。

而且,公司應該先確定經營模式,再僱用核心員工。加州創投公司的那份研究發現,大部份成功的新公司都是在進行過幾次測試,擁有穩定的模式之後,才僱用重要的主管,因為那時候公司才明確知道,主管需要具備的專業與經驗為何。另外,公司可以將與核心測試無關的功能外包,將有限的資源集中。

第三步,設計及執行測試。

常見的做法包括,顧客研究、製造樣品、進行小區域試賣等。測試時,公司可採用部份性的測試,針對某個特定問題收集有用的資訊,這個方法適用於公司已經知道,自己對那個議題不了解時。相對地,全面性的測試,則適用於讓公司發現未知的問題,公司以較小的規模,測試產品的各個面向,例如產品在全國上市前,先在某個地區進行試賣。另外,公司也可採用階段式的測試,例如,新餐廳逐步測試與調整菜單、定價、裝潢等。

無論採用何種測試方法,創業者都要避免測試可能帶來的負面效果,包括拖太久、花太多錢、目標不明確、負責測試的人將成功與否視為個人成敗,以致失去客觀性等。要避免這些情況,公司可以邀請外界專家參與設計測試及評估結果。

創業時如果能抓穩手中的地圖,美夢成真的機率,或許就能高一些。

2004/06/24

建置成功網站的關鍵因素

就像名片,網站已成為企業必備的配備。在您投入金錢與時間前,您了解如何建置成功的網站嗎? 如果你要建置一個成功的,能長時間保持運作的企業網站,請慎重考慮下列問題。
1. 為什麼要建置它?
明暸企業目標以及網站需求。從目標和需求著手,找出何種的資訊對你的客戶(網站瀏覽者)有幫助。了解你對網站設計及網站內容之願景及構想。經由此分析,你能更有效的規劃需求、預算,並製造出滿意的網站。

2. 你對成功網站的定義
建置一個網站,就像辦一本雜誌,從定位開始,到版型、內容、團隊必須顧到品質、預算、成敗控管,但不像雜誌印刷出版就沒事了,對網站而言,日後更新維護是更重要的,因此網站的規劃團隊一開始就要做出正確的網站定位、選擇最好的網站建置軟體、並籌畫建置的人才及日後維護的方式,甚至是要從使用者角度出發,了解使用者想要的資訊、點選的習慣、預期看到什麼頁面, 要有明確的設計讓使用者節省更多的精神、時間,網站瀏覽介面要友善化,後端維護要相對簡單化。
問主事者
[1]這個問題:若您第一次瀏覽新網站,您希望留下何種印象?
[1] 主事者通常為此專案的利益關係人及決策者,如企業主或行銷部門主管。

3. 建置的目的到底為何?
依據定義製作出需求,您將可清楚的分析出建置的目的。
例如,在製作行銷策略時,如果你知道客戶要的是什麼,那麼你就可以做更好的服務以滿足他們的需求。之於網站建置,如果你有預設瀏覽的族群,你就可定義網站的訴求目標、清楚勾勒出建置的目的及效應。這將導引您做出更好的決策,真正利用網站提供更佳的服務。

4. 成本考量
很多的客戶有對架設網站有不同的看法,以為將很多的資料放上去就好了,但經驗告訴我們簡單的網頁設計不止可以降低您的預算也可以讓網站的訪客快速找到他們想要的資料。

5. 是否一定以價錢的原因來選擇網頁設計公司?
網頁設計的產業是一個很速成的產業,充滿了很多不專業的公司,一個人一台電腦就能做網頁設計,他們的設計費通常很便宜,但並不能提供完整的服務。選擇一個真正專業且有經驗的網站建置團隊會比純粹比價重要的多。

6. 如何選擇一個好的團隊?
依據您定義出的需求,您可分析出網站建置團隊應具備的職能素養。

一般具有專業且有經驗的網站建置團隊,應須有下列表現:














比重標準
0-05 網頁設計公司自已網站的品質
0-30
0-20
0-10
他們作品網站的品質
你相信的人給的參考意見
作品網站跟你想要網站的相似程度(設計上、製作上或功能上
0-50
0-20
有能力提出策略與投入的方式
整體設計力、整體技術力
轉發包特殊工作(攝影、程式設計、配音等)能力
0-30
為現在或未來瀏覽器設計網站的能力
0-10吸引人潮入站的能力
0-30技術能力:例如,自已能不能寫perl或其它伺服器端的scripts
壓縮技術、Shockwave動畫、Flash等技術
0-30領導者在其它媒體是資深設計師
0-30對專案的整體熱忱
0-50希望跟他們共事的程度


精確的企劃,造就完美的網站

對大部份企業而言,網站不可能企劃幾個月、建置幾個月、再聘用專職人員維護。因此,前置作業的規劃,精確找出網站的訴求及範疇、謹慎的專案計畫、在每個階段做評估,皆為成功又符合預算的網站專案執行要點。

2004/01/13

Book Review: 老大老二老三

老大老二老三的圖像
本書是作者的二本舊作及一本新作修訂合集而成的。

This book is a must have. It describes the 3 mixed positions using history as example, very fun to read yet it packs with a bag full of political knowledge.

2003/10/07

孫子兵法 十三篇

孫子簡介
孫武孫武─世人專稱孫子,春秋戰國時代齊國人,生於公元前五五七年,卒年不詳,著有兵法共八十二篇,但只有十三篇存世,到目前為止,孫子仍被視為中國史上最具影響力的軍事家。


孫子兵法十三篇著作於約公元前五三六年至公元前五一二年之間,先後出現過百的註譯本,當中被修改或偽作不得其數,現在坊間所見的孫子兵法大都為曹操所註的孟德新書,不過亦有一說法,現在的孫子兵法是由孫武的後裔孫臏所作,不過無論如何孫子兵法絕對是值得人們細心研究的。

始計篇
孫子曰 : 兵者國之大事, 死生之地, 存亡之道, 不可不察也.
故經之以五事, 校之以計, 而索其情 :
一曰道, 二曰天, 三曰地, 四曰將, 五曰法.
道者, 令民與上同意也, 故可與之死, 可與之生, 而不畏危也.
天者, 陰, 陽, 寒, 暑, 時制也.
地者, 遠, 近, 險, 易, 廣, 狹, 死, 生也.
將者, 智, 信, 仁, 勇, 嚴, 也.
法者, 曲制, 官道, 主用也.
凡此五者, 將莫不聞, 知之者勝, 不知者不勝.
故校之以計, 而索其情.
曰 : 主孰有道?
將孰有能?
天地孰得?
法令孰行?
兵眾孰強?
士卒孰練?
賞罰孰明?
吾以此知勝負矣.
將聽吾計, 用之必勝, 留之; 將不聽吾計必敗, 去之.
計利以聽, 乃為之勢, 以佐其外.
勢者, 因利而制權也.
兵者, 詭道也.
故能而示之不能, 用而示之不用, 近而示之遠, 遠而示之近.
利而誘之, 亂而取之.
實而備之, 強而避之.
怒而撓之, 卑而驕之.
佚而勞之, 親而離之,
攻其無備, 出其不意.
此兵家之勝, 不可先傳也.
夫未戰而廟算勝者, 得算多也; 未戰而廟算不勝者, 得算少也. 多算勝, 少算不勝, 而況于無算乎? 吾以此觀之, 勝負見矣.


作戰篇
孫子曰 : 凡用兵之法, 馳車千駟, 革車千乘, 帶甲十萬, 千里饋糧, 內外之費, 賓客之用, 膠漆之材, 車甲之奉, 日費千金, 然後十萬之師舉矣.
其用戰也, 勝. 久則鈍兵挫銳, 攻城則力屈, 久暴師則國用不足.
夫鈍兵挫銳, 屈力殫貨, 則諸侯乘其弊而起, 雖有智者, 不能善其後矣!
故兵聞挫速, 未睹巧之久也. 夫兵久而國利者, 未之有也.
故不盡知用兵之害者, 則不能盡知用兵之利也.
善用兵者, 役不再籍, 糧不三載.
取用于國, 因糧于敵, 故軍食可足也.
國之貧于師者遠輸, 遠輸則百姓貧.
近于師者貴賣, 貴賣則百姓財竭.
財竭則急于丘役, 力屈財殫, 中原內虛于家.
百姓之費, 十去其七, 公家之費, 破車罷馬, 甲冑弓矢, 戟盾蔽櫓, 丘牛大車, 十去其六.
故智將務食于敵, 食敵一鐘, 當吾二十鐘; 萁稈一石, 當吾二十石.
故殺敵者, 怒也; 取敵之利者, 貨也.
故車戰, 得車十乘以上, 賞其先得者, 而更其旌旗. 車, 雜而乘之. 卒, 善而養之, 是謂勝敵而益強.
故兵貴勝, 不貴久.
故知兵之將, 民之司命, 國家安危之主也.


謀攻篇
孫子曰 : 凡用兵之法, 全國為上, 破國次之; 全軍為上, 破軍次之; 全旅為上, 破旅次之; 全卒為上, 破卒次之; 全伍為上, 破伍次之.
是故百戰百勝, 非善之善者也, 不戰而屈人之兵, 善之善者也.
故上兵伐謀, 其次伐交, 其次伐兵, 其下攻城;
攻城之法, 為不得已. 修櫓 , 具器械, 三月而後成; 距 , 又三月而後已; 將不勝其忿, 而又蟻附之,, 殺士三分之一, 而城不拔者, 此攻之災也.
故善用兵者, 屈人之兵, 而非戰也; 拔人之城, 而非攻也; 毀人之國, 而非久也; 必以全爭于天下, 故兵不頓, 而利可全, 此謀攻之法也.
故用兵之法, 十則圍之, 五則攻之, 倍則分之, 敵則能戰之, 少則能守之, 不若則能避之.
故小敵之堅, 大敵之擒也.
夫將者, 國之輔也, 輔周則國必強, 輔隙則國比弱.
故君之所以患于軍者三 : 不知軍之不可以進, 而謂之進;
不知軍之不可以退, 而謂之退, 是謂縻軍.
不知三軍之事, 而同三軍之政, 則軍士惑矣.
不知三軍之權, 而同三軍之任, 則軍士疑矣. 三軍既惑且疑, 則諸侯之難至矣, 是謂亂軍引勝.
故知勝有五 : 知可以與戰, 不可以與戰者勝;
識眾寡之用者勝; 上下同欲者勝; 以虞待不虞者勝;
將能而君不御者聲; 此五者知勝之道也.
故曰 : 知彼知己, 百戰不殞; 不知彼而知己, 一勝一負; 不知彼不知己, 每戰必殞.


形篇





「孫子」の竹簡が出土した銀雀山漢墓の復元遺構=山東省臨沂市で
孫子曰 : 昔之善戰者, 先為不可勝, 以待敵之可勝. 不可勝在己, 可勝在敵. 故善戰者, 能為不可勝, 不能使敵必可勝.
故曰 : 勝可知而不可為.
不可勝者, 守也; 可勝者, 攻也. 守則不足, 攻則有余.
善守者藏于九地之下; 善攻者動于九天之上, 故能自保而全勝也.
見勝不過眾人之所知, 非善之善者也. 戰勝而天下曰善, 非善之善者也;
故舉秋毫不為多力; 見日月不為明目; 聞雷霆不為聰耳.
古之所謂善戰者, 勝易勝者也. 故善戰者之勝也, 無智名, 無勇功.
故其戰勝不忒, 不忒者, 其所措必勝, 勝已敗者也.
故善戰者, 立于不敗之地, 而不失敵之敗也.
是故勝兵先勝而後求戰, 敗兵先戰而後求勝.
善用兵者, 修道而保法, 故能為勝敗之政.
兵法 : 一曰度, 二曰量, 三曰數, 四曰稱, 五曰勝.
地生度, 度生量, 量生數, 數生稱, 稱生勝.
故勝兵若以鎰稱銖, 敗兵若以銖稱鎰.
勝者之戰人也, 若決稱水于千仞之溪者, 形也.


勢篇
孫子曰 : 凡治眾如治寡, 分數是也. 斗眾如斗寡, 形名是也.
三軍之眾; 可使必受敵而無敗者, 奇正是也.
兵之所加, 如以 投卵者, 虛實是也.
凡戰者, 以正合, 以奇勝.
故善出奇者, 無窮如天地, 不竭若江河. 終而復始, 日月是也; 死而復生, 四時是也.
聲不過五; 五聲之變, 不可勝聽也. 色不過五; 五色之變, 不可勝觀也. 味不過五; 五味之變, 不可勝嘗也.
戰勢不過奇正; 奇正之變, 不可勝窮也. 奇正相生, 如循環之無端, 孰能窮之?
激水之疾, 至于漂石者, 勢也. 鷙鳥之疾, 至于毀折者, 節也. 是故善戰者, 其勢險, 其節短. 勢如 弩, 節如發機.
紛紛紜紜, 斗亂而不可亂也; 渾渾沌沌, 形圓而不可敗也.
亂生于治, 怯生于勇, 弱生于強.
治亂, 數也; 勇怯, 勢也; 強弱, 形也.
故善動敵者, 形之, 敵必從之; 予之, 敵必取之; 以利動之, 以卒待之.
故善戰者, 求之于勢, 不貴于人, 故能擇人而任勢.
任勢者, 其戰人也, 如轉木石; 木石之性, 安則靜, 危則動, 方則止, 圓則行. 故善戰人之勢, 如轉圓石于千仞之山者, 勢也.


虛實篇
孫子曰 : 凡先處戰地而待敵者佚, 後處戰地而趨戰者勞; 故善戰者, 致人, 而不致于人.
能使敵人自至者, 利之也; 能使敵人不得至者, 害之也.
故敵佚能勞之, 飽能飢之, 安能動之.
出其所不趨, 趨其所不意. 行千里而不勞者, 行于無人之地也.
攻而必取之者, 攻其所不守也. 守而必固者, 守其所不攻也.
故善攻者, 敵不知其所守; 善守者, 敵不知其所攻.
微乎微乎, 至于無形; 神乎神乎, 至于無聲, 故能為敵之司命.
進而不可御者, 沖其虛也; 退而不可追者, 速而不可及也.
故我欲戰, 敵雖高壘深溝, 不得不與我戰者, 攻其所必救也.
我不欲戰, 畫地而守之, 敵不得與我戰者, 乖其所之也.
故形人而我無形, 則我專而敵分.
我專為一, 敵分為十, 是以十攻其一也, 則我眾而敵寡, 能以眾擊寡者, 則我之所與戰者約矣.
吾所與戰之地不可知, 不可知, 則敵所備者多, 敵所備者多, 則吾所與戰者寡矣.
故備前則後寡, 備後則前寡, 備左則右寡, 備右則左寡, 無所不備, 則無所不寡. 寡者, 備人者也; 眾者, 使人備己者也.
故知戰之地, 知戰之日, 則可千里而會戰. 不知戰地, 不知戰日, 則左不能救右, 右不能救左, 前不能救後, 後不能救前, 而況遠者數十里, 近者數裡乎?
以吾度之, 越人之兵雖多, 亦奚益于勝敗哉? 故曰, 勝可為也; 敵雖眾, 可使無斗.
故策之而知得失之計, 作之而知動靜之理, 形之而知死生之地, 角之而知有余不足之處.
故形兵之極至于無形, 無形則深間不能窺, 智者不能謀.
因形而措勝于眾, 眾不能知. 人皆知我所以勝之形, 而莫知我所以制勝之形. 故其戰勝不復, 而應形于無窮.
夫兵形象水, 水之行, 避高而趨下; 兵之形, 避實而擊虛.
水應地而制流; 兵因敵而制勝. 故兵無常勢, 水無常形, 能因敵變化而取勝者, 謂之神.
故五行無勝, 四時無常位, 日有短長, 月有生死.


軍爭篇
孫子曰 : 凡用兵之法, 將受命于君. 合軍聚眾, 交和而舍, 莫難于軍爭.
軍爭之難者, 以迂為者直, 以患為利.
故迂其途, 而誘之以利, 后人發, 先人至, 此知迂直之計者也.
故軍爭為利, 軍爭為危. 舉軍而爭利, 則不及; 委軍而爭利, 則輜重捐.
是故卷甲而趨, 日夜不處, 倍道兼行, 百里而爭利, 則擒三將軍.
勁者先, 疲者後, 其法十一而至.
五十里而爭利, 則蹶上將軍, 其法半至.
三十里而爭利, 則三分之二至.
是故軍無輜重則亡, 無糧食則亡, 無委積則亡.
故不知諸侯之謀者, 不能豫交; 不知山林險阻沮澤之形者, 不能行軍; 不用鄉導者, 不能得地利.
故兵以詐立, 以利動, 以分和為變者也.
故其疾如風, 其徐如林, 侵掠如火, 不動如山, 難知如陰, 動如雷霆.
掠鄉分眾, 廓地分利, 懸權而動.
先知迂直之計者勝, 此軍爭之法也.
軍政曰 : 言不相聞, 故為鼓鐸; 視不相見, 故為旌旗.
夫金鼓旌旗者, 所以一民之耳目也.
民既專一, 則勇者不得獨進, 怯者不得獨退, 此用眾之法也.
故夜戰多火鼓, 晝戰多旌旗, 所以變人之耳目也.
故三軍可奪氣, 將軍可奪心. 是故朝氣銳, 晝氣惰, 暮氣歸.
善用兵者, 避其銳氣, 擊其惰歸, 此治氣者也.
以治待亂, 以靜待嘩, 此治心者也.
以近待遠, 以佚待勞, 以飽待飢, 此治力者也.
無邀正正之旗, 無擊堂堂之陣, 此治變者也.
故用兵之法, 高陵勿向, 背邱勿逆, 佯北勿從, 銳卒勿攻, 餌兵勿食, 歸師勿遏, 圍師必闕, 窮寇勿迫, 此用兵之法也.


九變篇
孫子曰 : 凡用兵之法, 將受命于君, 合軍聚眾.
圮地無舍, 衢地交合, 絕地無留, 圍地則謀, 死地則戰.
途有所不由, 軍有所不擊, 城有所不攻, 地有所不爭, 君命有所不受.
故將通于九變之利者, 知用兵矣.
將不通于九變之利者, 雖知地形, 不能得地之利矣.
治兵不知九變之術, 雖知五利, 不能得人之用矣.
是故智者之慮, 必雜于利害, 雜于利而務可信也, 雜于害而患可解也.
是故屈諸侯者以害, 役諸侯者以業, 趨諸侯者以利.
故用兵之法, 無恃其不來, 恃吾有以待也; 無恃其不攻, 恃吾有所不可攻也.
故將有五危 : 必死, 可殺也; 必生, 可虜也; 忿速, 可侮也; 廉潔, 可辱也; 愛民, 可煩也. 凡此五者, 將之過也, 用兵之災也.
覆軍殺將, 必以五危, 不可不察也.


行軍篇
孫子曰 : 凡處軍向敵, 絕山依谷, 視生處高, 戰隆無登, 此處山之軍也.
絕水必遠水, 客絕水而來, 勿迎之于水內, 令半渡而擊之, 利.
欲戰者, 無附于水而迎客, 視生處高, 無迎水流, 此處水上者軍也.
絕斥澤, 惟及去無留, 若交軍于斥澤之中, 必依水草, 而背眾樹, 此處斥澤之軍也.
平陸處易, 而右背高, 前死後生, 此處平陸之軍也.
凡此四軍之利, 黃帝之所以勝四帝也.
凡軍喜高而惡下, 貴陽而賤陰, 養生而處實, 軍無百疾, 是謂必勝.
丘陵隄防, 必處其陽, 而右背之, 此兵之利, 地之助也.
上雨, 水沫至, 欲涉者, 待其定也.
凡地有絕澗, 天井, 天牢, 天羅, 天陷, 天隙, 必及去之, 勿近也.
吾遠之, 敵近之; 吾迎之, 敵背之.
軍旁有險阻蔣潢, 井生葭葦, 山林 薈必謹覆索之, 此伏奸之所藏也.
敵近而靜者, 恃其險也; 遠而挑戰者, 欲人之進也.
其所居易者, 利也.
眾樹動者, 來也; 眾草多障者, 疑也;
鳥起者, 伏也; 獸駭者, 覆也;
塵高而銳者, 車來也; 卑而廣者, 徒來也; 散而絛達者, 樵採也; 少而往來者, 營軍也.
辭卑而益備者, 進也; 辭強而進驅者, 退也;
輕車先出居其側者, 陳也; 無約而請和者, 謀也;
奔走而陳兵者, 期也; 半進半退者, 誘也;
倚仗而立者, 飢也; 汲而先飲者, 渴也; 見利而不進者, 勞也;
鳥集者, 虛也; 夜呼者, 恐也; 軍擾者, 將不重也; 旌旗動者, 亂也;
吏怒者, 倦也; 粟馬肉食, 軍無懸瓶, 不返其舍者, 窮寇也;
諄諄翕翕, 徐言入入者, 失眾也; 屢賞者, 窘也; 數罰者, 困也.
先暴而後畏其眾者, 不精至也; 來委謝者, 欲休息也;
兵怒而相迎, 久而不合, 又不解去, 必謹察之.
兵非益多也, 惟無武進, 足以並力料敵, 取人而已.
夫惟無慮而易敵者, 必擒于人.
卒未親附而罰之, 則不服, 不服則難用也; 卒已親附, 而罰不行, 則不可用也.
故令之以文, 齊之以武, 是謂必取.
令素行以教其民, 則民服; 令不素行, 以教其民, 則民不服.
令素信著者, 與眾相得也.


地形篇
《孫子參同》明萬曆四十八年(1620)松筠館雙色套印本孫子曰 : 地形有通者, 有掛者, 有支者, 有隘者, 有險者, 有遠者.
我可以往, 彼可以來, 曰通; 通形者, 先居高陽, 利糧道, 以戰則利.
可以往, 難以返, 曰掛; 掛形者, 敵無備, 出而勝之; 敵若有備, 出而不勝, 難以返, 不利.
我出而不利, 彼出而不利, 曰支; 支形者, 敵雖利我, 我無出也; 引而去, 令敵半出而擊之, 利.
隘形者, 我先居之, 必盈之以待敵; 若敵先居之, 盈而勿從, 不盈而從之.
險形者, 我先居之, 必居高陽以待敵; 若敵先居之, 引而去之, 勿從也.
遠形者, 勢均難以挑戰, 戰而不利.
凡此六者, 地之道也, 將之至任, 不可不察也.
故兵有走者, 有弛者, 有陷者, 有崩者, 有亂者, 有北者, 凡此六種, 非天之災, 將之過也.
夫勢均, 以一擊十, 曰走. 足強吏弱, 曰弛; 吏強卒弱, 曰陷;
大吏怒而不服, 遇敵懟而自戰, 將不知其能, 曰崩.
將弱不嚴, 教道不明, 吏卒無常, 陳兵縱橫, 曰亂.
將不能料敵, 以少合眾, 以弱擊強, 兵無選鋒, 曰北.
凡此六者, 敗之道也, 將之至任, 不可不察也.
夫地形者, 兵之助也. 料敵制勝, 計險厄遠近, 上將之道也.
知此而用戰者, 必勝; 不知此而用戰者, 必敗.
故戰道必勝, 主曰無戰, 必戰可也; 戰道不勝, 主曰必戰, 無戰可也.
故進不求名, 退不避罪, 唯民是保, 而利合于主, 國之寶也.
視卒如嬰兒, 故可于之赴深溪; 視卒如愛子, 故可于之俱死.
厚而不能使, 愛而不能令, 亂而不能治, 譬如驕子, 不可用也.
知吾卒之可以擊, 而不之敵之不可擊, 勝之半也;
知敵之可擊, 而不知吾卒之不可以擊, 勝之半也;
知敵之可擊, 知吾卒之可以擊, 而不知地形之不可以戰, 勝之半也.
故知兵者, 動而不迷, 舉而不窮.
故曰 : 知彼知己, 勝乃不殞; 知地知天, 勝乃可全.


九地篇
孫子曰 : 用兵之法, 有散地, 有輕地, 有爭地, 有交地, 有衢地, 有重地, 有圮地, 有圍地, 有死地.
諸侯自戰其地, 為散地; 入人之地, 而不深者, 為輕地;
我得則利, 彼得亦利者, 為爭地; 我可以往, 彼可以來者, 為交地;
諸侯之地三屬, 先至而得天下之眾者, 為衢地;
入人之地深, 背城邑多者, 為重地;
行山林, 險阻, 沮澤, 凡難行之道者, 為圮地;
所由入者隘, 所從歸者迂, 彼寡可以擊吾之眾者, 為圍地;
疾戰則存, 不疾戰則亡者, 為死地.
是故散地則無以戰, 輕地則無止, 爭地則無攻,
交地則無絕, 衢地則合交, 重地則掠,
圮地則行, 圍地則謀, 死地則戰.
所謂古之善用兵者, 能使敵人前後不相及, 眾寡不相恃, 貴賤不相救, 上下不相扶, 卒離而不集, 兵合而不齊.
合于利而動, 不合于利而止.
敢問敵眾整而將來, 待之若何? 曰 : 先奪其所愛, 則聽矣.
兵之情主速, 乘人之不及, 由不虞之道, 攻其所不戒也.
凡為客之道, 深入則專, 主人不克; 掠于饒野, 三軍足食,
謹養而勿勞, 並氣積力, 運兵計謀, 為不可測.
投之無所往, 死且不北, 死焉不得? 士人盡力.
兵士甚陷則不懼, 無所往則固, 深入則拘, 不得已則斗.
是故其兵不修而戒, 不求而得, 不約而親, 不令而信,
禁祥去疑, 至死無所之.
吾士無余財, 非惡貨也; 無余命, 非惡壽也.
令發之日, 士卒坐者涕霑襟, 偃臥者涕交頤, 投之無所往者, 諸劌之勇也.
故善用兵, 譬如率然. 率然者, 常山之蛇也. 擊其首, 則尾至; 擊其尾, 則首至; 擊其中, 則首尾俱至.
敢問兵可使如率然乎? 曰可. 夫吳人與越人相惡也, 當其同舟而濟遇風, 其相救也, 如左右手.
是故方馬埋輪, 未足恃也;
齊勇若一, 政之道也; 剛柔皆得, 地之理也.
故善用兵者, 攜手若使一人, 不得已也.
將軍之事, 靜以幽, 正以治; 能愚士卒之耳目, 使之無知.
易其事, 革其謀, 使人無識; 易其居, 迂其途, 使人不得慮.
帥與之期, 如登高而去其梯; 帥與之深入諸侯之地, 而發其機.
焚舟破釜; 若驅群羊, 驅而往, 驅而來, 莫知所之.
聚三軍之眾, 投之于險, 此謂將軍之事也.
九地之變, 屈伸之利, 人情之理, 不可不察也.
凡為客之道, 深則專, 淺則散.
去國越境而師者, 絕地也; 四達者, 衢地也; 入深者, 重地也;
入淺者, 輕地也; 背固前隘者, 圍地也; 無所往者, 死地也.
是故散地吾將一其志; 輕地吾將使之屬; 爭地吾將趨其後;
交地吾將謹其守; 衢地吾將固其結; 重地吾將繼其食;
圮地吾將進其涂; 圍地吾將塞其闕; 死地吾將示之以不活.
故兵之情, 圍則御, 不得已則斗, 過則從.
是故不知諸侯之謀者, 不能預交; 不知山林險阻沮澤之形者, 不能行軍; 不用鄉導者, 不能得地利.
四五者, 不知一, 非霸王之兵也.
夫霸王之兵, 伐大國, 則其眾不得眾; 威加于敵, 則其交不得合.
是故不爭天下之交, 不養天下之權, 信己之私, 威加于敵, 故其城可拔, 其國可墮.
施無法之賞, 懸無政之令, 犯三軍之眾, 若使一人.
犯知以事, 勿告以言; 犯之以利, 勿告以害.
投之亡地然後存, 陷之死地然後生. 夫眾陷于害, 然後能為勝敗.
故為兵之勢, 在于順佯敵之意, 並敵一向, 千里殺將, 此謂巧能成事者也.
是故政舉之日, 夷于廊廟之上, 以誅其事, 敵人開闔, 必及入之.
先其所愛, 微與之期; 踐墨隨敵, 以決戰事.
是故使如處女, 敵人開戶; 後如脫兔, 敵不及拒.


火攻篇
孫子曰 : 凡火攻有五 : 一曰火人, 二曰火積, 三曰火輪, 四曰火庫, 五曰火隊.
行火必有因, 煙火必素具, 發火有時, 起火有日.
時者, 天之燥也; 日者, 宿在箕, 壁, 翼, 軫也. 凡此四宿者, 風起之日也.
凡火攻, 必因五火之變而應之.
火發于內, 則早應之于外. 火發而其兵靜者, 待而勿攻.
極其火力, 可從而從之, 不可從而止.
火可發于外, 無待于內, 以時發之. 火發上風, 無攻下風.
晝風久, 夜風止. 凡軍必知有五火之變, 以數守之.
故以火佐攻者明; 以水佐攻者強. 水可以絕, 不可以奪.
夫戰勝攻取, 而不修其攻者凶, 命曰費留. 故曰明主慮之, 良將修之.
非利不動, 非得不用, 非危不戰.
主不可以怒而興師, 將不可以慍而致戰. 合于利而動, 不合于利而止.
怒可以復喜, 慍可以復悅, 亡國不可以復存, 死者不可以復生.
故明君慎之, 良將警之, 此安國全軍之道也.



用間篇
孫子曰 : 凡興師十萬, 出兵千里, 百姓之費, 公家之奉, 日費千金. 內外騷動, 怠于道路, 不得操事者, 七十萬家.
相守數年, 以爭一日之勝, 而愛爵祿百金, 不知敵之情者, 不仁之至也, 非人之將也, 非主之佐也, 非勝之主也.
故明君賢將, 所以動而勝人, 成功出于眾者, 先知也.
先知者, 不可取于鬼神, 不可象于事, 不可驗于度, 必取于人, 之敵之情者也.
故用間有五 : 有因間, 有內間, 有反間, 有死間, 有生間.
五間俱起, 莫知其道, 是謂神紀, 人君之寶也.
因間者, 因其鄉人而用之. 內間者, 因其官人而用之.
反間者, 因為其敵間而用之.
死間者, 為誑事于外, 令吾間知之, 而傳于敵. 生間者, 反報也.
故三軍之親, 莫親于間, 賞莫厚于間, 事莫密于間.
非聖智不能用間, 非仁義不能使間, 非微妙不能得間之實.
微哉微哉! 無所不用間也.
間事未發而先聞者, 間與所告者皆死.
凡軍之所欲擊, 城之所欲攻, 人之所欲殺, 必先知其守將, 左右, 謁者, 門者, 舍人之姓名, 令吾間必索知之.
必索敵人之間來間我者, 因而利之, 導而舍之, 故反間可得而用也.
因是而知之, 故因間內間, 可得而使也.
因是而知之, 故死間為誑事, 可使告敵;
因是而知之, 故生間可使如期.

Mercury簡易改裝

有同好有一樣的困擾 - 如何使用自己的data logging軟體,因此寫了這篇來分享我的簡易改裝。 Background 雲豆子 MERCURY roaster 烘豆機的設計是使用自行開發的軟體,來:1. 操控風門/火力; 2. data logging/自動烘焙。 ...