Rexiology::Past

Archive of original http://blog.rex.la...

Community

News

  • From Taiwan, living and working at Tokyo, Japan.




Recent Posts

Archives

Site Info



Locations of visitors to this page




Logos & Chicklets


GeoURL


Rex's Certifications
Rex's Certifications


Creative Commons授權條款
本 著作 係採用
Creative Commons 授權條款



July 2005 - Posts

You've got to find what you love, Jobs says...

 

布萊恩陳的部落格裡看到的。在台灣要玩 Flash 的話, 找他們就對了!

Steve Jobs說: 你得找出你愛的 (You've got to find what you love.)

求知若飢,虛心若愚 (Stay Hungry, Stay Foolish.)

以下是蘋果電腦公司與Pixar動畫製作室執行長Steve Jobs
在2005年六月12日對全體史丹佛大學畢業生的演講內容。 (原文在此) (演講實況錄影)

This is the text of the Commencement address by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005 at Stanford University (here is the video archive).

======================================

今天,有榮幸來到各位從世界上最好的學校之一畢業的畢業典禮上。
我從來沒從大學畢業。說實話,這是我離大學畢業最近的一刻。
今天,我只說三個故事,不談大道理,三個故事就好。

第一個故事,是關於人生中的點點滴滴怎麼串連在一起。

我在里德學院(Reed college)待了六個月就辦休學了。到我退學前,一共休學了十八個月。那麼,我為什麼休學?

這得從我出生前講起。我的親生母親當時是個研究生,年輕未婚媽媽,她決定讓別人收養我。她強烈覺得應該讓有大學畢業的人收養我,所以我出生時,她就準備讓我被一對律師夫婦收養。但是這對夫妻到了最後一刻反悔了,他們想收養女孩。所以在等待收養名單上的一對夫妻,我的養父母,在一天半夜裡接到一通電話,問他們「有一名意外出生的男孩,你們要認養他嗎?」而他們的回答是「當然要」。後來,我的生母發現,我現在的媽媽從來沒有大學畢業,我現在的爸爸則連高中畢業也沒有。她拒絕在認養文件上做最後簽字。直到幾個月後,我的養父母同意將來一定會讓我上大學,她才軟化態度。

十七年後,我上大學了。但是當時我無知選了一所學費幾乎跟史丹佛一樣貴的大學,我那工人階級的父母所有積蓄都花在我的學費上。六個月後,我看不出唸這個書的價值何在。那時候,我不知道這輩子要幹什麼,也不知道唸大學能對我有什麼幫助,而且我為了唸這個書,
花光了我父母這輩子的所有積蓄,所以我決定休學,相信船到橋頭自然直。當時這個決定看來相當可怕,可是現在看來,那是我這輩子做過最好的決定之一。當我休學之後,我再也不用上我沒興趣的必修課,把時間拿去聽那些我有興趣的課。這一點也不浪漫。我沒有宿舍,所以我睡在友人家裡的地板上,靠著回收可樂空罐的五先令退費買吃的,每個星期天晚上得走七哩的路繞過大半個鎮去印度教的 Hare Krishna 神廟吃頓好料。我喜歡Hare Krishna神廟的好料。追尋我的好奇與直覺,我所駐足的大部分事物,後來看來都成了無價之寶。

舉例來說:

當時里德學院有著大概是全國最好的書法指導。在整個校園內的每一張海報上,每個抽屜的標籤上,都是美麗的手寫字。因為我休學了,可以不照正常選課程序來,所以我跑去學書法。我學了serif 與san serif 字體,學到在不同字母組合間變更字間距,學到活版印刷偉大的地方。書法的美好、歷史感與藝術感是科學所無法捕捉的,我覺得那很迷人。 我沒預期過學的這些東西能在我生活中起些什麼實際作用,不過十年後,當我在設計第一台麥金塔時,我想起了當時所學的東西,所以把這些東西都設計進了麥金塔裡,這是第一台能印刷出漂亮東西的電腦。如果我沒沉溺於那樣一門課裡,麥金塔可能就不會有多重字體跟變間距字體了。又因為Windows抄襲了麥金塔的使用方式,如果當年我沒這樣做,大概世界上所有的個人電腦都不會有這些東西,印不出現在我們看到的漂亮的字來了。當然,當我還在大學裡時,不可能把這些點點滴滴預先串在一起,但是這在十年後回顧,就顯得非常清楚。我再說一次,你不能預先把點點滴滴串在一起;唯有未來回顧時,你才會明白那些點點滴滴是如何串在一起的。

所以你得相信,你現在所體會的東西,將來多少會連接在一塊。你得信任某個東西,直覺也好,命運也好,生命也好,或者業力。這種作法從來沒讓我失望,也讓我的人生整個不同起來。

我的第二個故事,有關愛與失去。

我好運-年輕時就發現自己愛做什麼事。我二十歲時,跟Steve Wozniak在我爸媽的車庫裡開始了蘋果電腦的事業。我們拼命工作,蘋果電腦在十年間從一間車庫裡的兩個小夥子擴展成了一家員工超過四千人、市價二十億美金的公司,在那之前一年推出了我們最棒的作品-麥金塔,而我才剛邁入人生的第三十個年頭,然後被炒魷魚。

要怎麼讓自己創辦的公司炒自己魷魚?

好吧,當蘋果電腦成長後,我請了一個我以為他在經營公司上很有才幹的傢伙來,他在頭幾年也確實幹得不錯。可是我們對未來的願景不同,最後只好分道揚鑣,董事會站在他那邊,炒了我魷魚,公開把我請了出去。曾經是我整個成年生活重心的東西不見了,令我不知所措。有幾個月,我實在不知道要幹什麼好。我覺得我令企業界的前輩們失望-我把他們交給我的接力棒弄丟了。我見了創辦HP的David Packard跟創辦Intel的Bob Noyce,跟他們說我很抱歉把事情搞砸得很厲害了。我成了公眾的非常負面示範,我甚至想要離開矽谷。但是漸漸的,我發現,我還是喜愛著我做過的事情,在蘋果的日子經歷的事件沒有絲毫改變我愛做的事。我被否定了,可是我還是愛做那些事情,所以我決定從頭來過。

當時我沒發現,但是現在看來,被蘋果電腦開除,是我所經歷過最好的事情。成功的沉重被從頭來過的輕鬆所取代,每件事情都不那麼確定,讓我自由進入這輩子最有創意的年代。接下來五年,我開了一家叫做 NeXT的公司,又開一家叫做Pixar的公司,也跟後來的老婆談起了戀愛。Pixar接著製作了世界上第一部全電腦動畫電影,玩具總動員,現在是世界上最成功的動畫製作公司。然後,蘋果電腦買下了NeXT,我回到了蘋果,我們在NeXT發展的技術成了蘋果電腦後來復興的核心。我也有了個美妙的家庭。

我很確定,如果當年蘋果電腦沒開除我,就不會發生這些事情。這帖藥很苦口,可是我想蘋果電腦這個病人需要這帖藥。有時候,人生會用磚頭打你的頭。不要喪失信心。我確信,我愛我所做的事情,這就是這些年來讓我繼續走下去的唯一理由。你得找出你愛的,工作上是如此,對情人也是如此。

你的工作將填滿你的一大塊人生,唯一獲得真正滿足的方法就是做你相信是偉大的工作,而唯一做偉大工作的方法是愛你所做的事。如果你還沒找到這些事,繼續找,別停頓。盡你全心全力,你知道你一定會找到。而且,如同任何偉大的關係,事情只會隨著時間愈來愈好。
所以,在你找到之前,繼續找,別停頓。


我的第三個故事,關於死亡。

當我十七歲時,我讀到一則格言,好像是「把每一天都當成生命中的最後一天,你就會輕鬆自在。」這對我影響深遠,在過去33年裡,我每天早上都會照鏡子,自問:「如果今天是此生最後一日,我今天要幹些什麼?」每當我連續太多天都得到一個「沒事做」的答案時,我就知道我必須有所變革了。提醒自己快死了,是我在人生中下重大決定時,所用過最重要的工具。因為幾乎每件事-所有外界期望、所有名譽、所有對困窘或失敗的恐懼-在面對死亡時,都消失了,只有最重要的東西才會留下。提醒自己快死了,是我所知避免掉入自己有東西要失去了的陷阱裡最好的方法。

人生不帶來,死不帶去,沒什麼道理不順心而為。

一年前,我被診斷出癌症。我在早上七點半作斷層掃描,在胰臟清楚出現一個腫瘤,我連胰臟是什麼都不知道。醫生告訴我,那幾乎可以確定是一種不治之症,我大概活不到三到六個月了。醫生建議我回家,好好跟親人們聚一聚,這是醫生對臨終病人的標準建議。那代表你得試著在幾個月內把你將來十年想跟小孩講的話講完。那代表你得把每件事情搞定,家人才會盡量輕鬆。那代表你得跟人說再見了。我整天想著那個診斷結果,那天晚上做了一次切片,從喉嚨伸入一個內視鏡,從胃進腸子,插了根針進胰臟,取了一些腫瘤細胞出來。我打了鎮靜劑,不醒人事,但是我老婆在場。她後來跟我說,當醫生們用顯微鏡看過那些細胞後,他們都哭了,因為那是非常少見的一種胰臟癌,可以用手術治好。所以我接受了手術,康復了。

這是我最接近死亡的時候,我希望那會繼續是未來幾十年內最接近的一次。經歷此事後,我可以比之前死亡只是抽象概念時要更肯定告訴你們下面這些:

沒有人想死。即使那些想上天堂的人,也想活著上天堂。但是死亡是我們共有的目的地,沒有人逃得過。這是註定的,因為死亡簡直就是生命中最棒的發明,是生命變化的媒介,送走老人們,給新生代留下空間。現在你們是新生代,但是不久的將來,你們也會逐漸變老,被送出人生的舞台。抱歉講得這麼戲劇化,但是這是真的。

你們的時間有限,所以不要浪費時間活在別人的生活裡。不要被信條所惑-盲從信條就是活在別人思考結果裡。不要讓別人的意見淹沒了你內在的心聲。最重要的,擁有跟隨內心與直覺的勇氣,你的內心與直覺多少已經知道你真正想要成為什麼樣的人。任何其他事物都是次要的。

在我年輕時,有本神奇的雜誌叫做 Whole Earth Catalog,當年我們很迷這本雜誌。那是一位住在離這不遠的Menlo Park的Stewart Brand發行的,他把雜誌辦得很有詩意。那是1960年代末期,個人電腦跟桌上出版還沒發明,所有內容都是打字機、剪刀跟拍立得相機做出來的。
雜誌內容有點像印在紙上的Google,在Google出現之前35年就有了:理想化,充滿新奇工具與神奇的註記。Stewart跟他的出版團隊出了好幾期Whole Earth Catalog,然後出了停刊號。當時是1970年代中期,我正是你們現在這個年齡的時候。在停刊號的封底,有張早晨鄉間小路的照片,那種你去爬山時會經過的鄉間小路。

在照片下有行小字:

求知若飢,虛心若愚。

那是他們親筆寫下的告別訊息,我總是以此自許。
當你們畢業,展開新生活,我也以此期許你們。

求知若飢,虛心若愚 (Stay Hungry, Stay Foolish.)。

非常謝謝大家。

 

Technorati Tags:  ,  , 

 

Posted: 2005/7/18 2:01 by rextangtw
Filed under:
Google Earth 實在不錯!

 

兩個月前寫了 Google Earth v.s. Virtual Earth , 兩個月後先看到的是 Google Earth !

剛剛在消化堆積如山的 blog 時 (其實是看不到山的, 因為都在硬碟裡) , 從 Mads Haugbo Nissen 的 blog 裡看到 Google Earth 的相關消息, 並且從 Windows Desktop Search 在"堆積如山"中的 blog 裡發現其實最近的確有不少這個相關的報導.  就下載來玩玩. 不下載還好, 玩了之後才知道原來真的這麼厲害!

Google Maps 一樣, 其實就是隨便拉! 對! 就是隨便自己拉! 不過因為是 client rendering engine, 所以介面挺好用! 而且跟 Google Maps 不一樣的是, 在輸入想看的地點後, Google Earth 從現在瀏覽的地點, 用 "飛的" 飛到想要看的另一個地點, 介面實在挺讚. 滑鼠右鍵按著上下動是放大縮小, 滑鼠左鍵按著就可以隨便拉,  想拉到哪就拉到哪! 放大縮小也可以直接用滾輪來捲, 更加方便.

遠征完佛羅里達後, 我的下一個目標是夏威夷!由衛星地圖配合各種圖資資料層, 可以根據需要拉出想看的資料層跟地圖照片重疊在一起檢視, 需要友善列印時下方會出現一個瀏覽器介面連到 Google Maps 相同的座標以利列印, 當然, 也可以連到需要查資料的網頁去, 將文字資料跟地圖資料交叉比對, 十分的方便! Google Earth 跟 Google Maps 用的應該是同樣的地圖資料庫, 因此只要 Google Maps 可以做的, Google Earth 應該都是可以做的, 例如行程規劃這種基本的功能.

這樣的地圖圖層功能只有在美國,  加拿大, 英國有詳細的, 其他的地方就只有衛星照片而已, 比如說, 台北:

解析度不夠, 實在是看不太出來哪條路是哪條路, 連中正紀念堂在哪都找不到...

有一件事情要注意. Google Earth 只是一個安裝在你的電腦上的程式, 負責將你想看的圖資從 Google 的 Map Server 中抓回來畫好給你看, 所以電腦本身是沒有圖資的, 而且因為是 3D 以及大量圖片的處理, 因此要玩得順暢, 那麼, 你需要基本的 3D 繪圖顯示卡, 基本的夠快的電腦, 然後, 你要有寬頻網路! 一如 Google Earth 免費版下載頁面講的:

  • 麥金塔電腦現在還不支援, 不過我們在努力中.
  • 桌上型電腦 (PC) 四年以上舊的可能就會跑不動.
  • 筆記型電腦 (Notebook) 兩年以上舊的可能就會跑不動.

另有其他詳細軟硬體需求可上該下載頁面參考.

Google Earth 有免費版, 加值版 (Plus) 每年 $20 美金 , 以及專業版 (Pro) 每年 $400 美金 (有七天免費試用可以玩玩看).

[update]

剛剛下載了七天試用版的 Pro 版下來玩玩. 跟免費版感覺上差別不大, 但是很多功能都打開了, 例如用 path 跟 polygon 來標示區域的功能, 以及儲存高解析度圖片等等. 還有剛剛沒有發現的是, 付費版本的金額都是訂閱一年的金額, 也就是訂閱一年的服務的金額, 需要每年繳費, 這點要特別注意.

剛剛才發現有 Tilt 的功能, 也就是可以把圖斜放的功能, 於是我將即將要去玩耍的澎湖群島衛星空照圖用 2400 pixels 解析度存成一張圖 (點選可看全圖大小):

 

斜斜的看, 看起來比較有立體感. 這就是夏天一定要去的澎湖群島!右邊那個長方形應該就是機場了吧!

整體來說, 付費使用 plus 版 (20美金每年) 可以使用較多的工具來註釋整個地圖資訊 (路線, 區塊, 自訂圖片圖層等等), 而每年 400 美金的 pro 版, 則可以將地圖作為商業用途使用. 一般使用者如果經常使用地圖, 並且住在美國等圖資相當豐富的地方, 則可以選用 plus 版, 算是便宜又好用的地圖解決方案. 不住這些地方的使用者, 使用 free 版就夠了, 因為 plus 以上的版本, 幾乎都沒機會用到 (沒有本地的相關圖資), 但如果要去美國等地的話, 這工具倒是另一個很好的行程規劃工具!)

