Frank 刪除備份檔後的憾事

對檔案備份不當一回事的朋友,強力建議看一下這一篇 : Hard disk death
沒錯,這是在 http://www.pureftpd.org/ 的網站的 index 文件,Frank 老兄的硬碟掛了,而他恰巧又在之前幾天,拿著本來用來備份的硬碟作其它的用途,所以導致了悲劇的發生,對於一個資訊工作者來說,整整五年的資料毀於一旦,文件、信件、原始碼,因為我們提暢無紙環境,所有的東西都在那裡頭,這是一件多可怕的事呀。

用 DVD-R 作資料交換

從 DVD+R 跟 DVD-R 的戰爭開打以來,我一直都是使用 DVD+R 的片子來作燒片,沒有甚麼特別的原因,只是因為那時候 DVD 燒錄機一直都還不是很穩定,而我的第一台 DVD 燒錄機對於燒錄 +R 的片子一直都很穩定,燒好的片子拿給別人之後也一直沒有甚麼不相容的情況,在這段期間中陸續換了兩台燒錄機,最近的這一台是 HP dvd640,在買回來後一直都還是延續先前的購買習慣 — 買 +R 的片子回來燒。

最近把讀取用的 DVD ROM 全部更新為 SONY 的設備,因為 DVD ROM 在長期的使用之後挑片會越來越嚴重,不曉得為甚麼最近燒錄的片子拿到新的 DVD ROM 上時讀取速度一直不快,開起檔案總管的時候就會稍微停頓一下,看 DVD 上頭的 DivX 影片也不如以往順暢。一直到前幾天才發現問題點,我到賣場去買 DVD 空片的時候因為某牌的 -R 片子比 +R 的好看 (現在空片價格與品質都差不多,外觀設計似乎是一個很好的賣點),所以買了 -R 的片子來使用,而最近燒錄的片子都不會有停頓的情況。

+R 的片子燒錄的時候速度會比較快,但是相容性 (拿到別台設備上讀取) 會比較差,而 -R 則是強調其相容性,所以比較適合用於資料交換。對於 DVD 格式不是很懂的我來說,在 DVD 的規格大戰開始就一直習慣使用 +R 的片子,當時 DVD 的技術尚未達到很成熟的地步,只要能用就行,不會對這些規格的用處挑毛病,但是現在 DVD 技術已經在市場上走了很長的一段時間,該是對其規格有所區分的時候了,+R 資片子還是比較適合拿來備分資料,以後資料交換,我還是乖乖改用 -R 的片子會比較好。

使用 VS.NET 開發 Lotus Notes Client Application 前置作業

請照下面作法設定開發環境的機器:

1. 安裝 Notes Client (我用的是 Domino Client 6.5)
2. 開 VS.Net 2003 Command line, 執行 tlbimp domobj.tlb (在 C:\Program Files\lotus\notes\), 這會把 domobj.tlb 轉為 Domino.dll (可被 .NET Reference)
3. 執行 regsvr32 “C:\Program Files\lotus\notes\nlsxbe.dll” 註冊這支 DLL (必要)
4. 程式中 Reference 剛剛產生的 Domino.dll,接著就可以 using Domino 並用:PLAIN TEXTC#:

  1.  
  2. static void Main(string[] args)
  3. {
  4.     string NotesPassword = “[email protected]”;
  5.     string NotesHost = “domino/admin/01”;
  6.     Console.Write (“SERVER [(domino/admin/01)] : “);
  7.     NotesHost = Console.ReadLine();
  8.     Console.Write (“PASSWORD: “);
  9.     NotesPassword = Console.ReadLine();
  10.     Say (“Try login to server, please wait…”);
  11.  
  12.     Domino.NotesSession ns = new NotesSession();
  13.     ns.Initialize (NotesPassword);
  14.     Say (“Sesstion Initialized!”);
  15.     Domino.NotesDatabase ndb = ns.GetDatabase (NotesHost, @”mynotesdb.NSF”, true);   
  16.     Say (“Connected to DB: ” + ndb.Title);
  17.     DisplayDocuments (ndb);
  18.     Say (“Program terminated, press any key…”);
  19.     Console.Read();
  20. }
  21.  
  22. // ——————————————————————–
  23. static public void DisplayDocuments(Domino.NotesDatabase ndb)
  24. {
  25.     Domino.NotesDocumentCollection ndc = ndb.AllDocuments;
  26.     // LOOP DB DOCUMENTS
  27.     for (int i=1;i<ndc.Count;i++)
  28.     {
  29.         Domino.NotesDocument nd = ndc.GetNthDocument (i);
  30.         foreach (object no in (object[]) nd.Items)
  31.         {
  32.             Domino.NotesItem ni = (Domino.NotesItem) no;
  33.             Say (ni.Name + ” (” + ni.type.ToString() + “): \t\t” + ni.Text);
  34.         }
  35.         Say (“========================================================”);
  36.     }
  37. }
  38.  
  39. // ——————————————————————–
  40. static public void Say(string S)
  41. {
  42.     Console.WriteLine (S);
  43. }
  44.  

這樣可以連得到 Domino Server…

Tips:
執行 ildasm Domino.dll 可以讓你看到裡頭有甚麼東西可以使用的….

[.NET] Why StringBuilder?

前一陣子在 Review Vendor 交過來的 Source code 的時候,發現裡頭用了大量的 StringBuilder 與 .Append 的 Method,其實我自己本身在寫 .NET 程式的時候,很少會去用到這些 Framework 所提供的功能,字串的結合都是用 s += “something else.”; 的方式解決掉的。最近因為該系統執行的效能不彰,所以對這一些 Source code 又重新 review 一次,並且作了一些效能上的調校,比如說: 把用了大量 DataSet 的程式碼 (一個 DataSet 只包了一個 DataTable),改成一個 DataSet 包了多個 DataTable 來運行,並且將一些 SQL 指令放進 Stored Procedure 去跑,希望這樣能夠增加一些效率,減少 DB Lock 產生的系統延遲等等 (日後有空再來寫一篇)。

