1. 從 CommunityServer 2007 到 BlogEngine.NET

    哈,不是我要搬家了,是網站搬家... 搬家是想了很久沒錯,只是決定搬到 BlogEngine.Net 倒是沒花幾天的時間,所以準備動作也是有點 LiLiLaLa .. 從 CommunityServer 這種成熟的系統搬到還很年輕的 BlogEngine.Net,其實碰到不少小麻煩,在這裡記錄一下給需要的人參考,也算功德一件!

     

    要搬 BLOG,最直覺的就是用 BlogML 了,不錯,我用的 CommunityServer2007 有工具可以匯出 BlogML,而 BlogEngine.Net 也有工具可以匯入 BlogML,想想真是太好了... 就先用 DevWeb 架了 BlogEngine.Net 起來試搬看看..

     

     

    image

    BlogEngine.Net 匯入的方式,是用 ClickOnce,直接從它的官方網站下載的 WinForm App 配合 BlogEngine.Net 本身提供的 Web Service 來進行匯入 BlogML 的動作,除了 BLOGML 之外也支援 RSS? 不過 RSS 怎麼試都試不出來,放棄... 直接用 BlogML ...

     

    image

    畫面很乾淨,它也很忠實的完成了它的工作... CommunityServer2007 的 BLOGML 匯入時出了點問題,文章的修改時間不知為何,BlogEngine.Net 都一直抓到 0000/01/01 00:00:00.000 ,而BlogEngine.Net 還會幫你修正時區的問題 (台灣時區,要 -8 小時才是標準時間),結果一扣就變成負的,就送我一個 Exception ... Orz

     

    匯入的第一步就得動用到 Visual Studio 2008,真不是好兆頭... 所性拿掉那行程式,就一切沒問題了,順利匯入! 架了台測試網站,研究了一兩天,實在是有點不滿意...

    1. LINK 不對
      Windows Live Writer 很好心的幫你把上傳的圖檔都用絕對網址來表示,因此所有的圖都連回原本的網站,正常顯示沒有問題。不過搬家那有這樣搬的... 改!!!
    2. 只搬了BLOG,文章沒有搬
      只怪當時年輕,無聊去用 article 的功能,造成部份是 BLOG 文章,部份是 ARTICLE。CommunityServer2007是都有忠實的匯到 BLOGML,不過 BlogEngine.Net 的匯入工具略過它了... 改!!!
    3. 站內 LINK 不對
      圖檔 LINK 還好修,字串換一換就搞定,不過站内的文章戶連才是個問題... 改!!!
    4. 站外 LINK 不對
      其實這一點是搬完家才發現的,剛搬好 PAGE VIEW 低的可憐... 看一看 LOG 都是 404 Page Not Found ... 改!!!
    5. 沒有 COUNTER
      BlogEngine.Net 說實在話,以BLOG來說功能一點都不缺,不過很怪,竟然沒有最基本的 VIEW COUNT ? 所幸 BlogEngine.Net 有定好 Extension 的架構,要寫它的擴充程式很簡單,有個高手寫了 BlogEngine.Net 的 View Count Extension... 畫面不怎麼樣,不過很實用... 裝!!!
    6. 原有的 VIEW COUNT 沒匯入
      廢話,BlogEngine.Net 本來就沒內建 VIEW COUNT,那是我自己裝了擴充程式才有... 資料要匯,當然也只能自己想辦法 :~~ 改!!!
    7. 版面問題
      標準的版面我很喜歡,就是我要的那種素素的 STYLE,很標準的 ASP.NET Master / UserControl 架構,太棒了... 我要求的也不多,就放放廣告 (看廣告收益很有意思耶,好像電動裡打怪會賺錢或是經驗值那樣... 真的賺多少其實也不重要 :D),還有幾個我自己寫的 CONTROL ... 改!!!
    8. 我在CommunityServer加的功能
      沒辦法,自作孽,改了一堆只能自己搬... 有好幾個:
      • Google Ads (可以用)
      • FunP 推推王 (沒在用了)
      • Recent Comments (已經有內建,可以扔了)
      • 皮哥芸妹年齡 (跟太座的網站分家了,我這邊就不需要了)
      • Bot Check (還沒搞定要怎麼改 :~)
      • Code Formatter 在 BLOG SERVER 要配合的部份

     

     

    上面這幾點,都是搬家時或多或少會碰到的小問題,不過很想哭的是,這六個最後都是搬出 Visual Studio 2008 出來才搞定的 @_@,什麼意思? 就是自己寫 CODE 來修啦... 真不知道該誇還是該罵,也因為這樣有機會 Trace 幾次它的 Code,忍不住想再誇它一次,要建起開發環境實在太容易了 [H] 哈哈...  它的 CODE 很精實,CODE 不多,架構很好,規規舉舉的很容易懂,這種 CODE 改起來真舒服.. (為什麼公司的 CODE 都沒有像這種的...),修改的難度大概只有 CommunityServer 的 1/3 .. (CommunityServer的作者很猛,把 Microsoft 在 2.0 才推出的那套架構在 1.1 時代就都實做了一套 [Y])

     

    現在還有空在這裡慢慢打,當然是這些問題都解決完了,先看看成果吧,細節有空再補 HOWTO 文章。那些 LINK 不對的問題,各位翻翻舊文章,如果都看的到圖點的到東西,就是沒問題了。有問題的請再留話給我,我來修看看。

     

     

    image

    來看看加上 Google Ads 的版面,老實說這個版跟 Google Ads 還真搭... 看起來就像同一套的.. 我只調了 CSS ,跟 MASTER PAGE..

     

    image

    再來是站內文章互連的 LINK。這邊讓我傷了幾秒鐘的腦筋... 就放棄原本只想寫寫批次檔代換的念頭了。轉檔前跟本不知道轉檔後的新 LINK 是長什麼樣子,轉檔後就錯失先改好 BLOGML 再匯入的機會了... 想了一下,無解,一定要動用到 2 PASS 才行... 就乖乖的改轉檔程式了。第一輪就是基本的匯入,然後在原本的 BLOGML 附記新的 LINK 及 BlogEngine.Net 的 PostID,然後 PASS 2 再把舊文章逐一翻出來 SEARCH & REPLACE ... 上圖可以看到,內文 [四核 CPU] 的 LINK (在底下) 就已經是修正過的了,各位可以去試看看...

     

    再來是站外的 LINK,站內我自己的可以改,站外可沒辦法... 拿最捧我場的 Darkthread 網站為例,搜尋一下就有七八篇是連到我這邊,怎麼可以辜負大人的好意... 動搖國本也要改! 現在我的 BlogEngine.Net 已經可以接受舊系統的網址了,而且會正確的轉到同一篇文章的新網址。不過為了不讓大家 "不知不覺" 就轉過來,我特地加了一頁提示,因為書上教的,不要把錯誤隱藏起來 :D,你可以用防禦性的方式寫 CODE,但是務必加上 ASSERT 及 TRACE 提醒自己這裡要注意... (出自一本古董書: Writing Solid Code... 太古董了實在找不到 LINK ... )

     

     

    image 

    就挑這篇來示範吧,黑暗大哥的文章裡有個 LINK,存的是舊的 CommunityServer 格式 URL,點下去之後會跳到我的網站...

     

     

    image

    倒數完或是你沒耐性直接按下去的話,就會跳到這篇文章... BINGO,原本的內容出現了!

     

     

    image

     

     

    嗯,總算修正回來了。其實修正網址是搬家最頭痛的問題了,這個搞定其它都好說 :D  留給有興趣想從 CommunityServer 搬家到 BlogEngine.Net 的人參考...

    (小熊子別再撐了... 還有那個誰也是一樣...)

    2008/06/19 .NET BlogEngine.NET Community Server 有的沒的

  2. FF3 Download Day...

    哈,不是指 Final Fantasy 3 ... 是指 Firefox 3, 今天是 Firefox 3 下載日,看看能不能創下單日內最高的下載次數世界紀錄... 我其實都用 IE 用慣了,也不趕著一定要今天下載,不過既然有世界紀錄,當然要來湊個熱鬧... :D

    貼張照片紀念一下,以後可以跟小皮說 "這個世界紀錄你老爸也有算一份..."

     

    image

    2008/06/18 有的沒的

  3. 換到 BlogEngine.Net 了!

    也許有人只是覺的換版面而以... 原本是打算升級到 CommunityServer 2008 的,不過自從 Community Server 商業化之後,個人版限制越來越多,整套系統也越來越大,常常出了一些問題都沒辦法自己解決 (連 Error Message 都藏的很隱密 -_-)...

     

    其實上面這些也不算缺點,不然我也不會一路從 .Text 時代就用到現在,一用就用了四年多... 上禮拜無意間聽同時講到 BlogEngine.Net,一時好奇抓下來看看,馬上就被它的簡易安裝嚇到了.. 有多簡單? 步驟如下:

    1. 下載
    2. 解開
    3. 設定 IIS 虛擬目錄 / 用 DEV WEB 執行它
    4. 完成了

    我已經很努力的把它寫複雜一點了... 它安裝就是這麼簡單,因為它可以不需要 DB (用一堆 XML 檔取代),因此一行 web.config 都不用改就可以用了... 驚喜之餘,也吸引我更深入的多試了幾個功能...

     

    基本功能試過一次之後,發現它比 CS 還符合我的須要,怎麼說?

    1. 很簡單
      不只是設定簡單,它的功能也很專一,就是一套BLOG而以。沒有複雜的會員機制,也沒有帳號申請,也沒有多套BLOG管理 (不過它支援多個作者),除了 BLOG 也沒有其它功能... 不多不少,正好我要的都有!
    2. Open Source
      雖然 CS 也有 Source Code 可以看,不過它的原始碼越來越難找了... 每次逛它的網站都要找半天才找的到 SDK 在那裡下載...
    3. 不需要 DB
      雖然我自己 HOSTING 我的網站,DB並不是什麼大問題。不過不需要 DB 對我也是個大利多。一方面網站備份更容易,另一方面除錯及改程式也更容易... 更好用的是,未來我可以把整個網站目錄燒到 DVD 上 (不過兩百多篇文章,不到100MB,燒什麼 DVD...),只要再搭配 .NET 附的 DevWebServer,做個 AutoRun ... 想到可以幹嘛了嗎? 我的 BLOG 馬上就變成一份可以放在 CD,需要時就可以就地用 BROWSER 來看內容了!
    4. CODE 精簡,程式碼架構佳
      這點又免不了跟 CS 拿來比較一下... CS 的作者也是高手,CODE寫的很漂亮,不過跟 BE 最大的差別是,CS實在太肥了。肥到什麼功能都要繞個兩三圈... 要修改雖然不難,但是都要花點時間...
    5. 免費! 免費!
      心理作用,其實賣錢的 CS 送的免費版本,功能比完整的 BlogEngine.NET 還多... 不過商業化之後難免會有些功能得付費才能使用... Orz
    6. 小巧,易用,速度快
      CS 即使是在 LOCAL 執行,速度都沒辦法讓人覺的 "飛快",但是換了 BlogEngine.Net 就有這種感覺... 我目前的文章只有兩百多篇,不靠 DB 的速度都還很快。我試過灌了1000篇文章,速度依然很快... 我想這樣就夠了,我要寫到破千篇,不知道還要多久?

    光是這幾個優點,就讓我決定試用只有一天的 BlogEngine.NET 換掉用了四年的 CS ... 剩下的問題只有 "怎麼轉" ? 各位看到現在都成功搬過來,那一定是搞定了... 哈哈... 沒錯,周末花了兩個晚上研究 + 寫匯入程式,今天就重新開張了 :D

    轉檔的過程,改天再寫另一篇,有興趣的朋友請耐心等待續集...

    2008/06/17 .NET BlogEngine.NET Community Server 技術隨筆

  4. Canon Raw Codec for Vista / XP x64 ...

    沒想到還真的有人在寫這東西...

    http://www.ardfry.com/cr2-codec/

     

    只不過這不是 CANON 官方出的,是有高手自己在寫,拿來賣錢用的... USD 29.95 元... 現在預購只要 USD 19.95...

    我怎麼幫它打起廣告來了... 其實真的應該給他鼓勵一下,不過 20 元也不是小數目,這篇就當贊助作者的廣告吧,哈哈...

    我自己? 之前找到的在 Vista x64 下,用 WOW 來跑的爛招就加減用... 我看看 CANON 啥時才會推出官方的 x64 版本 codec ... @_@

    2008/06/11 技術隨筆 有的沒的

  5. 換了四核心,MCE就掛了...

     

    這年頭,標題不下的聳動一點就沒人看了... 不過我生性保守,這標題可是一點也不誇張... 補一下前陣子狠下心買了顆 Q9300 來給 SERVER 用,發生的小障礙及處理過程。新的 CPU 裝在 SERVER 上, SERVER 關在機櫃裡看不到摸不到,當然是先裝到桌機享受一下,桌機用的是 Vista,平常會用用 MCE 看電視,還有錄電視下來慢慢看...

    把桌機的 E6300 換掉,換 Q9300 上去,不錯,什麼東西都很正常,速度也快,溫度也低...。正當一切都很美好的時後,想說開個 MCE 來看電視,嘖... 掛了? 出現這個美化過的 General Protection Failure 畫面:

     

    點了建議選項,無解。點了 DETAIL 下去看,也看不出個所以然...

     

    Microsoft 這次算是有良心,沒有再寫 "請聯絡您的系統管理員" ... 別再叫 USER 找系統管理員了,最好這種五四三的問題跟外星人的數字,系統管理員都看的懂...

     

    看了這些資料,也看不出問題在那,換了 Media Player 來播放之前 MCE 錄下來的 *.dvr-ms 也是出現一樣的錯誤,連 Media Player Classic 通通都一樣,害我懷疑起是不是 Microsoft 的 codec 寫的不好,在四核心CPU上會有什麼怪問題發生?

     

    不過越看越不對,隨便查了一下 GOOGLE,有一堆人用 Q9300 用 MCE 用的好好的啊... 回頭再來看看詳細的資訊,看到比較特別的,錯誤模組: Indiv01.key ? 這不像是 DLL 還是啥的,怎麼會錯在這? 就順手 GOOGLE 了一下...

    沒啥用,只知道這是 Microsoft 的 DRM 用的秘鑰,再去查 Microsoft 的 support center,這次像樣多了,找到這篇:

    KB891664: 如果您的電腦硬體經過變更,Windows Media Digital Rights Management 系統可能會無法運作

     

    真是它ㄨㄨㄨㄨㄨ的,找到問題了... 原來各種加秘的演算法都需要一個 KEY,來識別使用者,或是某一份發佈的媒體檔案。為了讓每一台 PC 有不同的 KEY,因此 Microsoft 會有自己的演算法來替每台 PC 產生一組 KEY,就是 Indiv01.key 這檔案的內容。產生 KEY 的過程中,硬體組態 (包含可用的 CPU 數量) 是來源的一部份,因此換了顆 CPU (核心個數有變化),就會被 Microsoft 視為是換了台電腦了...。

     

    就是這鳥問題,MCE 認為我換了台新電腦,又用舊的 KEY,判定是 "違法" 的複製 Media,就給我擋了下來... 照著這篇文章的步驟,可以清除 DRM 的授權,一切重頭來過,果然就正常了! BINGO。

     

    有點鳥的問題,嘖嘖... 真正解決花了我十分鐘的時間 (包含 REBOOT),不過在這之前卻懹我懊惱了好幾個小時...,這裡借題發洩一下 [:@]... 也給剛好也用 MCE 想換四核心 CPU 的人參考一下...

     

    這個故事告訴我們,沒事別亂換硬體,要換硬體請準備好耐心及奮戰到底的決心,不然就準備好重灌的準備... Orz

    2008/06/09 技術隨筆 有的沒的