2009年11月30日 星期一

繁轉簡Function

繁體轉簡體Function
//做法一:此做法會將BIG5轉為GBK並對應到簡體字
function Big5_To_GB(BIG5Str: String): AnsiString;
var
Len: Integer;
pBIG5Char: PChar;
pGBCHSChar: PChar;
pGBCHTChar: PChar;
pUniCodeChar: PWideChar;
begin
//String -> PChar
pBIG5Char := PChar(BIG5Str);
Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//Big5 -> UniCode
MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pGBCHTChar,Len*2);
GetMem(pGBCHSChar,Len*2);
ZeroMemory(pGBCHTChar,Len*2);
ZeroMemory(pGBCHSChar,Len*2);
//UniCode->GB CHT
WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
//GB CHT -> GB CHS
LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
Result := String(pGBCHSChar);
FreeMem(pGBCHTChar);
FreeMem(pGBCHSChar);
FreeMem(pUniCodeChar);
end;

//作法二:此做法會將BIG5轉為GBK但會對應到GBK的繁體字
function Big52Gb(Str: string): string;
begin
Str:=UnicodeDecode(UnicodeEncode(Str,950),936);
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_SIMPLIFIED_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
end;

function Gb2Big5(Str: string): string;
begin
SetLength(Result,Length(Str));
LCMapString(GetUserDefaultLCID,LCMAP_TRADITIONAL_CHINESE,
PChar(Str),Length(Str),
PChar(Result),Length(Result));
Result:=UnicodeDecode(UnicodeEncode(Result,936),950);
end;

function UnicodeDecode(Str: WideString; CodePage: integer): string;
var
Len:integer;
begin
Len:=Length(Str)*2+1; //one for #0
SetLength(Result,Len);
Len:=WideCharToMultiByte(CodePage,0,PWideChar(Str),-1,PChar(Result),Len,nil,nil);
SetLength(Result,Len-1);
end;

function UnicodeEncode(Str: string; CodePage: integer): WideString;
var
Len:integer;
begin
Len:=Length(Str)+1;
SetLength(Result,Len);
Len:=MultiByteToWideChar(CodePage,0,PChar(Str),-1,PWideChar(Result),Len);
SetLength(Result,Len-1); //end is #0
end;



2009年11月19日 星期四

資料庫瘦及SQL執行WINDOW指令

以下為資料庫瘦身範例指令 BACKUP LOG QRSDB WITH NO_LOG
DBCC SHRINKFILE('QRSDB_DATA', 1)
DBCC SHRINKFILE('QRSDB_Log', 1)


以下為由SQL Query Analyzer執行WINDOW指令範例
declare @cmd varchar(255)
set @cmd = 'net use \\AP-SERVER samtek /user:administrator'
exec master..xp_cmdshell @cmd
set @cmd = 'DEL /Q \\AP-SERVER\DB_BAK\*.*'
exec master..xp_cmdshell @cmd
set @cmd = 'XCopy /S /K /Y /F D:\DB_BAK\*.* \\AP-SERVER\\DB_Bak\'
exec master..xp_cmdshell @cmd

note:1.執行檔須放在SQL SERVER主機下
2.可將SQL SCRIPT放入SQL排程內定期執行

2009年11月17日 星期二

按鍵精靈簡易做法

以下為簡易按鍵精靈之做法
var h, npad:HWND;
begin
//以工作管理員所顯示之工作名稱取得程式焦點
Npad := FindWindow(nil, pansichar('ITEMNEW - 記事本') );
if npad <> 0 then begin
h:=ChildWindowFromPoint(npad,Point(10,10));
if h <> 0 then begin
BringWindowToTop(Npad); //使其成為focus之window
//將按鍵訊息送給程式
//SendMessage(h, WM_SETTEXT,9,18);
//PostMessage(H, WM_KEYDOWN, VK_RETURN, 0);
//PostMessage(H, WM_KEYDOWN, VK_end, 0);
//PostMessage(H, WM_KEYDOWN, VK_delete, 0);
//PostMessage(H, WM_KEYDOWN, VK_down, 0);
PostMessage(H, WM_KEYDOWN, VK_F3, 0);
end;
end;
end;

最後在將上方之執行程序放到Timmer元件直行即可自動執行

2009年11月16日 星期一

DELPHI EXE檔傳參數做法

以下簡單介紹EXE傳參數做法
參考資料
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=30437
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=48406
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=89679
接參數
var
aParam1,aParam2,aParam3:string;

在FormCreate時接參數
ShowMessage(IntToStr(ParamCount)); //取得參數個數
aParam1:=ParamStr(1);//第一個參數
aParam2:=ParamStr(2);//第二個參數
aParam3:=ParamStr(3);//第三個參數

傳參數(可寫成BAT檔或直接在COMMAND視窗下執行)
;執行檔案名稱/第一個參數/第二個參數/第三個參數
PrjLF_TrnDATA SAL 20091001 20091031

2009年8月4日 星期二

安裝MS SQL Server時發生 效能計數器登錄區一致性 的錯誤

參考網址:安裝MS SQL Server時發生 效能計數器登錄區一致性 的錯誤
在重複安裝MS SQL Server 2008的時候就會發生Performance Monitor Counter Requirement Error(效能計數器登錄區一致性)的錯誤,demo之前的方法是直接重灌,反正自己的電腦沒啥差,但是在這2009的第一天我實在很不想重灌,所以不再使用迴避的方法去處理,以下就是處理的過程,應該可以幫助使用者不再遇到這種鬼問題。
1.我們在執行打上regedit.exe按下確定開啟登錄編輯程式
2.然後我們依序找下去:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
3.你會看到在Preflib下面有004和009兩個資料夾先點004進去
4.點進去後會看到Counter和Help兩各名稱先點Counter兩下開啟
4-1.點開004→Counter→滑鼠左鍵兩下→拉到最後→看最後的數字
4-2.點開009→Counter→滑鼠左鍵兩下→拉到最後→看最後的數字
5.比較004和009的數字那個比較大(本範例就是4548)
6.改點進上一層的Perflib然後對Last Counter按滑鼠右鍵選擇修改
7.選擇十進位後把數值資料輸入最大的值(本範例為4548)
8.然後請依照上述步驟比對004和009的Help的最大值後修改Last Help的數值,再來您就可以正確的安裝MS SQL Server至您的電腦了

2009年7月21日 星期二

.NET 非對稱式加密與數位簽章程式設計入門

以下文章參考出處:.NET 非對稱式加密與數位簽章程式設計入門
簡介

這裡不打算講太多加解密的原理,我想,對這篇文章有興趣的人,對於雜湊演算法(hashing algorithm,如:SHA-1)、對稱式加密(如:DES、AES)、非對稱式加密(如:RSA 演算法)、公開金鑰(public key)、私密金鑰(private key)等應該多少都有一點概念吧。當然,在說明程式如何實作之前,還是會帶到一些關鍵的概念與原理,否則光看程式碼而不知其所以然,等到實際應用時恐怕還是不知從何著手。

基本上,數位簽章是基於非對稱式加密的技術,而目前較常用的非對稱式加密方法,則是 RSA 演算法。就實務面的應用而言,你可以不用了解非對稱式加密技術是怎麼來的,但至少要知道以下規則:

1. 私密金鑰必須妥善保存,絕不可外洩;公開金鑰可對外公開,任何人都能取得。
2. 使用公開金鑰加密的資料只有對應的私鑰可解,使用私密金鑰加密的資料只有對應的公開金鑰能解。

基於上述特性,非對稱式加密方法非常適合用於許多需要加密和驗證資料完整性的場合。比如說,Alice 想要寫一封情書給隔壁班的 Bob,並拜託中間人 Eve 轉交給他,可是 Alice 擔心 Eve 會偷看情書的內容,此時她就可以將情書內容用 Bob 的公開金鑰(以下簡稱公鑰)加密;基於前述第 2 項特性,因此只有 Bob 能夠用他的私密金鑰(以下簡稱私鑰)解密。由於 Eve 沒有 Alice 的私密金鑰,因此她無法窺得原文,而且,就算 Eve 花再多時間,也很難在有生之年解開這段密文。

接著就來看看如何使用 .NET Framework 提供的類別實作非對稱式加密和解密。

註:在舉例說明加解密的應用情境時,經常會看到 Alice 和 Bob 這兩個人名,這已經成了慣例。
使用公鑰加密,私鑰解密

.NET Framework 提供的加解密類別全都放在 System.Security.Cryptography 命名空間裡,因此以下的範例程式都必須引用此命名空間。以下示範以 RSA 演算法來實作非對稱式加解密:



1 // 建立 RSA 加解密物件。

2 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

3

4 // 欲加密的原文。

5 string orgText = "Hello, 密碼學!";

6

7 // 加密。

8 byte[] orgData = Encoding.Default.GetBytes(orgText);

9 byte[] encryptedData = rsa.Encrypt(orgData, false);

10

11 // 解密。

12 byte[] decryptedData = rsa.Decrypt(encryptedData, false);
13 string decryptedText = Encoding.Default.GetString(decryptedData);


這段範例是把加密和解密的動作一次做完,當然實際上並不會這樣寫,通常是先將資料加密之後,傳送至目標,目標在收到密文之後才做解密的動作。這裡只是為了讓程式儘可能簡單,並且讓你一次看到全貌。

注意範例程式中的第 2 行,它會建立一個 RSACryptoServiceProvider 的物件,而且在建立物件時,就已經產生一對公鑰跟私鑰,在後續的加解密動作時,就是直接使用這對金鑰,因此你不會覺得需要對公鑰私鑰做什麼特別的處理。不過,當你將加密和解密的動作拆開時,就會碰到傳遞金鑰的問題。你可以想像一下,Alice 若要將密文傳給 Bob,而且希望只有 Bob 能看解開,她就必須使用 Bob 的公開金鑰來加密。因此在實作時,程式必須先產生 Bob 的金鑰,並將公鑰儲存在可任意存取的地方,以便加密時使用。

接著就來修改前面的範例,把加密和解密動作拆開。首先,在 Visual Studio 2005 中建立一個 Windows Forms 專案,然後在 form 上面放兩個 TextBox 和兩個 Button,其個別命名與用途如下:

* btnEncrypt:執行加密動作的按鈕。
* btnDecrypt:執行解密動作的按鈕。
* txtEncrypted:用來顯示加密的結果。
* txtDecrypted:用來顯示解密的結果。

我們需要先建立接收者的金鑰,這個動作就放在 form1 的 Load 事件中完成,而 btnEncrypt 和 btnDecrypt 按鈕的事件處理程序則分別處理資料的加密和解密。以下是修改後的完整原始碼:

1 using System;

2 using System.Collections.Generic;

3 using System.ComponentModel;

4 using System.Data;

5 using System.Drawing;

6 using System.Text;

7 using System.Windows.Forms;

8 using System.Security.Cryptography;

9

10 namespace AsymmetricEncryptionDemo

11 {

12 public partial class Form1 : Form

13 {

14 public string bobPrivateKey;

15 public string bobPublicKey;

16

17

18 private void Form1_Load(object sender, EventArgs e)

19 {

20 // 產生 Bob 的金鑰對。

21 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

22 bobPrivateKey = rsa.ToXmlString(true);

23 bobPublicKey = rsa.ToXmlString(false);

24 }

25

26 private void btnEncrypt_Click(object sender, EventArgs e)

27 {

28 // 建立 RSA 加解密物件。

29 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

30

31 // 匯入公開金鑰(因為要使用接收者的公鑰加密)。

32 rsa.FromXmlString(bobPublicKey);

33

34 // 欲加密的原文。

35 string orgText = "Hello, 密碼學!";

36

37 // 加密。

38 byte[] orgData = Encoding.Default.GetBytes(orgText);

39 byte[] encryptedData = rsa.Encrypt(orgData, false);

40

41 // 將加密過的文字顯示於 UI。

42 txtEncrypted.Text = Convert.ToBase64String(encryptedData);

43 }

44

45 private void btnDecrypt_Click(object sender, EventArgs e)

46 {

47 // 建立 RSA 加解密物件。

48 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

49

50 // 將私密金鑰匯入 RSA 物件。

51 rsa.FromXmlString(bobPrivateKey);

52

53 byte[] encryptedData = Convert.FromBase64String(txtEncrypted.Text);

54

55 // 解密。

56 byte[] decryptedData = rsa.Decrypt(encryptedData, false);

57 txtDecrypted.Text = Encoding.Default.GetString(decryptedData);

58 }

59 }

60 }

程式的 Form1_Load 事件處理程序(第 18~24 行)會先產生接收者的金鑰對,並將私鑰和公鑰分別保存在變數 bobPrivateKey 和 bobPublicKey 中。這裡我用 RSACryptoServiceProvider 的 ToXmlString 方法將金鑰匯出成 XML 格式的字串,此方法需要一個布林參數,當此參數為 true 時,表示要包含公鑰及私鑰,若為 false 則只傳回公鑰。因此這裡的 bobPrivateKey 其實包含了公鑰與私鑰。

加密和解密的處理過程都加了詳細的註解,應該不用再額外說明了。比較需要特別注意的是第 32 行和第 51 行,從這兩行可以看出加密跟解密時使用的是公鑰還是私鑰。此外,由於加解密的輸入與輸出資料都是 byte 陣列,因此在顯示加密的結果時,會先將資料轉成 Base64 編碼的字串(第 42 行),而在進行解密時,會先將 Base64 編碼的密文轉回 byte 陣列(第 53 行)。
使用私鑰加密,公鑰解密?

測試過公鑰加密、私鑰解密之後,也許你會想嘗試顛倒過來,用訊息發送者的私鑰加密,然後用公鑰解密。

不行,你不能這麼做。當你嘗試修改前面的範例程式碼,將加密和解密時使用的金鑰互相調換,像這樣(只列出有修改的部分):

....(略)
32 rsa.FromXmlString(bobPrivateKey);
....(略)
51 rsa.FromXmlString(bobPubliceKey);

執行時將會出現錯誤訊息:「機碼無效」(英文是 "Invalid Key")。

可是,前面不是才說過,非對稱式加密的基本規則是:「使用公鑰加密的資料只有對應的私鑰可解,而使用私鑰加密的資料只有對應的公鑰能解」?那又為什麼在撰寫程式時,使用私鑰加密會發生錯誤?

仔細想一下,使用公開金鑰加密,並利用私密金鑰解密,這種方式有其實際的應用場合,就像我們前面舉的例子;這種方式主要是用來防止資料被他人窺視。但如果反過來,假設 Alice 是用她自己的私鑰將訊息加密,那麼這段密文只有她的公鑰可解,而公鑰是可以任意散佈的,所以 Bob 也一定能用 Alice 的公鑰將密文解開。問題就在於,Alice 的公鑰任誰都可以取得,因此,不只 Bob,任何第三者只要能截取到該密文,也一定能夠將它解密。這麼一來,人人都可以輕易解密,那還要這種加密方式做什麼?

如果你花點時間思考一下上面的問題,或許會反駁:「不對!這種方式還是有用處。當我希望我發布的訊息不會遭到第三者篡改時,就可以先用我的私鑰將訊息加密,如此一來,別人如果要看訊息原文,就必須用我的公開金鑰解密,如果解密失敗,那就表示這段密文被篡改過了。」

是的,這種方式的確可以防止資料被篡改。不過,RSA 加解密演算法需要複雜的運算,並不適合用來加密大量資料;況且,如果只是要防止資料被篡改,並不需要將整份明文加密,我們需要的是能夠檢查文件是否被篡改的方法,而這個方法,就是接下來要談的數位簽章(digital signature)。
數位簽章

精確地說,數位簽章並不能防止訊息被篡改,而是讓我們能夠判斷訊息是否遭到篡改。那麼,它是如何做到的?首先,訊息傳送者使用雜湊演算法 (hashing algorithm,例如:SHA-1)將明文加以運算,得到一組雜湊值,這組雜湊值有個正式的名稱,叫做「訊息摘要」(message digest)。顧名思義,它就是將原始資料運算之後得到的一小塊摘要資料,這塊摘要資料雖然小,但是卻足以用來驗證原始資料是否遭到篡改。你也可以把訊息摘要想成是原始資料的縮影,但請注意它既非壓縮,也不是原始資料加密的結果;也就是說,你無法將訊息摘要還原成原始資料(因為雜湊函數是單向、不可逆的)。你或許會質疑,兩份不同的文件是否可能產生相同的雜湊值?儘管機率很低,但還是有可能的(因此便可能偽造簽章),如果對此議題有興趣,可以上網找一下關鍵字「加密 雜湊碰撞」,或者直接一點:「SHA-1 被破解」。

舉例來說,假設 Alice 要傳遞一段訊息給 Bob,而且她希望 Bob 收到時,能夠確認該訊息是否遭到篡改,整個處理過程描述如下:

1. Alice 使用雜湊演算法針對該訊息加以運算並產生雜湊值,然後用私鑰將雜湊值加密,以產生簽章,再將這個加密過的簽章連同訊息內容一併傳遞給 Bob。
2. 當 Bob 收到訊息和加密過的簽章,他可以將訊息透過相同的雜湊演算法重新計算雜湊值,然後用 Alice 的公鑰將簽章解密,以取得原有的雜湊值,最後再比對兩個雜湊值,若不相等, 即表示訊息被篡改了。

注意 Alice 必須用私鑰將雜湊值加密,如此一來,就算有第三者從中攔截訊息,並篡改其內容,然後利用雜湊演算法產生一組新的雜湊值,並替換掉原本的雜湊值,也無法達成其偽造訊息的目的。因為 Bob 會先用 Alice 的公鑰將簽章解密,如果簽章被替換過,就無法解密成功,當然 Bob 也就能發現訊息已經遭到篡改了。

我們可以根據前面描述的情境寫一個範例程式,來模擬及測試數位簽章。首先看一下範例程式的執行畫面:

畫面分成上下兩個區塊,上方區塊代表訊息傳送方,也就是 Alice,下方則是 Bob;紅字所標示的,是箭頭所指的控制項名稱。

當 Alice 要傳送訊息給 Bob 時,首先要產生數位簽章,而視窗中的「產生簽章」按鈕就是在做這件事情。簽章產生完畢之後,Alice 將明文、簽章、公開金鑰一併傳送給 Bob,此時再按「驗證簽章」按鈕,以執行驗證的動作。這裡我將 Alice 和 Bob 的行為分別用兩個類別封裝起來,而根據前面的描述可以知道,Alice 需要對文件簽章,並對外公布其公開金鑰,因此 Alice 類別會像這樣:

1 public class Alice

2 {

3 RSACryptoServiceProvider m_Rsa;

4

5 public Alice()

6 {

7 m_Rsa = new RSACryptoServiceProvider(); // 建立 RSA 加密器,並自動建立一組金鑰對。

8 }

9

10 public byte[] HashAnsSign(byte[] dataToSign)

11 {

12 // 使用 SHA1 演算法產生雜湊值,然後產生簽章。

13 return m_Rsa.SignData(dataToSign, new SHA1CryptoServiceProvider());

14 }

15

16 public string PublicKey

17 {

18 get

19 {

20 return m_Rsa.ToXmlString(false); // 傳入 false 代表只傳回公鑰的 XML 字串。

21 }

22 }

23 }

其中 HashAndSign 方法就是用來產生文件簽章,而 PublicKey 屬性則是 Alice 對外界公佈的公開金鑰,其內容格式為 XML 字串。計算雜湊值的演算法是 SHA-1,產生的簽章會是一塊大小為 128 bytes 的二進位資料區塊。

接著,Bob 只要作驗證簽章的動作,其類別定義如下:

1 public class Bob

2 {

3 public bool VerifySignedData(byte[] data, byte[] signature, string publicKey)

4 {

5 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

6 rsa.FromXmlString(publicKey); // 需要用到傳送者(Alice)的公鑰將簽章解密。

7 return rsa.VerifyData(data, new SHA1CryptoServiceProvider(), signature);

8 }

9 }

VerifySignedData 方法接受三個參數,data 是訊息的原始資料,signature 是簽章,publicKey 則是訊息傳送者的公開金鑰。

Alice 和 Bob 物件是在範例程式的視窗載入時就已經建立好。當「產生簽章」按鈕按下時,要執行的處理如下:

1 private void btnSign_Click(object sender, EventArgs e)

2 {

3 byte[] orgData = Encoding.Default.GetBytes(txtOrgData.Text); // 將訊息內容轉成 byte 陣列。

4 byte[] signature = alice.HashAnsSign(orgData); // Alice 產生數位簽章。

5

6 txtSignature.Text = Convert.ToBase64String(signature); // 將數位簽章的內容轉成 Base64 字串,以便顯示。

7 lblSignedLength.Text = "簽章大小: " + signature.Length.ToString() + " bytes";

8 }

最後是「驗證簽章」按鈕的事件處理程序:

1 private void btnVerifySignedData_Click(object sender, EventArgs e)

2 {

3 byte[] orgData = Encoding.Default.GetBytes(txtOrgData.Text); // 訊息原文

4 byte[] signedData = Convert.FromBase64String(txtSignature.Text); // 簽章資料

5

6 bool ok = bob.VerifySignedData(orgData, signedData, alice.PublicKey);

7 if (ok)

8 {

9 MessageBox.Show("驗證成功!");

10 }

11 else

12 {

13 MessageBox.Show("簽章無效!");

14 }

15 }

以下為執行結果:

如果您也有興趣練習看看,可以下載本文的附件,裡面包含數位簽章範例的完整原始碼。MSDN 網站上也有範例可以參考:http://msdn2.microsoft.com/zh-tw/library/9tsc5d0z(VS.80).aspx,而且你會發現 MSDN 上面的範例跟這裡的有些不同,特別是匯入跟匯出金鑰的部份,我用的是 RSACryptoServiceProvider 的 ToXmlString 和 FromXmlString 方法,它是用 ExportParameters 和 ImportParameters 方法。

另外要說明的是,這裡的數位簽章範例程式只是簡單地示範數位簽章的實作,因此該範例並沒有將訊息加密。實際應用時,如果你希望傳遞的訊息不僅可以防止篡改,而且要避免第三者窺視,也可以再加上前面介紹的公鑰加密、私鑰解密的方法,將訊息用接收者的公鑰加密。如此一來,傳送者和接收者的公鑰及私鑰便都會派上用場,其運作流程如下(Alice 為訊息傳送者,Bob 為接收者):

1. Alice 使用雜湊演算法產生訊息摘要。
2. Alice 用私鑰將訊息摘要加密,以產生數位簽章。
3. Alice 用 Bob 的公鑰將訊息加密。
4. Alice 將加密過的訊息連同簽章一併傳送給 Bob。
5. Bob 用 Alice 的公鑰將簽章解密還原成訊息摘要。
6. Bob 用自己的私鑰將密文解密。
7. Bob 將解密後的資料以雜湊演算法重新計算訊息摘要。
8. Bob 比對步驟 5 跟步驟 7 產生的訊息摘要是否相同,以驗證資料是否遭到篡改。

配著圖看會比較清楚:

小結

這篇文章只是個起點,當你開始動手練習,並參考網路上多種範例之後,就會發現密碼學這塊領域在實作上的細節還挺多的。比如說,你可能會發現這裡的範例程式,每次執行時都會重新產生一對金鑰,可是如果你希望金鑰對只產生一次,存放在你的硬碟裡,以後每次執行時就直接取用先前建立的金鑰對,這個問題該如何處理?(你得先了解什麼是「金鑰容器」)或者,你可能會想了解如何實作對稱式加解密,那麼你可以試試 AES(RijndaelManaged 類別)。總之,這塊領域還有很多東西等著我們探索與學習。

