星期一, 3月 31, 2008

VPC 執行FreeBSD的錯誤

用VPC或VMWare執行FreeBSD,有可能會出現"calcru:..."的錯誤訊息,此時看沒用,因為太舊了:P 要看這裏

解決方法:在 /etc/sysctl.conf 加上 kern.timecounter.hardware=TSC 就解決了。雖然在開機時還是會跳出一陣子的calcru的訊息,不過開機完也就沒事了。

星期五, 3月 28, 2008

升級Domain Controller的硬體

新電腦到了,想把公司的AD換到新電腦,查了一下資料:
如何備份、還原Active Directory的設定
如何在 Windows Server 2003 中重設目錄服務還原模式的系統管理員帳戶密碼
備份與恢復Win2003的AD資料庫
Active Directory 遷移工具 v3.0
ADAM 逐步手冊

如果網域要改名可以用Windows Server 2003 Active Directory Domain Rename Tools,參考感受Windows 2003域更名工具

看了這麼多,我想像中的做法是:
  1. 新裝一台DC
  2. 再把兩台DC的IP互換
  3. 把原來的DC降成一般伺服器
  4. 舊DC退出網域
  5. 如果再不爽,用這招把新機換成原來機器的名字(忽然想起,UUU的講師說只有PDC上有administrator的private key,在移機前要先備份)

如果有好方法,請不吝提供,感恩呀~

難怪Vista會慢

公司的新電腦在經過兩年漫長的等待終於在昨天送到,為了身先士卒,要求讓我用隨機的Vista Business。剛裝完覺得速度非常慢,安裝Patch後稍有改善,但仍然覺得反應很遲頓。打開工作管理員一看,乖乖:


這....我什麼程式都還沒開,1GB的RAM就被吃個精光,Page File這麼多,難怪會慢呀。或許有人說是cache佔去,沒錯,但是700MB還是有點多,我若開個Firefox不就破表了?臨時去拔另一台新機器上的RAM過來:


雖然可用一樣顯示0,但是可以看到大部份都在cache,swap的機會少很多,此時整台機器的反應很明顯變快。來看一下分數,這是用1GB RAM剛裝好Vista後測出只有2.7分:


裝到2GB RAM後分數馬上變成3.4,因為有雙通道,所以分數馬上變高:


雖然在關掉一些陰影之類的特效後,有稍微快一點點,但仍然覺得不怎麼順(其實CPU是E8200,2.66Ghz已經夠快了),過幾天拿這台灌個Ubuntu試試效能吧XD

星期四, 3月 27, 2008

乖乖大神

同事寄來一封有趣的email,內容是關於用乖乖拜Server,稍微查了一下,最早的是一年一度拜乖乖,令我驚訝的是iThome的高效能伺服器研討會 為機房做室內設計,居然在"機房的風水學"這段也有提到乖乖桶。

以下其他的文章照時間排序:
千萬不要小看一包 乖乖 ! 沒有它! 搞網路的都會失業了!
最近乖乖大神會熱是因為mobile01這篇關於乖乖大神的真人真事...
同事寄來的是引用乖乖的妙用
乖乖大神?

看完這幾篇,鳥毅在想要不要去買幾包椰香乖乖了:P

星期三, 3月 26, 2008

給豬哥網的一個建議

雖然你們官方不能明著叫豬哥網,但大家心知肚明,叫豬哥網我不用一直中英切換,打起字來比較快。

剛才看到六先生的這篇,裏頭介紹Chickipedia;這正是豬哥網所欠缺的功能呀!

光是看美女真的會滿足嗎?只會愈看愈覺得空虛吧!如果有著美女的介紹,在看圖的同時就增加許多想像空間,增添不少趣味呀!讓認識圖片上美女的會員能夠增加美女的資訊,例如交過幾個男友、什麼學校畢業、生了幾個小孩等等,光想像就覺得很棒,獨孤前輩加油!

動態改變RDLC報表DataSource

