歐萊禮書籍特價,三本以上 75 折

image

學弟的版看到了,趕快來廣告一下,雖然都是中文書,不過掛著 O’Reilly 至少不會太差唷,是不是要開團了!

http://www.books.com.tw/exep/activity/activity.php?id=0000017976&sid=0000017976&page=291

目前看上了:

  1. 深入淺出物件導向分析與設計
  2. Linux 核心詳解
  3. Linux 驅動程式(這有電子版

聽說還不錯的:

  1. 讓事情發生--專案管理之美學,第二版
  2. 軟體預先架構之美學
  3. 程式設計師提升生產力秘笈
  4. 操作介面設計模式

推薦的:

  1. UML 2.0學習手冊
    不知道有沒有特別有名,沒有特別針對哪種軟體工程方法論做介紹,單純講 UML diagrams ,感覺很清爽易讀!
  2. 深入淺出-設計模式
    很經典的書,不過看久了覺得很囉唆,唉,我真是難伺候!
  3. 深入資料庫之美學
    有點深,害我都放在書架上!

入門的、可當工具書的:

  1. 建構嵌入式Linux系統
  2. Python 學習手冊
  3. 精通CVS
  4. 防駭超級工具
  5. 防駭戰士
  6. GNU Make 專案開發工具

觀望中:

  1. 美麗程式:頂尖程式設計師的思考方式
    在成大圖書部翻過,覺得都是淺嘗則止的帶過一些東西。
  2. Linux 系統程式設計
    看了目錄,感覺有更好的選擇!
  3. 輕快的好 Java
    在成大圖書部翻過,不過內容已經忘了,沒有什麼印象,但好像有提過一些觀念 -_-||
  4. Java I/O 技術
    有點舊!
  5. 超越Java:探討程式語言的未來
    蠻有趣的書,不過論點似乎有點 ooxx ,是本可以戰起來的書!

考慮去書店翻翻的或是有人要借我翻閱嗎?

  1. Java 效能調校技巧
  2. Java Data Object 深度探討
  3. Java 虛擬機器
  4. Java Threads

在 blog 上貼 YouTube

網友 Alvin 最近詢問怎麼在 blog 上嵌入 YouTube 一類的元件,所以就來跟大家介紹一下,順便騙騙文章數,掩飾一下自己江郎才盡了…

步驟一

YouTube 之類的服務都有提供物件語法給大家複製到自己的網頁上,參考下圖可以看到網頁有一區標示著嵌入

ScreenHunter_01 Mar. 18 21.28

步驟二

滑鼠移過去,還會發現有自訂的功能。使用者可以根據自己的需求調整,調整後,就是把 <object> …開頭的語法複製起來。image

步驟三

開啟自己 blog 文章編輯的 html 模式,以 WLW 為例,就是切換到程式碼模式。 接著就勇敢的貼上吧!

ScreenHunter_04 Mar. 18 21.55

成果

最後,就可以看到成果了!

其他

其他像是 mp3, quicktime 等格式的多媒體資料,基本上只要 host 有提供 object 來嵌入,都可以在網頁上產生美美的元件。

結語

ㄜ,感覺教學最後就要來個結語,那就: Yes, We Can!

長尾效應(The Long Tail)

為了為裝成統計達人,上上一篇文章用了長尾效應,不過馬上就被 Royce 大戳破,解釋得零零落落,還好 Wesley 馬上挺身救愛徒6TRYWO4km 12DJLfVSRV2OcUpK4=

不過還是來解釋一下什麼是長尾效應,我想最常聽到的例子就是 Amazon 吧?!有人研究了 Amazon 賣的書和銷售排名關係後,發現銷售排名低的書即使不熱門但為數眾多,累積起來的銷售額還大於熱門書籍!

或是更簡單、更流行的說法就是:

BeatTen

舉個例子來說:

Keiko 只有 Royce 萬分之一的戰鬥力!可是我有千千萬萬個 Keiko ,然後 Keikos 就打贏了 Royce…

不是小兵立大功,是小兵們立大功!所以注意到沒,Keiko 要用複數型!

接著就開始很多人用這個詞了,像我這種常上網的阿宅,每天在一堆的 Web 2.0 應用或是趨勢研究中都會看到它,有時候看到的次數比我當天寫出來的 bug 還多…


唉,不過我是那種很難相處又反社會的人,這種詞看多了就會有股莫名的火燒上心頭!然後我就開始幻想一種對話:

猩仙人:前輩,為什麼你都這麼早開始對程式最佳化?
偽前輩 Keiko:你不知道嗎?80-20 落伍了,長尾正夯!在 80% 的 code 做最佳化搞不好會比你在 20% 的程式做最佳化來的有用唷!
猩仙人:又學到一招了,前輩,我好崇拜你唷!(筆記、筆記)
Royce:<囧>
mobo:Keiko 毀人不倦!

心存歹念,會有報應!

今天幫友 team 的客戶跑 beta 程式,馬上就遇到一個問題,我不是那種很會找 bug 的人,事實上也還在等對方驗證是不是 bug ,可我腦海中就想到一句話:

當你看到一隻蟑螂,表示還有一百隻;
當你看到一隻bug,表示…

然後,回家報應就來了…

DSC05499


有 dump 耶,我應該看嗎?

螢幕解析度統計

最近換了新版型,發現文章區的版面大小竟然跟油價一樣是浮動的,讓我在小黑的 1024 x 768 螢幕上看到很多圖都被截掉了,這就表示很多看我 blog 的人(其實沒有很多人看,科科…)都會有同樣的狀況,原本還想發個文問問大家的意見,沒想到 google analytics 竟然幫我統計好了!

ScreenHunter_02 Mar. 03 23.26

然後又很無聊的看了一下,原來我的 blog :

  • “CreateProcess” 最熱門啊!那李組長眉頭一皺,揪竟,地球一天會產生多少 process 呢?
  • “我要變胖”用 google 去 search 排名還是 8,看來 google 不太準唷 –_-||
  • “黑暗之路”,這真是什麼鬼,我的文章好像沒出現過這段字,難道是黑暗騎士被斷詞找到了?

image

科科,接下來就是拜 ubuntu 和 mysql 兩套 open source 之賜了,對了,還要感謝 Alvin 老師讓我管實驗室主機、mobo 決定用 ubuntu + mysql!果然痛過就是要留下痕跡,這樣人家才不會再痛一次 >_<

image 

最後感謝各位的流量貢獻,我的 blog 流量四分之一來自你們的網站!(從我退伍開始 10/13 ~)

image

天啊,小路學長後勢看漲唷!(最近一個月)

image


Kane 哥,加油,好嗎?

Windows Debugging – Kernel Debugging with WinDbg and VMWare

看到 Royce 大師開始把 Nt Insider 的精華實用文章分享給大家,讓向來只有三分鐘熱度的我,也想硬著頭皮寫點東西,不過我是初學者,就從最最入門的、簡單的開始寫起吧,啊啊,希望不要變成富奸

前言

mini_wininternals

Windows Internals 這本書是許多人進入 Windows 的第一本完整教科書,目前出到第四版,不過我一直懷疑大師 Mark E. Russinovich & David A. Solomon 被富奸上身,因為第五版已經推延了好幾次,目前看來會在 2009/05/20 上市,這次希望是真的。

Windows Internals 第一章介紹了許多工具包來幫助我們瞭解 Windows Kernel ,其中 Debugging Tools for Windows 中的 WinDbg 尤其重要。透過它,我們可以去逐行執行、trace 、反組譯 Windows Kernel。

Debug Windows Kernel 可以是 live (debug 自己)或是 remote (需要兩台 Windows),不過還是 remote debugging 提供了比較多的功能和彈性,傳統上,remote debugging 需要兩台電腦透過

  1. null-modem cable: 也就是 serial port ,一般電腦的 COM port。
  2. 1394
  3. USB 2.0

啊,不管怎麼看兩台電腦總是很麻煩,不過幸好現在有 VMware 可以用了。把 VMware 上跑的 guest OS 當作 debugging target,在上面開啟它的 debugging port ,而提供 VMware 的 host os 則執行 WinDbg 。

VMware 設定

  1. 安裝完後,開啟 guest OS 的設定。 
    ScreenHunter_02 Mar. 01 12.24
  2. 新增一個 Serial Port 的硬體裝置。 
    ScreenHunter_03 Mar. 01 12.26  ScreenHunter_04 Mar. 01 12.27
  3. 使用 Named Pipe 去模擬 Serial Port 裝置。
     ScreenHunter_05 Mar. 01 12.29
  4. 替這個 Pipe 命名,這個名字稍後會被 WinDbg 用來作為連線的名稱。
     ScreenHunter_06 Mar. 01 12.31

  5. 最後別忘了把 Yield CPU on Poll 選項勾起。
     ScreenHunter_07 Mar. 01 12.33

Windows Boot 設定

設定完 VMware 後,接著要設定 debugging target 也就是 guest OS 的開機選項。也就是 boot.ini 檔。修改前請先備份一下!boot.ini 是系統的隱藏檔,要看到它,要到資料夾選項中把下面兩個選項關掉:

  1. 隱藏保護的作業系統檔案
  2. 顯示所有檔案和資料夾

路大師補充:boot.ini 有可能是唯讀檔,若遇到不能修改的情況,請記得把唯讀的屬性拿掉!

ScreenHunter_08 Mar. 01 12.39

看到 boot.ini 後,在 operating systems 的選項多加一個:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - Debug" /fastdetect /debugport=com1 /baudrate=115200

要注意的是:

  1. debugport 的名字要跟你在設定 VMware Serial Port 時給的名字一樣才行。
  2. baudrate 可以任意調整成你想要的速度。

ScreenHunter_10 Mar. 01 12.45

重開機讓 boot.ini 生效。這時會發現開機多了一個選項(如下圖),這就表示成功了。

image 

使用

最後,在使用 WinDbg 時,可以在 cmd 下這個指令:

windbg -b -k com:pipe,port=\\.\pipe\com_1,resets=0

這樣 WinDbg 就會嘗試連透過 com_1 這個 debugport 去連上 debugging target 。成功的話,應該會看到像下面的圖:

image

 

參考資料

  1. Debugging Tools for Windows
  2. Driver Debugging with WinDbg and VMWare

更新

  1. 2009/03/01 13:02 原文
  2. 2009/03/01 22:28 加上小路學長補充的 boot.ini 檔唯讀的設定。

Keep hacking, and enjoy it!

在 blog 貼程式碼使用 Syntaxhighlighter + PreCode

前言

在上一篇教學後,我們已經可以使用 Syntaxhighlighter 來幫我們排版、美化程式碼了,不過很快地我們就發現單靠 <pre> 去排版還是會遇到問題,當初我覺得可以靠 WLW plugin 解決,沒想到馬上就找到了一個不錯的與 Syntaxhighlighter 整合的 plugin ,不過可惜的是,目前它支援的語法是 Syntaxhighlighter 1.5 的,不過好在有一些間接的 solution 。

這個 plugin 叫做 PreCode ,有趣的是官網稱 PreCode 是 Code Snippet With Syntaxhighlighter Support for Windows Live Writer,而 PreCode 這名字只出現在 binary 中,啊,題外話。

安裝 PreCode

PreCode 的官方網站, 在這裡可以找到安裝檔,安裝很方便,安裝完後可以看到 WLW 視窗右方的工具列多出了一個 PreCode 的選項:

ScreenHunter_02 Mar. 01 00.54 使用 PreCode

PreCode 的使用相當直覺,點下 PreCode 後,就會跳出一個對話方塊:

ScreenHunter_06 Mar. 01 00.58 對話方塊已經有 Content 區塊可以貼上程式碼,Format 則建議選擇 pre,Syntax Highlighting 的地方就根據需求設定吧!

跟 Syntaxhighlighter 2.0 共存

第一種方式是手動修改 HTML code ,如果把 PreCode 的產生的 HTML code 打開來看,你會看到:

<pre class="cpp" name="code">#include &lt;iostream&gt;
using namespace std;

int main()
{
    cout &lt;&lt; "Hello World\n";
    return 0;
}</pre>

pre tag 的 class 的地方使用的是舊的 Syntaxhighlighter 語法,所以手動改成 “brush: cpp” 是一種方式。

第二種方式是開啟 Syntaxhighlighter 的向下相容性,這個方法得修改 blog 的 template 檔,跟上一個教學一樣,只是得多加一行來啟動向下相容!

<script type="text/javascript">
    SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.287/scripts/clipboard.swf';
    SyntaxHighlighter.all();
    dp.SyntaxHighlighter.HighlightAll('code'); // Add this!!!
</script>

參考

在 blog 貼程式碼使用 Syntaxhighlighter

在 blog 貼程式碼使用 Syntaxhighlighter

前言

謠言都說 Web App 的時代來了,可是在 blog 上貼個好看的程式碼片段還是不太容易,以我自己的理解,一來是排版問題、 二來是語言有些符號和 HTML tag 相衝突,例如:C/C++ 的 < > 同時也用在 HTML tag 上,所以當我們寫下:

#include <iostream>

往往會導致 editor 把 iostream 當作HTML tag ,而導致發佈文章後,只看到:

#include

這是因為對於不認識的 tag ,解讀時是可以略過的,所以有些 editor 會在發佈時就清掉這些 tag。此外,為了美觀、可讀性,若是還能讓程式碼貼出後自動支援 syntax highlight 那就更好了!所以這邊就來介紹一個不錯顯示程式碼的好工具—— SyntaxHighlighter。

簡介

Syntaxhighlighter 是好心人 Alex Gorbatchev 利用 JavaScript 搭配 CSS、Flash 開發出來,使用上並不需要 blog host 在 server 端提供支援。不過需要另外的網路空間來存放 *.js, *.swf, *.css, *.png 檔,以前大家流行放在 Google Page 這個免費空間上,不過這個服務去年八月就被 Google 收了,看似能取代 Google Page 的 Google Site 並不讓使用者上傳 js 檔。不過 Alex Gorbatchev 大概是好人作到底吧,他還提供了免費 host 的服務,至於頻寬問題怎樣,我就沒有細究了!

Syntaxhighlighter 支援的語言很多,有十六種:

  1. Bash/shell
  2. C#
  3. C/C++
  4. CSS
  5. Delphi
  6. Diff
  7. Groovy
  8. JavaScript
  9. Java
  10. PHP
  11. Plain Test
  12. Python
  13. Ruby
  14. SQL
  15. VB
  16. XML

而且支援六種顏色模式,可以點這裡看到預覽:

  1. Default:白色為主。
  2. Django
  3. Emacs
  4. FadeToGrey
  5. Midnight
  6. RDark

另外,值得注意的是,沈寂了兩年,Syntaxhighlighter 才在今年二月初出了 2.0 版,不過與它相關的 plugin 似乎都還沒跟上腳步,所以想安裝 1.5 的人同樣可以參考這篇文章,方法是一樣的。

正文

  1. Syntaxhighlighter 可以在它 Google Code Syntaxhighlighter Project 或是 Alex Gorbatchev 的網站上找到。不過 2.0 目前只能在 Alex Gorbatchev 的網站下載到。(目前 2.0.287 是最新版)
  2. 下載完,解壓縮可以看到幾個檔案和資料夾:
    ScreenHunter_01 Feb. 28 23.44
    1. scripts 資料夾下放著支援的程式語言相關的 JavaScript code。另外有個 clipboard.swf ,是 flash 元件,用來顯示程式碼、支援列印、複製等友善功能。
    2. styles:css 檔。
    3. src:不會用到。
    4. test.html :Syntaxhighlighter  範例。
  3. 請找個網頁空間,上傳 Scripts、Styles裡頭的檔案。Scripts 裡頭的語言種類不一定要全放,選擇想要用的就可以了。找不到網路空間,可以去用 Syntaxhighlighter  作者自己提供的。
  4. 修改 blog 的 template ,這步驟會根據你的 blogger host 而異。以 blogger 為例,請先登入再去範本 -> 修改 HTML,將下列程式片段貼到 </body> </html> 前。為免意外,請先備份原始 template 的程式唷。
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shCore.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shLegacy.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushCpp.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/shBrushCSharp.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushCss.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushDelphi.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushDiff.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushGroovy.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPhp.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPlain.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushPython.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushRuby.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushScala.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushVb.js" type="text/javascript"></SCRIPT>
    <SCRIPT src="http://alexgorbatchev.com/pub/sh/2.0.287/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
    <LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/styles/shCore.css" type="text/css" rel="stylesheet" />
    <LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/styles/shThemeDefault.css" type="text/css" rel="styleshee" />
    <SCRIPT type=text/javascript>
        SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.287/scripts/clipboard.swf';
        SyntaxHighlighter.all();
    </SCRIPT>
  5. 之後當你要貼上程式碼時,只要切換到 HTML 模式,然後用<pre></pre>框起程式碼的方式就可以了!
    <pre class="brush: your_language">
    你的程式碼
    </pre>
  6. 最後是一個跟 WLW 有關的提醒,當我們切換到 WLW 的模式時,我們輸入的 <, >, & 等符號都不會自動轉換為對應的 &lt;, &gt;, &amp ,因此對於像是 C/C++ 這類語言來說,使用 SyntaxHighlighter 還是無法完全解決貼程式碼的問題,我想這點就必須倚賴 plug-in 來幫忙了! 可參考在 blog 貼程式碼使用 Syntaxhighlighter + PreCode 這篇文章!

參考文章

在 blog 貼程式碼使用 Syntaxhighlighter + PreCode

用 WLW 寫 blog

耶,這是篇拖了很久很久的教學文章,記得去年我要畢業前,好像答應要教 Alvin 老師,結果一暫且就…不過還好有 showmin 學長幫忙!不過文章還是不能欠啊,出來跑的,總有一天要還!

簡介

WLW 的全名是 Windows Live Writer ,所以很明顯的就是微軟出的,大家都喜歡訐詨微軟,不過不得不承認這家公司的編輯器都還不錯用,尤其和很多 blog host 提供的 editor 相比,更是好上很多,有時候真的會忍不住罵一下那些預設的 editor 是垃圾…ㄜ…我們好像是同業…

那到底 WLW 有什麼好處呢?下面就讓我用自身經驗,來個工商服務時間吧!

  1. 離線編輯、熟悉的編輯功能:沒錯,不要再相信沒有事實根據的謠言了!即使拔到獅子的鬃毛,號稱 Web 2.0 的 editor 也不會比 standalong 的桌面應用程式好用(好吧,我不否認,我討厭一股腦的把應用都丟在 web 的行銷和廣告)
    基本上 WLW 很像 word 也很像 wordpad ,所以使用者可以很快速地上手,不會常常手滑,tab 按下去就回到上一頁了…
    當然,快速鍵的支援、drag-and-drop 的功能更是沒有少,這可是身為桌面程式的驕傲唷 ^.<
  2. 不雞婆排版的編輯器:這可是最讓我激賞的一樣功能,WLW 是個不雞婆排版的編輯器,這點對於貼程式碼是個很重要的能力,因為像是 blogger editor ,它總是會重新 layout 一下你的文章,然後你辛辛苦苦排好的文章就亂了!
  3. 貼圖方便:使用 WLW 貼圖會很方便,就像是在 Word 裡頭插圖一樣,WLW 會自動上傳到 blog host 提供的空間,比起許多 on line editor 需要先上傳等自訂連結來的方便,當然也可以用 drag-and-drop 囉。
  4. 統一的編輯器:free blog host 很多,在這些廠商中跳來跳去的人也不少,雙棲、三棲、以至於 N 棲的人也很多,但是你只要學一套編輯器的使用,基本上就可以討生活了,因為 WLW 允許你註冊多個 blog 帳號來使用。
  5. 豐富外掛:很多人推薦這項功能,不過我自己很少用,而且至今我還是沒看過好用的貼程式碼外掛,這時候就很想抱怨了!blog 對程式設計師真的很不友善,可是,它們卻是程式設計師寫出來的…
    為什麼無名相簿美女牆都有人做了,就是沒有人要作一個 programmer-friendly 的編輯器,好吧,因為大家都跟我一樣只會抱怨 –,-
  6. 強大的預覽功能:雖然還在開發階段,而且我自己很好使用,但是每次改版都可以感受到 WLW 預覽功能的進步!令我訝異的是,它竟然已經可以支援 embedded object 的執行,以下圖為例,當我們嵌入 youtube object ,WLW 已經允許你執行它了。這在前幾版是會有問題的,不愧是有 browser 技術的公司啊~

image

為了怕被抹紅,說我是微軟同路人,這邊也要講一些 WLW 的缺點:

  1. 表格功能不強:WLW 的表格幾乎說只能提供設定外框、拉出 NxM 的樣式,或許對一般人夠用了,不過當遇到工程師這種愛畫表格比較功能時,就有點麻煩了,因為像是合併欄位、調整大小等細部的控制,WLW 做的不是很好,所以我的習慣是會用 nvu 這類網頁編輯器去製作好表格,然後再開啟 WLW 的 HTML 模式來加上複製。
  2. 無法用滑鼠準確的調整圖片大小,你會發現當你放開滑鼠左鍵時,圖片還是會持續擴大一點,需要花點時間習慣,或是放棄直接調整圖片屬性。

下載

WLW 的官方網頁在:http://windowslivewriter.spaces.live.com/ 或是安裝惡名昭彰的 wlsetup 時,也會有選項可以讓你安裝。

ScreenHunter_01 Feb. 27 23.54 設定

  1. 安裝好後,第一次執行會跳出像是下圖的精靈,引導使用者設定他的 blog 進 WLW。微軟當然是力推 Windows Live Space ,不過不用擔心,主流的 Blog host 它也都是支援的,點選其他的部落格服務就可以了。
    ScreenHunter_02 Feb. 27 23.57
  2. 接著會請你輸入你 blog 的網址、帳號、密碼等,就老實輸入吧!

    ScreenHunter_03 Feb. 27 23.57
  3. 當你輸入正確的資訊後,WLW會開始分析你使用的 blog 、blog 的樣式,然後嘗試發一篇測試文章到 blog ,這篇測試文章會自動被刪除!
    ScreenHunter_04 Feb. 27 23.58
  4. 一切都成功後,就為你的設定檔取個名字吧,通常就是以 blog 名稱為預設名稱。
    ScreenHunter_06 Feb. 28 00.03
  5. 成功後,便可以進入 WLW ,可以到工具,看一下你剛輸入的帳號資訊,之後你輸入的所有帳號也可以在這邊查詢、設定。
    ScreenHunter_08 Feb. 28 00.15 
  6. 大家如果有些不錯的 plug-in 也不要忘了分享啊!
  7. 這邊附帶提一點,WLW 有個功能叫做類別,它相當於 blogger 裡頭的標籤,可以方便大家做文章分類。

    image

講這麼多了,來偷看一下 blogger 的編輯器吧!

image 唉,加油,好嗎?

Mr. Adults

這是 Mr. Children 的 Mr. Adults MV。




喂~ Kurumi
這街道的景色在你的眼中是什麼模樣呢?現在的我看起來又是怎樣?
喂~ Kurumi
若是旁人的關心也讓你聽起來像挖苦似的  那個時候又該怎麼做才好呢?
只是回想起過去美好的一切  卻讓人的心情更自覺得瀕老
在這樣的生活裡頭  如今  我正要動起來了
因為我不想只做個齒輪而已啊  伴隨希望的衍生而增加的失望
即使如此明天的內心依舊悸動  「究竟會發生什麼事呢?」
試著去想像看看吧
喂~ Kurumi
假使時間的河流會將一切給洗刷帶走的話  那生存這件事就變得再容易不過了
喂~ Kurumi
在那之後我一次也不曾讓眼淚流下來  可是  讓我能夠開懷真心的笑卻也很少
不知在哪裡扣錯了  發覺到的時候才知道多了一個鈕扣
就像這樣地要是能和某個有多的鈕扣穴的人相遇
讓一切變得有意義就好了  伴隨邂逅的次數而增加的別離
即使如此內心仍因希望而跳動
每當在走過十字路口的時候  難免也會有迷失方向的時候
總是乞望想擁有比眼前更多  為了追求那不變的愛而高歌
於是齒輪不停轉動
超過必要的負擔 讓齒輪一面發出嘎吱的聲響
伴隨希望的衍生而增加的失望  即使如此明天的內心依舊悸動
「究竟會發生什麼事呢?」 試著去想像看看吧
伴隨邂逅的次數而增加的別離  即使如此內心仍因希望而跳動
現在已經不能夠回頭了啊  向前走吧 踏上沒有你的這條路


話不要說得太絕!

哈,沒想到這句話今天要用在我身上了,以前我就很討厭那種充滿歌詞跟 MV 的 blog (我絕對不是在說我同事 kane 哥),沒想到今天我卻要破例了,沒有為什麼,只是因為 fu 對了,有感而發…

今天為了 team 上的 study group 在跟投影片奮戰,但是當耳機傳來 Mr. Adults 時,Mr. Adults MV 的畫面突然浮現腦海,情不自禁的就把視窗切到瀏覽器去了。有點心有慼慼焉…

Hey~Keiko
這段 code 在你的眼中是什麼模樣呢?現在的我看起來又是怎樣?
Hey~Keiko
若是努力的維持軟體相容性也讓你聽起來像一成不變似的
那個時候又該怎麼做才好呢? 只是回想起過去美好的一切
卻讓人的心情更自覺得瀕老  在這樣的生活裡頭 

一直以來,受限於向下相容性以及穩定性,我們總是要捨棄一些堅持,其實不是很喜歡這樣作,但或許這就是工作的無奈,與學校不同,我們無法總是將認為最好的呈現出來,不過,我們也得學著不再任性,是的,任性的年代已經過去了…

如今  我正要動起來了  因為我不想只做個齒輪而已啊
伴隨希望的衍生而增加的失望  即使如此明天的內心依舊悸動
「究竟會發生什麼事呢?」

儘管如此,我還是幸運的,總是在我心灰意冷、重頭喪氣時,有小路學長在旁邊,陪我聊天、開導我,每次跟小路學長談完話,我的熱情、滿腔熱血總是會再次燃起,好像以前我會跟 showmin、文森、DNA 去黑輪攤暢談一樣。

讓一切變得有意義就好了

當我們不能再任性時,是否這麼想就好了呢?讓一切變得有意義就好了,不要忘記自己的初衷、努力的原因!

每當在走過十字路口的時候  難免也會有迷失方向的時候

所以一時的失落低潮、心灰意冷也只是暫時的迷失方向。

總是乞望想擁有比眼前更多  為了追求那不變的愛而高歌
於是齒輪不停轉動  超過必要的負擔  讓齒輪一面發出嘎吱的聲響

目標既然已經明確,那就努力往前走吧,還有很多事在等著我們去做呢!


今天報告完,很感謝 AEGIS team member 的肯定和鼓勵,讓我知道努力沒有白費,也很感謝同事 Allen 昨晚陪我奮戰到近十二點,只為了搞懂一些小細節和滿足我的龜毛。當然今天這美麗的夜晚要感謝小路學長,一時興起想去天瓏買書,隨口邀了小路學長,沒想到他會答應,然後我們一直聊著、逛著到了高中生補完習要回家的九點半多,十年前,就在這個地方、這個時間,我也是在他們其中的一個,只是,現在我長大了!

現在已經不能夠回頭了啊  向前走吧
「究竟會發生什麼事呢?」 試著去想像看看吧

對了,當然要最感謝我的 mentor Wesley Tsai ,不過他應該不知道這裡,所以就偷偷地感謝他過去三個月對我的教導,尤其感謝他的耐心,我總是忙著問他笨問題和出包,比較可惜的是,他今天請假沒來參加我的 present ,投影片可是我滿懷感激的心做出來的呢!


今晚當然不是特別感性啊,只是因為我要跟試用期說 Byebye 了!

x8OAFyds3VxPKyPDdH 2YCQRLRo=

我說:感性點不錯啊,難道要像下面那對一樣高調才好嗎?

image_thumb1

上工三個月了~

時光飛逝、歲月如梭、韶光荏苒啊~雖然晚了一天,不過離去年 10/13 報到也過了三個月了,原本想來應應景、寫個試用期心得!沒想到前天 HR 跟我說:

阿宅,醒醒吧,你記錯時間了,你要到 2/22 才過試用期!

不過,沒關係,這禮拜倒是發生了不少初體驗…

被扛霸子驚嚇

星期一大早寄出 Weekly Update,坐在我旁邊的老大馬上轉過頭問我一些實做上的細節,然後坐在老大後面的我們 team 的扛霸子馬上跳出來,

扛霸子:你這樣不行啦~有沒有考慮過 ooxx?
Keiko:我們沒有這樣的 ooxx 的 case?(不知道為什麼,莫名心虛感油然而生)
扛霸子:怎麼會沒有?
Keiko:真的沒有!
扛霸子:啊~叫你們老大出來說啦~(台語)
老大:那你們開一個 meeting 討論吧~

(以上對話為免泄露公司機密,所有對話經過修飾)

meeting、meeting、開一個 meeting 就是要寫 document 的意思,還要用英文,好加在,在公司寫 document 的好處是,真的會有人看,不會越寫越無力,而且帶我的學長很願意幫我先看過!

大師兄回來了

image image

星期一下午,也是我們 team 的小路學長就要歸建了,體貼的老大覺得小路東西(超)多,讓我去看看小路有沒有需要幫忙的地方,實在是揪甘心的,以後想找人討論東西、閒聊、假傳老師聖旨,就不必跑來跑去了,我還常常跑錯…

當晚帶完新人去天瓏參觀後,就跑回公司跟義崧、小路吃晚餐,天啊,這時候深深發現 lab 的好處,大家系出同門,有問題都很好照應,什麼蠢問題、玩笑話都可以講的很自然,每次看到學長們變成 team 不可或缺的戰力,就很感佩,希望以後也有能貢獻自己心力的地方,不要老是扯後腿。

PS. 什麼叫不可或缺的戰力呢?套句 DNA 學弟講的話,就像是:JM 跟時間在玩魔法風雲會,JM 只要說:這局我覆蓋小路卡或義崧卡,就可以獲得十回合的時間暫停!

Regular Meeting

我的老大很喜歡在 meeting 的時候,問大家問題,其中最常玩的把戲,大概就屬:光速思考吧!玩法是:

這一秒,老大:有個問題我希望大家能好好思考一下,這很重要,關心到我們 team 的未來!
下一秒,老大:好,那個 xxoo ,你說說看!

這禮拜的 meeting ,我馬上就被指名了 –,- 問題是你覺得 team 裡頭有什麼是你覺得欠缺的?

我啦里拉雜的回答了,約莫是討論風氣、習慣的欠缺!但其實我知道有一半的原因是:我是晚進的新人,座位跟大夥隔著比較遠,而且身旁都是 manager 級的人,安安靜靜的工作環境還蠻正常的。不過我還是想提出來,算是給自己和大家的一個刺激和想法,還有點是因為我一直希望工作環境可以跟以前禹鴻、mobo 、小明在的 lab 一樣,有著很好的討論風氣,大家有什麼想法,都可以去“吵”一下對方!討論是我很熱於接受的、給程式設計師的 interrupt 和 context switch XD

寫出好的 document

em-17

雖然沒有一句話是這樣說的:

寫出好的 document 帶你上天堂!

不過也沒有一句話是這樣講的:

Document 寫得好,要飯要到老!

所以,我一直很期待自己能寫出條理分明的文件或是投影片,為了準備跟扛霸子的 meeting ,孜孜矻矻寫了些 document ,還畫了 UML 的圖、補上自訂的圖形。沒想到換來不錯的效果, on board 以來沒主動跟我講過話的扛霸子,竟然主動叫了我的英文名字,還嚴守我堅持的發音(開口),讓我受寵若驚,走到曾經是禁區的扛霸子座位旁,看著他用樂高堆砌起的私人花園,更出乎意料之外的是,他竟然也用 Filco 鍵盤(茶軸),還用跟我一樣從 SCREAM Lab 走私出的 Grado Labs 耳機,然後討論完程式,還開始聊一下鍵盤、耳機等等初級敗家物。

C++ 神人

不過最出乎意料之外的,還是該算今天發生的一件事…

下午在改文件、灌新電腦的同時,想說也來偷偷收一下 gmail 吧,沒想到竟然有不認識的人回覆我 blog 的文章, ID 還是那麼地眼熟,不就是某某 C++ 神人嘛!天啊,他的 domain name 好像通訊錄上某個人,不過印象中,依稀記得神人去北京工作了,怎麼會…

趕緊拉了大師兄跑去認人,哇靠,還真的是同一個人,天啊!

娘子,快跟牛魔王出來看神人啊~

好像在做夢唷,自己也都忘了跟他說了些什麼,只記得當時處在很亢奮的狀態,還好沒在神人面前鬼扯 C++

2j9Wx1Sp0mWPLRTdYv2FZDv Lksg= 天啊,這實在是太酷了!回到座位上後,忍不住跟老大分享這個自以為是的、天大發現,沒想到老大只是冷冷地說:哈哈,這沒什麼,公司很多這種人,你以會還會遇到什麼什麼書的作者、bala bala

最後

雖然上班後發現,每個禮拜維持兩篇 blog 文的產出實在是遙不可及(對不起,因為我很懶),不過今天還是想趕緊紀錄一下這分心情…

開始瞭解小路學長當初在分享工作心得時,為何這麼說:

在公司,要變成強者,只要有心,是遲早的事,但是重要的是與人相處的 EQ。(原文找不到,是憑映像打的!)

前半段是小路學長的“大丈夫當如是也”的自信,不過真的讓我很感動,公司有這麼多厲害的人,而且各有擅場、樂於分享!好希望、好希望自己也能學得他們幾分功力來自我滿足一下,工作三個月了,現在對自己的目標是也逐漸清晰起來了,總歸來說,還是跟進大學、念研究所時一樣:

希望自己能作個有想法的人!

從小到大,總是會耳聞許多“強者我同學”的事蹟,雖然我不及他們,但還是希望自己能對感興趣的事物好好學習,理出自己一套想法,強者面前,即使真理多麼確立,能言之鑿鑿地和他們討論,那就是我能做的,如果還能讓他們思考或懷疑自己一下,哪怕只是一瞬,我也必定能有所得!

囧,流水帳變八股勵志文了…那只好來搞笑一下,自從 regular meeting 發言,希望能增加 team member 間的討論風氣,沒想到,馬上就有人丟文章、連結跟我分享,實在讓我不好意思,看來一定是我平常太矜持了,沒發現其實大家就在旁邊,等著我去開場!

為什麼 Boost 這麼大?

今天 kane 哥跟我說,Boost 編出來有 1 GB,想起來以前在醉資心也聽過有人這麼說…

那到底為什麼這麼大?

身為傳教士,當然不能回答說:

你問我!我擲交!

這種答案可是天理不容啊~啊~啊~啊~

套句聖主播說的話:揪竟~這個 boost 的背後,又有什麼不為人知的血淚因緣呢?文章的第一集,我們使用下面的指令來編譯:

bjam.exe --build-dir="your_dir\boost_1_35_0" --build-type=complete --toolset=msvc install

由於我們選擇 complete build type,所以 bjam 會產生出 12 個sublibrary,而 sublibrary 下又因為 vc 編譯組態可分為 single/multi-thread、dynamic/static link or debug/release mode、是否包含standard libary 四種不同,再檔名是否加上版本號碼的部份。算一算沒有七七四十九種,卻也大概一個 sublibrary 會有 18 種檔案。但檔案重複率很高就是了,像是下面以 Boost.DateTime 為例:

18 個檔案只有 10 種版本

下面則是 Boost.DateTime 各版本的名稱及檔案大小,單項下內字體顏色一樣者表示檔案內容一樣(用 vim diff 測試)。

Linking Type Mode Name Size
Dynamic Link Debug boost_date_time-vc80-mt-gd-1_35.dll
84.0 KB
(86,016 bytes)
boost_date_time-vc80-mt-gd-1_35.lib
26.6 KB
(27,278 bytes)
boost_date_time-vc80-mt-gd.lib
Release boost_date_time-vc80-mt-1_35.dll
48.0 KB
(49,152 bytes)
boost_date_time-vc80-mt-1_35.dll
26.4 KB
(27,120
bytes) 
boost_date_time-vc80-mt.dll
Static Link debug libboost_date_time-vc80-mt-gd-1_35.lib  
1.50 MB
(1,577,314
bytes)
libboost_date_time-vc80-mt-gd.lib
libboost_date_time-vc80-mt-sgd-1_35.lib 
1.66 MB
(1,747,582 bytes)

libboost_date_time-vc80-mt-sgd.lib
libboost_date_time-vc80-sgd-1_35.lib
1.66 MB
(1,747,486 bytes)

libboost_date_time-vc80-sgd.lib
Release libboost_date_time-vc80-mt-1_35.lib
523 KB
(535,964
bytes)
libboost_date_time-vc80-mt.lib
libboost_date_time-vc80-mt-s-1_35.lib
661 KB
(677,130
bytes)
libboost_date_time-vc80-mt-s.lib
libboost_date_time-vc80-s-1_35.lib
661 KB
(677,034
bytes)
libboost_date_time-vc80-s.lib

 

例外,若是想瞭解這些檔案的命名規則,可以參考
http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html

基本規則是這樣的:
[prefix]boost_sublibrary-name-toolset-version-options-[version-number]

  1. prefix
    lib 開頭代表 static link library ,沒有的則是 dll 和 import library
  2. sublibrary-name 
    顧名思義
  3. toolset-version
    顧名思義
  4. option
    1. mt -> multithread
    2. s  -> static link with C++ Standard Library & runtime library
    3. d  -> sublibrary 的 code 有 debug information
    4. g  -> C++ Standard Library & runtime library 都含 debug information
  5. version number 
    boost 的 version number

CreateProcess()

今天下午在寫程式的時候被一個奇怪的問題給卡住,我寫的程式去呼叫 CreateProcess() 但一直跳出下面的錯誤訊息:

ScreenHunter_02 Dec. 24 19.07

原來問題出在我使用 Windows 的 CreateProcess() 這個 api 的方法錯誤,先來偷看一下 MSDN 的函式原型

BOOL WINAPI CreateProcess(
  __in_opt     LPCTSTR lpApplicationName,
  __inout_opt  LPTSTR lpCommandLine,
  __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in         BOOL bInheritHandles,
  __in         DWORD dwCreationFlags,
  __in_opt     LPVOID lpEnvironment,
  __in_opt     LPCTSTR lpCurrentDirectory,
  __in         LPSTARTUPINFO lpStartupInfo,
  __out        LPPROCESS_INFORMATION lpProcessInformation
);

其實問題的癥結很簡單,就出在第二個參數身上,為什麼 lpCommandLine 的型別是 LPTSTR 而不是 LPCTSTR 呢?理由很簡單,因為系統會去更改這個參數,所以 MSDN 也用了 __inout_opt 來修飾這個參數,因此我們不能傳一個 read only 的記憶體區塊到這個參數來。引用一下 MSDN 的說明:

The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.

有趣吧?!只有 Unicode 版本的 CreateProcess 會修改這個參數,所以下面的程式碼可以 work:

wchar_t cmd[ 100 ] = L"notepad D:\\mt.txt"; 
CreateProcessW( NULL, cmd, NULL, NULL, false, 0, NULL, NULL, &si, &pi ); 
CreateProcessA( NULL, "notepad D:\\mt.txt", NULL, NULL, false, 0, NULL, NULL, &si, &pi );

但下面的程式碼是不能 work

CreateProcessW( NULL, L"notepad D:\\mt.txt", NULL, NULL, false, 0, NULL, NULL, &si, &pi );

是不是有點不 consistent 呢?

此外,眼尖的人可能會發現為什麼一個 LPTSTR (即TCHAR*) 型別可以接受一個型別為 const TCHAR array 呢?C++ standard 2.13.4 不是這樣說的嗎?

A string literal is a sequence of characters (as defined in 2.13.2) surrounded by double quotes, optionally beginning with the letter L, as in "..."or L"...".  A string literal that does not begin with L is an ordinary string literal, also referred to as a narrow string literal.  An ordinary string literal has type “array of n const char” and static storage duration (3.7), where n is the size of the string as defined below, and is initialized with the given characters. A string literal that begins with L, such as L"asdf", is a wide string literal.  A wide string literal has type “array of n const wchar_t” and has static storage duration, where n is the size of the string as defined below, and is initialized with the given characters.

怎麼 VC++ 連個 warning 都不給呢?這是因為 C++ 為了相容於 C 所做出的讓步,來看一下 4.2  Array-to-pointer conversion 的描述:

A string literal (2.13.4) that is not a wide string literal can be converted to an rvalue of type “pointer to char”; a wide string literal can be converted to an rvalue of type “pointer to wchar_t”.  In either case, the result is a pointer to the first element of the array.  This conversion is considered only when there is an explicit appropriate pointer target type, and not when there is a general need to convert from an lvalue to an rvalue.

因此,比較好的習慣是:總是用 const char/wchar_t* 去指向一塊 literal string。Scott Meyer 不就說了嗎?

Use const whenever possible

: )

