20060526

[轉貼存檔] 利用Indy的TIdFtp控件实现FTP协议

本文僅供個人備份存檔,如果有侵犯版權之虞,請e-mail告知,感謝。

现在很多应用都需要上传与下载大型文件,通过 HTTP方式上传大文件有一定的局限性。幸好FTP作为一个非常老而且非常成熟的协议可以高效稳定地完成大文件的上传下载,并且可以完美地实现续传。就拿我写的电影服务器管理端程序来说,各种方案比较后,发现使用FTP可以完美地实现要求。但是要通过WinSocket库实现FTP比较麻烦,幸好有 Indy--一个包装了大多数网络协议的组件包。

  通过Indy,程序设计人员可以通过阻塞方式进行编程,可以抛开蹩脚的Winsocket异步模式,采用与Unix系统上等同的阻塞编程模式进行。这样,程序员就可以很好的处理程序的运行流程。 下面,我们进入到Indy的TIdFtp世界。

  1.控件的说明

  使用Indy 9中的TIdFtp控件可以实现通过FTP方式进行文件的上传与下载。

  2.控件的具体使用

  (1)控件属性设置

  默认属性即可,与服务器连接直接相关的属性如主机名与用户等在建立连接时进行设定。需要设定的是RecvBufferSize和SendBufferSize两属性的值。另外需要根据要传输的文件类型指定TransferType属性,而其他属性按默认值设定即可。

  RecvBufferSize说明(默认值为8192字节):该属性为整型变量,用于指定连接所用的接受缓冲区大小。

  SendBufferSize说明(默认值为32768字节):该属性也为整型变量,用于指定连接所用的发送缓冲区的最大值。该属性在 WriteStream方法中时,可用于TStream指定要发送内容的块数。如果要发送的内容大于本属性值,则发送内容被分为多个块发送。

  TransferType说明(默认值为ftBinary):该属性为TIdFTPTransferType型变量。用于指定传输内容是二进制文件(ftBinary )还是ASCII文件(ftASCII)。应用程序需要使用二进制方式传输可执行文件、压缩文件和多媒体文件等;而使用ASCII方式传输文本或超文本等文本型数据。

  (2)控件的事件响应

  OnDisconnected响应:TNotifyEvent类,用于响应断开(disconnect)事件。当Disconnect方法被调用用来关闭Socket的时候,触发该响应。应用程序必须指定该事件响应的过程,以便对该断开事件进行相应。

  OnStatus响应:TIdStatusEvent类。该响应在当前连接的状态变化时被触发。该事件可由DoStatus方法触发并提供给事件控制器属性。axStatus是当前连接的TIdStatus值;aaArgs是一个可选的参数用于格式化函数,它将用于构造表现当前连接状态的文本消息。

  OnWork响应:OnWord是TWorkEvent类事件的响应控制器。OnWork用于关联DoWork方法当缓冲区读写操作被调用时通知 Indy组件和类。它一般被用于控制进度条和视窗元素的更新。AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据; wmWrite-组件正在发送数据。AWorkCount指示当前操作的字节计数。

  OnWorkBegin响应:TWorkBeginEvent类。当缓冲区读写操作初始化时,该事件关联BeginWork方法用于通知Indy组件和类。它一般被用于控制进度条和视窗元素的更新。AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据;wmWrite-组件正在发送数据。AWorkCountMax用于指示发送到OnWorkBegin事件的操作的最大字节数,0值代表未知。

  OnWorkEnd响应:TWorkEndEvent类。当缓冲区读写操作终止时,该事件关联EndWork方法用于通知Indy组件和类。 AWorkMode表示当前操作的模式,其中:wmRead-组件正在读取数据;wmWrite-组件正在发送数据。AWorkCount表示操作的字节数。

  在事件响应中,主要通过上述五种事件响应来控制程序。在一般情况下,在OnDisconnected中设定连接断开的界面通知;在OnStatus中设定当前操作的状态;在OnWork中实现传输中状态条和其他参数的显示;而在OnWorkBegin和OnWorkEnd中分别设定开始传输和传输结束时的界面。

  (3)连接远程服务器

  完成了设定控件属性和实现了控件的事件响应后,就可以与服务器进行交互和传输了。在连接之前,应首先判断IdFtp是否处于连接状态,如果 Connected为False,则通过界面控件或其他方式指定与服务器连接相关的一些TCP类属性的设置,分别是:Host(主机名):String、 Username(用户名):String、Password(密码):String,也可以指定Port(端口)。之后调用Connect方法连接远程服务器,如果无异常出现则连接成功建立。

  过程说明:procedure Connect(AAutoLogin: boolean; const ATimeout: Integer);

  该过程连接远程FTP服务器

  属性:AAutoLogin: boolean = True

  连接后自动登录,该参数默认为True。

const ATimeout: Integer = IdTimeoutDefault

  超时时间,单位:秒。

  示例代码:

if IdFTP1.Connected then
 try
  if TransferrignData then IdFTP1.Abort;
   IdFTP1.Quit;
   finally
   end
  else
   with IdFTP1 do try
    Username := UserIDEdit.Text;
    Password := PasswordEdit.Text;
    Host := FtpServerEdit.Text;
    Connect;
    ChangeDir(CurrentDirEdit.Text);
    finally
   end;

  (4)改变目录

  连接建立后,可以改变当前FTP会话所在的目录。对于已知绝对路径的情况下,可以直接调用ChangeDir(const ADirName: string)方法来转换目录,ADirName表示服务器上的文件系统目录,另外还可以调用ChangeDirUp回到上级目录。

  如果未知路径,则可以通过List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean)过程获取远程服务器的当前目录结构,此时必须设定TransferType为ftASCII(ASCII模式),其中:ADest保存当前目录结构,可以在后续程序中调用该列表。另外可以通过RetrieveCurrentDir方法获取当前目录名。

  过程说明:

procedure ChangeDir(const ADirName: string);

  改变工作目录

  属性

const ADirName: string

  远程服务器的目录描述

  说明:该过程实际上是实现了FTP CWD命令。

procedure ChangeDirUp;

  到上一级目录

function RetrieveCurrentDir: string;

  该函数返回当前目录名

procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean);

  列出当前目录所有文件和子目录及其属性

  参数:

ADest: TStrings

  保存文件及子目录的返回结果

const ASpecifier: string = ''

  文件掩码,用于列出符合条件的文件

const ADetails: boolean = true

  包含文件和子目录属性

property DirectoryListing: TIdFTPListItems;

  返回文件及目录结构的列表

  示例代码:

LS := TStringList.Create;

try

IdFTP1.ChangeDir(DirName);

IdFTP1.TransferType := ftASCII;

CurrentDirEdit.Text := IdFTP1.RetrieveCurrentDir;

DirectoryListBox.Items.Clear;

IdFTP1.List(LS);

DirectoryListBox.Items.Assign(LS);

if DirectoryListBox.Items.Count > 0 then

if AnsiPos('total', DirectoryListBox.Items[0]) > 0 then DirectoryListBox.Items.Delete(0);

finally

LS.Free;

end;


  (5)实现下载

  在下载之前,必须查看DirectoryListing.Items[sCurrFile].ItemType是否为文件,如返回为 ditDirectory则代表当前文件名为目录,不能下载,必须导向到文件才可。如为文件,则可以进行下载。在下载前,设定传输的类型为二进制文件,并且指定本地要保存的路径。通过调用Get方法,实现文件的下载。下载过程较慢,可以考虑将其放到线程中实现。

  过程说明:

procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean); overload;

procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean; AResume: Boolean); overload;

  从远程服务器上获取文件。

  属性说明:

const ASourceFile: string

  远程服务器上的源文件名

const ADestFile: string

  保存到客户机上的文件名

const ACanOverwrite: boolean = false

  重写同名文件

AResume: Boolean = false

  是否进行断点续传

  示例代码:

SaveDialog1.FileName := Name;

if SaveDialog1.Execute then begin

SetFunctionButtons(false);

IdFTP1.TransferType := ftBinary;

BytesToTransfer := IdFTP1.Size(Name);



if FileExists(Name) then begin

case MessageDlg('File aready exists. Do you want to resume the download operation?',

mtConfirmation, mbYesNoCancel, 0) of

mrYes: begin

BytesToTransfer := BytesToTransfer - FileSizeByName(Name);

IdFTP1.Get(Name, SaveDialog1.FileName, false, true);

end;

mrNo: begin

IdFTP1.Get(Name, SaveDialog1.FileName, true);

end;

mrCancel: begin

exit;

end;

end;

end

else begin

IdFTP1.Get(Name, SaveDialog1.FileName, false);

end;


  (6)上传的实现

  上传的实现与下载类似,通过put方法即可。

  过程说明:

procedure Put(const ASource: TStream; const ADestFile: string; const AAppend: boolean); overload;

procedure Put(const ASourceFile: string; const ADestFile: string; const AAppend: boolean); overload;

  上传文件至服务器

  属性说明:

const ASourceFile: string

  将要被上传的文件

const ADestFile: string = ''

  服务器上的目标文件名

const AAppend: boolean = false

  是否继续上传

  代码示例:

if IdFTP1.Connected then begin

if UploadOpenDialog1.Execute then try

IdFTP1.TransferType := ftBinary;

IdFTP1.Put(UploadOpenDialog1.FileName, ExtractFileName(UploadOpenDialog1.FileName));

//可以在此添加改变目录的代码;

finally

//完成清除工作

end;

end;

  (7)删除的实现

  删除文件使用Delete方法,该方法删除指定的文件,删除对象必须为文件。如果要删除目录则使用RemoveDir方法。

  过程说明:

procedure Delete(const AFilename: string);

  删除文件

procedure RemoveDir(const ADirName: string);

  删除文件夹,根据不同的服务器删除文件夹有不同的要求。有些服务器不允许删除非空文件夹,程序员需要添加清空目录的代码。

  上述两个过程的参数均为目标名称

  代码示例:

if not IdFTP1.Connected then exit;

Name := IdFTP1.DirectoryListing.Items[iCurrSelect].FileName;

if IdFTP1.DirectoryListing.Items[iCurrSelect].ItemType = ditDirectory then try

idftp1.RemoveDir(Name);

finally

end

else

try

idftp1.Delete(Name);

finally