2009年7月16日 星期四

關於農曆日期的取得問題

自己可以取得日的天干地支計算,計算方式是以1900/1/1為基底起算日期,取得該日的天干地支序,然後對應取得與欲取得日期所差天數,除以60,但是若要取得月份和年度因為牽涉到各月份日期天數不一,而且可能有潤年和潤月的問題,需取得日期格式如:2005/11/2中式日期為:乙酉年丁亥月庚寅日....
1. 請在此區域輸入程式碼
2. {
3. 主要函数:农历转换成公历
4. 公历转换成农历
5. 计算潮汐时间
6. 求某日有哪些节日,节气
7. 求某日干支
8. 本单元的数据及函数基本上都来自 http://www.21softs.com/ 所提供
9. 的万年历Javaforbidden代码。
10. 潮汐算法主要参考自: <http://www.yuqu.com/haidiao/hai019.htm>
11. 第一次高潮 F1= 0.8 X ((day mod 15) - 1) + 高潮间隙
12. 低潮 F2= F1 + 6:12
13. 第二次高潮 F3= F2 + 12:24 - 6:12
14. Javaforbidden的原作者是台湾的 Sean Lin (林洵賢) <sean@4u.net>
15. 简体中文(作者授权) Sumyou (梅竹松) <bushi@21softs.com>
16. 有关于原代码详细情况,请访问 http://www.21softs.com/
17. 本单元由Mostone.Jiang 业余兴趣所改写
18. 源代码无条件共享,有Bug或是改进,
19. 烦请mail me.
20. Mostone.Jiang 漠石 <mostone@hotmail.com>
21. 2003.04
22. }
23. unit CnBase;
24. interface
25. uses SysUtils, DateUtils, Controls;
26. type
27. THzDate = record //农历日期
28. Year: integer;
29. Month: integer;
30. Day: integer;
31. isLeap: Boolean;
32. end;
33. TGzDate = record //干支日期
34. Year: integer;
35. Month: integer;
36. Day: integer;
37. // FullDate: string; //如:癸未年丙辰月丁巳日
38. end;
39. TCnDate = record //包含数字及干支显示的日期
40. Date: TDate;
41. HzDate: THzDate;
42. GzDate: TGzDate;
43. end;
44. const
45. lunarInfo: array[0..200] of WORD =(
46. $4bd8,$4ae0,$a570,$54d5,$d260,$d950,$5554,$56af,$9ad0,$55d2,
47. $4ae0,$a5b6,$a4d0,$d250,$d295,$b54f,$d6a0,$ada2,$95b0,$4977,
48. $497f,$a4b0,$b4b5,$6a50,$6d40,$ab54,$2b6f,$9570,$52f2,$4970,
49. $6566,$d4a0,$ea50,$6a95,$5adf,$2b60,$86e3,$92ef,$c8d7,$c95f,
50. $d4a0,$d8a6,$b55f,$56a0,$a5b4,$25df,$92d0,$d2b2,$a950,$b557,
51. $6ca0,$b550,$5355,$4daf,$a5b0,$4573,$52bf,$a9a8,$e950,$6aa0,
52. $aea6,$ab50,$4b60,$aae4,$a570,$5260,$f263,$d950,$5b57,$56a0,
53. $96d0,$4dd5,$4ad0,$a4d0,$d4d4,$d250,$d558,$b540,$b6a0,$95a6,
54. $95bf,$49b0,$a974,$a4b0,$b27a,$6a50,$6d40,$af46,$ab60,$9570,
55. $4af5,$4970,$64b0,$74a3,$ea50,$6b58,$5ac0,$ab60,$96d5,$92e0,
56. $c960,$d954,$d4a0,$da50,$7552,$56a0,$abb7,$25d0,$92d0,$cab5,
57. $a950,$b4a0,$baa4,$ad50,$55d9,$4ba0,$a5b0,$5176,$52bf,$a930,
58. $7954,$6aa0,$ad50,$5b52,$4b60,$a6e6,$a4e0,$d260,$ea65,$d530,
59. $5aa0,$76a3,$96d0,$4afb,$4ad0,$a4d0,$d0b6,$d25f,$d520,$dd45,
60. $b5a0,$56d0,$55b2,$49b0,$a577,$a4b0,$aa50,$b255,$6d2f,$ada0,
61. $4b63,$937f,$49f8,$4970,$64b0,$68a6,$ea5f,$6b20,$a6c4,$aaef,
62. $92e0,$d2e3,$c960,$d557,$d4a0,$da50,$5d55,$56a0,$a6d0,$55d4,
63. $52d0,$a9b8,$a950,$b4a0,$b6a6,$ad50,$55a0,$aba4,$a5b0,$52b0,
64. $b273,$6930,$7337,$6aa0,$ad50,$4b55,$4b6f,$a570,$54e4,$d260,
65. $e968,$d520,$daa0,$6aa6,$56df,$4ae0,$a9d4,$a4d0,$d150,$f252,
66. $d520);
67. solarMonth: array[0..11] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
68. Gan: array[0..9] of string[2] =
69. ('甲','乙','丙','丁','戊'
70. ,'己','庚','辛','壬','癸');
71. Zhi: array[0..11] of string[2] =
72. ('子','丑','寅','卯','辰','巳',
73. '午','未','申','酉','戌','亥');
74. Animals: Array[0..11] of string[2] =
75. ('鼠','牛','虎','兔','龙','蛇'
76. ,'马','羊','猴','鸡','狗','猪');
77. solarTerm: Array[0..23] of string[4] =
78. ('小寒','大寒','立春','雨水'
79. ,'惊蛰','春分','清明','谷雨'
80. ,'立夏','小满','芒种','夏至'
81. ,'小暑','大暑','立秋','处暑'
82. ,'白露','秋分','寒露','霜降'
83. ,'立冬','小雪','大雪','冬至');
84. sTermInfo: Array[0..23] of integer =
85. (0,21208,42467,63836
86. ,85337,107014,128867,150921
87. ,173149,195551,218072,240693
88. ,263343,285989,308563,331033
89. ,353350,375494,397447,419210
90. ,440795,462224,483532,504758);
91. nStr1: array[0..10] of string[2] =
92. ('日','一','二','三','四','五'
93. ,'六','七','八','九','十');
94. nStr2: Array[0..4] of string[2] = ('初','十','廿','卅','□');
95. monthName: Array[0..11] of string[3] =
96. ('JAN','FEB','MAR','APR','MAY','JUN'
97. ,'JUL','AUG','SEP','OCT','NOV','DEC');
98. //公历节日 *表示放假日
99. sFtv: Array[0..95] of string =(
100. '0101*新年元旦',
101. '0202 世界湿地日',
102. '0207 国际声援南非日',
103. '0210 国际气象节',
104. '0212 国际足球比赛日',
105. '0214 西方情人节',
106. '0301 国际海豹日',
107. '0303 全国爱耳日',
108. '0308 国际妇女节',
109. '0312 植树节 孙中山逝世纪念日',
110. '0314 国际警察日',
111. '0315 国际消费者权益日',
112. '0317 中国国医节 国际航海日',
113. '0321 世界森林日 消除种族歧视国际日',
114. '0321 世界儿歌日',
115. '0322 世界水日',
116. '0323 世界气象日',
117. '0324 世界防治结核病日',
118. '0325 全国中小学生安全教育日',
119. '0330 巴勒斯坦国土日',
120. '0401 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)',
121. '0407 世界卫生日',
122. '0422 世界地球日',
123. '0423 世界图书和版权日',
124. '0424 亚非新闻工作者日',
125. '0501*国际劳动节',
126. '0504 中国五四青年节',
127. '0505 碘缺乏病防治日',
128. '0508 世界红十字日',
129. '0512 国际护士节',
130. '0515 国际家庭日',
131. '0517 世界电信日',
132. '0518 国际博物馆日',
133. '0520 全国学生营养日',
134. '0523 国际牛奶日',
135. '0531 世界无烟日',
136. '0601*国际儿童节',
137. '0605 世界环境日',
138. '0606 全国爱眼日',
139. '0617 防治荒漠化和干旱日',
140. '0623 国际奥林匹克日',
141. '0625 全国土地日',
142. '0626 国际反毒品日',
143. '0701 中国共产党建党日 世界建筑日',
144. '0702 国际体育记者日 精品推介站(http://www.21softs.com/)正式对外开放纪念日',
145. '0707 中国人民抗日战争纪念日',
146. '0711 世界人口日',
147. '0730 非洲妇女日',
148. '0801 中国建军节',
149. '0808 中国男子节(爸爸节)',
150. '0815 日本正式宣布无条件投降日',
151. '0908 国际扫盲日 国际新闻工作者日',
152. '0910*教师节',
153. '0914 世界清洁地球日',
154. '0916 国际臭氧层保护日',
155. '0918 九·一八事变纪念日',
156. '0920 国际爱牙日',
157. '0927 世界旅游日',
158. '1001*国庆节 世界音乐日 国际老人节',
159. '1001 国际音乐日',
160. '1002 国际和平与民主自由斗争日',
161. '1004 世界动物日',
162. '1008 全国高血压日',
163. '1008 世界视觉日',
164. '1009 世界邮政日 万国邮联日',
165. '1010 辛亥革命纪念日 世界精神卫生日',
166. '1013 世界保健日 国际教师节',
167. '1014 世界标准日',
168. '1015 国际盲人节(白手杖节)',
169. '1016 世界粮食日',
170. '1017 世界消除贫困日',
171. '1022 世界传统医药日',
172. '1024 联合国日 世界发展信息日',
173. '1031 世界勤俭日',
174. '1107 十月社会主义革命纪念日',
175. '1108 中国记者日',
176. '1109 全国消防安全宣传教育日',
177. '1110 世界青年节',
178. '1111 国际科学与和平周(本日所属的一周)',
179. '1112 孙中山诞辰纪念日',
180. '1114 世界糖尿病日',
181. '1117 国际大学生节 世界学生节',
182. '1121 世界问候日 世界电视日',
183. '1129 国际声援巴勒斯坦人民国际日',
184. '1201 世界艾滋病日',
185. '1203 世界残疾人日',
186. '1205 国际经济和社会发展志愿人员日',
187. '1208 国际儿童电视日',
188. '1209 世界足球日',
189. '1210 世界人权日',
190. '1212 西安事变纪念日',
191. '1213 南京大屠杀(1937年)纪念日!紧记血泪史!',
192. '1221 国际篮球日',
193. '1224 平安夜',
194. '1225*圣诞节',
195. '1229 国际生物多样性日');
196. //某月的第几个星期几。 5,6,7,8 表示到数第 1,2,3,4 个星期几
197. wFtv: Array[0..11] of string = (
198. '0110 黑人日',
199. '0150 世界麻风日', //一月的最后一个星期日(月倒数第一个星期日)
200. '0520 国际母亲节',
201. '0530 全国助残日',
202. '0630 父亲节',
203. '0911 劳动节',
204. '0932 国际和平日',
205. '0940 国际聋人节 世界儿童日',
206. '0950 世界海事日',
207. '1011 国际住房日',
208. '1013 国际减轻自然灾害日(减灾日)',
209. '1144 感恩节');
210. //农历节日
211. lFtv: Array[0..10] of string = (
212. '0101*春节',
213. '0115*元宵节 中国情人节',
214. '0202 龙抬头节',
215. '0323 妈祖生辰 (天上圣母诞辰)',
216. '0505*端午节',
217. '0707 七七中国情人节',
218. '0815*中秋节',
219. '0909*重阳节',
220. '1208 腊八节',
221. '1223 灶君(祭灶)节',
222. '0100*除夕');
223. function lYearDays(y: integer): integer; //返回农历 y年的总天数
224. function leapDays(y: integer): integer; //返回农历 y年闰月的天数
225. function leapMonth(y: integer): integer; //返回农历 y年闰哪个月 1-12 , 没闰返回 0
226. function monthDays(y, m: integer): integer; //返回农历 y年m月的总天数
227. function Lunar(objDate: TDate): THzDate; //算出农历, 传入日期控件, 返回农历日期控件
228. function solarDays(y, m: integer): integer; //返回公历 y年m月的天数
229. function cyclical(num: integer): string; //传入 offset 返回干支, 0=甲子
230. function HzLunar(objDate: THzDate): TDate; //算出公历, 传入农历日期控件, 返回公历
231. function ChkHzDate(objDate: THzDate): Boolean; //检查农历日期是否合法
232. function sTerm(y, n: integer): TDateTime; //某年的第n个节气为几日(从0小寒起算)
233. function GetGZ(y, m: integer; objDate: TDate): TGzDate; //求年柱,月柱,日柱(年,月为农历数字,objDate为当天的公历日期)
234. function GetCnDay(objDate: THzDate): string;
235. function GetCnMonth(ObjDate: THzDate): string;
236. function GetCnYear(objDate: THzDate): string;
237. function GetCnWeek(day: TDate): string;
238. //取得潮汐时间 jth: 潮汐间隙小时,jtm: 潮汐间隙分钟
239. function GetZX(HzDay: Integer; zxjx: TTime= 0.42709491898): string;
240. // 指定月分第几个星期几是第几天
241. function Getd0(y, m: Integer; S: string): Integer;
242. // 去除节日列表中的标记,返回以,相隔的字符串
243. procedure ClearJR(S: string; var strSave: string);
244. //取得指定日期的节日
245. function GetDayOfJR(day: TCnDate):string;
246. // 取得指定日期的节气
247. function GetDayOfJQ(day: TDate): string;
248. implementation
249. {*****************************************************************************
250. 日期计算
251. *****************************************************************************}
252. //====================================== 返回农历 y年的总天数
253. function lYearDays(y: integer): integer;
254. var
255. i, sum: integer;
256. begin
257. sum:= 348;
258. i:= $8000;
259. while i > $8 do
260. begin
261. if (lunarInfo[y - 1900] and i) > 0 then Inc(sum);
262. i:= i shr 1;
263. end;
264. Result:= sum + leapDays(y);
265. end;
266. //====================================== 返回农历 y年闰月的天数
267. function leapDays(y: integer): integer;
268. begin
269. if Boolean(leapMonth(y)) then
270. begin
271. if (lunarInfo[y - 1899] and $f) = $f then Result := 30 else Result := 29;
272. end
273. else Result := 0;
274. end;
275. //====================================== 返回农历 y年闰哪个月 1-12 , 没闰返回 0
276. function leapMonth(y: integer): integer;
277. var
278. lm: Word;
279. begin
280. lm:= lunarInfo[y - 1900] and $f;
281. if lm = $f then Result:= 0 else Result:= lm;
282. end;
283. //====================================== 返回农历 y年m月的总天数
284. function monthDays(y, m: integer): integer;
285. var
286. temp1, temp2, temp3: Word;
287. begin
288. temp1:= lunarInfo[y - 1900];
289. temp2:= $8000;
290. if m > 1 then temp2:= $8000 shr (m - 1);
291. // temp2:= $10000 shr (m - 1);
292. temp3:= temp1 and temp2;
293. // if Boolean(temp3) then
294. // if Boolean(lunarInfo[y - 1900] and ($8000 shr (m - 1))) then
295. if temp3 > 0 then
296. Result:= 30
297. else Result:= 29;
298. end;
299. //====================================== 算出农历, 传入日期控件, 返回农历日期控件
300. function Lunar(objDate: TDate): THzDate;
301. var
302. i, leap, temp, offset: integer;
303. begin
304. temp:= yearof(objDate);
305. if (temp < 1901) or (temp > 2100) then exit;
306. offset:= DaysBetween(EncodeDate(1900,1,31),objDate);
307. i:= 1900;
308. while (i < 2100) and (offset > 0) do
309. begin
310. temp:= lYearDays(i);
311. offset:= offset - temp;
312. Inc(i);
313. end;
314. if (offset < 0) then
315. begin
316. offset:= offset + temp;
317. i:= i - 1;
318. end;
319. Result.Year:= i;
320. leap:= leapMonth(i); //闰哪个月
321. Result.isLeap:= False;
322. i:=1;
323. while (i < 13) and (offset > 0) do
324. begin
325. if (leap > 0) and (i = leap + 1) and (Result.isLeap = False) then
326. begin
327. i:= i - 1;
328. Result.isLeap:= True;
329. temp:= leapDays(Result.Year);
330. end else temp:= monthDays(Result.Year, i);
331. if (Result.isLeap = True) and (i = leap + 1) then
332. Result.isLeap:= False;
333. offset:= offset - temp;
334. inc(i);
335. end;
336. if (offset = 0) and (leap > 0) and (i = leap + 1) then
337. begin
338. if Result.isLeap then Result.isLeap:= False
339. else begin
340. Result.isLeap:= True;
341. i:= i - 1;
342. end;
343. end;
344. if offset < 0 then
345. begin
346. offset:= offset + temp;
347. i:= i - 1;
348. end;
349. Result.Month:= i;
350. Result.Day:= offset + 1;
351.
352. end;
353. //=============================== // 求年柱,月柱,日柱
354. //============= 年,月为农历数字,objDate为当天的公历日期
355. function GetGZ(y, m: integer; objDate: TDate): TGzDate;
356. var
357. term: TDate;
358. sy, sm, sd: Word;
359. begin
360. DecodeDate(objDate, sy, sm, sd);
361. term:= sTerm(sy, (sm - 1) * 2); // 当月的节气日期
362. //年柱 1900年立春后为庚子年(60进制36)
363. Result.Year:= sy - 1900 + 36;
364. //依立春日期调整年柱
365. if (sm = 2) and (objDate < term) then
366. Result.Year:= sy - 1900 + 35;
367. //月柱 农历1900年1月小寒以前为 丙子月(60进制12)
368. Result.Month:= (sy - 1900) * 12 + sm + 11;
369. //依节气调整月柱
370. if objDate >= DateOf(term) then Result.Month:= (sy - 1900) * 12 + sm + 12;
371. // 1900/1/1 日柱为甲辰日(60进制10)
372. Result.Day:= DaysBetween(EncodeDate(1900,1,1),objDate) + 10;
373. end;
374. //====================================== 算出公历, 传入农历日期控件, 返回公历
375. function HzLunar(objDate: THzDate): TDate;
376. var
377. i, j, t, leap, temp, offset: integer;
378. isLeap: Boolean;
379. y, m: integer;
380. begin
381. Result:= EncodeDate(1,1,1);
382. if not ChkHzDate(objDate) then exit;
383. isLeap:= False;
384. y:= objDate.Year;
385. m:= objDate.Month;
386. leap:= leapMonth(y);
387. //本年内从大年初一过来的天数
388. offset:= 0;
389. i:= 1;
390. while i < m do
391. begin
392. if i = leap then
393. begin
394. if isLeap then
395. begin
396. temp:= leapDays(y);
397. isLeap:= False;
398. end else
399. begin
400. temp:= monthDays(y, i);
401. isLeap:= True;
402. i:= i - 1;
403. end;
404. end else
405. temp:= monthDays(y, i);
406. offset:= offset + temp;
407. Inc(i);
408. end;
409. offset:= offset + objDate.Day - 1;
410. if (m = leap) and objDate.isLeap then //若为闰月,再加上前一个非闰月天数
411. offset:= offset + monthDays(y, m);
412. // 该年到 2000.1.1 这几年的天数
413. if y > 2000 then
414. begin
415. i:= 2000;
416. j:= y - 1;
417. end else
418. begin
419. i:= y;
420. j:= 1999;
421. end;
422. temp:= 0;
423. for t:= i to j do
424. begin
425. temp:= temp + lYearDays(t);
426. end;
427. if y > 1999 then offset:= offset + temp
428. else offset:= offset - temp;
429. //农历二零零零年大年初一的阳历为 2000.2.5
430. Result:= incDay(EncodeDate(2000,2,5),offset);
431. end;
432. //====================================== 检查农历日期是否合法
433. function ChkHzDate(objDate: THzDate): Boolean;
434. begin
435. if (objDate.Year > 2099) or (objDate.Year < 1901)
436. or (objDate.Month > 12) or (objDate.Day > 31) then
437. begin
438. Result:= False;
439. exit;
440. end;
441. Result:= True;
442. if objDate.isLeap then
443. begin
444. if leapMonth(objDate.Year) = objDate.Month then
445. begin
446. if leapDays(objDate.Year) < objDate.Day then
447. Result:= False;
448. end else Result:= False;
449. end else
450. begin
451. if monthDays(objDate.Year,objDate.Month) < objDate.Day then
452. Result:= False;
453. end;
454. end;
455. //===== 某年的第n个节气为几日(从0小寒起算)
456. function sTerm(y, n: integer): TDateTime;
457. var
458. temp: TDateTime;
459. t,tt: real;
460. i: Int64;
461. begin
462. t:= sTermInfo[n];
463. t:= t * 60000;
464. tt:= 31556925974.7 * (y - 1900);
465. t:= t + tt;
466. i:= Round(t);
467. Temp:= IncMilliSecond(EncodeDateTime(1900,1,6,2,5,0,0),i);
468. Result:= temp;
469. { var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
470. return(offDate.getUTCDate());
471. }
472. end;
473.
474. //==============================返回公历 y年m月的天数
475. function solarDays(y, m: integer): integer;
476. begin
477. if m = 2 then
478. begin
479. if ((y mod 4) = 0) and ((y mod 100) <> 0) or ((y mod 400) = 0) then
480. Result:= 29
481. else Result:= 28;
482. end else Result:= solarMonth[m - 1];
483. end;
484. //============================== 传入 offset 返回干支, 0=甲子
485. function cyclical(num: integer): string;
486. begin
487. Result:= Gan[num mod 10] + Zhi[num mod 12];
488. end;
489. //
490. function GetCnDay(objDate: THzDate): string;
491. var
492. day: integer;
493. begin
494. day:= objDate.Day;
495. case day of
496. 1..10: Result:= nStr2[0] + nStr1[day];
497. 11..19: Result:= nStr2[1] + nStr1[day - 10];
498. 20: Result:= nStr1[2] + nStr1[10];
499. 21..29: Result:= nStr2[2] + nStr1[day - 20];
500. 30: Result:= nStr1[3] + nStr1[10];
501. end;
502. end;
503. function GetCnMonth(ObjDate: THzDate): string;
504. var
505. month: integer;
506. begin
507. month:= objDate.Month;
508. case month of
509. 1..10: Result:= nStr1[month];
510. 11..12: Result:= nStr1[10] + nStr1[month - 10];
511. end;
512. if objDate.isLeap then Result:= '闰' + Result;
513. Result:= Result + '月';
514. end;
515. function GetCnYear(objDate: THzDate): string;
516. var
517. year, temp: integer;
518. zero: string;
519. begin
520. year:= objDate.Year;
521. zero:= '零';
522. temp:= year div 1000;
523. Result:= nStr1[temp];
524. year:= year - temp * 1000;
525. if year >= 100 then
526. begin
527. temp:= year div 100;
528. Result:= Result + nStr1[temp];
529. year:= year - temp * 100;
530. end
531. else
532. Result:= Result + zero;
533. if year >= 10 then
534. begin
535. temp:= year div 10;
536. Result:= Result + nStr1[temp];
537. year:= year - temp * 10;
538. end
539. else
540. Result:= Result + zero;
541. if year = 0 then Result:= Result + zero else
542. Result:= Result + nStr1[year];
543. Result:= Result + '年';
544. end;
545. // 潮汐算法主要参考自: <http://www.yuqu.com/haidiao/hai019.htm>
546. //
547. // 第一次高潮 F1= 0.8 X ((day mod 15) - 1) + 高潮间隙
548. // 低潮 F2= F1 + 6:12
549. // 第二次高潮 F3= F2 + 12:24 - 6:12
550. function GetZX(HzDay: Integer; zxjx: TTime= 0.42709491898): string;
551. var
552. Pos: Integer;
553. temp: Double;
554. h, m: Word;
555. begin
556. if zxjx = 0 then zxjx:= 0.42709491898;
557. Pos:= HzDay mod 15;
558. if Pos = 0 then Pos:= 15;
559. Inc(Pos, -1);
560. temp:= 0.8 * Pos;
561. h:= Trunc(temp);
562. m:= Trunc((temp - h) * 10);
563. m:= 60 * h + m * 6;
564. zxjx:= IncMinute(zxjx, m);
565. Result:= FormatDateTime(' hh:mm',zxjx); //高潮,低潮间隔是二个#32空格
566. zxjx:= IncMinute(zxjx, 372);
567. Result:= Result + FormatDateTime(' hh:mm',zxjx);
568. zxjx:= IncMinute(zxjx, 372);
569. Result:= Result + FormatDateTime(' hh:mm',zxjx);
570. end;
571. // 指定月分第几个星期几是第几天
572. function Getd0(y, m: Integer; S: string): Integer;
573. var
574. cntDay, cntWeek, idxPos, idxWeek: integer;
575. CurDay: TDate;
576. i: integer;
577. begin
578. cntDay:= solarDays(y, m);
579. idxPos:= strtoint(Copy(S,1,1));
580. idxWeek:= strtoint(Copy(S,2,1));
581. cntWeek:= 1;
582. if idxPos< 5 then
583. begin
584. CurDay:= EncodeDate(y, m, 1);
585. for i:= 1 to cntDay do
586. begin
587. if (DayOfWeek(CurDay) - 1) = idxWeek then
588. if cntWeek = idxPos then break else Inc(cntWeek);
589. CurDay:= IncDay(CurDay);
590. end;
591. Result:= i;
592. end
593. else begin
594. idxPos:= idxPos - 4;
595. CurDay:= EncodeDate(y, m, cntDay);
596. for i:= cntDay downto 1 do
597. begin
598. if (DayOfWeek(CurDay) - 1) = idxWeek then
599. if cntWeek = idxPos then break else Inc(cntWeek);
600. CurDay:= IncDay(CurDay, -1);
601. end;
602. Result:= i;
603. end;
604. end;
605. // 去除节日列表中的标记,返回以,相隔的字符串
606. procedure ClearJR(S: string; var strSave: string);
607. var
608. PosOfSpc: Integer;
609. ss: string;
610. begin
611. s:= Trim(s);
612. repeat
613. PosOfSpc:= Pos(' ', S);
614. if PosOfSpc > 0 then ss:= Copy(s, 1, PosOfSpc -1)
615. else ss:= s;
616. ss:= TrimLeft(ss);
617. if Copy(ss,1,1) = '*' then Delete(ss,1,1);
618. if strSave = '' then strSave:= ss
619. else strSave:= strSave + ',' + ss;
620. Delete(s, 1, PosOfSpc);
621. until PosOfSpc = 0;
622. end;
623. // 取得指定日期的节气
624. function GetDayOfJQ(day: TDate): string;
625. var
626. jq: Integer;
627. term: TDateTime;
628. begin
629. Result:= '';
630. jq:= (MonthOf(day) - 1) * 2;
631. term:= sTerm(Yearof(day), jq); //节气时间
632. if DateOf(term) = day then Result:= solarTerm[jq]
633. else
634. begin
635. term:= sTerm(Yearof(day), jq + 1); //中气时间
636. if DateOf(term) = day then Result:= solarTerm[jq+1];
637. end;
638. if Result<>'' then
639. Result:= Result + ' (时间:' + FormatDateTime('hh:mm',term) + ')';
640. end;
641.
642. //取得指定日期的节日
643. function GetDayOfJR(day: TCnDate):string;
644. var
645. H: THzDate;
646. i: Integer;
647. y, m, d: Word;
648. m0, d0: Integer;
649. lm: Boolean;
650. s, strSave: string;
651. begin
652. strSave:= '';
653. //农历节日
654. H:= day.HzDate;
655. m:= H.Month;
656. lm:= H.isLeap;
657. d:= H.Day;
658. if not lm then
659. for i:= Low(lFtv) to High(lFtv) do
660. begin
661. m0:= strtoint(Copy(lFtv[i], 1, 2));
662. d0:= strtoint(Copy(lFtv[i],3,2));
663. if (m0 = m) and (d0 = d) then
664. begin
665. s:= lFtv[i];
666. Delete(s,1,4);
667. ClearJR(s,strSave);
668. end;
669. end;
670. //公历节日
671. DecodeDate(day.Date, y, m, d);
672. for i:= Low(sFtv) to High(sFtv) do
673. begin
674. m0:= strtoint(sFtv[i][1] + sFtv[i][2]);
675. d0:= strtoint(sFtv[i][3] + sFtv[i][4]);
676. if (m0 = m) and (d0 = d) then
677. begin
678. S:= sFtv[i];
679. Delete(S,1,4);
680. ClearJr(s,strSave);
681. end;
682. end;
683. for i:= Low(wFtv) to High(wFtv) do
684. begin
685. m0:= strtoint(Copy(wFtv[i],1,2));
686. if m0 = m then
687. begin
688. d0:= Getd0(y, m, Copy(wFtv[i],3,2));
689. if (d0 = d) then
690. begin
691. S:= wFtv[i];
692. Delete(S, 1, 4);
693. ClearJR(s,strSave);
694. end;
695. end;
696. end;
697. Result:= strSave;
698. end;
699. function GetCnWeek(day: TDate): string;
700. begin
701. Result:= '星期' + nStr1[DayOfWeek(day) - 1]
702. end;
703. end.

