2007年12月25日 星期二

Android 心得分享與比賽章程


  之前寫了一篇介紹過 Android 這個由 Google 力推的手機開發平台的大一統框架,前一陣子我基於好奇,下載了其 SDK 和首次嘗試下載試用 Eclipse 這個免費 Open 的 IDE,整個 Android 的成熟度與 Eclipse 之間的開法整合度令人驚豔!我自己嘗試按照 SDK 的文件指示下 step by step 就很輕鬆地完成了一個簡單的 Hello Android 和簡易的 Notes 筆記程式。


  其內附的 emulator 模擬器,也非常完善,提供了數種不同的顯示模式與表皮,我甚至可以用模擬器來觀看我自己的部落格。



  整個 Development ready 的程度搞得我這個 Java 的大外行,從未使用過 Eclipse 的初心者也摩拳擦掌很想參賽玩玩看,因為真的超好開發的,整個 Android 對 AP 的設計理念是很值得大家學習與思考的。


  當然既然有了摩拳擦掌的興趣,其實我主題也有點子了,就看了看英文的比賽章程。但是 2008/3/3 就要截止的時限是緊迫了點,尤其是我這樣毫無經驗的人。啊,志在參加不在得獎啦~。


  反正了解了比賽章程,本來想說翻譯出來分享給國內具有開發實力的網友,增加台灣之光出現的可能,但是網路上有句名言:只要你想做任何事,通常網路上地球某一端都已經有人先做了。果然,下面的聯結就是熱心的網友所提供的比賽規則章程中文版:


   Google Android Contest 比賽章則中文解說


  反正我現在做事就是開心好玩就好,不管什麼報酬率 ROI。好啦!Android contest 等等我,我來囉!



2007年12月15日 星期六

「鍾馗抓鬼系列」靈光一閃,拔除肉中刺!


        長久以來,我幫客戶開發的某系統一直有個奇怪難解的問題 - [ 資料重複 ]。這個問題在測試機上從未發生,在正式機短則一兩個月才發生一次,但是因為資料牽扯到帳務會影響客戶金額計算,所以只要偶發一下,就會搞得大家人仰馬翻,檢討會議開不完。

        這種偶發的錯誤,是程式開發人員的噩夢 - [ 盯著他看,偏偏都正常。一轉身離開,就給你胡搞出亂子 ]。

2007年11月18日 星期日

IT 盛事 - Android 釋出



  個人認為,最近最受矚目的 IT 重大事件,當屬 Google 推出 Android SDK 以及 Google Android Challenge,一個總獎金高達 1000 萬美金 ( 台幣 3.3 億!? ) 的軟體開發比賽。

  當然 IT 界技術面最近仍有許多相當直得大書特書的幾個重要事件,但其他這些都有高人專家早已撰寫數不清的深入見解,我非專家,頂多就是湊湊熱鬧,想法難登大雅之堂,所以大家多看我訂閱的其他部落格的最新文章就可知悉 ( e.g. Mr. 6 or Mr. / Mrs. Days ) 。而這件事特別被我提出來記一筆,除了我認為其影響格外深遠外,當然是為了為比賽推廣拋磚引玉,希望屆時也能有台灣之光出線!

  自從 Google 介入 Linux 核心開發,各種傳聞就甚囂不斷。例如將推出他們自己的作業系統 ( GOS ? ),自己家的手機 GPhone...等等,Google 的下一步總是讓人引領盼望它每次的創舉。然而 Android 推出的官方介紹影片已經嚴正地駁斥了 GPhone 存在的謠言,但是 Google 所打出的牌卻更為高明,他推出了統一各家手機平台的一個標準作業平台!

  如果當初 Sun 推出 Java ,一個號稱可以跨不同機器與作業平台的程式語言,一個號稱 Write once,run anywhere 的程式開發者福音,可以造成影響十年有餘的巨大迴響,那 Android 一個跨不同手機硬體的共用標準開發平台,沒有理由不再次震撼整個行動數位的 IT 產業! 是的,Android 底層借助的正是 Linux + Java 等已經深耕開放平台的最佳組合。

  Java 最為人津津樂道的另一件事,就是功能與支援完整的 API Framework。在繼續歌功頌德之前,讓我們先看看 Android 提供了什麼樣功能的作業平台讓應用程式的開發者 / 程式設計師可以隨意發揮? 先看看以下影片 :

  

  這段完全沒有字幕的美語介紹影片,我自己很吃驚地竟然全程看完能聽懂八成左右? 咦,難不成我的英聽能力又進步了? 真是拜好萊塢電影所賜,感恩。

  看完這段介紹影片,尤其後來還出現 Quake 3D 的遊戲畫面,無不讓人震驚其多媒體方面的完善支援度。以前我們做行動裝置或是手機軟體,總是擔憂手機的硬體效能以及平台對多媒體的支援成熟度,看到 Android 驚人的展示,這些疑慮幾乎可以排除,所有開發者可以盡情發揮無窮的想像力和瘋狂點子放置在這樣的行動裝置平台上!

  雖然目前還沒看到任何搭載 Android 的智慧型手機上市 ( 若有可告訴我一聲 ),但是有 Google 一千萬美金的獎金撐腰,加上以 SDK 內的 emulator 為準,大家可以先不用顧慮市場大小,硬體支援度,接受度等問題,直接開始動手下去做,有比賽有機會! 詳細的比賽獎金與名次辦法請參考這篇中文文章的介紹

  更多的 Android 介紹與影片請參考官方網站