[/update]

Scott Hanselman 也有寫一篇跟 Google Earth 有關的 post 可以參考一下.

所以, Microsoft 說他們的 Virtual Earth (虛擬地球) 要在今天夏天的時候上市. 現在都已經熱的要死了, 虛擬地球呢? 七月還剩下 15 天...

 

Technorati Tags:  

 

Lyrics: Good People - Jack Johnson

 

Nice song, nice lyrics...

Jack Johnson - Good People

You win
Its your show, now
So what's it gonna be
'Cause people
Will tune in
How many train wrecks do we need to see?
Before we lose touch of
We thought this was low
It's bad gettin worse so
[Chorus:]
Where'd all the good people go?
I've been changin' channels
I don't see them on the tv shows
Whered all the good people go?
We got heaps and heaps of what we sow
They got this and that and
With a rattle a tat
Testing one two,
Now what'cha gonna do?
Bad news, misused,
Got too much to lose
Gimme some truth
Now who's side are we on?
Whatever you say
Turn on the boob tube
I'm in the mood to obey
So lead me astray by the way, now
Where'd all the good people go?
I've been changin channels
I dont see them on the tv shows
Whered all the good people go?
We got heaps and heaps of what we sow
Sitting round feeling far away
So far away but I can feel the debris
Can you feel it?
You interrupt me from a friendly conversation
To tell me how great it's all gonna be
You might notice some hesitation
'Cause what's important to you is not important to me
Way down by the edge of your reasons
Its beginning to show
And all I wanna know is..
Where'd all the good people go?
I've been changin channels
I don't see them on the tv shows
Where'd all the good people go?
We got heaps and heaps of what we sow They got this and that
With a rattle a tat
Testing one, two
Now what you gonna do?
Bad news, misused, gimme some truth
You got too much to lose
Whose side are we on?
Whatever you say
Run the resolut but in the mood to obey
Station to station desensitizing the nation