計算該日期當月的天數

自訂函數做法如下:function LastDay(xDate: TDate): Word;
var
Y, M , D: Word;
const aMonthLastDay: array[1..12] of word
=(31,28,31,30,31,30,31,31,30,31,30,31);
begin
DecodeDate(xDate, Y, M, D);
if Y mod 4 = 0 then
aMonthLastDay[2] := 29
else
aMonthLastDay[2] := 28;
result := aMonthLastDay[M];
end;

計算天數不包含六日

use...... DateUtils
function StartOfTheMonth(const A Value: TDateTime):TDateTime;該月起始日期
function EndOfTheMonth(const A Value: TDateTime):TDateTime;該月結束日期
function DaysInMonth(const A Value: TDateTime):word;該月有幾天

配合 function DayOfWeek(const A Value: TDateTime):word;
寫個迴圈就可計算出來了

例如要計算以今天為準當月有幾天不含六、日
var i,j :integer;
mydate :TDateTime;
.
.
j:=0;
mydate:=StartOfTheMonth(date());
for i:=1 to DaysInMonth(date()) do begin
if (DayOfWeek(mydate)<>1)and(DayOfWeek(mydate)<>7) then begin
j:=j+1;
end;
mydate:=mydate+1;
end;

2009年7月8日 星期三

HP大中華區總裁 / 孫振耀 退休感言

HP大中華區總裁 / 孫振耀 退休感言 (長) — 勵志啊 !
一、關於工作與生活
  我有個有趣的觀察,外企公司多的是25-35歲的白領,40歲以上的員工很少,二三十歲的外企員工是意氣風發的,但外企公司40歲附近的經理人是很尷尬的。我見過的40歲附近的外企經理人大多在一直跳槽,最後大多跳到民企,比方說,唐駿。外企員工的成功很大程度上是公司的成功,並非個人的成功,西門子的確比國美大,但並不代表西門子中國經理比國美的老闆強,甚至可以說差得很遠。而進外企的人往往並不能很早理解這一點,把自己的成功90%歸功於自己的能力,實際上,外企公司隨便換個中國區總經理並不會給業績帶來什麼了不起的影響。好了問題來了,當這些經理人40多歲了,他們的薪資要求變得很高,而他們的才能其實又不是那麼出眾,作為外企公司的老闆,你會怎麼選擇?有的是只要不高薪水的,要出位的精明強幹精力沖沛的年輕人,有的是,為什麼還要用你?
  
  從上面這個例子,其實可以看到我們的工作軌跡,二三十歲的時候,生活的壓力還比較小,身體還比較好,上面的父母身體還好,下面又沒有孩子,不用還房貸,也沒有孩子要上大學,當個外企小白領還是很光鮮的,掙得不多也夠花了。但是人終歸要結婚生子,終歸會老,到了40歲,父母老了,要看病要吃藥,要有人看護,自己要還房貸,要過基本體面的生活,要養小孩……那個時候需要掙多少錢才夠花才重要。所以,看待工作,眼光要放遠一點,一時的誰高誰低並不能說明什麼。
  
  從這個角度上來說,我不太贊成過於關注第一份工作的薪水,更沒有必要攀比第一份工作的薪水,這在剛剛出校園的學生中間是很常見的。正常人大概要工作 35年,這好比是一場馬拉松比賽,和真正的馬拉松比賽不同的是,這次比賽沒有職業選手,每個人都只有一次機會。要知到,有很多人甚至堅持不到終點,大多數人最後是走到終點的,只有少數人是跑過終點的,因此在剛開始的時候,去搶領先的位置並沒有太大的意義。剛進社會的時候如果進500強公司,大概能拿到3k -6k/月的工資,有些特別技術的人才可能可以到8k/月,可問題是,5年以後拿多少?估計5k-10k了不起了。起點雖然高,但增幅有限,而且,後面的年輕人追趕的壓力越來越大。
  
  我前兩天問我的一個銷售,你會的這些東西一個新人2年就都學會了,但新人所要求的薪水卻只是你的一半,到時候,你怎麼辦?
  職業生涯就像一場體育比賽,有初賽、復賽、決賽。初賽的時候大家都剛剛進社會,大多數都是實力一般的人,這時候努力一點認真一點很快就能讓人脫穎而出,於是有的人二十多歲做了經理,有的人遲些也終於贏得了初賽,三十多歲成了經理。然後是復賽,能參加復賽的都是贏得初賽的,每個人都有些能耐,在聰明才智上都不成問題,這個時候再想要勝出就不那麼容易了,單靠一點點努力和認真還不夠,要有很強的堅忍精神,要懂得靠團隊的力量,要懂得收服人心,要有長遠的眼光……
  看上去贏得復賽並不容易,但,還不是那麼難。因為這個世界的規律就是給人一點成功的同時、讓人驕傲自滿,剛剛贏得初賽的人往往不知道自己贏得的僅僅是初賽,有了一點小小的成績大多數人都會驕傲自滿起來,認為自己已經懂得了全部,不需要再努力再學習了,他們會認為之所以不能再進一步已經不是自己的原因了。雖然他們仍然不好對付,但是他們沒有耐性,沒有容人的度量,更沒有清晰長遠的目光。就像一隻憤怒的鬥牛,雖然猛烈,最終是會敗的,而贏得復賽的人則象鬥牛士一樣,不急不躁,跟隨著自己的節拍,慢慢耗盡對手的耐心和體力。贏得了復賽以後,大約已經是一位很了不起的職業經理人了,當上了中小公司的總經理,大公司的副總經理,主管著每年幾千萬乃至幾億的生意。
  
  最終的決賽來了,說實話我自己都還沒有贏得決賽,因此對於決賽的決勝因素也只能憑自己的猜測而已,這個時候的輸贏或許就像武俠小說裏寫得那樣,大家都是高手,只能等待對方犯錯了,要想輕易擊敗對手是不可能的,除了使上渾身解數,還需要一點運氣和時間。世界的規律依然發揮著作用,贏得復賽的人已經不只是驕傲自滿了,他們往往剛愎自用,聽不進去別人的話,有些人的脾氣變得暴躁,心情變得浮躁,身體變得糟糕,他們最大的敵人就是他們自己,在決賽中要做的只是不被自己擊敗,等著別人被自己擊敗。這和體育比賽是一樣的,最後高手之間的比賽,就看誰失誤少誰就贏得了決賽。
二、 根源
  你工作快樂嗎?你的工作好嗎?
  有沒有覺得幹了一段時間以後工作很不開心?有沒有覺得自己入錯了行?有沒有覺得自己沒有得到應有的待遇?有沒有覺得工作像一團亂麻每天上班都是一種痛苦?有沒有很想換個工作?有沒有覺得其實現在的公司並沒有當初想像得那麼好?有沒有覺得這份工作是當初因為生存壓力而找的,實在不適合自己?你從工作中得到你想要得到的了麼?你每天開心麼?
  天涯上憤怒的人很多,你有沒有想過,你為什麼不快樂?你為什麼憤怒?
  其實,你不快樂的根源,是因為你不知道要什麼!你不知道要什麼,所以你不知道去追求什麼,你不知道追求什麼,所以你什麼也得不到。
  我總覺得,職業生涯首先要關注的是自己,自己想要什麼?大多數人大概沒想過這個問題,唯一的想法只是——我想要一份工作,我想要一份不錯的薪水,我知道所有人對於薪水的渴望,可是,你想每隔幾年重來一次找工作的過程麼?你想每年都在這種對於工作和薪水的焦急不安中度過麼?不想的話,就好好想清楚。飲鴆止渴,不能因為口渴就拼命喝毒藥。越是焦急,越是覺得自己需要一份工作,越饑不擇食,越想不清楚,越容易失敗,你的經歷越來越差,下一份工作的人看著你的簡歷就皺眉頭。於是你越喝越渴,越渴越喝,陷入惡性循環。最終只能哀歎世事不公或者生不逢時,只能到天涯上來發洩一把,在失敗者的共鳴當中尋求一點心理平衡罷了。大多數人都有生存壓力,我也是,有生存壓力就會有很多焦慮,積極的人會從焦慮中得到動力,而消極的人則會因為焦慮而迷失方向。所有人都必須在壓力下做出選擇,這就是世道,你喜歡也罷不喜歡也罷。
  
  一般我們處理的事情分為重要的事情和緊急的事情,如果不做重要的事情就會常常去做緊急的事情。比如鍛煉身體保持健康是重要的事情,而看病則是緊急的事情。如果不鍛煉身體保持健康,就會常常為了病痛煩惱。又比如防火是重要的事情,而救火是緊急的事情,如果不注意防火,就要常常救火。找工作也是如此,想好自己究竟要什麼是重要的事情,找工作是緊急的事情,如果不想好,就會常常要找工作。往往緊急的事情給人的壓力比較大,迫使人們去趕緊做,相對來說重要的事情反而沒有那麼大的壓力,大多數人做事情都是以壓力為導向的,壓力之下,總覺得非要先做緊急的事情,結果就是永遠到處救火,永遠沒有停歇的時候。(很多人的工作也像是救火隊一樣忙碌痛苦,也是因為工作中沒有做好重要的事情。)那些說自己活在水深火熱為了生存顧不上那麼多的朋友,今天找工作困難是當初你們沒有做重要的事情,是結果不是原因。如果今天你們還是因為急於要找一份工作而不去思考,那麼或許將來要繼續承受痛苦找工作的結果。
  我始終覺得我要說的話題,沉重了點,需要很多思考,遠比唐笑打武警的話題來的枯燥乏味,但是,天下沒有輕鬆的成功,成功,要付代價。請先忘記一切的生存壓力,想想這輩子你最想要的是什麼?所以,最要緊的事情,先想好自己想要什麼。
三、什麼是好工作
  當初微軟有個唐駿,很多大學裏的年輕人覺得這才是他們嚮往的職業生涯,我在清華bbs裏發的帖子被這些學子們所不屑,那個時候學生們只想出國或者去外企,不過如今看來,我還是對的,唐駿去了盛大,陳天橋創立的盛大,一家民營公司。一個高學歷的海歸在500強的公司裏拿高薪水,這大約是很多年輕人的夢想,問題是,每年畢業的大學生都在做這個夢,好的職位卻只有500個。
  人都是要面子的,也是喜歡攀比的,即使在工作上也喜歡攀比,不管那是不是自己想要的。大家認為外企公司很好,可是好在哪里呢?好吧,他們在比較好的寫字樓,這是你想要的麼?他們出差住比較好的酒店,這是你想要的麼?別人會羡慕一份外企公司的工作,這是你想要的麼?那一切都是給別人看的,你幹嗎要活得那麼辛苦給別人看?另一方面,他們薪水福利一般,並沒有特別了不起,他們的晉升機會比較少,很難做到很高階的主管,他們雖然厭惡常常加班,卻不敢不加班,因為“你不幹有得是人幹”,大部分情況下會找個臺灣人香港人新加坡人來管你,而這些人又往往有些莫名其妙的優越感。你想清楚了麼?500強一定好麼?找工作究竟是考慮你想要什麼,還是考慮別人想看什麼?
  我的大學同學們大多數都到美國了,甚至畢業這麼多年了,還有人最近到國外去了。出國真的有那麼好麼?我的大學同學們,大多數還是在博士、博士後、訪問學者地掙扎著,至今只有一個正經在一個美國大學裏拿到個正式的教職。國內的教授很難當麼?我有幾個表親也去了國外了,他們的父母獨自在國內,沒有人照顧,有好幾次人在家裏昏倒都沒人知道,出國,真的這麼光彩麼?就像有人說的“很多事情就像看A片,看的人覺得很爽,做的人未必。”
  人總想找到那個最好的,可是,什麼是最好的?你覺得是最好的那個,是因為你的確瞭解,還是因為別人說他是最好的?即使他對於別人是最好的,對於你也一定是最好的麼?
  對於自己想要什麼,自己要最清楚,別人的意見並不是那麼重要。很多人總是常常被別人的意見所影響,親戚的意見,朋友的意見,同事的意見……問題是,你究竟是要過誰的一生?人的一生不是父母一生的續集,也不是兒女一生的前傳,更不是朋友一生的外篇,只有你自己對自己的一生負責,別人無法也負不起這個責任。自己做的決定,至少到最後,自己沒什麼可後悔。對於大多數正常智力的人來說,所做的決定沒有大的對錯,無論怎麼樣的選擇,都是可以嘗試的。比如你沒有考自己上的那個學校,沒有入現在這個行業,這輩子就過不下去了?就會很失敗?不見得。
  我想,好工作,應該是適合你的工作,具體點說,應該是能給你帶來你想要的東西的工作,你或許應該以此來衡量你的工作究竟好不好,而不是拿公司的大小,規模,外企還是國企,是不是有名,是不是上市公司來衡量。小公司,未必不是好公司,賺錢多的工作,也未必是好工作。你還是要先弄清楚你想要什麼,如果你不清楚你想要什麼,你就永遠也不會找到好工作,因為你永遠只看到你得不到的東西,你得到的,都是你不想要的。
  可能,最好的,已經在你的身邊,只是,你還沒有學會珍惜。人們總是盯著得不到的東西,而忽視了那些已經得到的東西。
四、普通人
  我發現中國人的勵志和國外的勵志存在非常大的不同,中國的勵志比較鼓勵人立下大志願,臥薪嚐膽,有朝一日成富成貴。而國外的勵志比較鼓勵人勇敢面對現實生活,面對普通人的困境,雖然結果也是成富成貴,但起點不一樣,相對來說,我覺得後者在操作上更現實,而前者則需要用999個失敗者來堆砌一個成功者的故事。
  我們都是普通人,普通人的意思就是,概率這件事是很準的。因此,我們不會買彩票中500萬,我們不會成為比爾蓋茨或者李嘉誠,我們不會坐飛機掉下來,我們當中很少的人會創業成功,我們之中有30%的人會離婚,我們之中大部分人會活過65歲……
  所以請你在想自己要什麼的時候,要得“現實”一點,你說我想要做李嘉誠,抱歉,我幫不上你。成為比爾蓋茨或者李嘉誠這種人,是靠命的,看我寫的這篇文章絕對不會讓你成為他們,即使你成為了他們,也絕對不是我這篇文章的功勞。“王侯將相甯有種乎”但真正當皇帝的只有一個人,王侯將相,人也不多。目標定得高些對於喜歡挑戰的人來說有好處,但對於大多數普通人來說,反而比較容易灰心沮喪,很容易就放棄了。
  回過頭來說,李嘉誠比你有錢大致50萬倍,他比你更快樂麼?或許。有沒有比你快樂50萬倍,一定沒有。他比你最多也就快樂一兩倍,甚至有可能還不如你快樂。尋找自己想要的東西不是和別人比賽,比誰要得更多更高,比誰的目標更遠大。雖然成為李嘉誠這個目標很宏大,但你並不見得會從這個目標以及追求目標的過程當中獲得快樂,而且基本上你也做不到。你必須聽聽你內心的聲音,尋找真正能夠使你獲得快樂的東西,那才是你想要的東西。
  你想要的東西,或者我們把它稱之為目標,目標其實並沒有高低之分,你不需要因為自己的目標沒有別人遠大而不好意思,達到自己的目標其實就是成功,成功有大有小,快樂卻是一樣的。我們追逐成功,其實追逐的是成功帶來的快樂,而非成功本身。職業生涯的道路上,我們常常會被攀比的心態蒙住眼睛,忘記了追求的究竟是什麼,忘記了是什麼能使我們更快樂。
  社會上一夜暴富的新聞很多,這些消息,總會在我們的心裏面掀起很多漣漪,漣漪多了就變成驚濤駭浪,心裏的驚濤駭浪除了打翻承載你目標的小船,並不會使得你也一夜暴富。“只見賊吃肉,不見賊挨揍。”我們這些普通人既沒有當賊的勇氣,又缺乏當賊的狠辣絕決,雖然羡慕吃肉,卻更害怕挨揍,偶爾看到幾個沒挨揍的賊就按奈不住,或者心思活動,或者大感不公,真要叫去做賊,卻也不敢。
  我還是過普通人的日子,要普通人的快樂,至少,晚上睡得著覺。