2007年10月25日 星期四

書報討論心得報告-My Personal Views on Taiwan IT Industry

書報討論心得報告

講演主題:My Personal Views on Taiwan IT Industry

主講人:方頌仁

從創投的角度出發找機會

  擔任創投公司總經理的方博士,從創投的角度,分析台灣資訊科技產業的前景。他過去接觸過國內外各種新興的科技公司,對於科技業未來的潮流與走向,以及台灣競爭力的分析,指引了我們在座資工系所學生一個很好的方向和明燈。


數據!數據!數據!

  物理背景與工程出身的方博士,透過許多分析數據與指標,讓數據說話而非隨意臆測,提供對台灣現況最扎實的量化分析,並勾勒出台灣競爭力的出路與應對辦法。

  台灣,過去的 OEM 王國,面對中國大陸等世界工廠的崛起,如今榮光不再,微笑曲線的效應浮現,製造不再具有利潤,最重要的兩塊,服務和銷售,卻是缺乏國際品牌的台灣目前最嚴重的致命傷。


代工!代工!代到頭殼壞去!

  台灣人的教育最缺乏的,就是國際視野與創造力,追究其肇因,就是不良的教育制度所致。方博士提起他自身的美國經驗,美國學校廣收世界各國優秀學生自由競爭,每個學生都能從接觸留學生來感受到世界各地所帶來的文化與思想的衝擊。反觀台灣,對中國許多優秀學校與學生的崛起視而不見,甚至刻意隔絕交流管道,拒絕承認中國大陸學歷,對自家有意前往取經的學生築起一座高牆,讓透過撞擊而越發閃亮的學術火花,無從發亮。

  方博士在演講過程中,不只一兩次說到,有機會,一定要走到台灣外看看,去美國,歐洲,體會別人是怎樣做教育與人文思想的訓練的。台灣未來的道路在與國際接軌並跳脫只會代工的命運,這點是無庸置疑。


台灣目前還有優勢嗎?

  台灣比起印度和大陸,優勢在哪裡?在於豐富的代工經歷所累積的完善硬體與製造設備,這是印度和大陸所缺乏的。這代表,如果要在硬體上作軟體加值的應用開發,台灣實現的能力和機會將比印度和大陸高出許多。


台灣軟體產業的下一塊藍海可能在哪裡?

  以創投的現階段對台灣了解,對於我們資工來說,未來的下一塊藍海在哪裡?在場的同學問了這個十分重要的問題。

  方博士說,監控產業會是一個很有未來前景的應用,不久之後,Digital IP Cam 將會全面取代現在以 TAPE 為主的傳統監視器。未來的安全監控將會完全靠軟體自動化,利用軟體綁硬體,嵌入式軟體會是一個值得深入的領域。


聽君一席話,勝讀十年書

  這次的講題相信對在場所有在學學生有十分的幫助。我們大部分仍在摸索自己的未來,對未來將面對的挑戰既迷惘又困惑,對自己所學也沒有把握和方向。在這樣一個霧裡看花的時刻,安排了這樣一場,由資深業界人士,且是以商業發展機會為角度切入,而非以技術角度切入的,這樣一場講演,如同一場及時雨,去除了不少令人不安的迷霧。

  我們今天來求學的目的是什麼?絕不是僅有自娛娛人自己爽而已,而是期望能在未來學以致用,將知識用在造福國家國民的方向。但是既使這樣抱負,仍需要有人能在前給予經驗和方向,告訴我們知識的應用可以發揮在哪些地方。

  研討會結束後,不少人在會後仍然熱烈地參予討論,這是過去不容易見到的景象,可見大家對未來的關心程度。

  非常期望日後能安排更多類似這樣,以應用的角度,邀請更多資深業界人士與學長姐,分享他們睿智的看法,拓展目前封閉與缺乏國際觀的台灣學術教育並彌補其不足。畢竟,知識要能被應用,才會有價值。台灣,一定要在我們這一代走出去!

2007年9月22日 星期六