先用設定好的DataSet(這裏叫Report.xsd)設定RDLC檔,以Report.rdlc為例。
接者在Asp.Net報表裏拉入Report Viewer,指向Report.rdlc,刪掉datasource那些用不到的東西,在aspx裏會看到類似
<rsweb:reportviewer id="ReportViewer1" runat="server" font-names="Verdana" font-size="8pt" height="400px" width="800px">
<LocalReport ReportPath="Report.rdlc">
</LocalReport>
</rsweb:reportviewer>

RDLC檔其實是一個xml,和Crystal Reports的rpt二進位格式大不同。用文字編輯器打開來看,會看到類似:<DataSet Name="Report_ReportList"> 或是<DataSet Name>Report_ReportList</DataSet Name> 這裏Report是我在.xsd檔裏定義的DataSet名稱,而ReportList是table名稱,知道這個DataSet Name後,就可以動態改變RDLC的DataSource。

用我寫的程式片斷舉例:
private void RefreshReport()
{
ReportViewer1.LocalReport.DataSources.Clear();
DataTable dt = getReportDataTable(); //這是我寫的private method
ReportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WebForms.ReportDataSource("Report_ReportList", dt));
}
很簡單吧!只要加入一個ReportDataSource,參數裏設定DataSet為相同名稱,再把DataTable傳入即可。要重新改變報表內容時,必須先執行
ReportViewer1.LocalReport.DataSources.Clear(); 
否則每次都只看到第一次傳入的內容。

星期二, 3月 25, 2008

另一個版本控制軟體--Mercurial

在下載OpenJDK時無意中發現OpenJDK已經轉換用Mercurial版本控制。有個很詳細的手冊在Distributed revision control with Mercurial

根據手冊上Mercurial compared with other toolsMercurial針對Subversion merge超弱這點有改進,害我也有點想跟進,有空得來看看這個Python寫的版本控制軟體。(我還不確定Mercurial能不能稱為SCM

參考:Converting from Subversion to Mercurial

星期一, 3月 24, 2008

DataTable Select的陷阱

今天在測試ZedGraph時,發現我的報表資料有錯,查了DataTable裏的內容並沒有問題,仔細檢查才知道出在 dataTable.Select("部門編號=12"); 這段。

原因很簡單,我寫的DataTable並沒有強制設定欄位的Type,所以只能把每個欄位都當做字串處理,要改成 dataTable.Select("部門編號='12'"); 就可以,特此誌之。

用ZedGraph畫統計圖

Update: 沒想到這篇居然變成Google搜尋ZedGraph第一篇中文網頁,不過還是誠心建議用Windows上的C#先看一下免費的圖表元件:Microsoft Chart Controls,除非你非得用.Net 2.0(Windows 2000)或是用Mono。 BTW,我並不想成為微軟MVP,所以本Blog並不是有問必答的喲^_^

才剛貼完上一篇,馬上就有位朋友丟過來一個LGPL Open Source元件的網址:ZedGraph

參考:A flexible charting library for .NET

利用OWC畫統計圖

VB超人告訴我,可以用Microsoft Office Web Components(OWC)畫統計圖,比起其他的Asp.net統計圖,又多了些互動功能(在用戶端有裝Office的情況)。

下載:Office 2003 增益集:Office 網頁元件
參考:
The Microsoft Office Web Components
ASP.NET Server-Side Charting with OWC11

在Asp.Net 2.0的開發模式中,只要放在bin下就算加入參考,所以鳥毅先開一個檔案系統的網站


再把從codeproject下載的專案裏的bin目錄複製過來,省得自己找dll檔,在專案總管按下重新整理即可


把Alvin Bruney寫的這段Code複製到Page_Load,變成
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. //First create a ChartSpace object to hold the chart
  4. ChartSpace objCSpace = new ChartSpaceClass();
  5. //Add a chart and provide a type
  6. ChChart objChart = objCSpace.Charts.Add(0);
  7. objChart.Type = ChartChartTypeEnum.chChartTypePie3D;
  8. //add chart titles and legend
  9. objChart.HasTitle = true;
  10. objChart.Title.Caption = "ASP.NET Charts";
  11. objChart.HasLegend = true;
  12. objChart.Legend.Border.DashStyle = OWC11.ChartLineDashStyleEnum.chLineDash;
  13. objChart.Legend.Position = OWC11.ChartLegendPositionEnum.chLegendPositionRight;
  14. //Populate with contrived data
  15. string strCategory = "Cars, Trucks, Vans, Big Rigs, Motorcycles, Mopeds";
  16. string strValue = "13,12,31,43,23,15";
  17. //Add a series to the chart's series collection
  18. objChart.SeriesCollection.Add(0);
  19. //load the category and value data
  20. objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
  21. (int)ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);
  22. objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
  23. (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue);
  24. //show the chart on the client
  25. Response.ContentType = "image/gif";
  26. Response.BinaryWrite((byte[])objCSpace.GetPicture("gif", 500, 400));
  27. Response.End();
  28. }