Technorati Tags:    ,  

 

Posted: 2005/7/15 16:46 by rextangtw
Filed under:
今天很樂~

 

實在是很樂(熱), 天氣實在太好了~

不去海邊實在太可惜~

所以, 澎湖行時間確定了~

 

Posted: 2005/7/15 14:34 by rextangtw
Filed under:
MSN Messenger 7.0.0816

 

just got auto-update notice this morning that MSN Messenger had a minor patch to 7.0.0816 ,

also there is Mess.Be Patch for 7.0.0816 available to download.

 

Technorati Tags: ,

NHibernate Tips (part 2)...

 

When one made the system run as what stated in specification document, next one will be challenged with performance. seems it's normal in performing software development projects.

The key things about using NHibernate are:

  1. Correct O/R Mapping files (*.hbm.xml)
  2. Precise HQL queries
  3. Stable NHibernate Session Management
  4. Caching of Application as well as NHibernate objects.

for (1) and (2), just refer to Hibernate or NHibernate documents, also Hibernate in Action book.

for (3), some reference links worth to read:

for (4) , refer to Ben Lovell's post about Enabling ASP.NET caching with NHibernate

found those resources via Technorati's and what it found from furl and del.icio.us tags. now I realize the power of these websites of blog search and social bookmarking and it's influence in blogosphere .