五、跳槽與積累
  首先要說明,工作是一件需要理智的事情,所以不要在工作上耍個性,天涯上或許會有人覺得你很有個性而叫好,煤氣公司電話公司不會因為覺得你很有個性而免了你的帳單。當你很帥地炒掉了你的老闆,當你很酷地挖苦了一番招聘的HR,帳單還是要照付,只是你賺錢的時間更少了,除了你自己,沒人受損失。
  我並不反對跳槽,但跳槽決不是解決問題的辦法,而且頻繁跳槽的後果是讓人覺得沒有忠誠度可言,而且不能安心工作。現在很多人從網上找工作,很多找工作的網站常常給人出些餿主意,要知道他們是盈利性企業,當然要從自身盈利的角度來考慮,大家越是頻繁跳槽頻繁找工作他們越是生意興隆,所以鼓動人們跳槽是他們的工作。所以他們會常常告訴你,你拿的薪水少了,你享受的福利待遇差了,又是“薪情快報”又是“讚歎自由奔放的靈魂”。至於是否會因此讓你不能安心,你跳了槽是否解決問題,是否更加開心,那個,他們管不著。
  要跳槽肯定是有問題,一般來說問題發生了,躲是躲不開的,很多人跳槽是因為這樣或者那樣的不開心,如果這種不開心,在現在這個公司不能解決,那麼在下一個公司多半也解決不掉。你必須相信,90%的情況下,你所在的公司並沒有那麼爛,你認為不錯的公司也沒有那麼好。就像圍城裏說的,“城裏的人拼命想衝出來,而城外的人拼命想衝進去。”每個公司都有每個公司的問題,沒有問題的公司是不存在的。換個環境你都不知道會碰到什麼問題,與其如此,不如就在當下把問題解決掉。很多問題當你真的想要去解決的時候,或許並沒有那麼難。有的時候你覺得問題無法解決,事實上,那只是“你覺得”。
  人生的曲線應該是曲折向上的,偶爾會遇到低谷但大趨勢總歸是曲折向上的,而不是象脈衝波一樣每每回到起點,我見過不少面試者,30多歲了,四五份工作經歷,每次多則3年,少則1年,30多歲的時候回到起點從一個初級職位開始幹起,拿基本初級的薪水,和20多歲的年輕人一起競爭,不覺得有點辛苦麼?這種日子好過麼?
  我非常不贊成在一個行業超過3年以後換行業,基本上,35歲以前我們的生存資本靠打拼,35歲以生存的資本靠的就是積累,這種積累包括人際關係,經驗,人脈,口碑……如果常常更換行業,代表幾年的積累付之東流,一切從頭開始,如果換了兩次行業,35歲的時候大概只有5年以下的積累,而一個沒有換過行業的人至少有了10年的積累,誰會佔優勢?工作到2-3年的時候,很多人覺得工作不順利,好像到了一個瓶頸,心情煩悶,就想辭職,乃至換一個行業,覺得這樣所有一切煩惱都可以拋開,會好很多。其實這樣做只是讓你從頭開始,到了時候還是會發生和原來行業一樣的困難,熬過去就向上跨了一大步,要知道每個人都會經歷這個過程,每個人的職業生涯中都會碰到幾個瓶頸,你熬過去了而別人沒有熬過去你就領先了。跑長跑的人會知道,開始的時候很輕鬆,但是很快會有第一次的難受,但過了這一段又能跑很長一段,接下來會碰到第二次的難受,堅持過了以後又能跑一段,如此往復,難受一次比一次厲害,直到堅持不下去了。大多數人第一次就堅持不了了,一些人能堅持到第二次,第三次雖然大家都堅持不住了,可是跑到這裏的人也沒幾個了,這點資本足夠你安穩活這一輩子了。
  一份工作到兩三年的時候,大部分人都會變成熟手,這個時候往往會陷入不斷的重複,有很多人會覺得厭倦,有些人會覺得自己已經搞懂了一切,從而懶得去尋求進步了。很多時候的跳槽是因為覺得失去興趣了,覺得自己已經完成比賽了。其實這個時候比賽才剛剛開始,工作兩三年的人,無論是客戶關係,人脈,手下,和領導的關係,在業內的名氣……還都是遠遠不夠的,但稍有成績的人總是會自我感覺良好的,每個人都覺得自己跟客戶關係鐵得要命,覺得自己在業界的口碑好得很。其實可以肯定地說,一定不是,這個時候,還是要拿出前兩年的幹勁來,穩紮穩打,積累才剛剛開始。
  你足夠瞭解你的客戶嗎?你知道他最大的煩惱是什麼嗎?你足夠瞭解你的老闆麼?你知道他最大的煩惱是什麼嗎?你足夠瞭解你的手下麼?你知道他最大的煩惱是什麼嗎?如果你不知道,你憑什麼覺得自己已經積累夠了?如果你都不瞭解,你怎麼能讓他們幫你的忙,做你想讓他們做的事情?如果他們不做你想讓他們做的事情,你又何來的成功?
六、等待
  這是個浮躁的人們最不喜歡的話題,本來不想說這個話題,因為會引起太多的爭論,而我又無意和人爭論這些,但是考慮到對於職業生涯的長久規劃,這是一個躲避不了的話題,還是決定寫一寫,不愛看的請離開吧。
  並不是每次穿紅燈都會被汽車撞,並不是每個罪犯都會被抓到,並不是每個錯誤都會被懲罰,並不是每個貪官都會被槍斃,並不是你的每一份努力都會得到回報,並不是你的每一次堅持都會有人看到,並不是你每一點付出都能得到公正的回報,並不是你的每一個善意都能被理解……這個,就是世道。好吧,世道不夠好,可是,你有推翻世道的勇氣麼?如果沒有,你有更好的解決辦法麼?有很多時候,人需要一點耐心,一點信心。每個人總會輪到幾次不公平的事情,而通常,安心等待是最好的辦法。
  有很多時候我們需要等待,需要耐得住寂寞,等待屬於你的那一刻。周潤發等待過,劉德華等待過,周星馳等待過,王菲等待過,張藝謀也等待過……看到了他們如今的功成名就的人,你可曾看到當初他們的等待和耐心?你可曾看到金馬獎影帝在街邊擺地攤?你可曾看到德雲社一群人在劇場裏給一位觀眾說相聲?你可曾看到周星馳的角色甚至連一句臺詞都沒有?每一個成功者都有一段低沉苦悶的日子,我幾乎能想像得出來他們借酒澆愁的樣子,我也能想像得出他們為了生存而掙扎的窘迫。在他們一生最中燦爛美好的日子裏,他們渴望成功,但卻兩手空空,一如現在的你。沒有人保證他們將來一定會成功,而他們的選擇是耐住寂寞。如果當時的他們總念叨著“成功只是屬於特權階級的”,你覺得他們今天會怎樣?
  曾經我也不明白有些人為什麼並不比我有能力卻要坐在我的頭上,年紀比我大就一定要當我的領導麼?為什麼有些爛人不需要努力就能賺錢?為什麼剛剛改革開放的時候的人能那麼容易賺錢,而輪到我們的時候,什麼事情都要正規化了?有一天我突然想,我還在上學的時候他們就在社會裏掙扎奮鬥了,他們在社會上奮鬥積累了十幾二十年,我們新人來了,他們有的我都想要,我這不是在要公平,我這是在要搶劫。因為我要得太急,因為我忍不住寂寞。二十多歲的男人,沒有錢,沒有事業,卻有蓬勃的欲望。
  
  人總是會遇到挫折的,人總是會有低潮的,人總是會有不被人理解的時候的,人總是有要低聲下氣的時候,這些時候恰恰是人生最關鍵的時候,因為大家都會碰到挫折,而大多數人過不了這個門檻,你能過,你就成功了。在這樣的時刻,我們需要耐心等待,滿懷信心地去等待,相信,生活不會放棄你,機會總會來的。至少,你還年輕,你沒有坐牢,沒有生治不了的病,沒有欠還不起的債。比你不幸的人遠遠多過比你幸運的人,你還怕什麼?路要一步步走,雖然到達終點的那一步很激動人心,但大部分的腳步是平凡甚至枯燥的,但沒有這些腳步,或者耐不住這些平凡枯燥,你終歸是無法迎來最後的那些激動人心。
  逆境,是上帝幫你淘汰競爭者的地方。要知道,你不好受,別人也不好受,你堅持不下去了,別人也一樣,千萬不要告訴別人你堅持不住了,那只能讓別人獲得堅持的信心,讓競爭者看著你微笑的面孔,失去信心,退出比賽。勝利屬於那些有耐心的人。
  在最絕望的時候,我會去看電影《The Pursuit of Happyness》《JerryMaguire》,讓自己重新鼓起勇氣,因為,無論什麼時候,我們總還是有希望。當所有的人離開的時候,我不失去希望,我不放棄。每天下班坐在車裏,我喜歡哼著《隱形的翅膀》看著窗外,我知道,我在靜靜等待,等待屬於我的那一刻。
  原貼裏伊吉網友的話我很喜歡,抄錄在這裏:
  每個人都希望,自己是獨一無二的特殊者
  含著金匙出生、投胎到好家庭、工作安排到電力局拿1w月薪這樣的小概率事件,當然最好輪到自己
  紅軍長征兩萬五、打成右派反革命、胼手胝足犧牲尊嚴去奮鬥,最好留給祖輩父輩和別人
  自然,不是每個吃過苦的人都會得到回報。但是,任何時代,每一個既得利益者身後,都有他的祖輩父輩奮鬥掙扎乃至流血付出生命的身影,羡慕別人有個好爸爸,沒什麼不可以,問題是,你的下一代,會有一個好爸爸嗎?
  至於問到為什麼不能有同樣的贏面概率?我只能問:為什麼物種競爭中,人和猴子不能有同樣的贏面概率? 物競天擇。猴子的靈魂不一定比你卑微,但你身後有幾十萬年的類人猿進化積澱。
七、入對行 跟對人
  在中國,大概很少有人是一份職業做到底的,雖然如此,第一份工作還是有些需要注意的地方,有兩件事情格外重要,第一件是”入行”,第二件事情是”跟人”。第一份工作對人最大的影響就是入行,現代的職業分工已經很細,我們基本上只能在一個行業裏成為專家,不可能在多個行業裏成為專家。很多案例也證明即使一個人在一個行業非常成功,到另外一個行業,往往完全不是那麼回事情,“你想改變世界,還是想賣一輩子汽水?”是賈伯斯邀請百事可樂總裁約翰•斯考利加盟蘋果時所說的話,結果這位在百事非常成功的約翰,到了蘋果表現平平。其實沒有哪個行業特別好,也沒有哪個行業特別差,或許有報導說哪個行業的平均薪資比較高,但是他們沒說的是,那個行業的平均壓力也比較大。看上去很美的行業一旦進入才發現很多地方其實並不那麼完美,只是外人看不見。
  說實話,我自己都沒有發大財,所以我的建議只是讓人快樂工作的建議,不是如何發大財的建議,我們只討論一般普通打工者的情況。我認為選擇什麼行業並沒有太大關係,看問題不能只看眼前。比如,從前年開始,國家開始整頓醫療行業,很多醫藥公司開不下去,很多醫藥行業的銷售開始轉行。其實醫藥行業的不景氣是針對所有公司的,並非針對一家公司,大家的日子都不好過,這個時候跑掉是非常不划算的,大多數正規的醫藥公司即使不做新生意撐個兩三年總是能撐的,大多數醫藥銷售靠工資撐個兩三年也是可以撐的,國家不可能永遠捏著醫藥行業不放的,兩三年以後光景總歸還會好起來的,那個時候別人都跑了而你沒跑,那時的日子應該會好過很多。有的時候覺得自己這個行業不行了,問題是,再不行的行業,做得人少了也變成了好行業,當大家都覺得不好的時候,往往卻是最好的時候。大家都覺得金融行業好,金融行業門檻高不說,有多少人削尖腦袋要鑽進去,競爭激烈,進去以後還要時時提防,一個疏忽,就被後來的人給擠掉了,壓力巨大,又如何談得上快樂?也就未必是“好”工作了。
  太陽能這個東西至今還不能進入實際應用的階段,但是中國已經有7家和太陽能有關的公司在紐交所上市了,國美、蘇寧永樂其實是貿易型企業,也能上市,魯泰紡織連續10年利潤增長超過50%,賣茶的一茶一座,賣衣服的海瀾之家都能上市……其實選什麼行業真的不重要,關鍵是怎麼做。事情都是人做出來的,關鍵是人。
  有一點是需要記住的,這個世界上,有史以來直到我們能夠預見得到的未來,成功的人總是少數,有錢的人總是少數,大多數人是一般的,普通的,不太成功的。因此,大多數人的做法和看法,往往都不是距離成功最近的做法和看法。因此大多數人說好的東西不見得好,大多數人說不好的東西不見得不好。大多數人都去炒股的時候說明跌只是時間問題,大家越是熱情高漲的時候,跌的日子越近。大多數人買房子的時候,房價不會漲,而房價漲的差不多的時候,大多數人才開始買房子。不會有這樣一件事情讓大家都變成功,發了財,歷史上不曾有過,將來也不會發生。有些東西即使一時運氣好得到了,還是會在別的時候別的地方失去的。
  
  年輕人在職業生涯的剛開始,尤其要注意的是,要做對的事情,不要讓自己今後幾十年的人生總是提心吊膽,更不值得為了一份工作賠上自己的青春年華。我的公司是個不行賄的公司,以前很多人不理解,甚至自己的員工也不理解,不過如今,我們是同行中最大的企業,客戶樂意和我們打交道,尤其是在國家打擊腐敗的時候,每個人都知道我們做生意不給錢的名聲,都敢於和我們做生意。而勇於給錢的公司,不是倒了,就是跑了,要不就是每天睡不好覺,人還是要看長遠一點。很多時候,看起來最近的路,其實是最遠的路,看起來最遠的路,其實是最近的路。
   跟對人是說,入行後要跟個好領導好老師,剛進社會的人做事情往往沒有經驗,需要有人言傳身教。對於一個人的發展來說,一個好領導是非常重要的。所謂“好”的標準,不是他讓你少幹活多拿錢,而是以下三個。
  首先,好領導要有寬廣的心胸,如果一個領導每天都會發脾氣,那幾乎可以肯定他不是個心胸寬廣的人,能發脾氣的時候卻不發脾氣的領導,多半是非常厲害的領導。中國人當領導最大的毛病是容忍不了能力比自己強的人,所以常常可以看到的一個現象是,領導很有能力,手下一群庸才或者手下一群閒人。如果看到這樣的環境,還是不要去的好。
  其次,領導要願意從下屬的角度來思考問題,這一點其實是從面試的時候就能發現的,如果這位領導總是從自己的角度來考慮問題,幾乎不聽你說什麼,這就危險了。從下屬的角度來考慮問題並不代表同意下屬的說法,但他必須瞭解下屬的立場,下屬為什麼要這麼想,然後他才有辦法說服你,只關心自己怎麼想的領導往往難以獲得下屬的信服。
  第三,領導敢於承擔責任,如果出了問題就把責任往下推,有了功勞就往自己身上攬,這樣的領導不跟也罷。選擇領導,要選擇關鍵時刻能抗得住的領導,能夠為下屬的錯誤買單的領導,因為這是他作為領導的責任。
  有可能,你碰不到好領導,因為,中國的領導往往是屁股決定腦袋的領導,因為他坐領導的位置,所以他的話就比較有道理,這是傳統觀念官本位的誤區,可能有大量的這種無知無能的領導,只是,這對於你其實是好事,如果將來有一天你要超過他,你希望他比較聰明還是比較笨?相對來說這樣的領導其實不難搞定,只是你要把自己的身段放下來而已。多認識一些人,多和比自己強的人打交道,同樣能找到好的老師,不要和一群同樣鬱悶的人一起控訴社會,控訴老闆,這幫不上你,只會讓你更消極。和那些比你強的人打交道,看他們是怎麼想的,怎麼做的,學習他們,然後跟更強的人打交道。
八、選擇
  我們每天做的最多的事情,其實是選擇,因此在談職業生涯的時候不得不提到這個話題。
  我始終認為,在很大的範圍內,我們究竟會成為一個什麼樣的人,決定權在我們自己,每天我們都在做各種各樣的選擇,我可以不去寫這篇文章,去別人的帖子拍拍磚頭,也可以寫下這些文字,幫助別人的同時也整理自己的思路,我可以多注意下格式讓別人易於閱讀,也可以寫成一堆,我可以就這樣發上來,也可以在發以前再看幾遍,你可以選擇不刮鬍子就去面試,也可以選擇出門前照照鏡子……每天,每一刻我們都在做這樣那樣的決定,我們可以漫不經心,也可以多花些心思,成千上萬的小選擇累計起來,就決定了最終我們是個什麼樣的人。
  從某種意義上來說我們的未來不是別人給的,是我們自己選擇的,很多人會說我命苦啊,沒得選擇阿,如果你認為“去微軟還是去IBM”“上清華還是上北大”“當銷售副總還是當廠長”這種才叫選擇的話,的確你沒有什麼選擇,大多數人都沒有什麼選擇。

讓Vista用administrator登入

以下步驟可以讓Vista用administrator登入....
1. 以管理員身份執行 cmd.exe
2. 輸入「net users Administrator /active:yes」
3. 執行「regedit」
4. 找到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
5. 雙擊點選「FilterAdministratorToken」並將值修改至 「0」
6. 登出再登入

2009年7月7日 星期二

SQL Server2005 匯入文字檔貨EXCEL檔發生錯誤

今天在用MSSQL 2005從txt匯入資料,發生了這個錯誤。
錯誤 0xc00470fe : 資料流程工作 : 元件 來源 xxxxxxx 的產品層級不夠。
錯誤 0xc00470fe : 資料流程工作 : 元件 資料轉換 xxxxxxx 的產品層級不夠。

上網查了後,發現是Integration Services沒有灌的緣故,所以就把它給他又灌上去,相當快速的解決了這個問題,記錄下來已防日後老年癡呆XD
參考網站:錯誤 0xc00470fe XXX的產品層級不夠

2009年6月15日 星期一

生理課上的解說

在一堂生理課上,女老師講完課後說:「同學們,誰還有不明白的地方,請舉手提問,老師為你解答。」
過了一會兒,一個男同學舉起手來,一臉正經地問女老師:「老師,男人和女人做愛的時候,是男人舒服一些?還是女人舒服一些?」
女老師略想了一下說:「請問你用手摳鼻子時,是鼻子舒服?還是手舒服?」男同學一想,嗯!是鼻子舒服!就坐下了。

女老師接著問:「同學們,誰還有不明白的地方,請舉手提問,老師給你解答。」
沉默了一會兒,又是那個男同學舉手問女老師:「老師,男人和女人做愛的時候,是戴避孕套舒服,還是不戴避孕套舒服?」
女老師立刻答道 :「請問當你鼻子癢時,是戴手套摳舒服還是不戴手套摳舒服?」男同學一想,嗯!是不戴手套舒服,又坐下了。

女老師又接著問:「同學們,誰還有不明白的地方,請提問,老師給你解答。」
女老師問了兩遍,這時,還是那個男同學,又站起來問:「老師,為什麼女人來了月經。就不能做愛那?」
女老師略帶不悅地說:「那你鼻子出血的時候。你還用你的手摳你的鼻子嗎?」男同學一想,嗯,也是啊!

女老師又接著問:「同學們,誰還有不明白的地方,請抓緊時間提問。」
不一會,那位男同學又把手舉起來了,問女老師:「老師,做愛時既然女人比男人舒服些,為什麼男人強姦女人時,女人都要反抗呢?」
這時老師大怒,叭地一拍桌子,說: 「你走在大街上,別人過來摳你的鼻子,你願意嗎?」

李技安抓鬼 ....

李技安?
剛跟朋友聊MSN,聊到最近年關將近大家手頭都很緊
他就感嘆了一句..."唉.....李技安抓鬼""
殺小?" 我只浮現了這樣的疑問
"李技安抓鬼啦....." 他又重複了一次
"靠腰喔 李技安到底是誰啦,他又為什麼要抓鬼?
""我是說.........."
...
....
"日子怎麼過啦!"

2009年6月11日 星期四

如何在同一資料表以相同的某個欄位尋找最新或最後的一筆資料

用SQL2000所提供的北風資料庫的訂單資料表(Orders)一範例。
如果要尋找每位客戶最後一次下訂單的那筆資料,試以下語法(應該會有90筆資料):
SELECT o1.*
FROM Orders o1 INNER JOIN
(SELECT CustomerID, MAX(OrderDate) AS OrderDate
FROM Orders
GROUP BY CustomerID) o2
ON o1.CustomerID = o2.CustomerID AND o1.OrderDate = o2.OrderDate

量價小技巧

以下文章轉貼自楚狂人BLOG
殺盤要殺出量才有力量,量縮的情況通常對空方比較不利,量縮掉空方就也跟著縮掉,永遠記得:『量小空,空遺恨』。

因為量縮的意思就是惜售,講白話一點就是賣方不積極賣股,如果又碰上紅K棒(收盤比開盤價高),那種盤勢是多方盤,代表殺不下去,沒人要賣,空單宜回補。

大概只有人氣退潮這種特殊情況是對空方有利。

補充一下:人氣退潮和惜售主要差別在時間,量縮下跌一陣子以後如果該反彈沒反彈,還是繼續量縮下跌下去,那就可以稱為人氣退潮了。

2009年6月2日 星期二

卡車車頭亮三個綠燈代表的意義?

我有一位同學在開大卡車,前不久撞上過港隧道圍牆,和他聊起許瑋倫的事件,他說:「開卡車的人遇緊急事故,原則上都不會踩緊急煞車,因為後面聯結的車斗或是貨櫃都只有用鐵鍊拴住,如緊急煞車,不但會造成折板(就是連結處斷掉),後面車斗或是貨櫃會向前擠壓撞上前面的自己,或造成打滑翻滾釀成整條道路大面積的連環車禍,所以只好選擇損傷最少的方法,就業儘量減速直接追撞前面的車輛。」:這實在事太恐怖啦!
開車的人一定要記住,別開在卡車前面,更別開在卡車中間,還有不要臨時超車到卡車前面卻放慢車速,很多車禍都是因為這樣才發生的..尤其大卡車前面那1~2台小車必然成為廢鐵!

通常卡車車頭上方有三個綠燈,各位知道是做什麼用的嗎?我問過卡車司機,他說:那是顯示速度用的,卡車靜止時,三個燈都不會亮,當行走時第一個燈會亮,表示煞車煞得住,當加速到一定的速度時,會再亮第二個燈,表示煞車勉強煞得住,當三個綠燈全亮時,表示煞車已經煞不住了。

所以,為何在高速公路上卡車前方要保持相當一段的距離,那是因為要給緊急煞車時的緩衝空間,各位不要以為卡車前方有那麼大的空間,就可以超車過去,卡車司機說如果前面空間沒了,又需緊急煞車時,唯一的作法就是:「把你的車當作緩衝墊,就給它下去囉!」

各位喜歡超車的駕駛朋友注意了,請不要沒事開在卡車前面,尤其是當他的車頭亮三個綠燈時,請多宣導親朋好友!

2009年6月1日 星期一

數位經營者第365講:學校沒教的理債觀念(四)停損也要停利

從理債,存款,到有財可理,準中年人這一路走了10多年。他只是一個收入還不錯的上班族,發不了大財,但也開始面臨要不要買房子,要不要投資股票、基金、外匯,甚至是親友來推薦購買投資型保單等問題的拷問。該怎麼決定呢?人生旅除上,誘惑真的很多。
◎理財第一步,存款

 準中年人從 240萬台幣的負債中爬起來後,學到寶貴一課叫「不要借錢還債」,之後學到「不要借錢投資」。借錢還債可能不是很多人的生活經驗,但借錢投資的行為卻充斥在你周遭環境中。只要你心裡想:我手上這筆錢不必急著還(房貸、車貸…等),可以先拿去投資…。

 這就是借錢投資。

 借錢投資的問題在於,你必須要每個月還貸款。而如果你借錢拿去投資的項目沒有帶來預期收入(例如:股市慘跌),你還是得按月還貸款。而你當然沒錢可還,最終只能選擇賣股票去還錢。因此,借錢投資的人經常被迫在股票的低點賣出。這種投資法,虧本機會大。

 多少人的財富就在這樣來來回回的過程中逐漸消失?回歸到準中年人先前學習到的個人理財重點:「關注現金流」,當你有債務要償還時,就是每個月有負向現金流。你的第一任務是把現金流變成正的,之後才有資格談投資,任何冒險的想法都可能使你加速進入地獄。

 幾乎所有的投資大師與理財書籍都告訴你,投資要使用閒錢,拿去投資的錢必須是「萬一虧掉也不會影響生活」的。但他們沒告訴你,投資是比誰的氣比較長。股票在低點的時候,用閒錢投資的人可以等,但是你明天有房貸要繳不能等,氣短的你只好在低點拋掉。

 對於一個剛步入社會開始空手奮鬥的年輕人來說,除了保險以外,任何理財商品都屬於不用考慮的範圍。因為存款是投資的第一步,沒有存款就不會有閒錢,當然更談不上投資。但,問題來了,有很多投資型保險甚至定期定額基金看來都比定期存款利息還高,要考慮嗎?