執行後結果:


詳細的物件模型請參考:HOW TO:尋找 Office Web 元件 (OWC) 程式設計說明文件與範例

說真的,這種COM物件的繪圖方式類似ProEssentials得一個個指定,我還是比較喜歡原生支援.Net的Crystal Reports

星期五, 3月 21, 2008

Free Chart controls for ASP.NET

電腦管理程式的承辦人說希望能有長條圖,因此找了一下幾個免費的元件:
不過說實話,如果沒有太特別的需求,內建的Crystal Reports就很好用,這個東西好像放在Server上要另外買。統計圖最有名的元件應該是Proessentials,我有下載試用一下,沒有像Crystal Reports和.Net整合的那麼好,而且一定要6.0版後才有支援UTF-8字元,敝公司已經買的5.0版就很可惜不能用(標題有堃會亂碼,好死不死敝公司有人的名字裏就有堃)。最後值得一試的是微軟自己的RDLC報表,雖然功能比不上Crystal Reports,但我的需求足夠了,而且預期會愈來愈強,應該就用RDLC了吧。

參考:
Visual Studio 2008-初窺Report Viewer 2008
ASP.NET中动态控制RDLC报表
RDLC报表使用

沒寫完的程式

最近把公司的電腦管理程式寫完,想把source open出來,不知道會不會有比敝公司更小的公司需要?但是因為過度客制化,很多設計變得非常差 Orz... 好像有人說,在公司開發的軟體版權就算公司的,所以並不是我想丟出來就可以。

另外幾年前玩龍博士魔術金字塔卡關,寫程式解題寫到一半就卡住。我有成功解出一兩題啦,但速度實在太慢了。主要的問題在於我把每個棋子視為物件,再用窮舉法解太慢,而且我的邏輯有錯,重覆率過高;同時也需要介面輸入題目,這部份用Java寫比較麻煩,所以就停工了:P

若能夠寫到可以正常運作,很想把source提供出來,但不知道會不會有侵權問題。如果有哪位大哥知道此種棋類該如何解,煩請指點一下小弟該如何去做,先謝囉~

免費的燒錄軟體InfraRecorder

雖然大部份的燒錄機都有附燒錄軟體,但在公司軟體不歸我管,借軟體非常麻煩。前一段時間都用CDBurnerXP,但最近有朋友介紹InfraRecorder,這是Open Source的產品,當然二話不說就跳過來。基本功能包括資料光碟、影像DVD、音樂CD等都有,也可以製成iso影像檔,對我而言足夠了。

對了,InfraRecorder有中文介面;如果覺得功能不夠強的話,就自己動手改吧!

星期四, 3月 20, 2008

又見免費防火牆

剛不小心又看到2個Windows用的Firewall:Webroot Desktop FirewallPC Tools Firewall Plus
暫時沒空試,看看重灌狂人那裏會不會有測試報告:P

參考:
電腦好貼士:Webroot Desktop Firewall
防護功能齊全的免費中文防火牆軟體:PC Tools Firewall Plus
支援 Vista 的免費防火牆 - PC Tools Firewall Plus

不是長尾的書