by the way, IE's new tab browsing is really convenient while writing blog posts that referencing many other links. but the credit of tab browsing should go to FireFox. both are Nice Jobs!

 

Technorati Tags:  , , , ,

 

NHibernate Tips...

 

Been busy days for months, my project is going to online soon. it's sort of a data retrieving project and I used NHibernate as the O/R Mapper for data.

one thing found soon is that it's easily changing data store between different database systems. my team were developing projects upon SQL server, and we switched to Oracle 9i at staging beta phase by just changing the config file for overall NHibernate settings to point to Oracle server and using oracle dialet.

another thing needs to notice is that SQL server is using auto-identity to increase the number of integer primary keys, Oracle server is using sequence, therefore when switching to Oracle, one needs to specify sequence name for each keys.

one problem which found in Hibernate world also found in NHibernate. the "Found two representations of same collection" problem. when one are updating objects which had other collections, there will be error that the persistence layer indicated that it found same collection of this object while dirty checking and therefore produce error and fail the update.

there were some workarounds at Hibernate world. I used the quickest way to overcome this. while updating objects, using another newly created session temporarily.and this worked in NHibernate world.

final tip that was costing me hours to find out, while using implicit join on querying objects, make sure explicitly specify the joining object's fields on select clause if it's in your output, or else when the persistence layer translating HQL to SQL, it will have wrong sql clause and cause the query return error " not a Select-ed clause " (happened in oracle case).