◎對於保險的觀念

 準中年人的親人曾是台灣某大保險公司16年的銷售人員,從赤手空拳到帶領 150多人團隊,因此對於保險的概念比一般人稍微清楚些。首先,保險不是理財產品,至少對一個收入普通的上班族來說不是。(保險公司有針對富人設計用來節稅的保險產品,一般人不太需要)

 購買保險之前應該有的正確觀念,是「花出去的錢不要談獲利」。購買者需要在意的是能得到什麼樣的保障,而不是「幾年可以獲利幾%」。不同的家庭需要的保險規劃並不相同,因此無法一概而論。但是從這個觀點出發,所謂「投資型保單」其實是很弔詭的產品。

 準中年人曾經很認真的研究過某保險公司規劃的投資型保單,並使用拿手的Excel算過十年二十年的投資報酬,最後發現算不清楚。保單內容試圖說服購買者將保險每三年可領回的部分再投入去購買該公司設計的某個預估投資報酬率幾 %的基金產品,形成不斷套利的情況。

 而,基金的投資並不保障收益。換句話說,原本應得的保險還本收入,可能最終會在基金的失敗投資下蒸發,而保險公司卻照賺手續費不誤。準中年人最後終於搞清楚:投資跟保本是兩回事,不要混在一起談。投資有風險,如果期待還本,那就不要把應得的本,拿去再投資。

 準中年人明白到,保險是生活的基本開銷,跟你每個月用水用電是一樣的,不應該把它用投資的觀念來看待。剛出社會的年輕人可以開始購買保險,如果有閒錢,才去投資。如果沒有閒錢,存款,是累積閒錢的最好方式。

◎對基金的觀念

 月付5,000元台幣的定時定額基金看起來真誘人!準中年人看著手上的宣傳單之後有點心動。廣告傳單上還以圖形畫出過去的基金投資績效,翻了好幾倍,比定存好很多!然而,準中年人對於「投資成本」有著不太一樣的看法。仔細想一下,這種定期定額基金似乎沒那麼好。

 首先,定期定額基金的銀行手續費加管理費,大約扣掉3%。注意,有時購買基金免手續費或有折扣,但贖回時手續費另收。仔細看會發現銀行的手續費促銷折扣就是把消費者當猴子耍(聽過朝三暮四的故事沒?)這3%就是投資成本,只是銀行要在前面還是後面跟你收而已。

 其次,成本既然是3%,如果投資報酬沒超過3%當然是虧本,若投資報酬達4%,扣掉成本你淨賺1%,也不過跟定存利率一樣。因此基金的投資回報率必須要超過4%,對你來說才比定存划算。購買基金的成本應該是手續費成本加上目前定存利率,因為這是「機會成本」。

 準中年人不反對基金投資,但把投資跟存款的概念混在一起卻害慘很多人。簡單來說,定存沒有成本,但是購買定時定額基金,成本至少4%,這還沒有算上萬一基金走跌的時候可能資產腰斬,因此兩者不能混淆。投資歸投資,存款歸存款,兩者要分清楚。

◎對股票與選擇權的觀念

 預期投資收益要達到多少,你才會滿意?10%?20%?賺兩倍?三倍?

 許多上班族之所以一輩子在股市的地獄裡翻來滾去,就是因為對於獲利有著極為不正確的期待。準中年人認為,一個好的投資如果長期有10% 到20% 的穩定獲利,就是很好的投資。這句話的意思是,如果有一天發現這個獲利突然暴增超過這個範圍,那就是該出場的時候了。

 不要留戀,因為,暴利是怎麼來的,就是怎麼去的。

 你已經聽過周圍的親友,或者計程車司機說過太多故事。在股市大好時股票賺好幾倍,結果慘跌的時候全部賠進去。大部分人將之歸咎於運氣不好,說是來不及跑。但準中年人認為,這是缺乏良好的心態所致。這些人,等到下一次股市大漲的時候,依然會重複同樣的錯誤。

 這種人被稱呼為「散戶」。

 投資,很多人講「停損」,也就是說當虧到某個程度時就要全面撤出不要留戀。說很容易,做很困難。標準的賭徒心態就是想再等看看,看會不會漲回來,最後往往血本無歸。與此同時,準中年人卻要強調「停利」,意思是當賺錢(利益)到某個程度,就要撤出不要留戀。

 理由很簡單,能做到停利的人,才有辦法做到停損。

 賺合理的利潤而不是暴利,是長期發展的良好心態。不是只有投資,在企業界也如此。大陸知名房地產開發商,萬科股份有限公司董事長,王石先生曾說,他的公司不做利潤超過 25%的生意。這種心態讓企業長期穩定長大,踏實,不冒進。而他的對手很多因為冒進而死掉了。

 合理的利潤,才是長期致富之道。

◎這個故事告訴我們…(很遺憾,學校為什麼不教?)

---手上的現金不先拿去還貸款而去投資,就是借錢投資。借錢投資經常讓人被迫在低點賣掉(投資標的),以至於財富逐漸被侵蝕掉。

---存款,是所有理財行為的起點。有了存款才有閒錢,有了閒錢才能投資。沒有存款的人不要談投資。

---保險,跟喝水用電一樣是生活必需品,應與存款分開看待。保險跟投資也應該分開看待,因為對生活必需品講究投資回報率是沒意義的。

---定時定額基金的投資成本,超過廣告宣傳單上說的,不要將之與定存相比。基金的投資成本等於手續費成本加上定存利率。

---合理的投資利潤才是長期致富之道。虧到某個程度就該走,而賺到某個程度也一樣該走。不要留戀,暴利是怎麼來的,就是怎麼去的。

數位經營者第364講:學校沒教的理債觀念(三)別使用信用卡

年輕人在經歷了五年的理債生涯以後,頭髮開始花白,逐漸踏入中年的他已經沒有資格再稱呼自己為年輕人了。這個準中年人有幸(或者不幸)從240萬台幣的貸款掙扎出來,開始有了一點理財的小頭腦。以下,是他把一些觀察和發現整理起來提供大家參考。
◎銀行喜歡借錢給有錢人,越缺錢的越借不到

 年輕人債務纏身時曾經有幾度遭到現金斷流問題,眼看著當月份就快過不下去了。然而,銀行是不可能再讓他貸款的,甚至當他拿著信用卡想去提款機預借現金以便撐過那個月份時,還發現提不出錢來。打電話到銀行去詢問,對方回答預借現金的功能被停止了。

 年輕人含著眼淚對電話狂吼:要暫停預借現金你們也要提早通知我呀,我急用錢卻提不出來,你們想害死人呀!而這樣的狂吼沒有用,因為銀行內部是根據客戶的風險指標來運作這些功能的開啟或關閉。而他年紀輕輕卻高額負債,對銀行而言風險是太高了。

 後來,當年輕人的財務狀況逐漸健全,信用卡預借現金功能又自動被銀行重新打開。然而他發誓不再使用,這個功能是萬惡的淵藪,碰都不要碰!只是,雖然他不去動用預借現金,銀行卻三天兩頭打電話來告訴他,現在貸款有優惠的利率,問他要不要貸款。

 有時候,銀行甚至告訴他,他本月份的信用卡消費X萬元,這些錢可以使用分期付款來償還,利息比使用循環信用還便宜。這個準中年人哭笑不得的回答對方,抱歉,我每一期的信用卡款一定還清,絕不使用循環信用,當然對於你提供的低利分期付款也沒興趣!

 這種電話多到煩不勝煩,搞得他後來有對電話的那頭再次大喊:我再也不要跟銀行借錢了,不要再打這種電話給我了!他實在很懷疑,這家台灣最知名的銀行信用卡公司難道這麼缺業績嗎?然而,他當年負債時可是極不受銀行歡迎的對象呢,現在怎麼突然間被銀行追捧了?

◎使用信用卡會導致錯估自己的消費能力

 他突然明白一個道理:銀行喜歡借錢給有錢人,越沒有錢的人越借不到錢!因此,當你越不需要錢的時候,就越能跟銀行討價還價借到低利息的錢。反之,當你越需要錢的時候,就越可能為了借錢付出較高利息。因此,千萬別讓自己變得需要錢,否則對銀行就討不到便宜!

 要如何才能做到讓自己「不需要錢」?很簡單,停止使用信用卡。準中年人目前的信用卡剪到剩一張,主要是為了方便。他每次刷卡較大筆的金額後就會去存錢:把這次刷卡的金額預先存入信用卡中。因此每個月拿到帳單時幾乎都不需要再繳錢,因為預付的錢已經抵扣了。

 一定要弄清楚信用卡的用途是讓人方便,而不是讓人擴張信用透支消費的!這位準中年人厲行這個消費習慣,可稱得上是銀行又愛又恨的客戶。恨的是銀行幾乎佔不到這個客戶的便宜,愛的是,償債能力如此頑強的好客戶要去哪裡找?當然要想辦法借錢給他!

 當準中年人的交遊越來越廣闊時,他發現有錢人喜歡用現金交易。這些人有錢不是沒道理的,事實上,使用現金交易容易掌握自己的現金流,從而幫助你守住財富。信用卡的問題在於,你以為手上還有很多現金,於是把這些現金花掉,卻沒想到信用卡帳單來了還要繳錢。

 長期使用信用卡會導致你錯估自己的消費能力。而當你貪圖那個紅利積點可以換贈品的時候,你的現金流卻一點一點的流失而毫無知覺。偶一為之的循環信用往往更是長期負債的開始,很多卡奴就是這樣養成的。停止使用信用卡,這長期將使你不再需要借錢。

◎釐清自己與親人的財務關係

 上班族的薪水該怎麼處理?準中年人也有自己的看法。他把每個月薪水分成三部分,一是房租伙食交通保險通信…等生活基本開銷,二個是提撥出來放到銀行存款,三是提� 極X來給父母親未來的醫藥費存款。這些錢分別存在三個銀行,最後面兩個銀行的錢,基本上是只存不提。

 給自己的存款以及給父母親的存款一定要分開。很多上班族以為自己每月薪水足夠應付生活,但沒想到幾年後父母親身體開始有病痛需要長期就醫,原本的薪水用來應付生活突然很吃力。這是因為在自己有能力時,「忘記」替父母親存款,以至於需要的時候拿不出錢來。

 切記,你現在不存,以後就沒有。

 很多年輕上班族將自己的薪水一部分交給父母親。這在準中年人的看法裡頗不以為然。事實上,準中年人已經看太多理財智商根本為零的上個世代長輩,兒女把錢交給他們,他們最後也是敗給了股市。與其將薪水交給理財智商為零的長輩,還不如幫他們存起來以後當醫藥費。

 準中年人也將這個概念教育他自己的父母親。有時候長輩來跟他要錢想投入股市,他就會從這個「父母親未來醫藥費存款」中提款出來給長輩,然後告誡他們,這是你們未來的醫藥費,你現在用掉以後就沒有了。如果有幸從股市全身而退,請記得把錢存回來!

 亞洲地區的父母親普遍有個壞習慣:把兒女當成財產來看。準中年人在滿18歲時,身分證就被父親拿去開人頭戶炒股票。這� b台灣是非常普遍的,很多年輕人根本不知道自己的身分證被父母親拿去幹什麼用。他在25歲時為此跟家人鬧了革命,把所有名下的人頭戶全數關閉。

 幸好他在25歲做了這個事,否則他在30歲的境遇恐怕不這麼輕鬆了。

◎這個故事告訴我們…(很遺憾,學校為什麼不教?)

---把信用卡當成現金來用,今天刷一萬明天就去還一萬,不要等帳單來才還。如果沒有把握做到就別用,因為你會掌握不住自己的現金流。

---銀行喜歡借錢給有錢人,越缺錢的人越借不到。請讓自己變成不需要借錢的人,讓銀行愛死你,這樣你就可以用越低的利息借錢。

---普通上班族的薪水一定要提撥出兩份存款,一份給自己,一份給未來的父母親(醫藥費)。你現在不存,以後就沒有。

---財務獨立,從切割自己的財務與家人的財務開始。你的錢不是不給父母親,而是幫他們存起來,因為他們根本不會理財。

數位經營者第363講:學校沒教的理債觀念(二)不要借錢還債

2004年,年輕人已經過著暗無天日的償債生活兩年,眼看著再熬三年就可以解脫了。而大環境也在改變著,銀行的貸款利率隨著政府的政策持續下調。某天,年輕人接到一通電話,是母親打來的,說是透過朋友介紹,某銀行的襄理可以用更便宜的利率幫年輕人辦理代償。
 所謂的代償,就是跟甲銀行借錢去還乙銀行的錢。由於年輕人在2002年時跟五家銀行貸款的利率比較高,而2004年貸款的利率比較低,所以這個銀行襄理想要說服年輕人,跟他們銀行借錢吧,借出來利息低的錢,去償還當年利息高的貸款所剩下未償還的三年餘額。

◎代償比較划算嗎?

 當時,年輕人在跳槽後的新電信公司工作,負責通話費率的計算。由於日常接觸到大量的成本利潤結構資料(他甚至用Excel自己建立了一個龐大的財務模型,把各種參數套進去就可以算出行銷費用的成本結構),對於財務的觀念也日漸清晰。

 代償比較划算嗎?年輕人半信半疑,以前借的錢利息高,所以現在借利息低的錢去還,好像有道理。然而,當年借的是五年貸款,再三年,也就是07年就還完。現在借新的五年貸款,雖說把以前的舊債還清了,但新債要到09年才還完,這,前後總計相當於七年貸款。

 五年貸款!七年貸款!年輕人想起當初貸款時看過代辦公司提供的利率表,印象中記得七年貸款的利率比五年低。如果記憶正確,那現在借新貸款去還舊貸款,就相當於當初一開始就借七年代款一樣,利息低是很應該的!很正常的!並無任何優惠可言!

 2004年的年輕人已經不一樣了,他有工具,有概念。為了求證,他很快用Excel算出在下列條件下,哪一種方式是最划算的:

 條件一:不借新貸款,剩下三年以9%~13%的高利率持續還舊貸款。
 條件二:借新貸款,還舊貸款,利息低至6%,借期為五年。
 條件三:借新貸款,還舊貸款,但只借三年,但利息會比借五年高。

◎不要借錢還債

 年輕人很快的得出一個結論。借新貸款去還舊貸款的人是傻子!優惠並不明顯,只是徒然幫銀行創造銷售業績罷了!上述三個條件下,只有老老實實採用《條件一》按照原訂計畫把錢還完才是最聰明的。這個事實震撼了年輕人,因為他第一次搞懂了利率的把戲是怎麼回事。

 只有一個情況是對年輕人最有利的,就是依照《條件三》只借三年新貸款去還舊貸款,但是新貸款的利率要比照《條件二》,這才是真正的划算。然而,銀行何其聰明,這麼對貸� 琱H優惠的條件是不會存在的,年輕人跟銀行襄理在電話中確認了這個事實。

 他們相約見面。年輕人把預先準備好的Excel表格印出來,攤在銀行襄理面前逐一解釋為何他們的貸款方案不夠優惠。襄理很有風度的微笑,然而卻無法反駁精確的數字,他知道這個生意做不成了。會後,他問年輕人:這張表格可以給我嗎?年輕人攤攤手,把表格送了他。

 借錢還債是划算的嗎?一定要先算過!

 在解決上述難題後,年輕人又遇到新誘惑。兩年的償還讓他的手頭比較寬裕,每個月還能存錢。他打算把餘錢累積起來,例如到20萬台幣,就拿去清償當初借款的五家銀行其中一家的全部貸款。只要一口氣解決一家,每個月的現金流就多出來了,這是正確的理債方法。

 然而,在清償之前,錢也只是存在銀行裡生利息。要不要拿去投資?

◎不要借錢投資

 買股票嗎?台灣的股票市場實在看不懂。買基金嗎?聽說要做長線投資?還是買外匯?完全沒概念。然而,不論怎麼樣的投資都有人賺錢有人虧錢。關鍵是,年輕人虧得起嗎?這些錢是他累積起來要還債的,如果他把這些錢拿去做投資,其實就相當於借錢投資了。

 最終,年輕人選擇了繼續把錢放在銀� 獢A依原訂計畫累積到足夠清償某家銀行的貸款時,再把錢動用出來還債。每還掉一筆,每個月的現金流就會增加。投資,會有賺有虧,而他知道他虧不起。年輕人再度學習到,借錢投資是愚蠢的,只有使用閒錢投資的人才是聰明的。

 因而,有債要先還,而不是有一點錢就去搞投資!

 從2004年開始,五家銀行的貸款逐一被解決。很幸運的年輕人在這幾年當中沒有缺手斷腳失掉他的工作。然而,情況還是很窘困的。當他2006年砸鍋賣鐵到大陸去工作的時候,在第一個月薪水還沒領到的青黃不接的情況下,居然是靠著信用卡預借現金撐過的。

 年輕人是幸運的。他在銀行工作的朋友事後告訴他,大部分人在借了超額貸款後,遇到現金斷流就開始動用信用卡預借現金,接下去辦越來越多信用卡應付資金周轉問題,最後變成卡奴乃至萬劫不復。動用信用卡預借現金應付貸款,那不就是等於借錢還債?萬萬不可呀!

 回首2002年9月份所做的那個財務決定,年輕人簡直就是在玩火!

◎這個故事告訴我們…(很遺憾,學校為什麼不教?)

---不要借錢還債。借來的新貸款或許可舒緩現金流壓力,但只是把問題往後丟而已。如果你的現金流正常,沒事不要借新款。

---不要借錢投資。借5%利息的錢去投資預估收益會有15%的標的就是財務槓桿。要一輩子冒險成功是很難的,而失敗只要一次就夠了。

---有債要先還。手上有餘錢就心癢難耐,期待透過投資賺更多。事實上唯有先拿去還債才是正途,長期會解決你現金流的問題。

---理債或理財的關鍵:關注現金流!理債的方式要朝向增大你的現金流的方向走,理財也是一樣,要買入能夠增大現金流的資產。

數位經營者第362講:學校沒教的理債觀念(一)關注在現金流

2002年,一個年輕人剛滿30歲。9月份,他簽下人生中的第一筆貸款:240萬台幣,分別給當時的女友和家人使用。10月份旋即從台灣某知名上市電信公司離職,投入另一家初創電信公司,開始了他之後五年內月領10萬台幣薪水但是窮苦與酸楚異常的生活。
 本系列文章,是要講述一個理財智商為零的年輕人,如何為他懵懂無知的財務決定付出重大代價。雖然,這些經歷比不上那些負債上億最後神奇翻身的名人,但是相信這些經歷更加貼近市井小民的生活。也因為這240萬的負債,他終於弄明白,人生的路應該怎麼走。

◎這樣負擔不會很重嗎?

 通常,在台灣一個普通人的個人信用貸款大約可以到80萬台幣(實際額度由銀行最終核定)。而不管是跟幾家銀行貸款,所有貸款加起來很難超過這個額度。為了控制風險,當你跟銀行貸款時,銀行會透過聯合徵信中心調查你在其他銀行的貸款情況。所以說,要超過很難。

 然而年輕人卻一口氣跟五家銀行貸款總計240萬。除了因為在上市電信公司工作因此銀行願意給比較多之外,也因為找了坊間的理財顧問公司代辦。代辦公司據說有通天本領可搞定一切,然而事後想起,也不過就是上網搜尋一下就放心的委託人家� h辦,其實真傻也真危險。

 在代辦公司S小姐陪同下,一天內跑完五家銀行辦手續。S小姐儘管代表著代辦公司的利益,還是好心的問:這樣負擔不會很重嗎?年輕人得意的笑了:我算過嘿,每個月還貸款加上日常開銷還能存點小錢。存的錢累積到一個程度,可以再投入還款,可以縮短負債的時間。

 這五筆貸款的利率、金額及還款年限各不同(五到七年),年輕人擬好計畫要先把利率高金額小的優先還掉。如果不出意外大概四年就可以全部還完。這樣的財務規劃讓年輕人徹底的變成月光族,然而此時的他卻還沒有辦法想那麼多。而他最後總計花了五年才全部清償完畢。

◎地平線以下的人生

 接下去有個大問題。年輕人的年收入大約是120萬台幣。但是由於公司都是年終獎金發6個月以上的,所以其實平日的薪水沒有那麼高。換言之,120萬裡面有好大一部分是到了年底才能拿到。雖然電信公司年終獎金都是會發的,但是,這樣子每個月的開銷會成問題。

 年輕人雖然理財智商很低,但卻也隱約感覺出,現金流的重要性。如果每個月的還款不能從每個月的薪水支應,那最後勢必造成要去借新的貸款來應付,還要再付新貸款的利息錢,這完全是不對的。因此,寧� i去找一份月薪比較高但是年終獎金發比較少的工作才對。

 就這樣,貸款下來之後一個月,年輕人順勢跳槽了。新工作的年薪增加了一些,年終獎金也少了,但月薪達到9萬台幣,足夠他應付每個月的開銷,更何況後來逐年加薪到10萬。然而,這個看似完美的理債計畫,執行一年後年輕人就開始陷入了地獄般的心情當中。

 每個月發薪水的那一天是年輕人最痛苦的一天,因為一天之內薪水馬上一半不見。剩下的一半再付掉台北市房租,其餘的錢僅夠生活,有時甚至沒有餘錢可以存款。他覺得自己窮困極了,一想到未來還有好多年,就覺得自己的人生在地平線以下,不知何時才能爬到一樓來。

◎複利,資本主義最有威力的武器

 年輕人突然意識到,理財的關鍵在於管理風險。然而此刻的他,風險卻是巨大無比。他能保證五年內一直有工作嗎?他能保證哪一天出門不被車撞嗎?不需要重大傷亡,只要一點小傷讓他兩星期不能工作,他的現金流就斷了,之後會兵敗如山倒…。他生活在深深的恐懼中。

 年輕人把希望寄託在保險。風險需要管理,因此在他的負債生涯中,保險的錢從沒中斷。他知道,萬一出事了沒人能救。然而年輕人的工作選擇權依然受到限制。 � L一直計畫到大陸發展,只是到新地方工作更沒保障,而他甚至承擔不起一個月沒工作。大陸計畫,也就擱淺了。

 他努力的翻譯書籍賺外快,想要有更多的現金。而當他把眼光放遠,卻看到了更可怕的事情。當年輕人的大學同學都已經在開始存下人生的第一個百萬時,年輕人的存款卻是負一百萬。當年輕人五年後終於把貸款還清的時候,他的資產是零,而他的同學已達數百萬。

 而當他的資產開始變成正數的時候,他的同學已經拿百萬現金開始投資。大家都知道,資本主義最有威力的武器在於複利。簡單來說,手上錢越多的人越容易累積財富。所以可以想像,現在年輕人跟同學的差距是一百萬,10年後甚至20年後的差距,不會只有一百萬。

 年輕人捶胸頓足,當年拍胸脯以為擔得起,其實什麼都擔不起。

