tag:blogger.com,1999:blog-71485412024-03-13T12:36:01.133+08:00BigSan's Blog永不關機的世界BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.comBlogger107125tag:blogger.com,1999:blog-7148541.post-45675897744417534482010-05-07T23:07:00.000+08:002010-05-07T23:07:00.154+08:00我要獨立的 MSDN Helper for VS2010VS2010 有很多很棒的新玩意兒, 但是最讓我不習慣的就是那本 MSDN Library 竟然變成 Browser 版了, 而且沒有索引, 實在太難用了, 上網查了一下, 果然有人有相同的困擾, 參考網址: http://bit.ly/aRs7sY 簡單記錄一下步驟: 確定 Help 安裝在 local 下載並安裝 Help Viewer Power Tool extension for VS2010(也可以從 VS2010 內的 Extension Manager 安裝) 這樣就可以了, 現在的 Help 就會多兩個 tab, search & index, 可是還是 in-browser 的, 如果想要 standalone 的呈現方式, 那就要再多兩個步驟 先確定工具列中的 Help Library Agent 己經關閉BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-51488906696408169142010-04-13T23:43:00.000+08:002010-04-13T23:43:00.315+08:00Google Chrome 4 (42898) 最小字型設定用 Google Chrome 瀏覽 codeplex 網站的討論區都會看到像以下的畫面 左側排版有點亂掉, 打開 Chrome 的開發人員控制台試著調了一下 css, 發現字型設到某一個大小之後, 就不能再更小了, 所以才會導致版面跑掉, google 了一下解決方法, 如下: 先關閉所有的 Google Chrome 程序 找到 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default 底下的 Preferences 這個檔案, 用記事本打開它 找到 "webkit" 底下的 "webprefs": {} 區段, 加入下面兩行就可以了 "minimum_font_size": 9, "BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-49333563560819362552010-03-23T12:43:00.003+08:002010-03-23T12:43:00.155+08:00throw 和 throw ex 的差別看看你是否也寫過以下的 code:
try
{
// do something
}
catch (Exception ex)
{
// do something
throw ex; }注意 throw ex; 這一行, 它的用意只是BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-52898537089529908832010-03-13T09:21:00.001+08:002010-03-13T09:23:18.691+08:0026G (260億) 相素巴黎美景http://www.paris-26-gigapixels.com/index-en.htmlBigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com1tag:blogger.com,1999:blog-7148541.post-75432942742323656812010-03-13T08:54:00.001+08:002010-03-13T08:55:54.229+08:00LINQ to SQL changes in .NET 4.0source: http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
Change listPerformanceQuery plans are reused more often by specifically defining text parameter lengths (when connecting to SQL 2005 or later)
Identity cache lookups for primary key with single result now includes query.Where(predicate).Single/SingleOrDefault/First/FirstOrDefault
Reduced query execution overhead when BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-5865371318042832532010-03-02T23:34:00.000+08:002010-03-02T23:34:00.246+08:00在 Ubuntu Apache 下架設 Mercurial Server 筆記 確定安裝好 apache2 dpkg –l  | grep apache2, 若沒裝則用 sudo apt-get install apache2 安裝 變身成 root $ sudo su 建立 hg repositories 和 cgi-bin 的存放路徑 # mkdir /var/hg # mkdir /var/hg/cgi-bin # mkdir /var/hg/repos 複製 hgwebdir.cgi 到指定位置, 並更改權限為可執行 # cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /var/hg/cgi-bin/ # chmod a+x /var/hg/cgi-bin/BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-63281348374357183082009-04-22T16:17:00.001+08:002009-04-22T16:19:03.964+08:00ui.datepicker.js 會破壞 Visual Studio 2008 的 intellisense在引入 jQuery ui 套件中的 ui.datepicker.js 之後, 出現了 "'jQuery.support.htmlSerialize' 是 null 或不是一個物件" 的錯誤, 造成 VS2008 的 intellisense 失效, 雖然並不是那麼依賴 intellisense, 但是看到錯誤訊息就是不舒服, 所以就花了點時間找了一下到底是什麼地方造成的錯誤, 當然先從最可疑的部分(非 funciton 定義的 code)開始找, 在最底部發現以下的 code: $.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
$.BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-83943671331767347192009-02-18T08:54:00.001+08:002009-02-18T08:54:34.869+08:00取消正在執行的 WebService (ASP.NET AJAX)假設我們有一個 Web service 是 Demo.Service1.SayHello, 如果我們想要在發出要求之後能夠取消的話, 可以用以下的方式 1. 宣告一個 executor 變數來存放等會兒發出的 web service request 2. 新增一個 invokingRequest 的事件處理, 像這樣 var executor = null;
Sys.Net.WebRequestManager.add_invokingRequest(function(sender, args) {
executor = args.get_webRequest().get_executor();
})
3. 最後再寫一個函式在你想要取消的時候呼叫, 以取消 web service request
function abortRequest() {
if (BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-16775931744865928892008-12-27T23:13:00.003+08:002008-12-27T23:13:45.826+08:00Unable to load DLL 'sqlceme35.dll'在下載 Visual Studio Team System 2008 Database Edition GDR 安裝在我的 Vista x64 上之後, 竟然沒辦法建立 Database 專案, 在新增專案的時候, 出現了如下圖的錯誤訊息! 搜尋了一下電腦並沒有發現這個檔案, 從名字看起來應該是和 SQL Compact Edition 有關, 可是又無從得知是哪一個套件含有這個檔案, 只好猜猜看了, 和 SQL CE 相關的套件有分 ServerTools, DesignTools, Runtime 三種, 而且又有區分 x86 和 x64 的平台, 而且還得要是 SP1 的版本才行, 實驗了一下後發現 Microsoft SQL Server Compact 3.5 SP1 是 Runtime 套件, Microsoft SQL Server Compact 3.5 SP1 BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-45254777266811517652008-12-27T23:13:00.001+08:002008-12-27T23:13:24.755+08:00Safari 和 ASP.NET Menu 控制項早在 ASP.NET 剛推出之時就一直強調能夠適應不同的用戶端產出對應的 Markup Code, 可是沒想到 Menu 控制項在 Safari 卻出了問題, 看了一下產出的網頁原始碼, 發現產出的 HTML 不一樣, 當時的第一個直覺反應是想到 ASP.NET CSS Friendly Control Adapter 專案, 應該和它有關, 一定是套用到了不同的 ControlAdapter 才會產出不同的 HTML, 所以如果要解決這個的問題, 應該也可以採用和它相同的技巧才對! 找到 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers 資料夾底下的 mozilla.browser 檔案, 裡面明白的寫著 就因為那個 controlAdapter 導致 Safari 在產出 Menu 的 HTML 時BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-8066604468905776102008-10-04T07:20:00.001+08:002008-10-04T07:20:55.513+08:00解決 ADO.NET Data Services 搭配 LINQ to SQL Classes 的問題在 MSDN 或是網上看到的 ADO.NET Data Services 範例通常都是搭配 ADO.NET Entity Data Model 來展示, 比較少看到使用 LINQ to SQL Classes 的案例, 後來自己試了一下, 才發現原來是因為使用 LINQ to SQL Classes 會有一些小問題, 就是 Table 的 Key 必需要符合 {TableName}ID 的命名原則, 否則就會產生如下圖的伺服器例外, 但如果是使用 ADO.NET Entity Data Model 的話就不會有這樣的問題!   要解決這個問題是有方法的, 一是打開 .dbml 檔將類別的屬性名稱改成 TableNameID 的格式, 但是這樣好像有點笨, 僅適合用在剛開始開發的階段, 否則光測試就要人命了, 另一種解決方案比較優, 是利用 BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-20568976169391810112008-09-27T01:01:00.003+08:002008-09-27T01:01:38.611+08:00巢狀 using 排版 原來的格式 using (Rijndael aes = RijndaelManaged.Create())
{
using (ICryptoTransform cryptor = aes.CreateEncryptor(rgbKey, rgbIV))
{
using (CryptoStream cs = new CryptoStream(output, cryptor, CryptoStreamMode.Write))
{
byte[] buf = new byte[8192];
for (int len = 0; (len = input.Read(buf, 0, buf.Length)) > 0; )
{
cs.WriteBigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-51966481547074982512008-09-27T01:01:00.001+08:002008-09-27T01:01:09.180+08:00Change default code access security policy with caspol.exe為了解決讓網頁中的 .NET 元件能夠存取剪貼簿問題, 需要做兩件事, 第一件是先將該網站加入信任網站列表, 第二件是調整 .NET Framework 針對信任網站的預設安全性, 要從 Low Trust 調整為 Medium Trust 第一件事比較簡單, 就略過不提, 第二件事就比較複雜一點, 如果 user 的電腦有裝 .NET Framework SDK 的話(通常是不太可能) 還可以透過系統管理工具裡面的 Microsoft .NET Framework 2.0 Configuration Tool 來調整, 否則的話, 最快最簡單的方式就是透過 caspol.exe 這個 .NET Framework 2.0 提供的指令來完成, 如下: 變更 Trusted 站台預設的安全性為 LocalIntranet - Medium Trust (預設為 Internet - BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-56854487405756401052008-09-27T01:00:00.001+08:002008-09-27T01:00:32.439+08:00Enable trace log of HttpWebRequest之前為了解決一個 .NET 1.1 的 HttpWebRequest.KeepAlive 屬性所造成的 Proxy-Authenticate 失敗問題, 在尋找答案的過程中不小心又多學到一招關於 .NET 內建的 Trace 功能, 其實早在很久以前就曾經用 Reflector 在 System.Net 下面的類別中看到一些和 Log 有關的程式碼, 只是那時候沒有多去注意該怎麼把那些 Log 資訊顯示出來, 這次碰巧看到, 順便記錄一下!! 啟用 Log 的方式就是仿照以下的格式修改 config 檔, 針對想要觀看 Log 的類別調整一下注解即可! 要注意的是記得在正式出貨前關閉此 Log, 否則效率會很差! <?xml version="1.0" encoding="UTF-8" ?>
<configuration>BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-20413362461061766472008-08-31T15:26:00.005+08:002008-09-26T14:14:56.485+08:00Enable FILESTREAM Feature in SQL 2008如果在安裝的時候沒有 Enable FILESTREAM 功能的話, 可以在安裝完後, 按以下步驟執行: .最後再執行以下句子就可以了!EXEC sys.sp_configure N'filestream access level', N'0'
GO
RECONFIGURE WITH OVERRIDE
GO
keywords: sqlserver, sql2008, FILESTREAMBigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-52929271576289563612008-08-31T15:26:00.004+08:002008-09-26T13:59:13.294+08:00.NET 1.1 WebRequest KeepAlive 和 WebProxy.Credentials 的奇怪現象發生在一個 .NET 1.1 的 App 上的問題, 簡化後的程式碼如下:HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.KeepAlive = false;
request.Proxy = new WebProxy(proxyServer);
request.Proxy.Credentials = new NetworkCredential(userName, password);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();因為某種原因, 在一開始時刻意將 KeepAlive 屬性設為 false, 導致了這個奇怪現象的發生, 而且只會在 .NET BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-39083117311991450302008-08-31T15:25:00.001+08:002008-08-31T15:25:28.481+08:00SQL Server 2008 沒有 Surface Area Configuration Tool好不容易等到 VS2008 SP1 出來, 終於可以順利安裝完 SQL 2008, 卻發現原來在 SQL 2005 內的兩個工具不見了, 它們是: Surface Area Configuration for Services and Connections Surface Area Configuration for Features 它們通常一個是用來設定開放外部電腦透過 TCP/IP 連線, 一個是用來開啟 clr 或是 database mail 的功能用的, 到了 SQL 2008 這個兩個工具都消失了, 那該怎麼做相關的設定呢? 關於第一個 Services and Connections 的設定, 現在可以在 SQL Server Configuration Manager 這個新工具中進行設定, 像 TCP/IP 的設定就可以在 SQL BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-15326900080507813852008-08-09T01:15:00.005+08:002008-08-11T09:15:19.884+08:00透過 FontFamily.GetName 取得特定語系的字型名稱一個簡單的列舉就可以找出系統內字型的特定語系名稱: foreach (FontFamily f in FontFamily.Families)
{
Console.WriteLine(f.GetName(0) + ":" + f.GetName(0x409));
}
在尋找答案的過程, 意外的多學了幾個關於 LanguageID 的小知識, 原來 language ID 是一個 16 bit 的值, 由兩個部分組成, primary language ID 和 secondary language ID, 結構示意圖如下:
其中 Sublanguage ID 僅佔了 6 bits, 一閞始困為沒注意到所以導致計算的結果有誤, 後來仔細看才發現原來兩部份的長度是不同的, 舉個實例來說明一下:
// winnt.h
//
// Primary BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-4563166053809701972008-08-09T01:15:00.003+08:002008-08-09T01:15:30.591+08:00使用 ADO.NET 接回 SQL Server 的 PRINT Message常看到有人被這個問題困擾, 自己以前也曾經被這個問題所苦, 可是其實這個問題是很容易解的, 看範例: using (SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=SSPI"))
{
conn.InfoMessage += new SqlInfoMessageEventHandler(SqlConnection_InfoMessage);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "DBCC CHECKIDENT ('BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-90541351314337857172008-08-09T01:15:00.001+08:002008-08-09T01:15:18.489+08:00SQL Server 2008 RTM 出現了今天在逛微軟網站的時候, 突然發現上週還是 RC0 版本的 SQL Server 2008 的下載連結, RC0 的字樣不見了, 原本預計 7/31 發行的 RTM 版本, 在 8/6 出現在 MSDN 的下載區, 想要嚐鮮的朋友們可以去下載 180 天的試用版來玩玩了! BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-6428256208746325152008-07-26T12:56:00.001+08:002008-07-26T12:56:11.464+08:00用 JavaScript 複製網頁上的圖片到剪貼簿在 IE 中很簡單就能辦到, 至於其他的瀏覽器......目前還沒這個需求, 先擱著~~~~~ var img = document.getElementsByTagName("IMG")[0];
var rng = document.body.createControlRange();
rng.add(img);
rng.execCommand('Copy');
真是簡單到不行! 可以看出 Microsoft 當初那群規劃設計 IE 的人實在是太厲害了!!
Keywords: clipboard, ie, copy image, javascript BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-66752586021328977492008-07-26T12:04:00.001+08:002008-07-26T12:52:12.150+08:00變更 ChartFX 7.0 的輸出路徑ChartFX 是一個很強大的圖表軟體, 特別是到了 2005 的版本之後, 運用了 DHTML 和 AJAX 的技術, 讓原先要透過安裝 ActiveX 才能達到的效果, 也可以直接在網頁上呈現, 而且互動性也像 ActiveX 一樣的好, 但是代價就是要多付出一些 server 和 client 之間資料的來回傳送! 在實際使用 ChartFX 7.0 開發 Web App 的時候,  發現了一個現象, 就是如果透過 Visual Studio 內建的 WebDev.WebServer.exe 啟動的話, ChartFX 的暫存檔會輸出到 ~/chartfx70/temp/ 底下, 可是當佈署到 IIS 之後, 它會在 WebSite 的根目錄下建立一個 /chartfx70 虛擬目錄, 這時候如果透過 ISA 將內部網站發佈出去的話, 除了要開放該 Web 應用程式的BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com2tag:blogger.com,1999:blog-7148541.post-87852228157494220882008-07-26T12:02:00.001+08:002008-07-26T12:57:58.430+08:00/CCITTFaxDecode /ASCII85Decode /DCTDecode為了要擷取出內嵌在 PDF 檔中的影像, 稍微研究了一下 PDF 的規格, 一開始的目的是要解出其中的 TIFF 檔, 看起來好像挺簡單的, 因為從 PDF 中可以很容易的就把 TIFF 的 stream 取出來 (找到 /Filter /CCITTFaxDecode 的區段, 後續出現被包在 stream.....endstream 中的就是了), 但是結果當然並不是把那段 stream 存檔這麼簡單就行了, 因為 TIFF 本身還有一些檔頭和檔尾資訊必須處理, 所以又得再花精神去研究 TIFF 的規格(TIFF 6.0 Specification).....然後依據 pdf object 的描述自行寫入相關的檔頭和檔尾就可以了(看起來還滿簡單的吧)! 檔頭的部分很簡單, 因為只有 8 個 bytes, 很容易理解, 麻煩的是後面檔尾部分的 IFD (Image File BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-59161083621401874012008-07-25T13:40:00.001+08:002008-07-25T13:40:39.558+08:00Failed to initialize the Common Language Runtime (CLR) v2.0.50727 with HRESULT 0x8007000e奇怪的 SQL Server 問題, 在 Google 上找了很久, 好不容易找到一個看起來好像是解決辦法: http://forums.asp.net/t/1098345.aspx "Finally found out the solution for it. When you installed SQL server, the installation does not automatically allocate memory to CLR. You need to explicitly allocate atlease 500 MB ram for it." 可是它沒有教說要怎麼 "allocate atlease 500 MB", 真是令人失望! 最後終於在 Microsoft Connect 網站找到答案: http://BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0tag:blogger.com,1999:blog-7148541.post-57108660364551018622008-06-16T10:21:00.001+08:002008-06-16T10:21:13.986+08:00在64-Bit作業系統執行會呼叫到32-Bit元件的程式前陣子在 64-Bit 的 Windows 2008 上發佈了一個網站程式, 雖然過程中有點小障礙(因為 IIS 7.0 的介面完全不一樣, 很多東西要重新找一遍, 還有 web.config 要透過 appcmd 來作 migrate, 除了這兩個障礙以外, 其他的都還算簡單), 但是還是順利完成 可是後來在做測試的時候, 發現有一個呼叫 COM 元件的網頁一直出現錯誤, google 了一下說是因為在 64-Bit 環境中使用到 32-Bit 資源所導致的, 解決的方法是 you need to change CPU type from “Any CPU”, to “x86″, 可是這是 Web Application, 上述的解決方法根本不可行, 一定還有別的出路, 後來終於在 IIS 的 Application Pools 找到了BigSan's Bloghttp://www.blogger.com/profile/11491704891034585349noreply@blogger.com0