#include <iostream>
#include <typeinfo>
using namespace std;

void foo( char* msg )
{
    cout << "[foo( char* msg )] " << msg << endl;
}
void foo( const char* msg )
{
    cout << "[foo( const char* msg )] " << msg << endl;
}

template<typename T>
void printType( T* x )
{
    cout << "type of T: " << typeid( T ).name() << endl;
}

void badCall()
{
    throw "Exception";
}

int main()
{
    foo( "Hello World" );
    printType( "Hello World" );

    try {
        badCall();
    }
    catch ( const char* msg ) {
        cerr << "[const char* msg] " << msg << endl;
    }
    catch ( char* msg ) {
        cerr << "[char* msg] " << msg << endl;
    }

    return 0;
}

我可沒說上面的 code 可以順利 compile 唷~

Boost.Test 的新文件

Boost 1.37.0 也出了好一陣子了,不過公司不比實驗室,總是不能隨意看有興趣的東西,指派的工作或 reading 還是得擺在第一位,更何況直屬老闆跟大頭都做我後頭和旁邊,有時還是會有點壓力!

不過最近被指派一個工作,跟 unit test 有關,趁著機會有時間可以看看新的 Boost.Test ,不過好像有點囧,怎麼 document 好像越寫越爛了…是我英文太爛嗎?還好舊電腦上還有舊版的 Boost.Test Doc !