bonus recommandation: construct your own data store pattern, and utilize good patterns to abstract data access layer.

make sure you get one copy of Hibernate in Action, I nearly read through all chapters while this project.

 

Technorati Tags:  , , , ,

 

大塚愛 9th single「ネコに風船」...

 

大塚愛官方網站消息, 台灣艾迴音樂 7/20 發行 (從 HitFM 91.7 聽到的)

大塚愛のオフイシャルウェブサイトから... 台湾では大抵 7/20 Avex Taiwan より リリースです。

from Ai Otsuka's official website. 7/20 Taiwan release from Avex Taiwan.

Technorati Tags: , ,

 

大塚愛奪冠連連“笑嘻嘻”

 

  Avex Taiwan 2005/05/18 新聞 大塚愛奪冠連連“笑嘻嘻”  (日本官方網站)

行情再看漲 納稅額驚人成長 新單曲奪冠
在日本日前公佈的納稅額排名,令人矚目的除宇多田光暌違5年再得到藝人繳稅金額第一名之外,榜上一些新生代藝人女歌手的出現也不可小覷,像是大塚愛、松浦亞彌、平原綾香等,雖不如宇多田、濱崎步繳納億萬之多,但與2003年相比,2004年她們納稅額的成長以驚人的比例攀升中,其中大塚愛繳納1142萬日圓,首次擠入高額納稅者之列,新發行單曲「笑嘻嘻/彈珠」甫發行首週即破十萬張,拿下公信榜單曲冠軍,行情水漲船高。