end;

  (8)后退的实现

  后退在实际上是目录操作的一种,可以简单的改变当前目录为..来实现,也可以通过回到上级目录来实现。

  (9)取消的实现

  在IdFtp的传输过程中,可以随时使用abort方法取消当前操作。可以的OnWork事件的实现中来确定何时取消操作。

  代码示例:

//取消按钮的OnClick响应

procedure TMainForm.AbortButtonClick(Sender: TObject);

begin

AbortTransfer := true;

end;

//IdFTP的OnWork事件响应

procedure TMainForm.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;

const AWorkCount: Integer);

begin

...

if AbortTransfer then IdFTP1.Abort;

AbortTransfer := false;

end;

  (10)断点续传的实现

  断点续传就是在上传或下载过程开始时,判断已经传输过的文件是否上传输完毕,如果传输没有成功完成,则在上次中断处继续进行传输工作。实现该功能需要两个重要的操作,首先是判断文件的大小信息,其次是在传输过程Get和Put中指定上传的行为。

  判断服务器上文件的大小使用函数Size(FileName)。在下载过程中,比较本地文件和远程文件的信息,然后在Get中指定AResume := True即可。而上传也一样,指定Put的AAppend := True就可以了。

  在前面我们讲过,Indy的网络操作大部分是阻塞模式的,TIdFtp也不例外。这样在上述各个操作运行过程的时候用户界面被暂时冻结,必须要等待调用返回才能继续用户操作界面响应。所以在实际编程中,需要使用多线程的方式来保证户界面的响应。Windows系统可以使用CreateThread系统调用来创建线程,但是在使用的时候需要开发人员做很多额外的工作来保证线程的同步等问题。而Indy中也包含了实现多线程的控件 TIdThreadComponent,相对比之下该控件实现多线程时更加方便,也更容易控制。

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )

Gateway Support - 4000440 Intel (Freeman) Integrated ZX Motherboard

Audio - Creative Labs Sound Blaster AudioPCI 64D Driver Installation - System Restoration CD 8.6 - 9.7
Display Properties -Color Tab
Power supply fan connector, J9H3



Gateway does not use this connector. However, it is populated on the board and available for use. The pinouts for J9H3 are:
Pin Signal name
1 Ground
2 +12 V (FAN_C)
3 Tach

Front Panel Connector

The front panel connector is labeled J10H1 on the motherboard. Pin 1 is indicated by an arrow on the board (lower left pin in this graphic). Pin 2 is immediately above it. The pinouts for J10H1 are as follows:
Pins Signal Name
1 and 3 Hard disk activity LED
2 and 4 Power/Sleep/Message waiting light-emitting diode (LED)
5 and 7 Reset switch
6 and 8 Power switch
9,11,13, and 15 Infrared port
10 and 12 Sleep/Resume switch

Power Connector



The motherboard can turn off the computer through software control. To enable soft-off control, Advanced Power Management (APM) must be enabled in the BIOS Setup Utility and in the operating system. When the computer basic input/output system (BIOS) receives the correct APM command from the operating system, the BIOS turns off power to the computer.

With soft-off enabled, the computer returns to the power state in which it was before power was interrupted.

The pinouts for J10H1 are:
Pin Signal name
1 +3.3 V
2 +3.3 V
3 Ground
4 +5 V
5 Ground
6 +5 V
7 Ground
8 PWRGD (Power Good)
9 +5 VSB (Standby for real-time clock)
10 + 12V
11 +3.3 V
12 -12V
13 Ground
14 PS-ON# (power supply remote on/off)
15 Ground
16 Ground
17 Ground
18 -5 V
19 +5 V
20 +5 V


這一篇是我有一張gateway主機板技術文件的資料鏈結存檔。

拒絕 MSN Messnger 廣告

雖然我現在很少用到多重登入,不過少一個會讓人分心又沒用的廣告也是挺不錯的,加上作者寫的程式很小,改版又積極。裝這個東西有一個理由,廣告也是要頻寬的,也會需要CPU資源,所以電腦不快的人就趕快狀一裝吧。

我個人建議直接抓多重登入版,雖然不一定會需要多重登入,不過這個是完整的版本,去廣告的功能也有。

作者寫了不少東西,如果覺得好用大家要多鼓勵一下唷~~~

PieTTY也是他寫的,XD,現在才知道~~~

20060523

驅動程式支援服務 / The drivers support service.

原來這一篇文章發表的時間是 2006/5/26, 下面的更新是 2015/11/02, 更新的原因是因為 gmail 不支援以 gmail 附加 zip 或者 rar 附加檔案寄出 email 了, 所以今天收到 email 有人需要驅動程式, 在用 gmail android app 把檔案轉到 google drive 之後, 然後重新下載整理之後, 再壓縮成 zip 檔案, 重新上傳到 google drive 上面。


Homeplug / Powerline:
001. SIEMENS SS2501 / 2502 /2521 SOFTWARE [google drive]


= 下面是 2006/5/26 的內容

目前我有收集下列的驅動程式,有需要的朋友可以來信到davihuan at gmail dot com,要說明的東西是你必須要有gmail的信箱,如果沒有我會發一個邀請函給你,然後驅動程式會寄到這一個gmail信箱去。