哎呀,這個…程式設計師果然很討厭寫 document…果然古今中外都是…

下部隊了~

在 11/21 (五) 也就是上個星期五,經過三天一連串的面試轟炸後,HR 大姐終於公佈了 TrendSchool 十二個人的未來落腳處了,我很幸運地來到了小路學長所在的 team ,當然上禮拜就感受到小路學長不離不棄的照顧,包括很多瑣事和我的白痴問題,只能說 SCREAM Lab 揪甘心,在家靠父母、出外靠 lab !

面試的過程,從面試官口中拋出的問題,除了用來刺激腎上腺素外,其實也是蠻好的學習發想,雖然面試前,總是會意思意思,給自己預演一下,想想可能會被問哪些問題,但大概除了自我介紹外,大概都很難命中吧,哈哈!

身為一個研發替代役、偽軍人身份者,由於有三年役期關係,就被問了這樣的問題:

你希望三年後,你能在工作上扮演怎樣的角色呢?

老實說,當這個問題丟出來後,我心頭先是一揪,然後就很想棄械投降了,因為我一直沒有好好想過這個問題,此外腦海中還一直浮現錢多、事少、位高權重、責任輕的玩笑話 -,- 的確進公司前只想先把技術好好扎實的學習,並未思考以後想扮演的角色,只好將以往在實驗室做計畫、研究、帶專題學弟等經驗拿出來講,分析一下以自己目前的能力可能對哪些職務工作可以勝任、哪些部份需要加強等。