民意調查大出風頭 三冠王
大塚愛更在最新一期(5/23)的oricon style雜誌民意調查中大出風頭,分別在針對男性讀者所做的「可愛的女藝人」、「似乎很有異性緣的女藝人」、「希望她成為女友的女藝人」三項票選中拔得頭籌,大家一致認為坦率、可愛又才華洋溢的大塚愛,是大受歡迎的關鍵。擁有許多新奇創意的她,除一貫的音樂活動,前不久還發行了個人的第一本寫真集「想你的顏色」,並在「東京Friends」(DVD限定日本國內發行)以演員的身分出道,4月開始的全國演唱會也積極地進行中,火力全開中。

自己造字 字典上沒有的SMILY
本週冠軍單曲「笑嘻嘻SMILEY /彈珠」以充滿元氣的快節奏單曲「笑嘻嘻,與逐漸融入心底的中版單曲「彈珠」所組成。搭配了大塚愛本人主演的LION「Ban Powder Spray」止汗噴霧劑廣告歌曲的「SMILY 笑嘻嘻」,是將原來拼法為「SMILEY」的這個單字,經過大塚愛獨特的造字,而轉變為"SMILY ",將笑容這個字融入了她的獨特想法,誕生了一個具有言外之意的新詞彙,而這首作品也是極具大塚愛個性的單曲。傳達出「人生如果不好好享樂就太可惜了」想法的這首歌曲,除了能夠為唱歌的人打氣、提醒自己永遠不要忘記笑容外,大塚愛也希望聽歌的人能一直帶著笑容,永遠保持快樂的心情。

另一首「彈珠」搭配了同樣由大塚愛本人主演的LION「植物物語HERB BLEND」身體清潔用品廣告,也可以讓人感受到大塚愛全新的風格,即使已有多首暢銷的單曲,也絕不滿足於現有的自己,期許自己像彈珠一樣越磨越亮,不論幾歲都希望能單純的展現出亮眼的自己,這樣的想法,就是想要傳達給聽這首歌的聽眾,一種永遠都不要忘了持續磨練自己的心情。另外,繼全國演唱會充滿創意的周邊商品男女用內褲,配合這次新發行推出了「笑嘻嘻照明鑰匙圈」,一按鈕點亮,在照射出來的光芒中會顯現單曲封面的笑臉,創意發想令人絕倒。

Technorati Tags: , ,

 

Add your own browser icon...

 

just a quick reference to add your site your own browser icon (via favicon.com) .

  1. reference the info from Microsoft MSDN for step by step instructions to setup your site for favicon.
  2. using any icon editor (for quick creation, I just installed Icon Forge trial) to create your 16x16 icon. noticed that it may not work if one just rename a bmp file to ico file.

and your are done!

Technorati Tags: , ,

 

One day Spammer Statistics...

 

Time for checking out how those damn spammers spam my site.

by useing ISAPI_Rewrite , I am changing spammers' User-Agent to my specified names. thus, Spammer.Bot is the aggregation of all spammer traffic via referer spam, and those named Trackback.Bot are aggregation of trackback traffic. as valid trackbacks are less, most of those can be identified as Comment Spam bots.

table below was the statistics at 2005/07/10. 60% of traffic was coming from those damn spammers. that's the real world of internet. so be careful using network and be sure to protect your own sites!