平淡無味地落幕 - TechEd 2007 心得與紀實

  今年 TechEd 2007 給我只有一個感覺 - [ 太陽底下無鮮事 ] 的悶.

  老實說, 開發議題想打的重量級王牌 - SilverLight, 震撼力道不如去年宣傳 WPF ( 更何況之前他只是 WPF 的子集 - 之前稱為 WPF Everywhere ), 而他所能達到的效果也只是跟隨目前當紅的 RIA ( Rich Internet Application ) 潮流, 想和已經行之有年的 Adobe Flash 分庭抗禮而已.

  雖然 SilverLight 解決了一些 Flash 為人詬病的問題 - 例如搜尋引擎無法抓取 Flash 網頁的文字資料, 採用 XAML 作為技術核心的 SilverLight 可以避免這個問題; 但畢竟沒辦法突破 Flash 的里程碑太多.

  再加上原本被視為重量級的 SilverLight 主題場次因首日天公疼愛, 派來暐帕前來包場作客, 讓其他學員無緣一見, 重重地削弱此次 TechEd - 一個微軟本該使出看家本領技壓群雄的技術盛會 - 的力道.

  對於新技術不再 exciting 的我, 結論就是一整個.

  圖一是會場剪影, 沒啥特別的... 可惜是我沒看到 Open session 的 KeyNote, 被帳單先生搶去這個場次, 不然 KeyNote 應該會有些靈魂級的展示和表演, 不至於讓我只感到無限的悶.



  跟上一屆不同, 這次 TechEd 帶入了一些美少女活動, 包含 TechEd Girl 選拔賽, 大概想讓大部分宅男出身的軟體工程師一飽眼福當作福利.


  好吧, TechEd 既然肚子裡沒有墨水, 那就來點美人計, 用美色來替活動增添些色彩吧? 一整個模仿車展裝扮的 show girl, 台風水準都不怎麼樣, 實在冏到令我失望. 另外還有 IT 狂人賽, 這不是模仿超級武林大會的 KUSO 比賽嗎? 但是看到幾個出槌的設備問題, 我轉身掉頭就走. 無趣, 又是一整個悶...


  圖三的 AMD 的 Show Girl 不用比賽, 但素質卻比起 TechEd Girls 好多了. 微軟的初選眼光該修正一下, 不然就是這一屆沒什麼人來參賽吧?

 圖四是上課實況與學員休息區, 休息區還提供 XBOX 360 不限制玩到爽, 造成一整個翹課風潮...XD, 讓許多課只有小貓幾隻.

  圖五是去新光三越吃午餐 - 奶油海鮮義大利麵. 這次不同於過去以往只接訂購外面的便當在國際會議中心集中用餐, 而是發給學員餐券, 讓學員到周邊商業設施自由用餐.



  這次參加, 我最感到收穫和最重視的主題, 就是軟體開發的專案議題. 所以幾乎所有 Visual Studio Team System Fundation Server 的相關場次, 談到如何做專案管理和協同作業開發的議題我都去聽. 也替 Microsoft 在工具上加強軟體專案管理的功能感到十分激賞和鼓掌.

  軟體的專案管理有著很特殊的特性, 這就是為何既使擁有 PMP 管理師證照的專業經理人, 也很難把軟體專案管好. 因為軟體專案的易於變動, 多了非常重要的版本控管等機制存在, 這些特性都只存在於軟體專案中, 而這些問題也是最難只靠人工去克服.

  版本控管方面, 雖然已經有不少現成的方案可供選擇, 如 CVS, Subversion, VSS, SourceDepot..., 免費或是要錢的都有. 但是各自獨立不能跟開發工作或是專案流程管理系統整合, 常導致版本控管淪為雜亂的備分中心而已.

  工程師 check-in 程式碼, 不寫說明或是不寫這次變更是根據哪項需求而動, 甚至不等該需求或是 Debug 完成, 就先將今天的進度 check-in, 把版本控管的倉儲當做資料備份而已, 不但造成無法推行 Daily build 機制 ( 因為修改到一半的 code 可能根本無法通過 complier 測試 ), 或是一個功能的修改和完成橫跨數個不同 check-in 的版本號, 造成日後出錯尋找問題發生點困難.

  然而這些問題, 隨著 Team System Fundation Server 所提供的 Check-in policy 與 work item 整合, 得到了不錯的解決效果. 且在協同作業部分, Sheving 機制也提供將進行修改中的工作, 以類似虛擬 Check-in 的機制讓其他人接手原本未完成的工作. 這些都是針對軟體專案的痛點所設計的解決方案, 令人激賞拍案叫絕!



  此外在軟體測試方面, 整合過去 NUnit 功能的單元測試也強化了, 最令人印象深刻的是測試涵蓋率的支援, 以及自動化測試資料的產生, 以及可以數量化的報表和建立專案專屬的 Web Portal, 都是十分切題的貼心設計.

  然而, 這麼棒的東西, 卻綁定了只有微軟的 Visual Studio 和 .NET 平台才可使用, 不免有所憾恨...

  期望, 有一個共通性的軟體專案開發平台可以像是微軟 Team Fundation Server 一樣, 整合到這樣完善的地步! ( 最好還是免費的 Open Source...:D, 把 CVS, Subversion 都整進去吧? )

  此次 TechEd 中, 微軟在軟體專案管理上的貢獻, 是最令我拜倒佩服的. 比起其他新技術, 這才是國內軟體業急需取經引進的重要參考!