I have collected some drivers of the hardwares listed below. If you need any of them, please send request to davihuan@gmail.com. I will send the file to your gmail. If you do not have a gmail, I would be happy to provide you with the invitation for applying new account.


SCSI Card:
001. ASB3940UW - Single Channel, 32-bit, 33 Mhz PCI Bus Master
002. ASB3950UW - Dual Channel, 32-bit, 33 Mhz PCI Bus Master
003. ASB3940U2W - Single Channel, 32-bit, 33 Mhz PCI Bus Master
004. ASB3950U2W - Dual Channel, 32-bit, 33 Mhz PCI Bus-Master
005. ASB3950U160MW - Dual Channel, 64-bit, 66 Mhz PCI Bus Master

Bluetooth:
001. Billionton Bluetooth USB Device [Wincomm version]
002. Ericsson Bluetooth DBF-10 Compact Flash Card for Windows 98SE/ME/2000/NT4.

Homeplug / Powerline:
001. SIEMENS SS2501 / 2502 /2521 SOFTWARE [請看最上面的更新資訊]

Smart Card reader:
001. EZUSB Series PC/SC Smart Card Reader
002. Smart Card SUZCR920


20060505

[轉貼存檔] Goolgle 如何找人﹖ 數位時代雙週 2006/05/02 129期

本文僅供個人備份存檔,如果有侵犯版權之虞,請e-mail告知,感謝。
數位時代雙週 2006/05/02 129期,網頁連結為博客來網路書局所有。


Goolgle是全球工作者最嚮往的公司,它創造了21世紀最迷人的企業傳奇,吸引了全世界最頂尖的人才。從「選人」開始,Google就努力成為全球最 有創意的公司,它用充滿創意的考題和不厭其煩的面試過程,尋找最適合去Google上班的人。2006年開始,Google「正式」進入台灣——所謂「正 式」,指的就是Google台灣團隊的設立,不但是Google在亞洲重要的布局,也象徵台灣人才和全球人才一起走向全球競爭……

《數位時代雙週》採訪.撰文=龐文真


   是呀,我和佩吉、布林(Larry Page and Sergey Brin,Google兩位創辦人)面試時,其中一位還是滑著滑板進來辦公室的!」Google中國區總裁李開復回憶自己加入Google的過程,就像是 一次又一次文化震撼洗禮,也讓他了解從「選人」開始,Google就努力成為全球最有創意的公司。 全球頂尖人才競爭,早就是科技產業最激烈的戰場。李開復表示,「這幾年Google在美國已經把頂尖優秀的人才幾乎都網羅齊了,接下來的目標則是在海 外。」這就是為什麼Google陸續在海外設置工程研究所的原因。

產業的本質在於人才競爭

   事實上,李開復自己就是全球人才爭霸戰的代表性人物。二○○五年Google在距離微軟總部不遠的柯克蘭市(Kirkland)設立辦公室,成功地吸引 了百位微軟工程師前進Google。同年七月,當時身為微軟第一位華人副總裁的李開復,從微軟跳槽到Google時,微軟終於震怒了,全球市值最高的公司 微軟控告Google和李開復,這場官司讓「Kai-Fu Lee」這個名字登上了全球主要財經媒體的頭條新聞。這說明了人才的競爭,已是產業競爭的本質。 根據CNN的報導,二○○六年四月全美MBA最想進入的企業,Google排名第二(首選還是麥肯錫)。二○○四年八月Google以八十五美元上市,短 短一年多的時間,股票一路上揚,二○○六年一月時最高曾達四百七十一美元,外界保守估計,這段期間Google至少創造出數百位的百萬美元(約三億三千萬 新台幣)富豪。股票如此值錢,不要說是MBA了,有機會人人都想成為「Google人」現今Google已成為全球市值第二高的公司。 其次是工作環境與文化,Google早已成為科技人怦然心動的公司,「Google不是一家傳統公司,我們也不打算變成一家傳統的公司,」這是兩位創辦人 佩吉和布林在股票上市時對外界的公開宣示,他們不斷強調Google是一家有個性的公司,希望能吸引到最優秀的人才。

  曾經佩吉和布 林處處碰壁,被人譏笑搜尋引擎只是用過即丟的產品,但他們卻執意認為在網路不斷擴展的時代裡,唯有好的搜尋才有真正的出路。分析Google之所以會成 功,就是用最好人才,以最純粹的專注和創新模式,做出消費者最需要的產品,而不只是低價的外包、龐大的製造力或全球運籌能力。 「投資我們有很大風險,雅虎和微軟是我們的競爭對手」,Google在上市公開說明書中這樣提醒投資大眾。Google、雅虎和微軟這三家公司近年來在搜 尋市占率、各種網路服務、客戶上不斷競爭較量,然而真正的戰鬥其實在於招募人才、留住全球最優秀的科技人才,因為哪一家公司擁有最大的能力,可以找出及解 決網路時代最有趣、最重要的問題,哪一家公司就會得到最後的勝利。