Browser Hits Visitors % of Total Visitors
1 Spammer.Bot 3,901 712 44.06%
2 Internet Explorer 6.x 8,579 362 22.40%
3 Trackback.Bot 1,217 232 14.36%
4 Firefox 970 59 3.65%
5 FeedBurner/1.0 (http://www.FeedBurner.com) 46 39 2.41%
6 Mozilla 30 28 1.73%
7 NewsGatorOnline/2.0 (http://www.newsgator.com; 1 subscribers) 48 25 1.55%
8 Internet Explorer 5.x 78 21 1.30%
9 kb.Rmail (http://www.kbcafe.com/rss/rss2smtp.aspx; 1 subscribers) 18 18 1.11%
10 Others 60 13 0.80%

Technorati Tags:  , 

 

.Text Trackback bug: double byte char cause content length wrong.

 

When a .Text site using double byte chars (Chinese, for example) as site name, it will cause Trackback function through exception because the calculation of the sending parameters will be wrong, thus writing request stream to trackback site will not success.

for Trackback / Pingback related articles:

the cause of the code in .Text source (0.95.204) are mainly those in "\Code\Dottext.Framework\Tracking\" directory. TrackBackHandler.cs and TrackBackNotificationProxy.cs are the TrackBack process server and TrackBack sender, respectively. the main cause of the bug is in TrackBackNotificationProxy.cs , while calculating the parameter length:

The partial original code in TrackBackNotificationProxy.cs :

   1:  using System;
   2:  using System.IO;
   3:  using System.Net;
   4:  using System.Web;
   5:  using System.Text;
   6:  using System.Text.RegularExpressions;
   7:   
   8:  using Dottext.Framework.Util;
   9:   
  10:  namespace Dottext.Framework.Tracking
  11:  {
  12:      public class TrackBackNotificationProxy
  13:      {
  14:          public bool TrackBackPing(string pageText,string url, 
  15:                      string title, string link, 
  16:                      string blogname, string description)
  17:          {
  18:              string trackBackItem = GetTrackBackText(pageText,url,link);
  19:              if(trackBackItem != null)
  20:              {
  21:                  if(!trackBackItem.ToLower().StartsWith("http://"))
  22:                  {
  23:                      trackBackItem = "http://" + trackBackItem;
  24:                  }
  25:                  string parameters = "title=" + HtmlEncode(title) + 
  26:                          "&url=" + HtmlEncode(link) + 
  27:                          "&blog_name=" + HtmlEncode(blogname) + 
  28:                          "&excerpt=" + HtmlEncode(description);
  29:                  SendPing(trackBackItem, parameters);
  30:              }
  31:              return true;
  32:          }
  33:   
  34:          private void SendPing(string trackBackItem, string parameters)
  35:          {
  36:              StreamWriter myWriter =null;
  37:   
  38:              HttpWebRequest request = BlogRequest.CreateRequest(trackBackItem);
  39:              request.Method = "POST";
  40:              // this is where the bug at.
  41:              // when blogname in parameeters contain double byte chars,
  42:              // the length will be wrong thus cause the myWriter.Write fail!
  43:              request.ContentLength = parameters.Length;
  44:              request.ContentType = "application/x-www-form-urlencoded";
  45:              request.KeepAlive = false;
  46:   
  47:              try
  48:              {
  49:                  myWriter = new StreamWriter(request.GetRequestStream());
  50:                  // this line below will cause exception 
  51:                  // at Notifier.cs try block.
  52:                  myWriter.Write(parameters);
  53:              }
  54:              catch{}
  55:              finally
  56:              {
  57:                  myWriter.Close();
  58:              }
  59:          }
  60:      }
  61:  }
  62:   

to solve this problem, it needs to calculate the length using other way, as following code that's referenced from the latest version of CommunityServer (1.1 RTM Source), both got almost same implementation of TrackBack Proxy.

   1:          private void SendPing(string trackBackItem, string parameters)
   2:          {
   3:              //StreamWriter myWriter =null;
   4:              Stream myWriter = null;
   5:   
   6:              // using System.Text.Encoding function to 
   7:              // transform parameters to correct byte array.
   8:              byte[] payload = null;
   9:              payload = System.Text.Encoding.UTF8.GetBytes(parameters);
  10:   
  11:              HttpWebRequest request = BlogRequest.CreateRequest(trackBackItem);
  12:              request.Method = "POST";
  13:              request.ContentLength = payload.Length;
  14:              request.ContentType = "application/x-www-form-urlencoded";
  15:              request.KeepAlive = false;
  16:   
  17:              try
  18:              {
  19:                  myWriter = request.GetRequestStream();
  20:                  
  21:                  // old way
  22:                  // myWriter = new StreamWriter(request.GetRequestStream());
  23:                  // myWriter.Write(parameters);
  24:                  
  25:                  // using utf-8 byte string to write, 
  26:                  // to prevent incorrect length in chinese or
  27:                  // other double byte chars.
  28:                  // learned from CommunityServer 1.1 source, 
  29:                  // it got almost same implementation on Trackback Proxy...
  30:   
  31:                  myWriter.Write(payload, 0, payload.Length);
  32:              }
  33:              catch (Exception ex)
  34:              {
  35:              }
  36:              finally
  37:              {
  38:                  myWriter.Close();
  39:              }
  40:          }
  41:   

this will solved the problem of TrackBackNotificationProxy (the trackback sender when a post is posted to blog).

Spent hours to add log4net logging into .Text to track the bug, finally found it. also noticed that .Text's trackback/pingback functionalities were well-written! it even got a self-implemented ThreadPoolManager to send those trackback/pingback in different threads (default max 5 threads) thus it won't pause the main thread when processing trackback/pingback. nice implementation!

also found that the function to get all the links from a HTML string is very useful. it's all about a good regular expression pattern!

   1:          //in TrackHelper.cs
   2:          //Gets a list of all of the valid html links from a string
   3:          public static StringCollection GetLinks(string text)
   4:          {            
   5:              StringCollection links = new StringCollection();
   6:              string sPattern = @"(?:[hH][rR][eE][fF]\s*=)" +
   7:  @"(?:[\s""']*)(?!#|[Mm]ailto|[lL]ocation.|[jJ]avascript|.*css|.*this\.)" +
   8:                  @"(.*?)(?:[\s>""'])";
   9:   
  10:              Regex r = new Regex(sPattern,RegexOptions.IgnoreCase);
  11:              Match m;
  12:              string link = null;
  13:              for (m = r.Match(text); m.Success; m = m.NextMatch()) 
  14:              {
  15:                  
  16:                  if(m.Groups.ToString().Length > 0 )
  17:                  {
  18:                      
  19:                      link =     m.Groups[1].ToString();    
  20:                      if(!links.Contains(link))
  21:                      {
  22:                          links.Add(link);
  23:                      }
  24:                  }
  25:              }
  26:              return links;    
  27:          }

debugging is painful, but solving problem is exciting...

happy programming...

Technorati Tags: , , ,

 

MSN Search Toolbar with Tab Browsing...

 

MSN Search Toolbar now support Tab Browsing just like what FireFox do! Scott Hanselman also had a post about toolbars...

Download MSN Search Toolbar

Download other addins (like a PDF search filter) for MSN Search Toolbar

therefore, I've removed Lookout for Outlook to save index file disk space as well as Google DeskBar to save rooms on command bar for MSN Deskbar...

 

Technorati Tags: , ,

 

All those blog things...

 

as I am studying about those web-based blog readers / tools, just found an insightful post on comparison of Bloglines and Newsgator online here at TechChunch :  

Profile - NewsGator Online v. Bloglines

I had a try of Bloglines today, it's really a nice web-based RSS reader. the UI is nice and it also has place for subscribed users to have a blog there.

I used Newsgator for Outlook to manage my feeds, and I am very used to it. Using Newsgator for Outlook with Lookout search for Outlook can easily search the RSS feeds as well as emails, and feeds can be read offline.

those blog related stuffs I am keeping eyes on:

Web-based reader:

Public blog hosting:

Opensourced Blog platform (.Net platform):

Weblog search, tags and social bookmarking:

technorati is awesome! it's really interesting to read almost real time about how the world is blogging right now. it got a help about using tags in posts, as I've noticed from ijlaio's blog, I'll start to place tags in my posts to paticipate tagging on blogs.

going to dig into CommunityServer 1.1 source soon.

Technorati Tags: , , , , ,

 

Travelstar 7K100...

 

[via Clay Chang's chatting info...]

在買過兩顆 7K60 後, 看來, 花錢的時間又到了...

click to enlarge Hitachi Travelstar 7K100, good stuff that geeks should get one!

HGST、7,200rpm/100GBの2.5インチHDD「Travelstar 7K100」

5月12日 発表

株式会社日立グローバルストレージテクノロジーズ(HGST)は、ディスク回転数7,200rpmで最大容量100GBを実現した2.5インチHDD「Travelstar 7K100」シリーズを発表した。Ultra ATAモデルは既に出荷開始されており、シリアルATAモデルは7月より出荷を予定している。

 また、データの可用性が高く連続稼動を想定した業務向けの「Travelstar E7K100」シリーズも用意され、2005年下半期に出荷を予定している。

 第2世代の2.5インチの7,200rpm HDDとして、記憶容量を従来モデルより約67%増加し、転送速度を約33%向上させたという。また、動作時の耐衝撃性を向上させ300Gと約50%改善した。非動作時の耐衝撃性は従来と同様1,000Gとなる。

 容量100/80/60GBの3種類が用意され、ディスク枚数は2枚、平均シーク時間は10ms(Read)/11ms(Write)。バッファは8MB。騒音はアイドル時26dB、シーク時30dB。また、シリアルATAモデルはNCQ、ホットプラグおよびStaggered Spin-up(時間差起動)に対応している。

展碁國際相關報導 | CNet 大A相關報導 | Related News

 

 

More Posts « Previous page - Next page »