2007年9月18日 星期二

[ 轉載 ] 在VS2005 环境下面使用.NET Framework 1.1 进行编译


由于 MSBuild 未能直接提供编译 .NET framework 1.1 的功能, 不能直接在VS2005下使用.NET framework 1.1 编译
幸运的是 MSBuild 有强大的扩展性,可以使我们去找到一种办法去解决这个问题。
让我们来看看应该怎么做:

首先把下面这个XML 保存为C:\program files\msbuild\CrossCompile.CSharp.targets, 一定要是这个路径

<!--
Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm
Written by Jomo Fisher
-->

<Project
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <!--
These two property groups inform VS that there is a Platform called .NET 1.1.
-->

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|.NET 1.1' ">
  <DebugSymbols Condition="'$(DebugSymbols)'==''">true</DebugSymbols>
  <DebugType Condition="'$(DebugType)'==''">full</DebugType>
  <Optimize Condition="'$(Optimize)'==''">false</Optimize>
  <OutputPath Condition="'$(OutputPath)'==''">bin\.NET 1.1\Debug\</OutputPath>
  <DefineConstants Condition="'$(DefineConstants)'==''">DEBUG;TRACE</DefineConstants>
  <DefineConstants>$(DefineConstants);TARGETTING_FX_1_1</DefineConstants>
  <ErrorReport></ErrorReport>
  <WarningLevel Condition="'$(WarningLevel)'==''">4</WarningLevel>
  <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
  <CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
  <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
 </PropertyGroup>
 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|.NET 1.1' ">
  <DebugType Condition="'$(DebugType)'==''">pdbonly</DebugType>
  <Optimize Condition="'$(Optimize)'==''">true</Optimize>
  <OutputPath Condition="'$(OutputPath)'==''">bin\.NET 1.1\Release\</OutputPath>
  <DefineConstants Condition="'$(DefineConstants)'==''">TRACE</DefineConstants>
  <DefineConstants>$(DefineConstants);TARGETTING_FX_1_1</DefineConstants>
  <ErrorReport></ErrorReport>
  <WarningLevel Condition="'$(WarningLevel)'==''">4</WarningLevel>
  <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
  <CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
  <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
 </PropertyGroup>
 <!--
Import the standard C# targets
-->

 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 <!--
Now that the standard targets have been brought in. Override some properties
and items it created.
-->

 <PropertyGroup>
  <AvailablePlatforms>$(AvailablePlatforms),.NET 1.1</AvailablePlatforms>
  <AssemblySearchPaths Condition=" '$(Platform)' == '.NET 1.1' ">
   {CandidateAssemblyFiles};
   $(ReferencePath);
   {HintPathFromItem};
   {TargetFrameworkDirectory};
   {AssemblyFolders};
   $(OutputPath);
   {GAC}
  </AssemblySearchPaths>
  <TargetFrameworkDirectory Condition=" '$(Platform)' == '.NET 1.1'">
   $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322
  </TargetFrameworkDirectory>
 </PropertyGroup>
 <ItemGroup Condition=" '$(Platform)' == '.NET 1.1'">
  <TargetFrameworkDirectoryItem Include="$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322">
   <InProject>false</InProject>
  </TargetFrameworkDirectoryItem>
 </ItemGroup>
 <!--
Override this target from Microsoft.Common.Targets so that we can supply our own
value for $(TargetFrameworkDirectory). This controls where assembly resolution
logic finds FX assemblies.
-->

 <Target
     Name="GetFrameworkPaths"
     DependsOnTargets="$(GetFrameworkPathsDependsOn)">
  <!-- Get the path to the target .NET framework directory. -->
  <GetFrameworkPath
   Condition=" '$(Platform)' != '.NET 1.1' ">
   <Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
   <Output TaskParameter="Path" ItemName="TargetFrameworkDirectoryItem"/>
  </GetFrameworkPath>
  <!-- Get the path to the target .NET framework SDK directory. -->
  <GetFrameworkSDKPath
   Condition=" '$(Platform)' != '.NET 1.1' ">
   <Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
   <Output TaskParameter="Path" ItemName="TargetFrameworkSDKDirectoryItem"/>
  </GetFrameworkSDKPath>
 </Target>
 <!--
For 1.1 builds, intercept the call to CorResGen target (which generates 2.0 resources) and
slip in a call to our own CoreResGen_1_1.