另外一個有趣的問題是:

如果今天你的主管指派了一個重要工作給你?你覺得為什麼主管會找上你呢?若是今天一個你覺得可以勝任的工作,卻指派給一個你覺得無法勝任的人,而不是挑選你,你覺得是為什麼?

我想這種問題是有點人格特質的考驗嗎?面試官還一直叫我不要客氣,直說自己的想法,媽啊,面試官看出我在壓抑自己的思考,太恐怖了…

另外,還有兩個問題也是很值得思考,有點想是詢問你對工作責任的反應,但對我們這種剛畢業又被成功嶺摧殘大腦的新鮮人來講,還挺難的!

今天你突然接到一個緊急電話,說你寫的程式有問題,你當下會做怎樣的反應?另外,你覺得什麼是不能做的?

最後,這個問題也很恐怖,像是在幫你作生活態度檢討!

你覺得什麼時候應該跟你的主管報告進度?而哪時候不應該報告進度呢?

哈,上面講的都是讓我難以回答或覺得值得思考的問題,其實還有很多問題沒有列出來,面試三天,還有一個心得,就是面試官都相當厲害,除了要靈機應變化,還得去掌控面試的氣氛,尤其面對新鮮人,要能引導作答、替面試引進良好的談話氛圍,如此可以得到更多想要的答案!