二○%上班時間做自己的事

   從人才的觀點看來,Google無疑的逐漸勝出。 像Google人可以利用二○%的時間做自己喜歡做的事,這條件就相當吸引優秀人才。二○%的時間等於是「上班五天,其中有一天可以自己決定」。在 Google專案內容的規劃上,有「七○:二○:一○」的規矩,也就是專案內容有七○%是屬於核心搜尋和廣告部分,二○%投入相關產品,一○%投入嶄新概 念、未來願景。

  員工自由發想的專案,只要符合公司的使命(整合全球的資訊,讓人人可用,讓人人受益),都可以做。事實上,讓 Google人倍感愉快的是,自己在二○%時間想出來的專案,若得到其他Google人的讚賞,可以一起加入,經過內部良性競爭,很有可能就會變成八○% 的專案,而且不用等待,也許六個月內就會在Google網上推出,得到全世界的使用者回饋。在Google最常說的就是,「拿世界當實驗室,今天就改變世 界」。 李開復表示,Google吸引人才的地方在於迅速、透明、互相誠意的批評和指導,在peer review(同儕互評)之下,大家一直進步,是一種很棒的經驗。 這種「經驗」,讓Google搜尋引擎的市占率達六○%(雅虎二○%、MSN九%),Google人開發出來的軟、硬體(連伺服器都是自己開發的)能夠負 擔每天上億筆的搜尋量,可搜尋的網頁早已超過八十億個,可搜尋的圖片也突破十億張以上,提供的語言介面超過一百種,顯示搜尋結果的語言也有三十五種。而全 球為Google工作的人,從創始至今,平均每年成長一○○%。去年年底已達五千六百八十人,三月底又增加二○%,來到六千七百九十人。 Google就像一艘在網海中快速航行的艦隊,二○○一年當施密特(Eric Schmidt)登艦成為領航員後(董事長兼執行長),這位曾是昇陽電腦(Sun Microsystem)科技長、網威(Novell)執行長的博士級人物,讓其他網路悍將和小兵開始相信,Google雖然個性十足,卻絕不頑劣,它將 以最專業的經營態度航向全球、航向未來。 二○○六年三月,Google艦隊航向台灣,台灣第一位登艦的戰士為簡立峰博士。他來自中央研究院資訊科技研究所,是首位發表搜尋技術論文的華人。「我們 都希望台灣軟體業能和IT產業一樣,展現令人激賞的實力,」李開復和簡立峰強調。

優秀學生不保證被錄取

   目前擔任Google台灣工程研究所所長的簡立峰表示,想要登上Google艦隊的優秀工程師很多,但是Google嚴謹的審核流程卻讓許多年輕的台灣 軟體工程師鎩羽而歸,一個多月來,二十多位台大優秀學生都沒有成功登上艦隊。 而流傳甚廣的Google考題,許多想成為Google人的學生看過後表示,「他們的題目很奇怪,和我們以往接觸的題目都不一樣。」另一名接觸過 Google考題的台大優秀畢業生也說:「太難了,不敢去嘗試。」 但也有台灣IC設計大廠的高手對Google的工作躍躍欲試,「Google來台灣是好事,不然我們真的快變成軟體邊緣國家了。」

  一位 資深工程師表示。同時他們也期待Google能帶給產業不同的思維,光是面試的傳言就已經造成小小浮動,攪起科學園區裡科技人的好奇心。 簡立峰說:「台灣人其實很優秀,但是對Google的面試流程完全不熟悉,缺乏國際經驗,所以很吃虧。」他同時也表示,Google找人很公正,絕對沒有 關說這種事情。大家都是在線上投履歷,Google人也不知道誰要面試誰,面試後的紀錄都很清楚,面試完後,主考官都要將流程用四百到五百字寫出來,以後 都可以查,「像開復介紹我去Google後,就對我說:『一切靠你自己囉!』我也是從寄履歷開始的。」 自從Google在台灣開始找人以來,目前通過Google考試的人不多,曾在美國念過書和參加過國際比賽的人比較容易通過考試,因為這些人在申請學校 時,就已經走過一遍這樣的流程,他鼓勵考過的人絕對不要灰心,歡迎再重考。

  Google怎麼找人?流程是什麼?如何可以登上全球頂尖的艦隊和一流人才共事?
簡 立峰說:「我總共過了十一關,整整面試了七個小時才結束。」簡立峰是在美國加州Google總部接受面試的,全程以英文進行,從上午九點多開始,要離開 時,已經下午四點多了。這中間還包括和Google中國區總裁李開復吃了個午飯。「那是一邊考試,一邊吃飯,」簡立峰笑著說。 「那一天裡,我大概回答了兩百多個問題,各種問題都被問到,因為我的位置和技術、管理都相關,所以這兩方面的問題都被問到了,」簡立峰表示,十一關來自不 同部門的副總裁,也有非常優秀的科學家,如人工智慧大師。在Google,「技術強調深度,管理強調寬度。」

  Google找人 的過程漫長,「每一個可以進入Google的人,面試後的檔案都有厚厚一疊。找人,找到對的人,公司之後就很省事。優秀的人會互相良性競爭,讓公司充滿創 意與創新。」 簡立峰說,像關於台灣招募的事情,他和加州的同事們一起在線上討論,因為時間晚了,他決定先睡一下。沒想到早上起來,已經有一百多個討論,一切事情都已經 規劃好了,定了案,根本不必他從頭想到尾。「據我所知,到目前為止,Google還沒有fire掉任何人,雖然找人的成本花費不低,但絕對值得。」 網路是全球相連的,Google是一個最全球化的產品,也是一個極為全球化的公司。它沒有區域性辦公室(regional center)的概念,少掉疊床架屋的組織架構,Google從加州總部發號司令,全球各地,只要有兩、三個優秀人才,就能變成一個Google研究單 位,就可以一起工作。