Handily, the devices version of the ResGen task is able to call the 1.1 version of
ResGen directly.
-->

 <UsingTask TaskName="CFResGen" AssemblyFile="$(MSBuildBinPath)\Microsoft.CompactFramework.Build.Tasks.dll" />
 <PropertyGroup Condition="'$(Platform)' == '.NET 1.1'">
  <ResGenDependsOn>ResolveAssemblyReferences;BeforeResGen;CoreResGen_1_1;AfterResGen</ResGenDependsOn>
 </PropertyGroup>
 <Target
     Name="CoreResGen_1_1"
     DependsOnTargets="$(CoreResGenDependsOn)">
  <CFResGen
       Condition = " '@(ResxWithNoCulture)' != ''"
       Sources = "@(ResxWithNoCulture)"
       UseSourcePath = "$(UseSourcePath)"
       StateFile = "$(IntermediateOutputPath)$(MSBuildProjectFile).CrossCompileResGen.Cache"
       OutputResources = "@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
    >
   <!-- Appending to 'FilesWritten' list lets us be part of Clean and Incremental Clean. -->
   <Output TaskParameter = "FilesWritten" ItemName="FileWrites"/>
   <Output TaskParameter = "OutputResources" ItemName="ManifestResourceWithNoCulture"/>
  </CFResGen>
  <CFResGen
       Condition = " '@(ResxWithCulture)' != ''"
       Sources = "@(ResxWithCulture)"
       UseSourcePath = "$(UseSourcePath)"
       StateFile = "$(IntermediateOutputPath)$(MSBuildProjectFile).CrossCompileResGen.Cache"
       OutputResources = "@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
    >
   <!-- Appending to 'FilesWritten' list lets us be part of Clean and Incremental Clean. -->
   <Output TaskParameter = "FilesWritten" ItemName="FileWrites"/>
   <Output TaskParameter = "OutputResources" ItemName="ManifestResourceWithCulture"/>
  </CFResGen>
 </Target>
</Project>

然后新建一个 2005 的 c# 项目, 或者转换一个 2003 的项目到 2005 的项目格式. 取名为: myApp
手工编辑myApp.csproj
用<Import Project="$(MSBuildExtensionsPath)\CrossCompile.CSharp.targets" />
替换 整个<Import >节点
保存
重新加载项目
在配置管理器(Configuration Manager)里面
平台(platform)下拉菜单里面 选择.NET 1.1 ()

OK. 如果代码没有问题就可以编译了

Enjoy

related link: http://blogs.msdn.com/jomo_fisher/archive/2005/04/22/410903.aspx
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=509134

Microsoft TechEd 2007 開跑



  微軟一年一度的盛會, TechEd 2007 今天正式展開.


  原訂 9/18 開始的 KeyNote 意外的遇上中颱暐帕而延期到 9/19 早上, 三天的 Agenda 夭折成兩天, 首日的課程瞬間蒸發. 真不知道那些拿一萬多元買入場券的可憐蟲心裡怎麼想. 照例, 今年我又是拿免費票入場, 跟帳單先生共用一張.


  去年我參加 TechEd 2006 是個有趣美好的回憶, 當時 JACK 還在..., 今年的 TechEd, 有種孤寂的感覺, 原本也就沒特別想去, 所以沒有主動跟帳單先生索票過...

  Anyway, 今年的 TechEd, 研究過課程總表 ( 分 12 大主題 ), 發現我對開發議題提不起什麼興趣, 沒啥吸引我的主題. 反倒是 Mobile 和軟體專案開發週期的管理等, 較吸引我. 於是我規劃的課程大致如下 ( 衝堂的當作是擠不進教室的候選課程吧 ):






  1. 將 ADO.NET Entity Framework 整合到應用程式中

  2. 微軟虛擬化技術解決方案與願景 ( 衝堂放棄 )

  3. 落實高效率流程導向開發團隊 - 導入 Visual Studio Team System 的最佳實務

  4. ASP.NET AJAX 與 Silverlight 的完美結合 ( 衝堂放棄 )

  5. 加速行動商務應用程式開發的秘技

  6. JavaScript 程式碼在瀏覽器中的效能 ( 衝堂放棄 )

  7. 深入剖析資料庫應用程式開發流程

  8. Visual Studio Team Foundation Server 開發團隊管理平台

  9. 實作單元測試與測試導向開發方法


2007年7月29日 星期日

[轉錄]甲骨文公司總裁賴瑞艾利森在耶魯大學對畢業生所作的演講全文


  這是甲骨文(Oracle)公司總裁賴瑞艾利森(Larry Ellison)在耶魯大學(Yale University)對畢業生所作的演講全文,由於他句句驚人,最後被耶魯大學保安請下講臺。

  這篇演講內容相當著名且流傳已久, 前兩天因為湊巧, 讓我第二次看到這篇文章, 故收納以供日後回味與參考. 這是我從張盛舒的命理觀這個部落格 - 學歷,有用嗎?-有時候,你得相信命運!(六)這篇文章節錄出來, 有興趣的人不妨連回原文章看看這位創立全球最紅的紫微命理網站的創業家 ( 也是個大學輟學生 ) 的觀點與說法. ^_^