2008 H2 Hi-Comm

身為有很多活動的公司的一員,今天又再度參加公司辦的活動了,這次活動叫 Hi-Comm ,你知道、我知道、獨眼龍也知道,Hi-Comm 是某兩個英文單字的縮寫,不過似乎沒有人知道是哪兩個字…我以為應該是 High-level Communication 的縮寫吧,因為會議上會看到很多好高高層,包括 CEO、 CCO、RD head 以及各個事業部的 director,還好這不是成功嶺,不用背誦長官名稱…

Hi-Comm 是每季或每半年都會舉辦一次的定期會議,由公司高層們主持,在台下聽的當然就是員工啦,主要是 RD、Sales、Marketing 三個部門, CEO 會說明過去一季的營運狀況以及新的一季的目標,同時也會跟大家講些生意上的好消息,像是誰誰誰變成我的客戶等等,這次還看到了坐鎮日本的 CFO 錄了一段影片給大家,還蠻搞笑的,這裡果然是間歡樂的公司,我也第一次領略了印度式英文,真是 so funny、so confused …

公司的大型會議通常會有一個特色——很喜歡叫底下員工分組討論,然後由組長發表意見!這現象在公司三位 co-founders(Steve Chang, Jenny Chang, Eva Chen) 身上尤其常見,Steve 也就是張明正,通常會低著頭聆聽,然後發表自己的意見,意見多屬於 sales 方面的,並且會輔以一些過去的故事、Eva(陳怡樺)是個身材比例高挑的女生,RD 背景出身,哈,所以有時候講話格外親切(?!),而且也會適時得將 customer 放入談話內容中,很有自己的想法與意見,有趣的是,她講話時左腳會腳尖頂地,左手不時還會揮舞幾下,另外,她跟 Steve 一樣,是個很 high 的人…