◎這個故事告訴我們…(很遺憾,學校為什麼不教?)

--- 任何個人財務決定都應該以10年以上的眼光來看待。你現在能負擔,不代表10年後你還行。因為,複利是資本主義最可怕的武器。

---「現金流」是企業經營所關注的焦點。然而,對於個人理財來說也是。找出可能讓你現金斷流的風險,管理它。保險,是可接受的。

---不要讓自己陷入現金流吃緊的窘境,永遠不要。現金斷流會引起骨牌效應,而這輩子可能只要一次現金流斷流就夠了,你就再起不能。

---貸款買房子讓個人陷入絕大風險中,讓小康家庭現金流吃緊。不確定買房究竟算買入資產還是負債,但買入負向的現金流則是肯定的。

專題:正面、負面、有趣面

◎編按:作者愛德華.狄波諾有思考大師之稱。他所創造的「水平思考」(lateral thinking)這名詞,如今收錄在牛津英文辭典裡。本文即節錄他的思考法。
 我曾經要求70位年輕聰明的成年人寫篇文章,內容是婚姻每五年就換約的合同。結果是,其中有67個人在文章的一開頭就表達他們的意見,然後用其餘的篇幅闡述理由以支持觀點。

 除了強化他們已經形成的看法,通篇都沒有著墨議題的探討。有時候,這就是一般要求書寫文章時該有的格式。就像我先前提過的,傳統思考的最大缺點就是想辦法支持已經形成的主張(得自於第一印象、青菜想想、偏見或因襲傳統),這是智力困境的主要陷阱之一,高智力的人更容易深陷其中。他們能夠輕而易舉地捍衛觀點,使得連花點時間探討整件事都顯得多餘。如果你知道你是對的,而且也能夠對其他人說明論證,又何必白費工夫探究這議題?

 簡單到不需要學習的思考工具

 PMI是個強而有力的思考工具,而且簡單到不需要學習—因為每個人都自認為早就在做了。我特別選擇好發音的字首縮寫,讓我們方便要求自己或其他人「來做個PMI練習吧」:

P代表「正面」(Plus)或有利點。
M代表「負面」(Minus)或不利點。
I代表「有趣面」(Interesting)或有趣點。

 PMI是個引導注意力的工具。在做PMI練習時,你要刻意先將注意力集中在有利點,接著轉到不利點,最後考量有趣點。這個練習要以非常審慎和有紀律的態度在兩三分鐘內完成。

 PMI是CoRT思考課程中最早被學校採用的,理由是除非吸收了PMI的一些觀念,否則其餘的60堂課根本是浪費時間。PMI有助於將心境調整成客觀和全面審視的心態,這一點我會在稍後解釋。

 有一次我應邀到澳洲雪梨,為一群教育專家示範CoRT思考課程。在開始上課前,我要求那30位男童(10~11歲)告訴我,只要他們乖乖上學,每個人一週都能拿到5澳元,這個主意他們覺得如何?他們全都愛死了這個構想,然後開始告訴我他們打算如何花用這些錢(買糖果、漫畫等等)。我於是解釋PMI方法,接著要求他們五人一組分組討論,針對這提案中的5澳元設想正面、負面和有趣面。三分鐘後,每個小組的發言人報告結論,出現了許多論點:

˙個頭大的男孩會痛打他們,把錢搶走。
˙爸媽就不會給禮物或給零用錢。
˙學校會提高營養午餐的價錢。
˙誰有權決定每個年齡層的學童該給多少?
˙這筆錢會引發爭吵和肢體衝突。
˙這些錢從哪來?
˙付給老師的薪水就少了。
˙學校就沒錢買迷你巴士了。

 在此練習的最後,我再問一次他們是否喜歡這主意。之前百分之百的孩童喜歡這構想,現在,顯然30個裡面有29個完全反轉看法,不再喜歡這個構想了。最值得留意的是,光是一項簡單的審視工具,而且還是學童自己操作,就能產生這樣的變化。我並沒有多加介入,而對這議題本身也從沒說過任何一句話。

 如果你想針對「所有的汽車都應該漆成黃色」這個議題做PMI練習,你的結論可能會像這樣:

◎正面
˙在路上比較顯眼
˙夜晚時比較容易看得見
˙省得你還得決定車子要漆成什麼顏色
˙節省等待汽車漆成你所要顏色的時間
˙汽車製造商會省事許多
˙經銷商可留較少的庫存
˙可能會消除車主「雄赳赳」的味道
˙汽車會回歸單純的交通工具本質
˙發生小擦撞時留在你車上的烤漆顏色相同

◎負面
˙無趣
˙難以辨識自己的車子
˙在停車場裡很難找到自己的車子
˙偷竊汽車變得容易
˙滿街的黃色汽車讓人眼睛疲乏
˙警察在追逐歹徒汽車時會有困難
˙意外事件的目擊者會更難辨別
˙選擇的自由受限
˙部分的油漆廠商會沒生意做

◎有趣面
˙看看是否會出現各種色調的黃應該很有意思
˙看看人們是否對安全因素有好評應該很有意思
˙看看人們對車子的態度是否有改變應該很有意思
˙看看是否出現不同顏色的邊飾應該很有意思
˙看看這構想是否可行應該很有意思
˙看看誰會支持這項提議應該很有意思

 完成這些步驟相當容易,難的是,即使一開始你的偏好就已經替你決定對該構想有什麼感覺,仍然得從一個方向到另一個方向地引導注意力。這種查看某個方向的「意願」正是其中的關鍵。過了這一關,接下來對智力的必然挑戰,就是盡可能發掘更多的正面、負面或有趣面。所以這當中有個轉變:聰明才智不再用來支持你的偏愛,而是用於探究議題。

 探究結束後,你的情緒和感覺可以用來決定事情。這中間的差別在於,情緒的運用是在議題探究之後而非之前,也因此避免了阻礙議題的探索。(本文摘自《在「沒有問題」裡找問題:思考大師狄波諾翻新你的思考力》,臉譜出版,2009年5月)

2009年5月27日 星期三

金融操作所為何來?

以下文章轉貼自楚狂人BLOG
為了賺錢而操作還是為了手癢而操作?
常常看到很多人會每天都很想進場操作,就一直問我:你怎麼很久沒進場啦?要有行情不就跑掉了?

我通常回答,因為今天系統判斷為盤整區,不適合進場,等到有波段訊號出來當然會進場,
散戶朋友總是無法理解,或者說可以理解但是總覺得有點不甘願。

先退後一步想想,您操作股票或期貨的目的為何?是因為想操作,不作手會癢?
還是為了要賺錢?

當然是為了賺錢!

所以在股市中,任何與賺錢牴觸者無效,例如明明不是最佳進場時機卻進場,
明明盤整區很容易受傷卻硬要衝,這是非常危險的事情。

永遠記得:金融投資不是在比順山順水的時候誰賺比較多,而是在比不順的時候誰虧比較少。

股災有啥好怕?

以下文章轉貼自楚狂人BLOG
從大陸股市跌近一成到美股跌了3.x%,亞洲股市無一倖免的時候我們該做什麼?

1.停止抱怨和說喪氣話,弱者愛抱怨問題,強者會試圖解決問題。

2.該停損的記得停損,大家都會很期待在跌了一天之後的反彈,彈不彈是一回事,碰到停損點一定要先出場再說,這部份不能夠打折或賴皮。

3.汰弱留強,有些股票會比盤中大部分股票要弱,通通賣掉換成強勢股,通常在利空打壓之下還強勢的股票,真正反彈或止跌回升也會跑第一。

4. 不要看分析師亂講話,電視上那些人沒有一個能在股市大跌前一天就告訴你該賣股票、該放空期貨,100%都是事後諸葛亮,所以看他們亂講話只會擾亂你的思緒,據我所知,其實很多人以前在股市頭部都有逃掉,只是大盤大跌的時候聽了分析師的話過早進場接股票,結果重傷,這就是為什麼我說不要聽分析師亂講話,只有壞沒有好。

5.股票下跌記得先出掉,如果它過幾天又慢慢漲過高點記得買回來,我幾個朋友被我日夜薰陶之下都知道要停損,可是股票出掉以後都不知道要買回來,結果只能夠看著它過高再過高,一去不回頭。

股災並不可怕,起碼對於有資金控管的人來說還好,每次大跌都別忘了上面幾個建議,對你的財產會很有幫助。

講到這次大陸股市大跌,我想修正一下之前說過有機會腰斬那篇的看法,中國政府知道心急吃不了熱豆腐,知道股市過熱對整個經濟並沒有好處,就開始採煞車,這次放風聲會收證所稅,報出來又否認,可是已經達到股市降溫的效果了,急跌緩漲是多頭的特徵,等到漲過前波高點可以進場再追一段。中國政府真是聰明,膽子又大,我很佩服。

判斷多頭空頭的小技巧--2

以下文章轉貼自楚狂人BLOG
之前有教過大家一個方法判斷多頭空頭,今天再教大家一個更簡單的方法,請先把大盤日線圖拿出來,找出中長期均線,像月線、季線、半年線、年線,看看他們在今天收盤價的上面還是下面,如果都在上面,那很明顯就是空頭走勢,反之為多頭。

如果有的線在上,有的線在下面的話,那就代表趨勢不夠明顯,可以繼續等待。

講一下原理,均線就是這段時期買進股票的人的平均成本,換句話說,月線就是這個月所有投資人持股成本,季線就是本季投資人的持股成本,半年線就是……,今天收盤在月線之下的意思就是本月買進股票的人都是套牢的,季線之下就是本季買進的都套牢,半年線……,既然這個月、這一季、這半年、這一年進場的投資人通通都被套牢,那很直觀的可以說現在是空頭,讓人恨得牙癢癢的空頭;反之如果現在大盤在每條線之上,您一定可以舉一反二,我就不贅述了。

這不只是大盤可以用,個股同樣可以用,像前股王宏達電,我不能理解為什麼大家這麼愛買它,我周遭有超過十個人去搶這支的反彈,結果通通住套房,把走勢圖拿出來一看就知道是走大空頭的股票,走空頭的股票連碰都不要碰,風險大於預期利潤太多,划不來。

判定多頭空頭的小技巧

以下文章轉貼自楚狂人BLOG
有時候和一些初學投資的朋友聊天,偶爾被問到:『股票很難嗎?多頭買進,空頭賣出就好啦!怎麼聽說股票賺錢的人很少?』
是啊!『多頭買進,空頭賣出。』聽起來十分容易,但是就在這一買一賣之間可以衍生出無限的變化,所以多頭、空頭總是過了以後才突然驚覺『喔~~!原來今年是多頭年。』可是在事後發現是多頭還是空頭一點用也沒有,這就是為什麼股市賺錢訣竅就在於『低買高賣』四個字,明明大家都知道,但是大家卻還是賺不到的原因。

不過倒也沒這麼悲觀,根據我多年來的觀察,多頭和空頭有一個很明顯的不同點,就是多頭的時候看報紙做股票也有可能會賺,空頭則一定死。

拿一份週末的報紙證券版或是Smart智富月刊,找裡面的十大明星分析師票選潛力股或看好股的部份(一定有,請用力找一下),挑前十到十五名出來,把股名和今天的價位記起來,過半個月到一個月再把這些股票今天收盤價位登記一下,如果發現大部分或是平均是上漲的,那現在應該就是多頭沒錯。反之如果平均是下跌的,空頭的機率比較大。

除非剛好遇到多頭中的修正或是空頭中的反彈,那就可能有例外。

這種方法大家可以去調過去資料和歷史股價出來比對,測試一下有沒有準。
我自己的經驗來說之前聯電、威盛、台積、聯發科……,試驗過是ok的。

不過當然也不可能就此一招半式闖江湖,所以這裡只是提供一種判定多頭空頭的小撇步給大家參考。

頭部的特徵

以下文章轉貼自楚狂人BLOG
今天來講講投資人聞之色變的頭部,頭部之所以可怕在於它總是偷偷地、輕輕地來臨,當時僅有極少數的人會警覺到這是頭部,大多數的投資人總是等到跌了一大段才發現原來之前那個叫頭部,卻只能看著手中的持股長嘆:『此價可待成追憶,只是當時已枉然。』

頭部有幾個特徵:
1.大量,這幾年的頭部至少都有1900億以上的成交量,所以在量能超過1900億以後就要皮繃緊一點。
2.你以前覺得是反指標的阿桑或阿伯會來教你買哪隻股票才會漲,也就是擦鞋童和雞尾酒定理。
3.八卦或非商業的雜誌也開始有股票版面。
4.商業雜誌(商週或今週刊這種,不是專門講股票的雜誌)連續兩期以台股當成封面故事。
5.期貨常常五十點,甚至百點以上的正價差。
6.身邊或是有聽說某人願意借錢去融資買股。
7.大型權值股一陣子沒過高,盤面上熱的都是一些小型股或沒聽過的股票。
8.只要一下跌網路和號子裡會出現『最後買點』的聲音。
9.停損會被大家嘲笑。

大概想到這些,不用去考量M頭、三尊頭之類的技術分析,只要看到上述任意幾個特徵就該小心了,不出清也要減碼,我想大家應該都分得清楚少賺與賠錢中間可是差別很大的。

所以其實頭部沒什麼好怕的,辨別並不難,只要把自己控制好別被周遭人影響即可。判別頭部最大的用處在於投資ETF或共同基金的時候需要避開頭部,只要別買在頭部,投資賺錢機會非常大。

目前看起來最危險的地方大概就兩個,一個是大陸股市,一個是越南股市。最近注意到的大陸股市相關新聞:年息24% 溫州人借錢買基金、全民瘋股市保母司機都在買、大陸民眾不上班去炒股……。而越南股市是因為已經有超過十個人問我有沒有門路可以買越南股票(他們不是問我可不可以買,而是問我該怎麼買),而這些人平常都是不理財、不投資的。全都瘋了。

我已經和願意聽我建議的親朋好友講:請把大中華區或是亞洲區的基金部位降低,改買別的區域。不願意聽的我也沒有辦法了。

希望大家都不要受傷。

2009年5月25日 星期一

股市老手不等於股市贏家

以下文章轉貼自楚狂人BLOG
投資這件事最有趣的地方就在於久了不一定就會變專家,與任何工作都不同,你身邊一定有很多很多人股票已經做了十幾二十年,還是一樣每次玩每次賠。這就是股市迷人的地方。今天來講講為什麼股市老手不等於股市贏家。(今天的文章會用到一滴滴的專有名詞,我盡量刪,還是看不懂的就跳過吧。)
楚大叔知道自己和身旁那個歐巴桑的臉色一樣難看,因為剛剛大盤又無情的破底,他的股票再也補不出保證金,被斷頭了。唉~~!不該聽人家講要長期投資的,長期投資害我虧了幾百萬。我要想想該怎麼翻本才好,電視上分析師那招不錯,每支股票好像都可以畫出支撐和壓力,要是我也學會就好了。

楚大叔痛定思痛之後,第二天就到書店去買了七八本技術分析的書來看,指標、波浪學、型態學……,雜七雜八通通買回家研究。慢慢研究出一些心得來,知道電視上的分析師為什麼說量價背離不好、KD值下彎就死定了,abc三波下跌是什麼意思。

『喔~~! 我以前會賠錢的原因是不懂技術分析,現在該是我老楚翻身的時候了。』於是楚大叔就用技術分析開始在奇摩股市找標的,找了一支看起來已經築好底準備上攻的股票,隔天早上就市價買進。這支股票果然沒有辜負楚大叔的期望,真的上漲,漲了大概20%以後,開始不動了,每天只是上下震盪,楚大叔心想:明天就賣掉,頭部都做出來了,該是選別支的時候。

隔天早上市價賣出,賣完以後果然就急殺半根停板,楚大叔得意至極,卻又故作輕鬆的樣子跟隔壁的阿桑說:『我早就說這支已經作頭,今天只殺半支停板很客氣了,明天鐵定跌停。』言猶在耳,這支股票第二天突然爆大利多,開盤就漲停鎖住,兩天就漲過前波高點,當場讓楚大叔顏面掃地。『這應該是我運氣不好,剛好我一賣就出利多。』

隔天楚大叔再接再厲找了一支擁有看起來簡直是技術分析教科書一樣完美線型的股票,『這支股票這麼漂亮可不能讓它跑了,我押重注這次鐵定要連本帶利賺回來。』楚大叔心裡想。

隔天果然就跳空漲半支漲停,可是天不從人願,市場突然傳出這家公司下個月營收會大幅衰退,外資全部調降評等,午盤後急殺跌停,楚大叔傻了,『怎麼可能呢?怎麼我這麼帶衰,一賣掉公司就放好消息,一買進公司就出壞消息?難道我真的不適合做股票?』

沒錯,楚大叔你的確不適合做股票,我以前就有提過,技術分析只能當作參考之一而已,千萬不要只看技術分析做股票,那會很容易受傷。股票的線型和指標都是主力和公司派用錢做出來騙這些散戶用的,特別是每日均量不到兩千張的小型股,明明就是已經三尊頭或是M頭都出來了,可是等大家都賣光或甚至去放空的時候,隔天直接跳空漲停給你看;明明平台整理一個月,量都整個縮掉,買進後突然發利空,先跌兩三支停板再說。

醒醒吧!現在全國有哪個股民沒有聽過KD、MACD、5MA……這些東西,大家都會的東西怎麼可能賺大錢呢?

巴菲特會看推動波買股票嗎?不會!
索羅斯會看吞噬就去放空嗎?不可能!
張松允也講過他不太看技術分析。
那你為什麼還執迷不悟地覺得你可以靠畫畫線就賺大錢呢?

股市老手幾乎都有個壞毛病,喜歡畫線給大盤走,預測明天會怎麼走,也就是說很習慣會因為某個學派的某個判斷方法,一口咬定這個點一定不會跌破或是不會突破。
KD值已經在高檔死亡交叉,當然要放空,未必未必!
五波下跌以後就可以搶大反彈,危險危險!

反例很多,隨便找都有,我今天只是要帶給大家一個觀念:可以參考技術分析,但是不可迷信技術分析,根據財報選好股票以後,用技術分析篩選一下,把一些線型太醜的刪掉,這才是正確的心態,而不是只因為這隻股票有五波上漲的態勢就去買進,那看錯的機會很大很大。

當然還是有只看技術分析而賺錢的人,不過這種人鳳毛麟角,而且他們也絕對不會只單看一種,通常是七八九十種分析綜合評估,選出的股票完全符合買進條件,再配合停損停利來操作,這樣就有可能賺錢。不過很累人,建議別自己找自己麻煩。

不知道楚大叔什麼時候才會想通這個道理,不是只會用嘴巴做股票。

股市新手都是怎麼陣亡的?

以下文章轉貼自楚狂人BLOG
做股票、期貨的人多數都賠錢(股票大約80%~85%,期貨大約95%),一般來說賠錢的股民可以分成愛劃線的技術分析派和愛看電視的自以為長期投資派,前者通常是老股民,後者往往是剛開始接觸股票的新手,我們今天先來看看新手都是怎麼賠錢的。

故事總是這樣開始的:楚小小是一個剛畢業的社會新鮮人,他在1999年剛到一家公司上班,公司裡面的大哥大姐都挺照顧他,時常會提點他,某一天前輩甲跟他說:『小楚啊,趁你還年輕要趕快學會投資理財,不然退休會很淒涼。』

於是楚小小就很乖巧的去書店找投資理財相關的書,看到一堆圖形的股票書他頭就很痛,也看不懂,就只好找那種說故事教投資的,而這種絕大部分都是跟他講長期投資比較好(理財聖經、股票聖經之流),翻了兩本他就覺得自己懂了,長期投資還不簡單,買了不要賣就好,可是因為隔行如隔山,不知道買什麼,所以就只好看電視上的分析師的推薦熱門股,他挑一隻有聽過的公司--聯電買了抱著,中間漲漲跌跌,死都不賣,給他碰上聯電五合一的大利多,大漲一波,也有遇到一些利空下跌,像是921大地震也沒把他洗掉,最後聯電漲到120塊,楚小小很得意,玩股票有什麼難的,套住就不要賣,他自然會漲回來,公司那些老頭都腦袋不清楚了,買了不賣都不會,哼!!

於是他從七十塊買了一張,中間參加除權,又填權,抱到120的時候,到處聽到看到的消息都覺得聯電很有可能會突破之前175塊的歷史高點。於是楚小小在想如果漲到175他就可以一張賺十幾萬,白天工作也都一直想偷看股票今天怎麼樣了,心理對於這份工作變得可有可無。

漸漸覺得一張一塊這樣太慢,他把一張現股改成兩張融資,這樣賺錢速度x2,他深深地為自己的決定自豪,等到大盤上了萬點,有一陣子股票都沒再創新高,他覺得有點納悶,怎麼報紙上法人評選第一名的股票沒什麼漲呢?不打緊,繼續抱著,反正長期投資才會賺。

股票開始下跌~~!

聯電跌到100塊了,楚小小以為又是一次像921那樣的買點出現,又籌10萬去買兩張,現在總共有四張融資,賺錢速度可以加倍。他滿懷希望地想著。

繼續下跌,跌到80塊,楚小小還想買,可是口袋的錢不太夠,好吧,就續抱好了,真可惜,要是我買了平均成本又可以降低,只要漲個10塊就回本,漲回120就大賺。

繼續下跌,跌到55塊,營業員打電話來說維持率不夠,要補錢,不然就斷頭,天啊!怎麼可以讓他斷頭,那不就什麼都沒有了嗎?跟老爸老媽先借一點錢來頂著,等到漲回去就還他們。

跌到50塊,老天保佑,我不要求他漲回120,漲到100就好,不不不,80就好,只要讓我拿回我的本就滿足了。不然我怎麼面對我爸媽啊!

跌~~!跌~~!跌~~! Repeat!

終於狠狠地跌破50塊,還記得那天大盤跌了四百多點,一大票人和楚小小一樣斷頭斷得乾乾淨淨。『股票好難啊!我再也不要碰股票了。』楚小小這樣想。

By The Way,第二天就開始一千點的反彈。但是這和楚小小一點關係也沒有了。
--------------------------------------------------------------------------

楚小小做了哪些錯事?
1.他不該融資,什麼都還搞不清楚就使用融資,那是死路一條,融資是一把銳利至極的寶劍,高手使用就削鐵如泥,低手使用就容易削到自己手。
2.他不該攤平,賠錢代表看錯做錯,做錯不要緊,認錯就好,不認錯還變本加厲、錯上加錯,當然賠錢速度更快。
3.他不該人云亦云,沒有不勞而獲的,只看看報紙、看看電視就發大財,那天下沒有窮人了,自己買的股票自己要下苦功研究,不然就別買股票,定存比較恰當。

這沒什麼大不了,楚狂人我以前也斷頭過,和楚小小的情況幾乎一模一樣。

2006~2008這波看來又是大多頭,提醒大家盡量別養成逢低就買的習慣,即使準十次只要第十一次出錯就全盤皆輸。我怎麼知道?因為我輸過。

這篇是介紹給股市新鮮人看的,老手、高手別呸我,下一篇寫老手都是怎麼賠錢的。

金融操作沒這麼簡單

以下文章轉貼自楚狂人BLOG
金融市場每種現象都是多種目的和手段去綜合操作出來的,而且任意的過程和任意的結果是多對多的關係。