耶魯的畢業生們,我很抱歉---如果你們不喜歡這樣的開場白。我想請你們爲我做一件事。請你---好好看一看周圍,看一看站在你左邊的同學,看一看站在你右邊的同學。



請你設想這樣的情況:從現在起5年之後,10年之後,或30年之後,今天站在你左邊的這個人會是一個失敗者;右邊的這個人,同樣,也是個失敗者。而你,站在中間的傢夥,你以爲會怎樣?一樣是失敗者。失敗的經歷。失敗的優等生。



說實話,今天我站在這裏,並沒有看到一千個畢業生的燦爛未來。我沒有看到一千個行業的一千名卓越領導者,我只看到了一千個失敗者。你們感到沮喪,這是可以理解的。爲什麽,我,艾利森,一個退學生,竟然在美國最具聲望的學府裏這樣厚顔地散佈異端?



我來告訴你原因。因爲,我,艾利森,這個行星上第二富有的人,是個退學生,而你不是。因爲比爾蓋茨,這個行星上最富有的人---就目前而言---是個退學生,而你不是。因爲艾倫,這個行星上第三富有的人,也退了學,而你沒有。再來一點證據吧,因爲戴爾,這個行星上第九富有的人---他的排位還在不斷上升,也是個退學生。而你,不是。



你們非常沮喪,這是可以理解的。