Jenny(陳怡蓁)是公司的文化長(CCO,Chief Culture Officer),文化長做什麼呢?有人說就是辦活動的 XD 這解釋好像還蠻貼切,而且據說 Jenny 出現的場合,有獎金禮物可拿的機會就變多了 囧rz 其實從 Jenny 的談吐,感覺是個能過平凡生活就好、不喜歡行政管理的人,哈,不過誰叫她老公、妹妹這麼強咧!Jenny 的談話和 Steve、Eva 相比,顯得柔性親切,她會記得發言人的名字,並且試著以自己的話重複發言者的建議!

哈,或許是身為新人吧,私心覺得這種活動似乎還不賴,不單是因為跑出來摸魚還有薪水拿 Orz… 而是公司願意在決策時聆聽下面人的意見,雖然提出反對意見的效果會如何是不知道,但下場絕不會是壞的!從進公司的第一天開始,漂亮的人資小姐就幫我們上了半天的企業文化與願景,而後的會議中,也常聽到講者在強調願景。哈,羅蘭夫人說:

自由,自由,多少的罪惡假汝之名而行﹗(O Liberty, Liberty, how many crimes are committed in thy name! )

不知道可不可以改成:

願景,願景,多少的洗腦假汝之名而行!

哈,這當然是開玩笑的!但從上個禮拜的 Engineering Camp 後,我就常在想,公司舉辦這些活動、高層們總是喜歡提願景,這些究竟可以對台下的人造成什麼影響呢?會不會把時間讓我們這些人去寫程式還比較有生產力呢?我沒有待過其它公司,不知道是不是每間公司都會找屬下來開這種會,而我確實相信願景可以帶給人們改變、確實是會讓所作所為帶來不同。幾次的討論中,不難發現真的有些人會對於問題提出自己的意見與看法,那都是他們幾經思考反芻的,而不是臨場的伶牙俐齒,原來公司裡頭真的有人在思考,而目前看來,公司也歡迎各種意見。