朋友丟來一個網址,據說這位女士的書熱銷八萬本,光靠賣書就賺進百萬。

所以她應該是超過若干本就能抽成,印象中有些出版社是用固定版稅,再刷時才有另外付錢。若以一本抽10元,就差不多有這位queen的收入,那麼算一下楚狂人應該賺了幾百萬,獨孤木應該也有六位數的收入...

朋友問我要不要寫本關於programming的書,我說別鬧了,程度好壞先不提,programming算是小眾市場,寫的很辛苦賺個幾萬塊還不如接case。電腦書賣得最好的應該是Office系列,其次是OS系列吧?不過市場大競爭也多,除了施先生的出版社,其他家應該沒辦法賣得太好,所以我完全沒考慮。當然囉,最近升級爸爸的良葛格和piggy以名講師身份賣的Java入門書銷路應該都還不錯,請繼續加油。

星期三, 3月 19, 2008

謀事在人、成事在天

再三天大家就會知道結果,鳥毅已經看到九五之尊的面相出現,因為洩漏天機會折壽,恕難奉告。葉教授和籃天威等人可能積許多福報,不怕折壽。

沒上的那位候選人也很優秀,各位別把勝負放在心上,畢竟謀事在人、成事在天。

參考:
歷史故事:謀事在人 成事在天
葉教授深談馬英九的八字
08卡位/籃天威大膽預言 謝長廷08坐大位
盲眼算命師 直斷謝長廷出線

星期一, 3月 17, 2008

FreeBSD 7.0 果然比較猛

忘記把FreeBSD 6.3的畫面抓下來 Orz 不過,在升級前我有確認過,Loading沒有跑到0.00過,不知道是不是FreeBSD 7.0 top的Bug呀XD

總之,就是拼了!在下把Mail Server從FreeBSD 6.3升級到7.0,再跑一次portupgrade -af,把所有的套件都升級,對,不是portupgrade -afP。以下是top畫面:



星期五, 3月 14, 2008

WretchXD不行了?

今天同學傳來一個網址,叫我去看看。
因為在辦公室不方便看,想回家離線瀏覽,就拿出WretchXD,結果居然沒辦法下載。
看到"E"這個字母實在很想抓,最後還是得靠獨孤老大的Girl Digger呀...
不過後面兩位的都抓不下來,獨孤老大加油,咱們的福利都靠你了。

星期四, 3月 13, 2008

Posting Acceptor ActiveX更新