Ubuntu 5.10 – 安裝時 debootstrap 問題

最近因為 Microsoft 的 WGA 程式造成人心惶惶,有許多人嘗試想要轉換到 Linux 環境上,Ubuntu 當然是首選的套件囉!但是最近這一個版本 (5.10) 有許多人像我一樣裝了很多次都沒能裝得起來,出現的錯誤訊息通常都是停在這裡:

The debootstrap program exited with an error (return value 1). Check /target/var/log/bootstrap.log for details. …

剛剛從 Google 找到了這一篇:

http://www.ubuntuforums.org/showpost.php?p=446620&postcount=10

try enabling dma on your dvd drive (you can do it from the expert install.. when it gets to cdrom parameters type in -d1 or, get to the console (alt-f3?) during the beginning of the regular setup and type sudo hdparm -d1 /dev/hdb (or whatever /dev your dvd drive is.)

據說好像是安裝時若不是使用 Philips/BenQ 的光碟機就會發生這樣的情況,解法是在安裝時強行打開光碟機的 DMA 支援,我測了一下,的確可以解決,但我並不是按 Alt-F3 回到命令模式,而是在安裝選單出現後按下 Alt-F2 (會出現 Enter 鍵提示) 再按下 Enter 回到命令模式,然後輸入:

hdparm -d1 /dev/cdroms/cdrom0

(因為我的 CDROM 是掛在 /dev/cdroms/cdrom0 而不是 /dev/hdbX,而且不用 sudo 喔!下這行指令來 Enable DMA 還能讓你安裝時從光碟讀取資料的速度快一點)

千金難買早 Google,搞了半天居然是這樣的怪 Bug,不過我倒是覺得像 LITEON 這麼好的光碟機品牌為甚麼不在支援之列呢?… (哈哈)

已停用處理序效能計數器??

前一陣子依照網路上的一些 Tips 調整工作機的 Registry 設定,為的是讓系統跑起來快一點,實際也是有一些效果,但今天安裝 NetAdvantage 後執行它的 Toolbox Tab Creator 時出現了: 『已停用處理序效能計數器,所以無法執行所要求的作業』的錯誤訊息,解決方法是: 執行 C:\Program Files/Resource kit/exctrlst.exe 選到 PerProc 並把 Performance Counter Enable 勾起來,就可以了。

-.-” 沒想到調整了效能之後 ProcessInfo 這個 Class 就不能跑了…

Xuite 的 SQL 指令洩漏

除了少數那幾家走出國際的軟體公司外, 也難怪台灣的軟體業成不了氣候, 再大的網站後面支撐著的程式人員到底是用甚麼樣的測試方法/測試工具??不是說有很多人都去弄了軟體品質管理的認證了嗎??

剛剛逛 Xuite 的時候點了一個連結, 看到的是半正常的畫面, 因為畫面上還包含了一段 SQL 指令… 不曉得是甚麼程式錯誤造成的, 以此為記!

另類推廣法 – WMA vs. MP3

在 Mauro Cardarelli 看到一則引起我興趣的文章,點進去之後連到 Microsoft 的某個下載網頁:
Podcasts: Microsoft IT Showcase: How Microsoft IT Manages SharePoint Disaster and Recovery

然後在下載的地方出現了兩種格式:

是怎樣,用這種方法來強調 WMA 格式比 MP3 格式來得小嗎??

其實許多程式或標準,我們都害怕微軟擁有較高的市佔率,因為那代表著該軟體或標準失去了創新的動力~~電腦不算長的歷史中已經有太多可以證明。我還沒有時間檢驗這兩個檔案,不過會差這麼多肯定是有玄機的,一般的下載頁都會標明壓縮音質,有時間的朋友幫忙試試吧!

Live Messenger Beta 的邀請

大概是從 GMail 的邀請函開始,大家都流行玩『邀請函』這一套來進行推廣,其實物以稀為貴,在大家都搶著要的時候也許會自我感覺良好,但搞到最後,像 Gmail 那樣用不完的時候,邀請就顯得沒有甚麼意義了,而且,沒有邀請的話 Live Messenger Beta 還不是照樣能註冊、能下載、能使用嗎?

寄來的 Mail 是說:你現在有權寄發邀請….. 呃~

快速建置支援 log4net 的 ASP.NET WepApplication

log4net 的 Example 並沒有寫得很清楚,在網路上的一些 Sample Code 也沒有把版本交待清楚,甚至一些程式碼跑不動,繞了很多冤枉路之後弄了一個簡單的步驟,以下只留下 FileAppender 跟 MS-SQL 兩個 Appender,需要其它 Appender 的再手動去加。

使用版本: Version 1.2.9 BETA

1) 加入 Reference: log4net.dll

2) 在 AssebmlyInfo.cs 中加入:PLAIN TEXTCODE:

3) Webform1.aspx.cs 中加入PLAIN TEXTCODE:

4) 於 Class 宣告後加入:PLAIN TEXTCODE:

5) 修改 Web.config 在 <configuration> 下開始加入下列文字:PLAIN TEXTCODE:

上面的 connectionString 部分需修正,logger name 也最好改一下以免 log 都用相同的 namespace 分不出來

6) 使用 log4netPLAIN TEXTCODE:


Keyword: log4net mssql sqlserver logger webapplication asp.net