要寫 PowerShell 的 script 是一件痛苦的事,因為不像 c# 有 Visual Studio 的 IDE 開發環境支援。
因此, PowerGUI 誕生了。請參考這裡
2008年12月30日 星期二
PowerGUI Script Editor
2008年12月29日 星期一
Sql Server 改 Computer name
Sql Server 在安裝前,必須先設好 Computer name。如果安裝後才想改Computer name,就會有些問題。如果實在需要改 Computer name, 請參考
2008年12月21日 星期日
第一次使用 Crystal Report, 感覺很差
使用 Crystal Report, 真的是吃了不少苦頭。
Crystal Report 的確有相當不少的優點。但也有不少的缺點。
- 對於開發人員不夠友善。例如想要全選/複製,就常常會碰釘子。小技巧:不要選到特殊的 image control,就可以多選。當多選時,找不到複製的編輯命令時,就代表有些 control 無法與別的 control 一起複製。
- 效能不佳。我想要使用 Crystal Report 輸出成 PDF,因為其輸出的 中文PDF 可以使用搜尋文字的功能,而Reporting Service 輸出的 中文PDF 卻不行。(20090217 見 http://msdn.microsoft.com/zh-tw/library/ms159713(SQL.90).aspx, 在 sql server 2005 sp3 已有 embbed font了,就可以搜尋)。但沒想到Crystal Report 輸出成 PDF 的效能卻奇差無比。每轉一張竟要 1.4 秒 (at Intel Core2 CPU 6300@1.86GHz, 3.00 GB Ram)
- 要license. Visual Studio 內附的是陽春版,只能同時 5 個 client存取。多了就會出 Exception. 不像 Reporting Service (Client, rdlc),是免費的。
- 買了開發版後,也有限制,PrintJobLimit 就是我碰的一例。
- 在開發機器裝了 Crystal Report 2008 後,可以開發了。但一旦重開機後,在 Visual Studio 2008 開啟報表,就會出現如圖一的嚴重錯誤。把整個 Visual Studio 弄掛掉。或者如圖二的錯誤訊息。圖二的錯誤訊息,相信寫 C++ 的人並不寞生,這是使用指標寫資料到memory,寫錯了長度造成的memory crash。
- 很秏資源。每產生一個 PDF 檔,伺服器Memory 就秏掉了2-3 MB,必須等到下一次的 Garbage Collection 時才會回收。在 C:\Windows\Temp 也需要產生 *.rpt 的暫存檔案。因為很秏資源,又無法改進,只好加入 PrintJobLimit 來限制出錢的客戶。雖然可以修改 registry 來修改限制的上限,那也只不過是倒果為因罷了。
我目前的建議:不要使用 Crystal Report,除非有特殊原因。因為感覺很差啦!
圖一:一打開就掛掉
圖二:有些則是
2008年12月18日 星期四
Print Job Limit 報表次數的限制
第一次使用 Crystal Report ,但在壓力測試時發生了問題。
在每經一段時間後,Web Server 就再也無法吃報表的需求了。
錯誤原因是:載入報表失敗
查到一個 resource http://blog.csdn.net/daisylh/archive/2006/12/12/1439312.aspx ,說明 ReportDocument 記得要 Close(), 所以我就改成如下的程式
ReportDocument customerReport = new ReportDocument(); customerReport.Load(reportFilePath); customerReport.SetDataSource(rs); ExportOptions exportOpts = new ExportOptions(); PdfRtfWordFormatOptions pdfOpts = ExportOptions.CreatePdfRtfWordFormatOptions(); exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat; exportOpts.ExportFormatOptions = pdfOpts; response.Clear(); response.Buffer = true; response.ContentType = "application/pdf"; customerReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, false, "aaa.pdf"); customerReport.Close(); customerReport.Dispose();可惜,沒有用。我發現 ExportToHttpResponse 執行完後,網頁就結束了。下面兩行的 Close() 與 Dispose() 是不會執行的。 改成如下的 using block,就可以了,
using (ReportDocument customerReport = new ReportDocument()) { customerReport.Load(reportFilePath); customerReport.SetDataSource(rs); ExportOptions exportOpts = new ExportOptions(); PdfRtfWordFormatOptions pdfOpts = ExportOptions.CreatePdfRtfWordFormatOptions(); exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat; exportOpts.ExportFormatOptions = pdfOpts; response.Clear(); response.Buffer = true; response.ContentType = "application/pdf"; customerReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, false, "aaa.pdf"); }
2008年12月15日 星期一
Vista 的 Opened Program,有些程式無法執行
一直很困擾我的一件事。我的 Vista 的 Opened Program,有些程式無法執行。
例如 Office 等。
然而,不使用Opened Program 或 Pined Program 來執行,改以 All program/Microsoft Office/...來執行就可以。
這樣好難過。
為什麼呢?今天終於狠下心來,找到了答案。
答案很機車,竟是 Context Menu item 不對。
所謂的 Context Menu item 即右鍵的快速Menu。如果其上有不對的項目,就會發生許多怪異的現象。
我的例子,就是安裝過 Foxy, 然後移除。然而 Context Menu 並未移除掉。(bug?) (天之聲:誰叫你安裝惡名昭彰的 Foxy...)
之後,就一直這樣了。
要如何解這個問題呢?我使用了shexview , 然後將 Foxy 的項目 disable 就完成了。
Hyper-V MMC Snap-In
使用遠端桌面來操作 Hyper-V MMC Snap-In時,有個常見的問題。也就是使用 mouse 進入 guest 時,會發生 Mouse not captured in Remote Desktop session. 的警告,如下圖。
此時,按照說明來試著安裝 Integration service ,卻怎麼樣也行不通。看來是我的天份不足了。
不過, Virtual Server 2005 可使用 Internet Explorer 來模擬 Console,反而 Hyper-V不行?這說不通了。
原來,Hyper-V也有類似的功能,只不過不能使用 Internet Explorer 而已。
參考 Description of the Windows Vista Service Pack 1 Management Tools update for the release version of Hyper-V ,安裝後就可使用 Snap-In 來操作了。
2008年12月11日 星期四
整合 Windows Vista 和 Office 2007 的基礎學習園地
整合 Windows Vista 和 Office 2007 的基礎學習園地
為了讓一般使用者更加了解 Windows Vista 和 Office 2007 的使用方法,我們在技術支援網站上特地彙整來至 Windows Online, Office Online 以及 TechNet 網站上有用的 how-to 文章,線上學習視訊和網路廣播等豐富學習資訊,敬請善加利用。立刻體驗...
線上立即傳送技術問題
選取一項產品來檢視此產品可用的支援選項
線上檢視問題處理狀況
登入 Windows Live ID 後,您就可以線上檢視 已傳送的問題處理狀況
IIS 6 上的 FTP Site 如何設定使用者目錄
找了一會兒。原來預設沒有「使用者目錄」的功能。
如果要建立,必須參考這一篇 http://www.microsoft.com/taiwan/technet/community/columns/insider/iisi0606.mspx
2008年12月8日 星期一
System.Security.Cryptography.CryptographicException: Key not valid for use in specified state
今日測試時,在下列第二行一直發生System.Security.Cryptography.CryptographicException: Key not valid for use in specified state 的錯誤。中文訊息是「機碼用在特定狀態時無效」
RSACryptoServiceProvider provider = cert.PrivateKey as RSACryptoServiceProvider;
RSAParameters signPrivateKey = provider.ExportParameters(true);
沒看過耶!查了 Google 大神也是無效。
結果,重匯 pfx (即有私鑰的憑證) 就好了?
真是怪
今日證實,是程式寫錯了。
使用provider.ExportParameters(true),即將私鑰匯出,這是不對的。
我只需要將私鑰拿來簽章即可。
如下
XmlDocument doc = new XmlDocument(); doc.LoadXml(origXml); //匯入私鑰 X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, certificateThumbPrint, true); if (certs.Count == 0) throw new CryptographicException("The certificate could not be found."); X509Certificate2 cert = certs[0]; RSACryptoServiceProvider provider = cert.PrivateKey as RSACryptoServiceProvider; SignedXml signXml = new SignedXml(doc); signXml.SigningKey = provider;