聽不懂我在講什麼對不對?
舉個例子給大家聽:大家看到美股收低,首先會想到的是什麼?大部分有一點經驗的投資人應該會猜測台股會開低,然後開低走高還是開低走低就再說。但是如果台股開平盤附近,甚至開小高呢?這時候應該用利空不跌來判定還是主力想要營造開高走低超長黑k棒的恫嚇?還有一種可能,台股開低震盪,整天都在低檔盤桓,然後第二天直接跳空開高走波段。

而且這只是現象,還需要探究美股收低的原因,是科技股出什麼大事?跟台灣的公司有沒有關係?台灣公司的ADR有沒有影響?影響是長期的還是突發狀況而已?

光是美股收低就可以衍生出來很多變化,難怪在金融市場散戶總是只有被宰割的份,當然你可能會想『我不會再犯以前那些愚蠢的錯誤了』,但是不只你會進步,主力也會進步。以前看融資餘額可以有效的判定股票頭部、底部,現在主力可能自己買融資,一方面騙人,二方面先卡位;以前只要有災害第二天就準備買股票,現在大家都這樣想,股票根本沒什麼跌,也就沒有逢低買進的機會。諸如此類的例子很多,再再顯示主力操盤的技術比你想像的進步還大,起碼大於你我小散戶吃虧學乖的幅度。

我講這個只是提醒大家,如果有人想要做股票或期貨來取代上班領薪水可能並沒有你想像的那麼簡單,在順風順水的時候當然賺錢又快又多又輕鬆,但是當做股票遇上大空頭、做期貨遇上盤整兩面巴的時候,有沒有辦法耐得住,這應該事先要想清楚,才不會發生『看人挑擔不吃力,自己挑擔壓斷脊』的慘事。

散戶的優勢?

以下文章轉貼自楚狂人BLOG
別看外資很風光,其實散戶投資人也佔有很多優勢
優勢1.散戶錢少,可以選擇的股票種類多,飆股往往是中小型的股票,而不會是台灣五十裡面的大型權值股,外資因為必須考慮到流通性,也就是買了以後賣不賣得掉的問題,不太會去買小型股,也就不太可能買到漲十倍的飆股。
優勢2.散戶靈活,因為手中了不起五百一千萬,要買進、賣出都很方便,單一外資如果只買個一千萬對他們整體績效完全沒有幫助,一買可能就是幾億、幾十億,等到一有風吹草動,多頭修正的時候,也往往只能有限度的砍倉,或者看著股票止跌翻揚。

優勢3.散戶資金少,不需要花太多心力在避險上面,外資手上有幾千億的股票,為了怕遇到系統性風險,例如319、921這種的,同時一定還要有相當程度的期貨空單,也就是股票下跌的時候,期貨這邊可以彌補損失,可是相對來說股票上漲也會減低獲利的程度,相當吃虧。

優勢4.散戶可以專心研究一兩支股票,每次就只要作這一兩支就好,外資不行,如果外資錢只丟在同一支上面,那漲的時候很高興,漲不動了根本出不掉。

優勢5.散戶可以一年作一次股票就好,所以可以等到價位跌到滿意的時候再買,外資不行。想想你買基金,結果他讓你等了半年還沒進場,你會不會想贖回。

優勢其實很多很多,不過每次看到散戶朋友總是賠錢,外資法人總是賺錢,這又是為什麼呢?

原因1.散戶雖然能夠買飆股,但是一來選股功力不足,二來就算選到也抱不住,所以這項優勢等於沒有。

原因2.散戶在下跌的時候可以砍股票卻不想砍、不捨得砍,所以斷頭、腰斬也逃不掉,這項優勢同樣等於沒有。

原因3.散戶往往會把避險的期貨跟主業的股票搞不清楚,最後變成股票是避險,期貨是主業,但是實力又不足,在期貨市場被坑殺,或者說明明股票賠錢,期貨賺錢,應該要賣股票加碼期貨,但是散戶卻總是反著作,把賺錢的賣掉,賠錢的留著。

原因4.散戶喜歡聽明牌,這次買這支,下次買那支,專心作一兩支的散戶非常少,如果有大概也是錢全部套在那一兩支,被迫作長期的。

原因5.散戶常常不是為了賺錢而作,是為了手癢而作,耐心與紀律都不存在,一年作一次的人幾乎不存在。

結論就是散戶空有眾多優勢卻不能把握,他們不賠錢就奇怪了。

有錢人想的和你不一樣(Secrets of the Millionaire Mind)

以下文章轉貼自楚狂人BLOG 有錢人和你想的不一樣
這本書分為兩個部份
第一個部份強調金錢藍圖
何謂金錢藍圖?這分好幾個部份

一個人能夠賺多少錢,留下多少錢都是由他的金錢藍圖決定
而他的金錢藍圖是由他的腦袋決定
不是聰明與否的問題
而是他自己給自己的目標設在哪裡他身價最後就會在哪裡

很玄對吧
有沒有聽過有人本來很有錢,後來卻變成窮光蛋?
有沒有聽過有人開頭很像會創一番大事業,最後卻失敗?
有沒有聽過有人中樂透,過幾年卻財產只剩他未中樂透之前的水平?

表面上看來當然可能是因為不景氣,遇到騙子合夥人,股市下跌,時運不濟......等等,
但是其實就是他本身的金錢藍圖不夠大。
也就是說一個人在他還沒有準備好以前,突然拿到一筆大錢,超出他的能力範圍,那不久後自然這筆錢會慢慢離開他。
但是反過來說
如果這個人本身就是個白手起家的富豪,即使不小心破產了,他也能夠在短時間內翻身,因為他有夠寬夠廣的金錢藍圖。
例如說:唐諾.川普(Donald Trump),地產大亨,他白手起家賺到幾十億美金,後來一度失去一切,還負債,不過幾年後他卻賺到比原來更多更多的錢。
原因就在於有錢人即使會輸掉萬貫家財,但是屬於他們的"有錢人的腦袋"永遠都還在。

金錢藍圖怎麼形成的呢?
大部分是因為你接收的資訊造成的,其中大部份是你小時候接收的資訊,也就是來自於父母或長輩給你的資訊,再講明白點就是你會貧窮還是富有很大一部分原因是決定在你父母。
怎麼說呢?
你對錢的想法和行為是被教出來的,這些教導會變成制約,再變成自動潛意識反應,不知不覺一輩子都被它操控。
如果想要改變自己的金錢藍圖,那你必須要修正你腦中的陳年金錢檔案,才能做到。

記住,貧窮只是個結果,會導致貧窮的原因是金錢藍圖。

如何被制約?
1.語言設定:你小時候聽到了什麼?
2.模仿:你小時候看到了什麼?
3.特殊事件:你小時候有哪些遭遇?

咱們一項一項來討論
1. 語言設定,想想你爸媽有沒有跟你講過類似這些的話:錢是萬惡的、有錢人都很沒氣質、你必須要努力唸書才能賺錢、你必須要努力工作才能賺錢、你必須要聽老師的話才能出人頭地、金錢買不到快樂、不是每個人都能有錢、有錢人都是吸血鬼、你賺越多錢就有人因此越貧困,還有一句爸媽常講的:我們買不起,不要跟你的同學比。
對吧!
你小時候聽到的一切都會變成潛意識,你的所作所為會不經意的被影響、被操縱,這是可以主宰你金錢藍圖的一股力量。

一個叫做史蒂芬的人,他連續九年收入都超過80萬美金,也就是近2500萬台幣,但是他總是因為花錢、不當借錢、投資失敗導致他現在財產幾乎是零。
探討原因發現,他成長過程中,他母親總是講:有錢人都很貪婪,他們靠窮人的血汗賺錢。只要賺夠用的錢就好,賺多就是豬了。
沒錯,他被他母親的話給制約了,他愛他的母親,潛意識就會逼迫他趕快把錢花掉,不然會變成一隻豬。
後來他終於知道了原因,就把他母親送到夏威夷渡假(他母親非常愛夏威夷),這樣他既不用招呼他老媽,他母親也因此覺得他兒子有錢真好,結果他真的變成大富翁了。

2. 模仿,想想你爸媽是怎麼工作怎麼投資的,他們工作或投資成功嗎?大部分小孩都會模仿父母的動作,如果父母是失敗的,他們也很容易失敗,講個故事給大家聽:有個女的在煮晚餐,她把一塊火腿的頭和尾都切下丟掉,她丈夫很納悶,就問她這樣做的動機是什麼?她回答因為她媽媽都這樣作。
她母親剛好那天到女兒家吃晚飯,女兒女婿就問她為什麼要切掉頭和尾呢?媽媽回答,因為我媽媽都這樣作。
於是兩人就決定打電話去問她外婆,結果外婆回答:因為我的鍋子太小了。

別不承認,你就跟你爸或你媽一模一樣,或是他們兩個人的混合體就是你。
而大部分的父母都不是有錢人,所以自然小孩無法繼承到有錢人的腦袋。

3.特殊事件,有個叫做喬西的護士,她的收入不錯,但是永遠都無法存到錢,研究之後發現她小時候和爸媽去餐廳吃飯,吃到一半為了錢的事情吵架,結果她爸火大,大吼大叫之後心臟病發作,臉色發青的倒在小喬西的懷抱裡死去,從此她的潛意識中就把金錢和痛苦、死亡放在一起。
每次賺了錢就要想辦法花完它,這樣才不會痛苦。

既然知道了問題所在,就要練習切割,和過去切割,你是你,你父母是你父母,沒人規定父母貧窮小孩就要貧窮,投資和工作都多多思考,是我想這麼作,還是我被迫這麼作?


第二部份 財富檔案
人的心靈就像個大檔案櫃,會把所有接收到的資訊貼上標籤,分別放進不同的檔案夾內,以後遇到問題的時候就可以到心靈的檔案中讀取資料,解決問題。
譬如說,我正在考慮要不要把握一個可能可以賺錢的機會,於是我便會自動在心靈中尋找那些貼了"金錢"或是"財富"的標籤,再用檔案裡的資料決定自己該怎麼作。我對錢的所有想法都放在這個財富檔案裡面,所以我不可能想到超出檔案的內容,而且在我下這個決定的時候,我會相信他是正確的,是能夠幫助我解決問題的,然而這個決定是不是真的是能夠幫我達成目標呢?未必,很可能是錯誤的。

舉例,假設我內人正在shopping,她看到一個綠色包包在打七五折,她馬上搜尋心靈檔案:我應不應該買這包包?
然後在一眨眼的功夫,她的心靈檔案回報:『你一直在找一個類似的包包,好搭配上週買的那雙綠色高跟鞋,而且她的大小太完美了。快買吧!』
於是她在買下的時候,不但因為即將擁有這個漂亮的皮包而興奮,還沾沾自喜是以七五折買的。
對她的心靈來說,這實在太棒了,她認為她需要,而且正在打折,但是她內心沒有想過:這皮包的確很便宜,又漂亮,不過我現在欠卡費已經超過十萬塊,所以我最好別買。
她腦子裡沒有這個想法,因為這個想法並不存在她的心靈檔案中。
所以結論就是你如果擁有類似富人的心靈財富檔案,你自然可以像他們一樣有錢。
不過在像有錢人一樣以前,我們先避免掉窮人的心靈檔案,接下來我們會教您分辨有錢人的想法和窮人的想法,您只要記得趨富避窮就好了。

有錢人相信:『我創造我的人生。』
窮人相信:『人生發生在我的身上。』

有沒有發現,會花很多錢玩樂透的通常是窮人?開獎的晚上,他們會黏在電視前面,緊張兮兮的期待財富就要『降臨』在他們身上。當然,有錢人也會買樂透,不過大都是偶爾玩一玩,而且樂透不會是他們創造財富的主要策略。
人會富有還是貧窮是自找的,只有你自己能夠創造你自己的財富和成功,也只有你自己能造就你的平庸和貧窮。不管是明意識還是潛意識,你的人生都是你自己造成的。

窮人特徵1:責怪
他們常常會責怪經濟不景氣、老闆摳門、時運不濟、政府無能、股市下跌、怪公司制度、怪配偶不會賺錢、怪父母沒留給他們財產,反正做錯的都是別人,一定不是自己。

窮人特徵2:合理化
如果他們不是在責怪,你就會聽到他們在找藉口,或是證明他們貧窮是合理的,例如他們會說:『工作穩定比賺得多重要。』、『我選了穩定的工作,所以我就該接受這工作的薪水以後成長幅度不大。』,甚至說:『錢真的不是很重要。』那問你個問題:如果你說你的老公或老婆或朋友或男女朋友並不是那麼重要,那麼他們還會在你身邊待多久時間?應該不會太久了,錢也是一樣。

如果你覺得養寵物不重要,你會養它嗎?不會。
如果你覺得一輛腳踏車不重要,你會要它嗎?不會。
所以你認為錢不重要(不管是嘴巴講還是心理真的這麼想),你就不會有太多錢。
任何一個說錢不重要的都是窮人,但是他們會拿毫無關聯的對比來合理化,例如說:『錢沒有愛那麼重要。』這個比喻真愚蠢,要不要問一下你的手還是你的腿比較重要?也許他們都很重要吧。

錢,在它能發揮效用的時候太重要了,不能發揮效用的地方就一點都不重要,不相信嗎?要不要試試看用愛去繳信用卡帳單?
如果你無論如何都不承認錢很重要,你就永遠不會有錢,直到你把這個謬誤從你的心靈檔案裡面移除掉。

窮人特徵3:抱怨
抱怨是一件最糟的事情,永遠記住:『你所關注的事情會擴大。』當你抱怨的時候,你一定是正在關注錯誤的事情,而你關注的事情會擴大,於是你生命中會一直不斷出現錯誤的事情。也就是說你在抱怨的時候,你會不斷吸引更多的錯誤進入你的生命。
請試著作這項功課,接下來的一週不要抱怨,完全不要訴苦,不只不要講,連想都不要想。就這麼簡單,只是你必須持續整整七天。
有無數人因為改變這個小習慣而改變了他們一生,您要不要試試看?

從現在開始,避免上述三樣窮人特徵,每當你聽到自己抱怨、找藉口、責怪別人時,趕快閉嘴。不斷提醒自己,你創造你的人生,你改變你的人生,變好變爛都在你一念之間。

有錢人玩金錢遊戲是為了贏。
窮人玩金錢遊戲是為了不要輸。

有錢人他們工作或投資是為了獲得大量的金錢,不是一點點錢,不是剛好能夠讓他們付貸款的錢,而是很多很多錢。反觀窮人通常都會說,我只要能賺這樣就好了,我要的不多,只要能準時付帳單就好。
再強調一次,意念的力量是很驚人的,你真正關注和想要的事物會放大,當你的意念是要擁有足夠的錢去付帳單,你永遠不會擁有超過帳單金額的錢。換句話說,當你只要求生活過得ok的時候,你永遠不能過得很好,因為你根本沒想過要過得很好。就是這麼簡單。

富人一直努力讓自己有錢。
窮人一直想著讓自己有錢。

你問大多數人他們想不想變有錢,他們都會說:當然想啊!
真的想嗎?那你每天工作回家以後怎麼又看電視看到睡著?睡前看政論節目、八卦新聞而不是努力思考或是看自我提昇的相關書籍?這看起來不像是想要變有錢的人,很遺憾的告訴你,想要變有錢人,必須專注、勇氣、知識、專業、百分之兩百的努力、永不放棄的態度,還有當然,一顆有錢人的腦袋。
你願意一天工作十五小時以上嗎?富人願意。你願意一週工作七天嗎?富人願意。你願意犧牲和朋友聚會哈拉的時間嗎?富人願意。你願意在無法保證沒風險的情況下投資嗎?富人願意。

想著要有錢只是"想著",努力要有錢是"拼了",想和作中間差了十萬八千里遠,試著想想你該怎麼作吧。


有錢人善於管理金錢
窮人逃避管理金錢

有錢人並不比窮人聰明多少,但是他們都有個共通的特性就是善於管理他們的錢,而窮人如果不是不會管理金錢就是根本逃避管理金錢,他們通常會說:『他們不管理金錢是因為他們沒有足夠的錢需要管理。』這是大錯特錯的。事實剛好跟『等我有了很多錢,我就會開始管理錢。』相反,而應該是『在我開始管理錢財之後,我自然就會有很多的錢。』

『等我有錢,就會開始管理。』這句話聽起來就好像一個大胖子說:『等我瘦下二十公斤,我就會開始運動和節食。』你笑了對吧!可是想想你的邏輯是不是跟這句話一樣?

妥善積極的管理你的金錢,然後自然可以生出更多的錢。這才是正確的。換句話說,除非你能夠管理你現有的一切,否則你將無法獲得更多。

至於你要如何管理金錢呢?你在獲得一筆額外的收入之後,我強調『額外』,不管是撿到還是副業賺到,你就把額外收入的10%存起來,這是你的玩樂基金,永遠只能拿來玩樂,不要想去投資,不要想去繳學費,這就是你的玩樂基金(你可以把他當成你的LV基金或是ROLEX基金也無妨)。這樣一來你會很積極的想找下一筆額外收入,會努力兼差或是打工,這樣對你財富增加大有助益;二來我們發現為什麼一般人越是工作辛苦,越是會亂花錢,就是因為他們工作很辛苦,所以一陣子就會花一大筆錢去買東西犒賞自己,把錢都浪費掉了,可是照我們的方法,你只會花本來就是要拿來玩樂的錢,而不是把你的退休生活費花掉。

有錢人大於他們的問題
窮人小於他們的問題

有錢人就算恐懼也會採取行動
窮人卻因為恐懼而不敢行動

要變成有錢人並不像吃塊蛋糕那樣容易,通往財富路上充滿陷阱和危險,所以絕大多數人不願意冒險。這就是富人和窮人最大的差別,富人大於他們的問題,而窮人小於他們的問題。

在一到十的等級上,一最小,十最大,假設你現在的個性和能力位於第二級,當你遇到一個第五級的困難,你是不是會覺得這是個天大的問題?過了幾年,你的能力和個性已經成長到第八級了,回過頭來看,第五級的問題是不是變成一個小小問題了。最後如果你真的很努力的把自己提升到第十級,原先那個第五級的問題對你來說已經小到可以忽略不計。

所以不管你是窮人還是富人,生活中永遠會出現困難和問題,它們永遠不會消失,結論就是問題的大小不是問題,真正的問題是你有多大,能不能大於你的問題。

現在把焦點放在如何提昇自己的等級,很簡單,思考加上執行力,只是想變有錢是沒用的,要搭配執行力才有效。就好像我說的『你看對股票對你財富沒有幫助,買對才有幫助。』

既然執行這麼重要,那是什麼原因讓很多人卻遲遲不肯開始行動呢?

是恐懼!

恐懼會讓多數人裹足不前,窮人和富人最大的差別就在於:富人在恐懼和沒有把握的情況下還是會行動,窮人卻因此而再看看、再想想,常常一看就看了一輩子。

如果你的等級是三,而你總是挑容易的一和二作,那你永遠就不可能進步,反過來想你以三的等級去解決五的問題,一開始當然會覺得很困難,可是一次兩次,慢慢自然會提升到五,那問題對你來說又變得很簡單。舉個現實生活的例子:你的工作是固定性的,二十年沒變化的類型,例如老師、公務員、小工程師,你永遠無法晉級,雖然穩定,但是你的競爭力會越來越後退,你本來可能等級是四,當你習慣解決等級二左右的問題時,不知不覺你就會降級到等級二,原本等級三和四的問題對你來說就太難了。

從現在開始,每每遇到困難覺得不舒服的時候,記得幫自己加油,我一定是在晉級,然後努力走下去。人生於憂患,死於安樂,沒有因為很有挑戰性而完蛋的,卻有因為太舒服而慢性自殺。

有錢人專注於機會
窮人專注於障礙

這跟上面那部份是相通的,常常有人問我,要我介紹他一種沒有風險的投資工具,我會跟他講沒有這種東西。他說定存呢?我說定存當然是有風險,而且風險是最高的,他會讓你窮一輩子。

Why?

定存表面上,短期是沒有風險,但是他的利率太低,這世界上還不存在單靠定存致富的人,也就是說如果一個中產階級使用定存投資(我真不願意稱定存為投資 ),他就永遠不會變成一個富人。承擔能夠掌握的風險,去投資獲利率最好的工具,才是致富的唯一道路。

問題是窮人會不斷把焦點放在如果賠錢怎麼辦?如果我因此而一貧如洗怎麼辦?最後就不敢投資,被障礙困住了。前面我們一直強調:『你專注的事情會放大。』一直想著會賠錢,就真的會賠錢。富人則會專注於機會,他們願意承擔風險,在投資前做好一切功課,最差的情況都能夠控制以後,進場投資,獲得財富。

有錢人欣賞成功和有錢人
窮人討厭成功和有錢人

這是個很奇特的現象,窮人通常會用厭惡或是憎恨的態度去看待有錢人,他們會嘀咕:『他們真是走狗屎運。』或是咒罵:『這些有錢的混蛋。』

你必須了解,如果你用這樣負面的態度去看待有錢人,你就註定窮一輩子,為什麼呢?很簡單,『你怎麼可能成為你討厭和看不起的那種人呢?』

你看到電視上某個明星年所得五千萬,你是不是會心想:『不過就她老媽把她生的漂亮點而已,花瓶一個,有什麼了不起。』這很自然,但是請戒掉這個壞毛病,不要讓自己有這種見不得別人好的負面想法,這種負面想法會帶給你更多負面的產物,例如:繼續貧窮。

不要憎恨成功人士,也不要覺得他們都是大壞人,都是靠奪取別人財富害人家破人亡才能致富。這是大錯特錯的。世界上最大的慈善家是華倫.巴菲特,他捐出他百分之八十五的財產,上兆的金錢去作慈善事業,他是壞人嗎?比爾蓋茲也是大慈善家,他和他夫人的基金會每年都救助很多很多的愛滋病童,他們也不是壞人啊。這些不是特例,我只是要說明有錢人值得尊敬和欣賞,不要去討厭他們,對你並沒有好處。

有錢人根據結果拿酬勞
窮人根據時間拿酬勞

這就是我講的做事情只看功勞,沒在管苦勞的,事情作失敗,不管你花了多少時間金錢精力都沒有意義,也就是說100%的結果論才是正確的。

你一定聽過這些忠告跟教訓:『好好上學,聽老師的話,考好成績,找個好工作,領一份夠穩定的薪水,準時上班、努力工作。你就可以幸福快樂。』

這些話是金玉良言還是屁,你自己去衡量,我現在跟你探討的是穩定的薪水這部份。

窮人喜歡拿固定的月薪或時薪,他們需要確定每個月的幾號會有固定薪資到他們戶頭中,他們藉此獲取安全感,他們不知道這樣的代價就是窮一輩子。他們其實內心的意思是:『我很怕,根據我的表現很可能會賺得不夠,所以我只要能賺足生活所需就夠了。』

而富人會根據他們的產值拿取報酬,他們不喜歡穩定單調的工作,他們要的是經由努力思考加上執行力而表現好就能得到更多的錢的工作,例如:業務、直銷、老闆……之類的工作,當然,他們可能必須承擔較高的風險,但是風險通常和利潤是呈正比的。