平坦世界的新型態工作者

  簡立峰說,目前雖然台灣Google人並不多,但是他卻覺得他有一百多個同 事,「IT在日本,財務在北京,PR由總部決定,我每天參與台北、加州、北京的專案,研究的工作和以前差不多,但最大的改變是要學會和其他地方的人 synchronization(同步)、同時工作。」簡立峰說。 Google的工作模式把地球都縮小了,在任何地點時間都可以找到Google人。而「平等、客觀」的Google,是全球人才內心深處最嚮往的新世界, 「創新、積極主動、自主性管理」正是台灣企業及個人工作者最需要學習

[轉貼存檔] 機會財富消失中 台灣成為向下流動的社會 天下雜誌 3/15/2006

本文僅供個人備份存檔,如果有侵犯版權之虞,請e-mail告知,感謝。
原文出於天下雜誌 3/15/2006,網頁連結為博客來網路書局所有。


下流社會:台灣篇
機會財富消失中 台灣成為向下流動的社會


去年,台灣受雇員工平均薪資微幅成長一.三八%,
但物價成長率卻高達二.三%,實質薪資向下縮水。

此時同步成長的卻是創下歷史新高的房價、大專畢業生失業率,
及愈來愈驚人的學貸、卡債……。 文∕黃靖萱

  嬌小的身材、精明幹練的袁曉芳(化名),在規模二百人的中小企業擔任高階主管,身上扛著七千萬的營業額。最近兒子進了小學,袁曉芳打算在台北市大安區買間離學區近的房子。

  有天,房屋仲介打電話來,要他們去看一間四十坪大的公寓。仲介在他掛上電話前,趕緊提醒了一句,「記得帶手電筒。」
  那是一間三十年的老公寓,原屋主把隔間都打掉了,也沒有水電,但一坪高達五十萬,總價達二千萬。袁曉芳關上手電筒,心也沉到了谷底。

   袁曉芳和他先生都有大學以上的學歷,兩人年薪加總近二百萬,不論是從人口統計、還是收入統計看來,他們都非常肯定自己是社會的菁英族群。但是,他們努力 工作了十五年,面對三十年的老公寓卻覺得如此遙不可及。袁曉芳不禁自問,「我還是中產階級嗎?這個社會還有中產階級嗎?」

  學歷不再保證工作機會,薪資成長被上升的物價侵蝕成負數,象徵穩定的自有住宅成為奢望的空中樓閣,中產階級抓不到任何上升的希望,開始覺得向下流動,成為許多社會共同的痛苦。

世界的共同危機
美、日、英中產階級蒸發


  美國,向來強調努力就有希望,但是最近調查卻發現,年收入兩萬五千到七萬五千美元的中等收入人口逐年減少,但兩萬五千美元以下,和七萬五千美元以上的兩個族群都在增加,社會因中產階級萎縮,而形成中間凹陷的「M」字型。
日本雖然貧富差距小,但是最近的熱門話題,卻是「下流社會」。根據日本內閣府調查,二十到三十四歲的年輕族群,認為自己在社會上居於中間階層的人,十年來掉了近十個百分點;而認為自己屬於下層階級的,卻增加一三.三%。

   英國則出現「IPOD世代」(iPod generation),說的不是蘋果電腦推出的當紅「iPod」,是指年輕一代承受沒安全感(insecure)、壓力大(pressured)、同時 承擔過重的稅負(overtaxed)及高築的債務(debt-ridden)四種壓力,對人生喪失熱情。