你們將來需要這些有用的工作習慣。你將來需要這種“治療”`。你需要它們,因爲你沒輟學,所以你永遠不會成爲世界上最富有的人。哦,當然,你可以,也許,以你的方式進步到第10位,第11位,就像Steve。不過,我沒有告訴你他在爲誰工作,是吧?根據記載,他是研究生時輟的學,開化得稍晚了些。



現在,我猜想你們中間很多人,也許是絕大多數人,正在琢磨,"能做什麽?我究竟有沒有前途?"當然沒有。太晚了,你們已經吸收了太多東西,以爲自己懂得太多。你們再也不是19歲了。你們有了``內置``的帽子,哦,我指的可不是你們腦袋上的學位帽。



嗯......你們已經非常沮喪啦。這是可以理解的。所以,現在可能是討論實質的時候啦---絕不是爲了你們,2000年畢業生。你們已經被報銷,不予考慮了。我想,你們就偷偷摸摸去幹那年薪20萬的可憐工作吧,在那裏,工資單是由你兩年前輟學的同班同學簽字開出來的。事實上,我是寄希望於眼下還沒有畢業的同學。我要對他們說,離開這裏。收拾好你的東西,帶著你的點子,別再回來。退學吧,開始行動。



我要告訴你,一頂帽子一套學位服必然要讓你淪落......就像這些保安馬上要把我從這個講臺上攆走一樣必然......(此時,賴瑞艾利森被帶離了講臺)



注:賴瑞艾利森爲甲骨文軟體公司創始人,目前身價260億美元,世界第二富豪。







"Graduates of Yale University, I apologize if you have endured this type of prologue before, but I want you to do something for me. Please, take a good look around you. Look at the classmate on your left. Look at the classmate on your right.



Now, consider this: five years from now, 10 years from now, even thirty years from now, odds are the person on your left is going to be a loser. The person on your right, meanwhile, will also be a loser. And you, in the middle? What can you expect? Loser. Loserhood. Loser Cum Laude. In fact, as I look out before me today, I don\'t see a thousand hopes for a bright tomorrow. I don\'t see a thousand future leaders in a thousand industries. I see a thousand losers. You\'re upset. That\'s understandable. After all, how can I,Lawrence "Larry" Ellison, college dropout, have the audacity to spout such heresy to the graduating class of one of the nation\'s most prestigious institutions?



I\'ll tell you why. Because I, Lawrence "Larry" Ellison, second richest man on the planet, am college dropout, and you are not. Because Bill Gates, richest man on the planet-for now anyway-is a college dropout, and you are not. Because Paul Allen, the third richest man on the planet, dropped out of college, and you did not. And for good measure, because Michael Dell, No.9 on the list and moving up fast, is a college dropout, and you, yet again, are not.



Hmm ... you\'re very upset. That\'s understandable. So let me stroke your Egos for a moment by pointing out, quite sincerely, that your diplomas were not attained in vain. Most of you, I imagine, have spent four to five years here, and in many ways what you\'ve learned and endured will serve you well in the years ahead. You\'ve established good work habits. You\'ve established a network of people that will help you down the road. And you\'ve established what will be lifelong relationships with the word "therapy." All that of is good.



For in truth, you will need that network. You will need those strong work habits. You will need that therapy. You will need them because you didn\'t drop out, and so you will never be among the richest people in the world. Oh sure, you may, perhaps, work your way up to #10 or #11, like Steve Ballmer. But then, I don\'t have to tell you who he really works for, do I? And for the record, he dropped out of grad school. Bit of a late bloomer.



Finally, I realize that many of you, and hopefully by now most of you, Are wondering, "Is there anything I can do? Is there any hope for me at all? Actually, no. It\'s too late. You\'ve absorbed too much, think you know too much. You\'re not 9 anymore. You have a built-in cap,and I\'m not referring to the mortarboards on your heads.



Hmm ... you\'re really very upset. That\'s understandable. So perhaps this Could be a good time to bring up the silver lining. Not for you, Class of \'00. You are a write-off, so I\'ll let you slink off to your pathetic $200,000-a-year jobs, where your cheques will be signed by former classmates who dropped out two years ago. Instead, I want to give hope to any underclassmen here today. I say to you, and I can\'t stress this enough: leave. Pack your things and your ideas and don\'t come back. Drop out. Start up. For I can tell you that a cap and gown will keep you down just as surely as these security guards dragging me off this stage are keeping me down..."



(At this point The Oracle CEO was ushered off stage.)

2007年2月28日 星期三

狄葳小姐

  意外看到這樣的一個擬人化的搜尋引擎 Ms. Dewey ( 狄葳小姐 ), 看起來背後用的是 Microsoft Live Search 的搜尋引擎, 外觀包上這有趣的殼. 不但提供搜尋功能, 且有個小妞對你的搜尋主題發出批評與反應, 類似當初 AI 人工智慧電影上映時的宣傳網站, 提供了一個代理人聊天程式.


  不過, 這個炫得多! 帶來的樂趣遠勝於實用性.


  這個讓我想起國中時用 ETBASIC 寫過類似的程式, 命名為 [ 超級麥斯 ] , 點子來自於當年算很紅的台視影集(有口皆碑). 我那時利用當紅的青少年漫畫 - 城市獵人(CITY HUNTER)中的孟波的大頭照當代言人, 然後透過繪圖軟體 [ 變影 72 ] + 掌上形的掃描器, 製作出各種喜怒哀樂的表情. 最後花了好幾個晚上的時間建立話題集, 經由簡單字串比對的查詢效果來完成這虛偽的人工智慧反應...


  現在回想起, 還蠻懷念那段瘋狂又愚蠢的日子....


  拜頻寬普及之時, 網路上互動性更高的應用紛紛出籠, 但是真正能成為 Killer 應用的點子卻越來越少. 這個炫玩意看來製作成本決不低廉, 新鮮歸新鮮, 但錢燒完後, What's NEXT?

2007年2月25日 星期日

我的讀書計畫 ( 研究所書面審查 )

  對資訊工程研究所的憧憬:


  國小時期我意外開始接觸程式語言 BASIC, 當時的興趣是做繪圖與動畫, 國中時接下班級成績單列印系統, 雖然未學過資料結構與演算法課程, 絞盡腦汁寫出名次排序的功能, 現在回想起是使用類似氣泡排序法完成(但效能更差)。這樣讓我與電腦程式結下不解之緣, 卻也因為年少得志讓我犯下判斷錯誤的過錯, 以為資訊工程的領域知識只需要依靠坊間書籍努力自學即可, 大學和研究所的時間我應該投資在更需要國家教育資源的學問上, 導致我大學選擇了另一個科系 - 物理系.


  如今看到資訊科技蓬勃萬里與一日數變的發展, 才發現往日的認知過於天真與錯誤, 程式語言與電腦指令, 只是工具, 只是整個資訊學問的滄海一粟. 真正實務的應用面, 更需要豐富的學理作為基礎. 我好比學會 26 個英文字母就自認為已學會英文那樣荒謬地離譜幼稚.


  回來資訊工程所做進修, 除了是對自己無知的反省, 也是重新擁抱自己所愛, 希望能將資訊科技的進步與便利帶入社會與生活的每個角落, 以自己的理想與所能促進人類生活的進步.


  二、近程(從錄取到正式入學前)


  由於本公司的產品性質與業務上經常參與許多金融企業的自動化流程設計與開發, 所以對於 EAI 和平台, 網路通訊等有相當的經歷與研究. 持續吸收各個通訊標準與交易傳遞的知識. 並且為了讓自己日後不管專研任何領域的應用, 都能達到最大的設計彈性與易於維護等優勢, 短期內以學習各種程式開發架構面的知識與開發方式為優先. 例如: GOF 的 Design Pattern, CMMI, Agile, Extreme Programming ( XP 開發流程 ) , Prefactoring & Refactoring等議題.


  三、中程(進入研究所後)


  擁有開發流程與架構知識的前期準備, 對於資訊科學, 個人認為應用極致的表現就是人工智慧一項, 這不但是我最大的興趣與夢想, 也是目前尚未成熟且充滿冒險疆域的一塊. 我對於如何運用電腦強勢的計算能力, 輔佐人類做出正確的決定, 感到非常有挑戰性, 且這才是真正可以為人類社會謀取幸福的唯一道路. 人類的判斷過程過於情緒化與缺乏邏輯, 對於決策系統與專家系統的理論研究, 智慧代理人等背後運行的理論與研究, 是我中程的目標.


  四、遠程(畢業前)


  電腦判斷的準則一切以數字為依歸, 發展人工智慧來解決人類實際遇到的各種問題, 最難的就是將抽象的問題與不同的選擇之間, 轉化為數據表達, 以便電腦能根據數學原理與演算法做出決定. 要幫電腦做出 Ranking 與考量各種因素的加權值是件困難的事情, 且人為的設計會牽涉到設計者本身的主觀因素(開發人員也是凡人), 在這個階段, 我將研究電腦在自我學習上可以從累次的判斷與結果回饋來自我成長到什麼境界. 人工智慧的自我學習, 是畢業前目標.


  五、未來展望


  為了讓人類能在具有智慧的電腦系統輔助下做出更好的表現與提升工作效率, 做出正確的決定, 未來我將利用所學, 先從經濟面發展出與金融相關的決策系統或專家代理人系統. 為何先從金融面出發, 是因為自己目前的工作性質就是負責金融營運的系統, 再者, 金融界的相關知識都已經數據化, 例如金錢數量, 股票漲跌, 經濟趨勢與景氣訊號, 都是現成已經數據化的資料來源, 對於電腦來做決策與判斷依據是一個絕佳的入門點.


  若在金融領域略有斬獲後, 我會在朝其他領域繼續研究相關系統的潛力與發展方向, 此為我長期, 且終生的目標與職志.


2007年2月19日 星期一

ViewState 滾開!



  在 ASP.NET 的架構下, 最令人驚奇的就是 ViewState 的存在. ViewState 是 ASP.NET 的靈魂, 巧妙地避開 Http stateless 的先天限制, 讓 Web ap 也能享有狀態存留, 事件觸發等原本屬於 Winform AP 的開發特性.


  ASP.NET 的 ViewState 的自動化讓開發人員可以很輕易就發展出高互動的網站, 但是他也讓 ASP.NET 背上效能不佳的罪名, 濫用伺服端控制項的人最終會發現, ViewState 的包袱是很沉重的, 就像是惡魔的交易, 必須用靈魂般沉重的代價換取.



  儘管微軟一直強調 ASP.NET 的開發效能與執行效能評比, 遠超過老爸 ASP 甚多, 但這些效能評比都是在 Server 上作評比, 沒太多人想過在 Client 上的效能評比又如何. 當然這是因為比較 client 端的變數太多, 受限於 End user 端的硬體等級, 頻寬等級..., Server 端評比是單純容易多了.


  但是在現今電腦硬體越來越快, 價格越來越低廉, 這些 CPU 上的數據其實已經不如以往重要, 相比之下, 頻寬效能才是重點. 單比頻寬就會發現 ASP.NET 是龐大且反應緩慢的怪物, 真兇就是 ViewState + PostBack 兩者. 一般拿來做企業 / 公司內的 AP 還不會有人發現其嚴重性, 反正都是 Intranet 區域網路, 動輒上百 M 的頻寬在流竄, 拿來做 Internet AP 就會發現客戶抱怨聲此起彼落. 我也是拿 ASP.NET 做了個電子商務訂單系統, 才被這看似好用的糖衣陷阱搞得七葷八素. 為了滿足客戶對效能的期望, 盡量關閉不必要的 ViewState, 開始手工打造 Jscript 來減少 PostBack 的次數.


  ASP.NET 要做到頻寬的最佳化可是條艱辛的路, 所幸, 在網路上發現高人指點, 可以將 ViewState 儲存於 Server 的 Session 之中的偷吃步做法, 減少傳輸的頻寬量, 花了點時間研究, 今天總算改良完畢, 做出來的效能我相當滿意.



  不過這個偷吃步是用 Server 的記憶體空間換取時間效能的做法, 同時上線人數一多, Server 應該會爆吧? 管他的, 反正是花錢租來的主機, 不是我家的機器, 記憶體就給他吃吧. 客戶滿意度最重要! ^_^ Y


  參考文獻:
  CodeProject : Keep ASP.NET ViewState out of ASPX Page for Performance Improvement
  - 作者: Regis Daniel de Oliveira

2007年1月14日 星期日

Vista不夠看? 瞧瞧Beryl的厲害

  不看不知道, 看到嚇一跳...


  當微軟還在盛讚Windows Vista即將帶入的作業系統視覺革命, Linux上已有過之無不及的實驗品. 未來, 是否連使用作業系統都變成像是打電動一般? 雖然我很懷疑其實用性, 但邊看仍是讚嘆連連...


  相對於 Windows Vista 必須支付高額的 License 費用去玩弄這些華而不實, 對工作不見得有幫助的東西, Linux 提供完全免費的方案, 對於追炫求新奇的科技摩登族, 應該更具有吸引力(光是在投影機上秀一下就拜倒一堆人)