FIX: Posting Acceptor ActiveX Upload Control Does Not Load if Internet Explorer 6.0 SP1 Is Installed(自動翻譯:如果安裝 Internet Explorer 6.0 SP 1 Posting Acceptor ActiveX 上載控制項不會載入 FIX:

剛才無意中看到這個更新,鼎新在EasyFlow用到Posting Acceptor這個微軟開發的上傳元件,但是在IE6SP1之後因為安全性被關閉。這是個老問題了,但台灣似乎很少人提到,鼎新的FAQ好像也沒提到。(敝公司的EasyFlow是2002年啟用,這個更新是2003年推出的,不怪鼎新)

我以前的做法是在user login時修改機碼,把 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{886E7BF0-C867-11CF-B1AE-00AA00A3F2C3}\Compatibility Flags數值改為512

解決法:下載q329326.exe,安裝後蓋掉原來的2個cab,再把原來html或asp裏的{886E7BF0-C867-11CF-B1AE-00AA00A3F2C3} 改成 {11D856F0-5660-4371-B131-C71A44F4E73E}

台灣真小

前幾天同事忽然問我知不知道鄭子璉,鳥毅說因為鄭子璉是VB超人的偶像,所以知道;原來鄭子璉是他大學同學。另外一位同事是leeym的大學學長,還有一位年輕有為的同事則是hlb的高中學長。

這麼小的一間辦公室,居然有三位同事和名人認識;世界真小,哦,該說台灣真小。

非戰之罪

朋友看到一些關於 VeryXD 的技術解疑,問我為什麼新創網站為什麼很多網站都用RoR?鳥毅的答案很簡單:練功。

Ruby On Rails這兩三年真是火熱到不行,因此一堆技術愛好者蜂擁而至前仆後繼勇往直前去學習,並且實作網站來練功。但同時RoR也是不斷改版,向前相容性並不是很好;一位同事談到PHP,認為幾乎每個open source的PHP portal,到一個程度就砍掉重練,沒有延續性。軟體的生命週期在企業中是很重要的事,就算是XP強調的快速改版,若原始碼三天兩頭就因為相容性需要大幅度改版,大概會被主管K到死。

看一下XDite在這篇說的:
VeryXD 平日的 PV 約是一天2萬,歷史尖峰是16萬。平常開一條就夠,歷史尖峰那次開了四條。Reverse Proxy 的用量大概是平常一天 5~7G,歷史尖峰 42G 。...
後來正式營運的時候筆者才發現一件寫小網站時不知道的事,就是 Rails 是個巨大的怪獸,非常非常非常的吃記憶體。
因為VeryXD以圖為主,因此流量會遠比文字為主的網站大,但與鳥毅曾任職的入門網站比起來,16萬的pageview實在不算很高呀...我並不是說RoR不好,但要有本事tuning RoR,必須對整個framework很瞭解,這點和asp.net相同,快速開發不知道framework幹了什麼事的人居多。
不論欲被 Google 收購,先練 python / java ?,用Java是向前相容性非常好的選擇。蔡學鏞在三月份的Run!PC也有提到,Java並沒有比.Net差,但IDE就沒有Visual Studio強。在下最近完成的內部系統,花了很大的功夫在刻ORM,結果VS2008拉LINQ就可以直接幹掉。所以難怪中小企業愛用.Net,這不是Java的錯呀!

星期二, 3月 11, 2008

升級到FreeBSD 7

前陣子才把Mail server升到FreeBSD 6.3,今天就先把Firewall升到FreeBSD 7.0。

這次升級因為在mergemaster就掛了,所以仍然得用光碟升級安裝。裝好後檢查一下原來的設定檔有沒有被更動,再製作個內含ALTQ的kernel就上線,目前沒什麼問題。

聽說FreeBSD 7.0有比較快,等我把Mail Server也換掉應該會有感覺XD

參考:
What's New in FreeBSD 7.0
Review of FreeBSD 7

Update:剛才看一下,loading還真是輕呀(印象中以前是0.01~0.03左右)
freebsd7firewall

再Update:FreeBSD 7.0-RELEASE Announcement有寫,FreeBSD 6.3以後內建freebsd-update,沒有的也沒關係,升級步驟:
  1. # fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz
  2. # fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz.asc
  3. # gpg --verify freebsd-update-upgrade.tgz.asc freebsd-update-upgrade.tgz
  4. # tar -xf freebsd-update-upgrade.tgz
  5. # sh freebsd-update.sh -f freebsd-update.conf -r 7.0-RELEASE upgrade
  6. # sh freebsd-update.sh -f freebsd-update.conf install
  7. # shutdown -r now
  8. # sh freebsd-update.sh -f freebsd-update.conf install
  9. # portupgrade -faP
  10. # sh freebsd-update.sh -f freebsd-update.conf install
  11. # shutdown -r now
根據 Rebuilding world 原來我升級時把順序弄錯了,正確步驟是:
  1. # make buildworld
  2. # make buildkernel
  3. # make installkernel
  4. # reboot
  5. # mergemaster -p
  6. # make installworld
  7. # mergemaster
  8. # reboot
個人經驗,一定要再跑一次 portupgrade -faP

星期一, 3月 10, 2008

WIPFW測試

因為政治力影響,代理人完全不懂unix;不得已的情況下,在下試著用Win2000 Server做Firewall,啟動ICS(NAT)後,再裝Comodo Firewall設定rule。

因為Comodo Firewall不支援NAT和port redirection,才出此下策。另外找到Routix NetCom支援NAT等,但免費版只能用前5個rule。

本來想用WIPFW做port redirect,結果在policy routing這關就先失敗,看來Windows很難滿足我的需求呀...

結果還是得多加一層firewall,既然代理人要傻瓜介面,在W2K外面包個pfSensem0n0wall好了。

星期五, 3月 07, 2008

Firefox存成png的addon

我以前用的Save As Image好像變成Abduction,但它在Firefox 3.0b4上有問題,而且似乎無法處理中文目錄。
另一個Screengrab就可以正常使用,所以就跳槽囉~

P.S. 這兩個套件都沒有正式支援到3.0b4,我是下載回來改xpi裏的install.rdf

防釣魚功能比較

今天好不容易把報表寫出來,整理email時看到:

忍不住就測試一下,先來看看IE7的結果:

IE7這樣有點遜呀....來看看Firefox 3:

星期二, 3月 04, 2008

GridView合併儲存格

修改自 藍色小鋪 豬豬泰芮陳 關於 GridView的合併儲存格這裏有類似的程式,但我覺得豬豬泰芮陳寫得比較好。我改成多欄位合併,其餘沒動。
[Asp.Net]GridView中根据前后列之间的关联关系合并单元格有更進階的做法,但不是我要的。

protected void GridView1_PreRender(object sender, EventArgs e)
{
int[] mergeColumns = { 0, 1, 3, 4 }; //要合併的欄位
foreach (int mergeColumn in mergeColumns)
{
int i = 1;
foreach (GridViewRow wkItem in GridView1.Rows)
{
if (wkItem.RowIndex != 0)
{
if (wkItem.Cells[mergeColumn].Text.Trim() == GridView1.Rows[(wkItem.RowIndex - i)].Cells[mergeColumn].Text.Trim())
{
GridView1.Rows[(wkItem.RowIndex - i)].Cells[mergeColumn].RowSpan += 1;
wkItem.Cells[mergeColumn].Visible = false;
i += 1;
}
else
{
GridView1.Rows[(wkItem.RowIndex)].Cells[mergeColumn].RowSpan += 1;
i = 1;
}
}
else
{
wkItem.Cells[mergeColumn].RowSpan = 1;
}
}
}

星期一, 3月 03, 2008

奇異果後傳

寫完奇異果離開了後原本以為可以不用再看到這位驚世駭俗的先生,沒想到還有後續。(不知道詳情請先看另一顆奇異果

竹科大廠主管的心臟果然不太強,還是說奇異果踢到鐵板?本來答應奇異果把email保留到1月底,奇異果又說些有的沒的,理由是要感謝前主管,硬是要留到2月底。由於敝公司沒啥機密資料,其實多留一個月沒什麼,但他在電話裏又一直講說那個XX電很硬,錄取標準很嚴格什麼,還很"好心"告訴我下次面試的時間。又說他因為公司離家太遠等等,所以要到本行的某某顧問公司,現在有幾個選擇等等...我實在是沒什麼耐心聽下去,就把話筒放在脖子上,等他講完再掛電話。

當天下午果然收到奇異果寄來的email,還寫他的錄取分數,也只有英文八十幾比較高,程式設計的分數才六十幾分,換做我才不敢給人看咧!雖然曾經是上市股王的電子公司確實不錯,但我也不需要靠你推薦吧!

2/27想說2/28要放假,早上趁著空檔就提前關他的email,沒想到十點多再接到他的電話,說最近很忙,沒時間寫感謝函云云,反正就是要我3/3再關email acount。

今天果然收到他的email,寄給原經理的轉給我一份,其中有句請容我引用:
我手邊恰好沒有XX課陳課長及各個課員的 E-Mail, 請代我向他們轉達我的謝意
這是怎樣呀!用了一年的OpenWebMail不知道有公用通訊錄這種東西嗎?

人外有人、天外有天

Update:在半年後才知道,奇異果確定要被趕走後,陳課長被公會副會長約出去吃飯,旁邊卻坐著奇異果的父母。都三十出頭的人了,又有MIT的高學歷,還要靠父母到處拜託,實在是$#%^&@...