台灣也拉警報
實質薪資縮水、利率負成長、房價創歷史新高,下流社會現象隱然浮現

  可支配所得在台灣全社會中間二五%到七五%的家庭,他們所分配到的所得,在二○○一及二○○二年達到近年來的低點,即使近兩年有緩步增加,但仍遠不如整個一九九○年代的水準。

  「現在就是生活愈來愈難,因為貧富差距不平均。我們特別惡化,中國的惡化好歹也是高經濟成長換來的,我們沒有成長,還陪著人家這樣,說不過去,」立委暨台大財金系教授劉憶如說。

  經濟成長趨緩最直接的影響,就是薪資成長跟不上物價膨脹的速度。去年,受雇員工的平均薪資只有微幅成長一.三八%,但扣掉二.三%的物價成長率,大家的實質薪資其實在縮水,再加上利率負成長,財富難以累積,而房價卻在這個時候,創下歷史新高。

  例如,近十年來,台北市平均房價增加二○%,現在正在歷史高峰。但每戶家庭的可支配所得卻只成長一○%。而為了補填財政赤字的黑洞,政府近四年已變賣相當於九十個大安森林公園的土地。

  三月初,對國內房市具重要指標意義的「信義聯勤俱樂部」標售案,由新光人壽以平均每坪二七四萬多元得標,創下國內住宅地價的最高天價,預估未來房屋建成後每坪售價將突破一百萬,又是一座豪宅,把房價帶到另一波新高點。

  這一波波的豪宅,看在薪資所得階級眼中,又是多虛幻。倒因為果的景氣刺激政策,讓人民苦不堪言。

  一九八八年一波的房地產熱,是由兩位數的經濟成長率牽動,但在經濟成長只有四%的今天,房價為什麼仍創下歷史新高?追根究柢,因為政府對經濟的著力點很弱。

  政府期望借助房地產的活絡,帶動周邊的效應,例如鋼筋、水泥、玻璃、民生用品、家電等產業。

  為了製造經濟活絡的假象,從二○○○年景氣低迷開始,政府撥出低利房貸希望刺激買氣,撥出的金額從三千兩百億到現在超過一兆元,加上銀行推出的「百分百房貸」,人人看似買得起房子,卻不知不覺將房價衝到一坪近三十萬。
  「這二、三年外在氛圍都在鼓勵買房子,貸款利率便宜,有些人是衝動性購買,像現金卡效應,好像不用什麼錢就可以跨過購屋門檻。等到開始繳房貸後,才發現並不一定負擔得起,」信義房屋協理張欣民說,「這是一個弔詭。」

  張欣民認為,應該從經濟成長來帶動房地產,個人所得增加,大家有買房換房的意願,帶動房地產榮景,「有一個真正的基礎在支撐,現在這個有點虛。」

下一代為何痛苦
學歷虛胖,又碰上全球化競爭,雙面夾殺就業機會,年輕世代一入社會就出現希望差

  已奠定既有經濟基礎的中產階級,都有這麼強烈的壓力,原本應是「中產階級儲備軍」的大學畢業生,則是自覺往下層流動。

   「我覺得我不是中產階級,」六十八年次,出國念碩士回來已在出版社工作二年多的余佩芬說。她回到台灣找的第一份工作薪資三萬出頭,一星期七天幾乎有做不 完的工作,除了工作,幾乎沒有社交生活,也很少回家好好吃頓晚飯。「我父母在他們三十歲之前,就已經結婚、買了房子、車子,我真的非常非常擔心,我根本沒 辦法在三十歲時,同時擁有這些。我想我也不可能給我的小孩,像我父母給我的這種生活,」一頭捲髮、看來總是笑嘻嘻的余佩芬,說起和上一代的比較,她也不禁 皺眉擔心。

  「我得到的是更多的教育資源,父母花了二百多萬送我出國,照理要比我父母有更多的機會、更好的發展,我也沒有不認真,也不奢侈,但為什麼就是感覺做不到?」

  主因來自全球化。在全球化的潮浪下,許多開發中國家及共產國家崩解,原本的三個世界併成一個世界,包括中國、印度的低技術、低薪資勞工大量釋出,也將台灣捲入人力供需嚴重失調的潮流中。

  其中光是電子五哥的外移,台灣至少就短缺了二十萬個以上的工作。例如華碩在大陸的雇用人數約四萬多人,而鴻海更是超過十萬人。「台灣年輕人面對很大的壓力,因為產業出走的背後是很多人來和他搶工作,」青輔會主委鄭麗君說。

   在國內,一方面產業出走、人力需求減少,一方面大學擴張,大學畢業生過度供給,雙面夾殺大學生的就業機會。近年大學擴張,大專以上學歷的學生,十年間從 七十萬人成長到近一百三十萬,其中碩士生的成長率接近三○○%、博士生則成長超過一五○%,造成學歷泡沫化,已無法墊高新世代的就業優勢。

  一九九五年,大專以上學歷的失業人數僅有四萬六千人,二gg四年,已超過十四萬人,暴增三倍。相較全體失業人數,大專以上學歷的失業人是在逆向攀高。