再過三天就要填志願準備分發到 team 去了,一個多月的 TrendSchool 生活或許不夠真實感受一間公司的氣氛,但到了 team 就能比較真實嗎?還是只是反應了 team member 間的氣息呢?但至少應該會比在 TrendSchool 好,其實研發代替役的合約上,我們也是有試用期的,公司試用我們,我們也得試用一下公司啊~可惜的是,公司少了我,還有千千萬萬的阿宅工程師,但我卻只有成功嶺大饅頭…

一直想寫些介紹公司的文章,不過身為一個月新人,寫太好好像過度吹捧,又還沒真實經歷過,寫太糟,我就變成草莓族了…

想起兩個月前,Career 雜誌的專訪問說:選擇趨勢會不會後悔?…兩個月前我連大頭兵都不是,實在無從悔恨起啊!不過現在不同了,希望下一個月後,沒有後悔來這研發替代役…

看待公司的政策措施其實是蠻有趣的,到底我們是勞資同舟共濟呢?還是壁壘分明呢?或許有時候,應該放下一個憤青的矜持,不要以拒絕表示自己的清高和與眾不同,有點矛盾、有點複雜,在這個世事無絕對,買安泰也不會比較好的時代,或許我們應該相信人性本善,先從認同做起,才能瞭解一件事物,進而將它放入心裡,想起大四去聽亞洲微軟研究院院長沈向洋的演講,他說:他最驕傲的一件事是,他的老師在他唸博士班的時候拿到 Turing Award,而不是他找了一個得了Turing Award 的人當指導老師!認同一個地方在幫助他成長永遠是一件美好的事!耶,不過我好像沒幫 SCREAM Lab. 寫出什麼驚天地、泣鬼神的論文或作品,囧rz…

 