通常你會選擇穩定而沒有前景的工作是因為你父母的意見,但是因為我們之前學過不要責怪別人,所以我們願意原諒他們,他們總是希望兒女有個穩定的工作,不管這會不會導致兒女永遠無法脫離貧窮。

我們鼓勵你作自己的老闆,不論是創業還是兼差,反正能夠依照你獲得的成果來獲得報酬的都是好選擇,就像我爸講的:『如果你只是吃人頭路,那你永遠不會富有。如果你要找工作,那麼請確定你拿的是百分比的酬勞(也就是非固定薪資),不然,你就自己當老闆。』

有錢人持續成長
窮人認為他們已經知道一切

最後一點,有錢人會願意承認他自己有些地方不足,願意永遠不斷看書、不斷思考、不斷看看別的成功人士是怎麼成功的;而窮人會覺得他已經會的夠多了,或者說會的東西已經能夠handle他的所需,不用再更精進,不需要再學習。

給個建議,如果你沒有你想像中那麼有錢,你一定有些地方不足。不知道你同不同意?

看看周遭的人,叫他們去多學點東西就一堆藉口:我沒時間、我現在就過得很好啦,沒必要學、我沒錢學。

反觀富人會覺得能夠學到東西就值得,能夠幫他們提昇等級就值得,長久下來窮人就像一攤死水,富人是一泉活水,自然時間越久,差別越大。

努力是會有成效的,從今天開始試著照上述的建議去作,試著多看多學如何賺錢,多去觀察成功人士,你也會擁有一顆有錢人的腦袋,你也會變成一個有錢人

Vision--總裁的十四種優質競爭力

以下文章轉貼自楚狂人BLOG 沒有伯樂的千里馬

常常覺得自己很聰明很厲害,但是每次升官都不是你;每次都把懷才不遇掛在嘴邊,但是一次兩次懷才不遇,換了五份工作、十個老闆還是懷才不遇,那只有一種可能:你還不夠厲害,或者說你還沒有ready。跟升遷擦身而過,很正常,只要實力夠,下次還有機會。但是如果下次也擦身,下下次也擦身,那就想開一點吧!為什麼沒被賞識?為什麼別人看你和你的自我認知有這麼大的差距?換了五份工作、十個老闆都沒有看到你的價值?這時候問題應該就不在別人身上,試著靜下心來想想,到底我缺了什麼東西?
如果發現自己真的有不足之處,就一定要惕厲自己,不斷訓練自己往想要的目標接近,讓自我訓練變成一種習慣,天天作、月月作,最後一定可以達到目標,最起碼也可以作個看起來很像的人。^^; 這個過程當然不輕鬆,別人在看電視,你在思考;別人在看小說,你在努力學習。但是如果你想要升到高位,想要獲得老闆賞識、站在比別人高的地方,你本來就應該付出比別人多,要記得:這世界上沒有所謂的『懷才不遇』。

千里馬固然要有伯樂的賞識才能發揮所長,不過沒有伯樂的千里馬一樣有四條腿,一樣跑得比別的馬快、跑得比別的馬好,不過過程辛苦點,這沒什麼大不了的。

一路上沒有遇到伯樂,還是可以有發展,你可以選擇創業這條路,不過一講到創業,身旁的人就會開始潑冷水,有這麼簡單嗎?如果生意不好怎麼辦?家裏上有八十歲高堂,下有兒孫嗷嗷待哺,如果失去固定收入又創業失敗,他們該怎麼辦?
這是青菜蘿蔔的問題,沒有對錯,既然覺得風險太高,可是又想要『走路有風』,可以選擇企業內部創業。企業內部創業除了沒有『所有權』,但是有『經營權』,所謂的位高權重,也是一種達到目標的方法。

我在Sybase公司待了六年,六年當中我升遷過四次,平均一年多就一次,而每次升遷都不是把某些人擠下來,而是新創出來的位置。舉個例子:我作過業務、業務總監、後勤支援,可是當時Sybase並沒有顧問這樣的部門,公司光是賣產品感覺稍嫌薄弱,於是我思考了幾個月,最後大膽跟老闆建議,公司需要一個顧問部門,這樣可以協助公司把產品賣得更好。計畫了兩三個月,然後跟老闆作簡報,老闆聽完之後就說:『好極了,那就你來,你需要多少人?』於是我就把需求、目的、價值、重要性一一找出來,老闆看了以後同意,這個部門就成立,我就變成這部門的主管,從零開始,兩個人、五個人這樣慢慢建立,就這樣升官了,或者說我距離目標更接近了些。

如果你不想要就這樣渾渾噩噩生活、工作,不想要在三十歲就確定五十歲的成就,你就必須要:Set the goal, and push to the limit.設定目標然後努力把自己推向極限。有哪些需要你pull your hair、pull your teeth才能夠做到的,那就去作,不是作作看,是誓死達成。人的一生當中,至少都要有一次拔頭髮、拔牙齒,把自己逼到極限的經驗,你才能知道自己的能力極限在哪裡,除了更了解自己(也就是認清自己有幾兩重),身旁所有看到你努力的人也會佩服你、欣賞你。透過這種方式,以後對自己有所期許的時候,也會比較切實際,避免掉『志大才疏』的弊病,而且知道自己的極限之後,同時也會知道自己的缺點和不足,才能夠改正缺點,繼續往目標邁進。沒有伯樂,千里馬也不會寂寞。

每天少睡兩小時

『每天少睡兩小時,去訓練自己,三年後自然會變成一個完全不一樣的人。』每天晚上睡前可以作這項工作,把今天整天的事情,從頭到尾想一遍,向自己提問:如果今天重來一遍,如果這個會議重開一遍,如果重新解決這個問題,我會不會有不同的作法?不同的作法會不會效果更好,這需要自我淬煉,沒有任何人可以幫忙,也沒有老師可以教。如果每天都循著這樣的流程走過一遍,自然會越來越polished、well rounded,也就是越來越圓融,越來越精練,持續長期地做下去,兩三年後保證你會是一個changed person。

這個習慣是我在一家公司工作的時期內養成的,因為我本來在台灣念的是國際關係,三十歲才到美國轉念資訊,所以在當時的環境裡,無親無故,沒有後台;英文程度就算再待個二十年也講不過美國人;再加上我這個半路出家的資訊學位,沒有一樣是加分,通通都是減分。尤其是一開始上班的兩個月,我每天都感覺我處在被開除的邊緣,我連跟別人講話都講不通,雖然唸書以來我的英文都表現得不錯,但是一工作就遇上問題了,我發現我和別人溝通不良,總是只有一半清楚,另一半讓對方不知所云。當時我只要聽到對方給我個『Uh?』或是『Excuse me?』我的信心就全然崩潰。怪了,我明明講得很清楚,怎麼對方還會有『Excuse me?』呢?當時這種狀況發生頻率是每小時一次,老闆給個任務,雖然滿肚子問題,但是不敢開口問,只好硬著頭皮去作,當然成果非常不理想。我可以從每個人的目光中清楚接收到『You did a lousy job.』(你做得很糟糕)的訊息,每天坐在辦公室真的是如坐針氈,真的是非常不快樂。

當時我就不免在想:為什麼今天會這樣?為什麼這個客戶會這個反應?為什麼老闆會用這種奇怪的眼光看我?why?why?why?......,就這樣一再的問自己why?想不出來的時候,就開始把今天整個回想一遍,很仔細地。

慢慢的,我發現有些事情可以用另一種方式作就不會犯同樣的錯。甚至有時還會回過頭去補救,把事情重新作過,下班後再拿給老闆看。當我發現老闆開始正眼看我,慢慢對我有了笑容,然後伸手拍拍我的肩膀,我才發現辦公室開始有了溫度,然後老闆幫我加薪,我覺得很快樂。於是我一直深深地相信這種方法是對的,不只對我有效,對所有人都有效,我也養成這種習慣,一路訓練自己到今天。

不管看多少書,上多少課都不會比自我悴鍊的效果大,與其去學一種方法,不如用自己腦袋想出一種方法。

再延伸下去,這種方法不一定是複習,甚至可以預習,例如說:我明天預計要開個會,那我就從『踏進會議室的門』開始想,我會遇到哪些人,會說什麼話,怎麼說比較好,我對這場會議的預期成果是什麼?如果我要達到我的預期目標我該怎麼作?然後隔天晚上回家再接著想,如果我沒有達到我的預期目標是什麼原因,有沒有補救的辦法?或是更好的方法。久而久之,所有會碰到的問題都預先想過,所有事情都會比較圓融,順利的達成。

不怕覬覦高位

我的父親是個公務員,我不批評公務員,但是我選擇另一條路,我相信我的企圖心和努力可以改變我的命運。如果我要當人上人,我要當高位、當老闆,在我沒有經驗的時候,最好的辦法就是:Put yourself in his/her shoes. 也就是如果我想要當個像我老闆那樣的人,我就應該先了解老闆是哪樣的人。同樣八小時上班,我每天都在做什麼事情,老闆每天都在作什麼事情,試著把我自己放在他的位子上,用他的角度去思考問題,這件事情如果是我會怎麼處理?我的角度和思考有沒有偏差?為什麼他會這樣作決定?於是在這樣的觀察中,我慢慢抓住老闆的觀點,用老闆的觀點去看看這家公司,看他現在的狀況,未來的狀況,公司的問題和解決方法。

我就這樣持續性的一年、兩年去練習,一旦公司有位缺的時候,我從不扭捏作態,一定向老闆表示我的興趣,通常老闆會問:『Why you?』我抓緊機會問他:『有沒有半小時?向你作個簡報。』這個簡報我做了兩年,沒有人像我準備這麼充分,我甚至幫他把會遇到的問題都提出而且解決。我上任之後會作哪些措施,會施行哪些計畫,計畫的成本和好處,不只這樣,我還會幫他想好人事怎麼處理,例如可能這個缺有三個人角逐,如果升了一個要怎麼處理另外兩個人的問題,所有分寸拿捏都一併說明。等到我作準備做到老闆都講不出話來這種程度,這個位子通常就跑不掉了,這不是一兩天可以臨時抱佛腳就湊出來,而是需要長時間的觀察和思考去準備,這樣簡報才有效果,老闆才會覺得我是最佳人選。一旦有機會,我不只想要,我也絕對有能力要。

簡報怎麼作最好

我在美國Sybase有個封號,叫做Mr. Seminar(研習會先生),因為我是全公司最會作seminar的人,每次公司總是派我去作最大型或是最重要的簡報,但是我卻是全辦公室唯一非英語系國家的人,我是怎麼做到的?

每次簡報之前,甚至大大小小的會議之前,我都會不斷的思考:
在整個演講過程中,可能會發生什麼狀況?我要如何做得與眾不同?
客戶可能會問些什麼問題?我怎麼應對比較好?
我有什麼需要補強的地方?什麼又是我的優勢?
然後就一次一次的rehearsal,每次挑一個問題來考我自己,直到所有回應的內容滾瓜爛熟,沒有問題能夠擊倒我為止。

因為科技業的東西往往都是硬梆梆、冷冰冰,如果每次都用『定義』或『名詞解釋』去介紹的話,聽眾可能會丈二金剛摸不著頭腦;即使當下了解,出了門也丟光光,那這場簡報就失去意義。所以我總是花很多時間和心力去把很生硬的觀念用生活化的例子去解釋,盡量讓它活潑生動。

舉個我當時用過的例子來說:當時我們公司最新的database的技術是multi-threading,和它相對的是single-tasking,如果要直接解釋就是多向進行和單向進行,講完也沒人知道這是什麼東西。而大多數人一上台通常都會說,依據MIT(麻省理工學院)的Dr. XXX的研究報告顯示,multi-threading的定義就是……,講了一堆數據,台下卻完全有聽沒有懂。

而我會怎麼講?我一上台就說:『The database is multi-threading…』,然後等大家丟個『Yes? What is it?』給我,因為他們一定聽不懂,所以我不直接回答他們,我接著就問:『你們一定去過中國餐館吧,中國菜在美國是很受歡迎的,……』台下就會開始納悶:這個multi-threading跟中國餐館什麼關係?看到大家眼中散發出好奇、有興趣的光芒,我繼續講:『今天你帶著太太去中國餐廳,餐廳有十張桌子,每桌坐了四個人,整間餐廳坐滿,請問現在餐廳有幾個人?』『四十人』台下回答。我接著介紹:『每個人坐下來點菜,點了四十道菜。』(因為老美跟我們不一樣,都是各吃各的,所以四個人裡面可能有三道木鬚炒肉絲)『你要多少個廚師來煮這四十道菜?』丟完這問題我會繼續解釋:『沒有一家餐廳會請四十個廚師來煮四十道菜,所以廚房大多只有三個廚師,但他們可以同時處理三道以上的菜,一道菜正在煮,第二道正在切,第三道正在抓料,第四道在排隊……,因為菜單進廚房的時間不同,每道菜的處理程序也不一樣,所有的菜在同時都被照顧到,這就是multi-threading的概念。』故事講完,我相信不只大家都聽得懂,而且很難忘記,只要把概念和情境一結合,自然讓人印象深刻。

在演講的時候要有心理準備,聽眾的注意力大概只有三到五分鐘,大概只能記住全部內容的30%,既然十個重點他們只能記住三個,哪三個是一定要讓他們記住的?除了上述講的演講技巧之外,一定要言之有物,也就是說技巧好還要搭配足夠豐富的內涵才是一場完美有效的演講。

如果明天要上台作簡報,我會對著鏡子或是牆壁練習,甚至拉著太太、孩子一起來聽我演講,而且是用power point,一切照正式情況來,不斷的演練,不斷的修正,每一個字詞都要是有意義的,適時加上一些幽默,以及一籮筐的例子、故事,效果總是很好。幾年來只要我去做seminar,總是滿堂采,也因此Mr. Seminar的封號不脛而走。

豐富的知識

前面講到『言之有物』,我常常跟員工講,你每天晚上睡著前,記得要想想看你今天和昨天有沒有什麼不一樣,是不是每天都在進步、每天都有學到新的東西,如果答案是否定的,請馬上起來do something,我們處在一個快速競爭的時代,倘若不這樣訓練培養自己,很快就被這世界淘汰掉。

有了豐富的知識會幫助你工作更順心,例如你要賣產品,不同的客戶會有不同的背景,要賣給華爾街的客戶,能夠懂一些金融財經的知識會更容易跟他們打成一片;如果今天要賣給工程師,懂一點電腦的東西會跟他們更有話題,也更能夠切中客戶的需要。

跟別人聊天的時候也是會發生相同的狀況,當別人發出一個話題的時候,你要能接得上話,講出內涵和想法,否則朋友聊天,你只能點頭附和,根本不知道要講什麼,一次兩次就變成主流外的人了。在知識累積的過程中就是一直不斷的學,等到它在你腦袋中的質跟量到了一個程度之後,它自然會『融會貫通』,你也會成為一個言談有趣的人,當你知道的事情比別人多而豐富,你的領袖氣質也會慢慢培養起來,甚至『觸類旁通』,最後達到一法通萬法通的層次。耍嘴皮子三分鐘就耍完了,除此之外你還能提供給別人什麼?你知道什麼是別人不知道的?你有沒有屬於你自己的一套有說服力,而且不落於俗套的見解?全部的答案都來自於豐富的知識。

這並不是要大家每天都去k很深很硬的專業書籍,生活中的知識俯拾即是,舉個例子:我之前演講的時候問過聽眾一個問題:『華爾街之前度過一百歲的生日。在華爾街有個很有名的指數大家知不知道?』大家都知道:『道瓊指數。』有了答案後,我就繼續問:『知不知道道瓊是由幾支成份股組成的呢?』台下開始安靜下來,因為沒什麼人肯定有幾支。答案是30支,再接著問:『三十支股票裡面有哪一支和華爾街一起走過一百年?』還是沒人知道。『是GE,我們不是常常聽人講企業要永續經營嗎?不講永遠,光是這一百年能夠繼續經營的好的只有這一家公司,所以永續經營並不像一般人講的這麼容易 blah blah blah』這些常識一點不難獲得,只是看你有沒有這個心和習慣而已。

企業決勝關鍵點—創意

創意和技術是最有價值的兩樣資產,學歷、相貌、口才都輸人不打緊,你有別人想不到的創意或是別人比不上的技術,你的價值完全不輸給任何人;公司也是一樣,公司比別人小,比別人窮都沒關係,只要有足夠創意或是大公司沒有的技術,小蝦米照樣贏過大鯨魚,就像一開始的小Google和大微軟的關係,現在危機感比較重的應該是大鯨魚。

再舉個例子,航空公司除了飛安問題以外,一般最煩惱的就是飛機乘坐率,他們就是靠賣機位維生,所以當一台飛機有500個位子卻只坐了250個乘客的時候,其他的空位的價值也隨著飛機起飛而消失,對航空公司而言,這都是白花花的銀子!Delta Airline美國達美航空的老闆就深深為此苦惱:『我要怎麼作才能夠讓機位班班客滿呢?』於是他就把七八個副總裁找進來集思廣益,大家想一想解決之道。
行銷副總裁率先提議:『我們來辦個促銷活動,買一送一。』老闆沒好氣的白了他一眼,很白痴的建議,如果促銷有用,馬上會引起美國航空和聯合航空跟進,通通買一送一,最後是三個和尚沒水喝,爛仗一場,甜了消費者,苦了自己。而且這先例不能開,降了價就升不回來了,當然萬萬不能作。

此時 CIO(資訊長)講話了,照慣例講了大家都聽不懂的建議:『我們可以用『客戶消費行為分析系統』來提高乘坐率。』大夥面面相覷,他接著解釋航空公司都會有一套客戶里程累計的紀錄,而且除此之外客戶的習慣和行為也會被登記起來。打個比方:李先生一年坐二十次飛機,但是有五次訂位不到的紀錄,所以他的行程比較不穩定;王先生一年雖然只飛五次,但是他每次訂位都到,而且他兩個月前就會訂妥機位,他的行程就很穩定。系統可以查出這班飛機的500乘客當中,有250 位有李先生的習慣,另外250位是像王先生一樣,此時公司不妨大膽賣出600張票,500個位子卻賣出600張票,當然是超賣,萬一來了520個人怎麼辦?飛機又沒有站票。因此在美國機場常常會聽到這樣的廣播:『有人自願搭下一班往xxx的飛機嗎?下一班是一小時後起飛,搭乘下一班的乘客全程免費,再加送一張美國境內任何程式的免費來回機票一張。』一般來說不趕時間的乘客通常都願意自動坐下一班飛機。不必花大錢行銷或是打折扣戰,不用花費額外的人力和財力,用這個創意點子自然可以有效提高乘坐率。

有了ABC,你也是千里馬

何謂ABC?A是Attitude(態度)、B是Behavior(行為)、C是Contents(內涵),這三樣人格特質都具備的話,無論任何環境、任何工作都一定可以勝任愉快。

我在台灣甲骨文(Oracle)就因此破格錄用過幾個業務,完全沒有任何經驗的新人。

其中一個是有工作經驗,但是業務經驗等於零。有一年我去資策會演講,當時是她負責招待我,我對她的印象非常好。她不只是在應對進退之間很有分寸,而且具備很清楚的表達能力。像我這樣一個挑剔的人,在我手下作過事的秘書不在少數,但是她卻是唯一一個從頭到尾都讓我滿意的秘書。和她溝通我不需要交代太多細節,因為她會考慮的比我還週到,我每次剛下飛機到了資策會,所有事情都幫我準備好,讓我可以舒舒服服的focus在演講上面,不需要為了一些雞毛蒜皮的小事煩心;透過她的表達能力我也感覺到:這個女孩子有個很清楚的思維、有條有理的腦袋。就在我前後兩三年的演講中,我對她有了初步的認識,後來我回到台灣工作,她離開了資策會。有一天她向我表示:想要換個業務方面的工作來嘗試,請我建議她往哪邊去找,我雙掌一拍,那就來Oracle吧。

這個決定對我們雙方來說都有蠻大的風險。她是學德文出身,在德國作過幾年事情,雖然一路都沒有業務經驗,但是我評斷以她的經歷和之前給我的印象,這些『風險』反而是她最大的優勢:其一,她可以隻身在國外工作數年,代表能力不差,且有獨立處理事情的能力;其二,多年的工作經驗使得她在應對進退方面表現得很好,這是一個業務人員應具備的基本態度;最後,也就是我會決定用她的最重要原因:她完全符合我在用人時候的ABC法則:Attitude、Behavior、 Contents,前兩項她完全沒有問題,現在唯一欠缺的是專業上的自信,不過這項對她來說,假以時日也不難達到。

果然,她在進公司一年內就交出業績百分之兩百的好成績,連她自己都難以置信,我知道她會表現不錯,但她比我想像的還優秀,這也證明了我當時的決定是正確的。

你的態度決定你的成就

ABC三項人格特質當中,最重要的就是態度,態度不對,再好的工作能力都無法替公司創造出真正的利益。

身為經理人最大的挑戰,就是遇到能力強卻又不守規矩的員工。我以前在美國剛升經理的時候,就遇過這樣的難題,當時在我的團隊中有一個叫David的人,業務能力超強,但是桀螯不遜,眼睛長在腦門上,從不遵守公司的規定,前任經理和我都對他又愛又恨,但是也無可奈何,因為他一個人的業績就佔整個團隊的一半,所以大家只好對他忍氣吞聲。但是越是放縱他,別人越是沒有表現的機會,我也深深為此苦惱。直到有一天,我的老闆提醒我:『不願輸掉一場小戰役,反而容易輸掉全部戰爭。』當場我恍然大悟,公司的大原則不能因為任何人或事情妥協,再出色的個人表現,也比不上整體團隊合作的力量。David能力超強,可是整個團隊被他害得停滯不前,這對公司來說絕不是好事情,幾經思考之後,我決定忍痛把他開除,因為只有他離開這個團隊,團隊中每個人才能夠動起來,每分力量才能夠發揮出來。

檢討失敗以外,別忘了檢視成功同樣重要

所有事情都是有成功有失敗,所以每一天人們不斷的重複把事情作對與做錯,諸葛丞相說過:『善敗者不亡』,絕大多數人會知道要檢討失敗,以期下次不要犯相同的錯誤。但是一般很少人會去檢視成功,既然成功了就應該高興慶祝,慶祝完了以後就把成功經驗束之高閣。

換個角度想想:我下次遇到相同或類似的情況和挑戰,我有沒有辦法和上次做得一樣好,可不可以把成功複製貼上?問問自己:『這次為什麼會成功?因為運氣好?還是我們團隊中做了哪件事有決定性影響?』邊回想邊紀錄起來,把成功的經驗剪下來放在剪貼簿,下次才可以用更有效率的方法去把case抓到。如果真的想不出是為什麼,那就只能說是因為Lucky,恰巧客戶欣賞我,莫名其妙就贏了一個案子;但是沒有天天過年的道理,只有找出真正的原因,才能夠天天與成功為伍。

尤其對一個團隊來說,這個習慣更是重要,我之前在Oracle曾帶領團隊拿下統一這個客戶的大case,這個case持續進行了十個月,一路打下來,大大小小事情做了不下數百件之多,結案後我讓大家想一想:一路進行下來,我們作了大部分對的事情,中間也許有些瑕疵,但是不影響大局。把從一開始到最後作鉅細靡遺的歸納整理,找出其中的成功模式,在抓出一個正確標準化的流程,把這個經驗一用再用,這樣一來我的團隊總是處在這個成功的氛圍中,戰鬥力和士氣也增加於無形。