偏差價值觀橫行
既然年輕人拚命也抓不到機會,不如及時行樂,賺了就花,消費去

  在一間大型金控公司的會議室裡,擠滿了新進的保險業務員,人資主管正在台上介紹公司的制度及業務員的福利。台下卻有一張和別人興奮表情呈對比的臉孔,他瞇著眼,自顧自的想出了神,他此刻心裡滿是不服氣,「我為什麼會在這?再給我一點時間,我是考得上外交官的。」

  事實上,他已經考了三年都沒考上。因為近年來外交人員的名額縮減,而自政治、外交系所畢業的學生人數卻大增,錄取率從一四%,降到二○○四年只有三%。加上他在校期間的就學貸款,緩衝還錢的期限到了,他必須儘快找到工作。
  即使頂著政治學碩士的學位,二十九歲的他一時仍找不到工作,只能勉強接受一個月基本薪資二萬五千元的工作。他的夢,開始離他遠去。
  根據行政院主計處統計,台灣三十五歲以下的就業人口,十年來分配到的所得比例愈來愈少,從一九九二年的四g%降到二gg四年只剩三g%。

  這個時候,社會的價值觀就轉為選擇立即的快樂消費。

  國策顧問、中研院社會所研究員蕭新煌觀察,當發生「錢不是那麼好賺」的感覺時,人的心中就會出現一種心態:「反正錢不好賺,也存不了,乾脆花掉算了,」所以反而會注意在消費。
  「過去是因為機會太多,你不去抓它太可惜了,所以拚命一天做二十個小時。」現在機會少了,乾脆把錢拿去投資自己的文化、精神或物質生活,「但壞的一面是卡奴,」蕭新煌說。

  年輕人大膽消費,做了太多不負責任的選擇,造就了包括卡奴、學貸族等社會問題。
  這其實也是產業政策、教育政策的不完整所造成。例如銀行在企業客戶外移下,只好將火力集中在跑不掉的消費者身上。而過度擴張的大學教育,讓使用就學貸款的人數及金額也不斷膨脹。

  令人擔心的是,再加上有限的工作機會及收入,到最後,這群被債務壓得喘不過氣的年輕人,在還沒有正式踏出社會,就選擇了放棄。如此惡性循環,難保我們不會真的和日本一樣墮入「下流社會」。

  「政府一直用政策鼓勵消費,」中經院研究員吳惠林說,「為了追求經濟成長,就要大家增加消費,這是非常大的迷思。」
  吳惠林只好每次教課時,就不斷向學生口苦婆心,希望大家能壓抑對流行物質的慾望,回歸原點檢視自己真正的需要。包括消費及不斷擴張的教育。

  政府的立場,則應該幫台灣走出自己的產業政策,並結合教育。「讓我們的年輕人在保有工作、做好工作的同時,也能過好的生活,」鄭麗君說,「還是鼓勵年輕人要迎向挑戰,不要停在那裡抱怨。」

得道者多助,失道者寡助

這個是別人的MSN顯示名稱,算是做一個小筆記吧。

做事情合乎規範的人會容易有比較多的幫助,做事情不依循既有規範的人大家比較不願意幫助。

工作近況

I家制度完整但有大頭症
L家幾乎沒有軟體技術
M家沒有制度又亂搞
U家跟代工廠商不知道亂搞什麼

某一天的MSN顯示名稱,顯示了四家廠商各自的狀況。

I家最有名的東西叫做[摩爾定律],說到這個大家就知道是哪一家公司了,其實我們等於是做軟體ODM/OEM的部份,因為四家都是用I家的解決方案。

I 家的人很多,相對於我們一打左右的人力,I家做這個東西了人力應該是我們的10倍左右,包括市場/行銷/技術人員等,不過,其實I家的SATA Controller不是很成熟,所以我測的有點感冒,加上I家的技術人員有點看不起我們的感覺[或許是我自己的感覺],所以有點XD

不過最近I家自己發現自己的產品組合起來效能不是很好,自己發ticket給自己人,實在是很有趣,這樣也就不會把問題老是賴在我們這邊,也算是小解脫。

L 家聽說跟Dxxxk是有淵源的廠商,關係聽說不錯,不過L家的人只有做硬體的部份,軟體頂多改改redboot和NIC driver而已,所以有點慘,加上原來想要用I家的設計冠自己的型號來賣,結果被I家拒絕的,所以目前也只有OEM的實力,ODM的話,還是被追殺改設 計的份。

M家的PM之前的態度讓我很感冒,大概她壓力很大,晚上睡不著常常夢遊仙境的樣子,每次就是要比聲音大聲,比較大聲又沒有比較厲害,XD

M 家的東西的設計,外型不錯看,不過拖盤的卡榫結構太弱,加上拖盤又太緊,沒有兩隻手一起根本就抽不出硬碟,真是累呀,加上PM跟底下的人的雙向溝通不 足,所以實在是蠻慘的,最經典的是在golden release的時候才發現電源管理有嚴重問題,之前我講老半天沒人理我,我根本就沒有空去測試,我就不理她了,幫不上忙。

U家廠商曾經是數據機大廠,其代工廠開頭也叫U,最近還把一家A開頭的主機板廠商吃下來。

U家的東西不好看,可是很結實,PSU用標準的,壞掉可以自己換,不過經典的事情是,沒有reset button,這是一個很有趣的狀況,當Users忘記原來的設定值的時候,只能送原廠維修,光support就哀鴻遍野了,目前還沒聽PM說明解決的方 式,不過相信應該還有蠻多問題要解決的。

買球鞋

因為公司同事星期四晚上相約打籃球,所以為了避免同事被我的鋼頭鞋踩傷,所以跑去青海路的Tesco那邊,Nike的Factory Outlet去買鞋子。

很 久沒有買球鞋了,所以端詳了許久,怎麼籃球鞋比較順眼的都這麼貴呀,都要1500元到2000元以上,來回看了五六次,才選定了一雙鞋子,結果我看看自己 的鋼頭鞋,US的號碼是8.5,所以我就拿起了8.5套套看,悲慘的事情就發生了,我的腳掌直接卡住進不去,當場傻掉。

接下來跑了三四趟,9.5/10.5/11/11.5一連試了四雙鞋子,11/11.5都可以穿,不過11稍嫌緊了一點,我就拿了11.5去結帳,我離開Nike Factory Outlet的時候,整整過了半個小時,XD

這次我的感想是鞋子真是有夠貴,尤其是球鞋,花別人的錢會比較沒這麼心痛,還有鞋子的號碼根本就沒意義,不適穿根本就不能確定大小。