PS. 其實這篇文章原本是要說明年(2009),趨勢又要開始舉辦程式競賽了!!這次不是百萬程式競賽,而是騰雲駕霧程式競賽(-,- 很有趣的名字),不過顧名思義就是針對 in-the-cloud computing 命題,賽前會有訓練課程,應該下個月就會有海報文宣了,希望有興趣的學弟妹們可以抽空參加!(不負責任說法:聽說組隊都是女生的話入闈機率會增加唷!)

一個月了

哇,一個月了,當然不是交女朋友一個月了,更不是什麼分手失戀一個月…是上班一個月了!這一個月過的很快,認識了很多朋友、前輩,也學到了很多東西(雖然大部分都是討人厭的網頁 -,-),原本打算寫點東西紀念一下,無奈在這麼有意義的一天,肚子在鬧脾氣,唉啊啊,轉眼看看blog 的 pending list 也積了很多文章,真不想說,沒列上去的還更多…想講古虎爛的東西很多,時間卻很少,真是佩服那些技術底子深又能文章多產的大師們,今天的流水帳就到這,我要去床上躺平,台北的冷天氣,可是很適合睡覺的 : )

請假拔牙

沒想到上班不到一個月,就請了近半天假去看牙醫,真是始料未及,終究,又回到了要請假的年齡了!!不過擺脫惱人的智齒還真是令人愉悅啊!

去的診所是從小看到大的,一家三代都給這醫生看過,醫生的手藝很好也很親切(醫生娘沒看過,所以就不附圖了),看著這診所從小變到大,簡陋到有裝潢(雖稱不上富麗堂皇),一路看來,只能說牙醫真好賺,我要做多久才能買自己的房子啊~老爸已經再問我的規劃了 -,- 你兒子才工作三個禮拜,又不是三年…

話說回來,這兩次看診的經驗還蠻特別的,醫生跟以前不太一樣,有點給人一種趕下班的感覺,雖然手還是很巧,但拔牙前後的叮嚀與搞笑橋段已經沒了,哈,看來是我已經變成大人了,醫生懶得跟我玩小時候那一套了 Orz

想想,這醫生至少也在這開了二十年的診所,什麼樣的工作可以讓一個人做二十年?偉哉二十載,我才工作二十多天,就有幾天曾因為上班塞車而意興闌珊以致舉步維艱,竟然有人可以工作二十年、三十年、四十年,除了養家糊口之外,或許有些人一開始都有著自己的想法在,但能勿忘初衷而沒把自己賣給公司的能有多少呢?

勿忘初衷!就像我對 web programming 的初衷就是黑特(hate),即使這幾天寫作業我假裝喜歡它,但現在想想:我還真是會騙自己…

我的初衷:

I hate web programming…
I hate script languages…
I hate markup languages…
Making humans edit XML is sadistic…

勿忘初衷,讓我想起以前在實驗室寫惱人的報告文件時,寫到恨意無法宣洩時,總會拿起幾本 C++ 的書來看,讚嘆一下、膜拜一下,讓我放下心中的恨…

勿忘初衷,讓我想到某屆學長們口耳相傳的、老師的一度口頭禪:

Every thing has a purpose.

有時候 purpose 就是你的初衷,要能不忘本意設計你的軟體總是很難,因為軟體的世界,總是佈滿有趣的叉路啊~

勿忘初衷耶,幾乎每年的生日卡片上,我都會看到這句話,朋友總是在身旁提醒著我,揪甘心!雖然有時候會看成勿忘在莒 XD 但我相信,理想、堅持這類事,決不是一個人咬牙切齒就好的,就像電影霍元甲裡頭說著:

活著,從來都不是一個人的事一樣!

靠著家人、朋友的支持與幫助,我們才能走下去,理想與堅持也才有意義…我們總是在從事服務業,服務自己、家人和朋友的人生!

PS. 初衷也可以是賺錢 by 老爸 Orz...
PS2. 人老了,拔個牙都可以寫一堆有得沒得 Orz...

牙齒痛啊…

原來牙齒痛是這種感覺,天啊,痛到睡不著了,喝了點溫水似乎可以舒緩一下,但馬上又痛起來了,一直含著溫水也不是辦法!明天還要上班、還有作業的 deadline,這一定是某種程度的報應吧!

這個時間點真是尷尬又有趣,前兩天才拔掉另一顆蛀掉的智齒,早知道應該相信直覺,先拔現在在痛的這顆!

抱著死馬當活馬醫的心態,上網 google 牙痛,竟然有人說用 10% 的漱口水漱口可以得到馬上舒緩,這真是太神奇了,可是我沒有漱口水,難道要衝下去小七買嗎?現在買兩罐還打五折 -__- 更神奇的是,有人說叩齒一千次,可以治好牙痛!!好吧,我要來開始叩齒數數了,效果怎樣?白天再跟大家分享…

智齒啊智齒,你的生長,我來不及參與;你的凋零我深刻感受到了…

破相了…

開工兩個禮拜以來,差不多都是八點出頭就到公司,可以說是同梯裡頭最早到的,這當然不是因為勤勞,完全是因為怕塞車而已…

人家都說君子慎其獨,身為一個小人,閒居為不善,無所不至是我的天職。因此,我往往是人到了,放下早餐、放下書本,跑到遊樂室去玩投籃機或坐坐按摩椅,當然這種玩物喪志的生活,很快就帶來報應了…

今天投著投著,不知道怎麼回事,覺得渾身是勁,左手就出了過大的力,因此球出去的軌跡太高,打到了投籃機的鐵架,然後彈回來,好死不死正中右臉,眼鏡的鼻架就在右眼下留了一到傷痕,當然,小人也有小人的志氣,含著淚也得把一百球投完…

結果還不到五十球,隔壁部門的大姊姊來上班了,進來遊樂室倒水,害我很不好意思得趕緊跑去廁所整理一下狼狽樣,這大概就是小人見君子而後厭然吧…

MiniFilter InstanceSetupCallback is not called?

一般來說,MiniFilter 的 InstanceSetupCallback 會在 filter manager 把 minifilter attache 到 volume 後呼叫。如果沒有的話,可以檢查一下 minifilter 的 INF 是否把 instance fla...