發表文章

目前顯示的是 2012的文章

ASP.NET產生Excel的幾種方式

圖片
還記得剛跨進程式設計這個領域的時候,當時有處理到一個問題,使用者在Web上面產生Excel檔造成記憶體崩潰的問題。查看了程式發現那時候的開發方式是使用【 Excel 物件模型來存取 】,但這種方式主要是運用在單機使用上,若在Web上面使用常常會有很多問題產生,例如 : 記憶體無法釋放等問題。 那時候剛進行,完全不知道該如何解決,老闆只好請我跟微軟詢問該如何解決,得到的答案確是Microsoft 不建議在Server端使用直接存取 Excel 物件模型的方式來控制 Excel 檔案,後來因為某些因素就離開了該公司,也沒有解決此問題,這個問題變成我寫程式以來最挫折的事情。但很幸運的是,後來所接觸的程式開發,除了報表外(可以透過ReportViewer幫我們產生),要匯出Excel的檔案都不是很複雜的,因此都可以使用Html表格畫表在透過改變ContentType的方式來產生,日子久了也漸漸淡忘這個悲慘的往事 ~"~。

Android 開發GoogleMap專案

圖片
前幾天把一個先前已開發好的GoogleMap專案移到另外一台電腦上開啟,卻發現GoogleMap地圖沒有辦法正常work,找了好久才突然想起,若要在模擬器開發GoogleMap的程式必須先去註冊一組debug key(金鑰),這個很重要每次都忘記~"~。 在Android上面開發GoogleMap並不是直接接元件拉過去就可以使用了,必須先去註冊一組Key,而且模擬器和實體機器(發佈版本)的使用方式又有些許不同,下面我就記錄一下整個開發的步驟。

HTC Sense3.0待機(鎖屏or關屏)模式下無法使用Toast提示訊息

圖片
最近在開發手機來電監聽的APP,有個需求就是要有電話打進來的時候,要跳出客製的來電訊息,等到我一切在模擬器上面測試都OK的時候,放到實體機器上面測試,馬上就破功,電話打進來的時候毫無反應,一開始我想說會不會是Android的版本關係,於是我就換了其它版本的模擬器,還是正常可以正常執行,但是我在這時候發現原來實機上面是會運作的,只是在待機模式下面程式都沒有反應。

解決Reflection找不到繼承其它類別之類別

圖片
前幾天說明了如何使用dynamic來取代Reflection的功能,寫完文章後自己又玩了一下,卻無意間發現另外的問題,如果要操作的類別與繼承的類別並不是在相同的dll的話會取不到類別,dynamic與 Reflection的結果都一樣, 在發生問題的當下以為是namespance寫錯的關係,不過反覆調整了幾次發現都不是,於是就陷入了混亂的思緒,這時候就證明了當你以呈現混亂的思緒還是離開當下的環境比較好,回到家洗完澡後就想到一個問題,會不會是子類別讀不到父親類別的參考(雖然我編譯時期有參考)但是編譯成dll檔後它們並不互相認識,於是我就很天才的把兩個dll放在同一目錄底下,然後很開心的一試,還是掛掉(理所當然的吧),再把父親類別跟子類別放在同一個專案下編譯就正常,當下覺得很奇怪。

NET4.0新特性 dynamic

圖片
以往我們如果有一個dll檔,如果要使用C#來呼叫,我們都會使用反射(Reflection)的方式來呼叫相關的Methods,我先前也有一篇文章有提到關於 Reflection的基本操方式 。 最近因為因緣巧合的情況之下發現了NET4.0所提供的新特性 dynamic ,根據MSDN的說法  dynamic 型別可讓它發生所在的作業略過編譯時期型別檢查 ,講白話文的意思就是dynamic可以讓C#語法有了類似VB的特性弱型別語言的特性,宣告的時候不需要知道型別,且編譯的過程中編譯器預設也不會對dynamic進行檢查。

動態Included JavaScript的問題

圖片
在寫元件的時候常常會需要Included一些JavaScript檔,最近遇到一個問題就是需要Included一個jQuery檔案,但是NET所提供的【Page.ClientScript.RegisterClientScriptInclude】會把檔案放在<form></form> 中間,這樣一來會有一些問題產生。 通常我們在寫JavaScript的時候,會習慣把JS寫在 <head><head>中間,如果頁面中有用到jQuery的話,必須要把jquery.x.x.js檔放在自己寫的JS上面,不然會發生找不到物件的情形產生。舉個例子來說,最近要寫一個在iframe載入完畢後要自動調整寬高,理論來說這麼簡單的語法,只需要透過JavaScript就可以輕易達成了( 之前的文章也有提到 ),但最近發現先前所提到的寫法在不同瀏覽器計算出來的高度有誤,或者無法正常運作的情況產生,經過多次測試後發現,其實使用jQuery就可以輕易的取得我們所需要的iframe的寬高(測試幾個瀏覽器IE7,IE9,Chrome,Firefox都正常),於是我就想說寫一個IFrame的元件來用。

VS2005 連接 TFS2010 無法正常連線解決辦法

圖片
這幾天因為環境的關係,不得已必須使用Visual Studio2005透過Internet來連線Team Foundation Server 2010,但是VS2005預設是沒有安裝Team Explorer,所以沒有辦法連線,網路上找了一下資訊,發現 程湘之間 有教人家如何安裝,我就大概說明要安裝哪些東西

GridView轉出Excel時出現System.OutOfMemoryException 的問題

這幾天在改善系統問題時出現了 System.OutOfMemoryException 的問題,由於這個錯誤訊息提示的關係,直覺是記憶體不足嗎?所以到了Server上執行該程式並監看記憶體使用狀況,似乎沒有很誇張,Google了一下,保哥有提到遇到此問題的解決辦法,按照保哥的方式調整發現,問題還在,所以就是程是本身的問題了。 

T-SQL使用遞迴的方式來查詢同一資料表

最近要調整公司原有系統機制的時候,由於資料架構的關係不得以必須使用到SQL來遞迴查詢一些資料,一開始我的想法本來是跟程式的觀念一下寫一個Function然後遞迴呼叫自己,但想來想去覺得這樣好像怪怪的,資料量大的時候怕會有效能問題,於是就上Google查了一下,果然有SQL本身就有提供類似遞迴的語法(SQL Server2005 + 的版本才支援)。

Windows Phone 7 取得GPS訊號

圖片
要取得GPS的訊號主要是透過 GeoCoordinateWatche 來取得,下面的範例是一個簡單的取得經緯度的語法。

Windows Phone 7 開發GoogleMap基礎說明

圖片
1. 要開發Bing Maps App前,必須先到官網註冊一組程式中必須使用到的Key才可以繼續進行下一個步驟。 Register Key  畫面如下:

Windows Server 2008 安裝 Windows Phone SDK 7.1

圖片
Windows Phone SDK 7.1正式釋出了,但是微軟的 官網 明確的說明該SDK支援的作業系統為Windows 7或Windows Vista。網路找一下答案,果然有人分享如何破解這個限制,先說明一下 kylin 分享的是線上安裝的調整方式,我試著用一樣的步驟來執行離線安裝檔的方式會失敗,但是只要把線上安裝的baseline.dat Copy到離線安裝檔那,就可以正常運作了。

C# WinForm使用新字型

圖片
前幾天突然有個問題,以前如果我們需要一個新的字型要使用,我們會將下載回來的字型檔安裝到字型裡面後才繼續使用,但是問題來了,如果我寫了一支程式然後那支程式裡面需要使用到非系統預設的新字型,那麼我們就必須要想辦法讓動態的載入或者安裝字型,因此我上網搜尋了一下整理出以下幾種方式可以進行。

Objective-C 字串相加方法

在C#中如果只要使用同一變數的字串相加只需要使用+=就可以達到我們想要的結果,可是Objectiv-C可就沒有簡單了,必須透過字串的Methods來完成,自己記一下免得下次又忘了,詳見以下語法。

讀寫app.conifg檔案

有時候我們在寫WinForm程式的時候,若沒資料庫而又必須儲存一些參數以方便後續使用的時候,有幾種方法。1. 自己寫文字檔或xml檔儲存,這個我就不在說明了。2. 利用app.conifg來進行資料存取,下面我就針對這項進行簡單的說明。 由於我要利用appSettings來進行存取,因此要存放的檔案必須為基本資料型態的格式,也就是如果你要存放的檔案有多筆、陣列、DataSet、DataTable(雖然可序列化)等等,皆不適用本範例。

WinForm程式實做多語系

//http://www.dotblogs.com.tw/yc421206/archive/2011/02/21/21482.aspx  //http://www.wretch.cc/blog/bigdstut/15822510 string language = this.Input_Language.SelectedValue.ToString(); System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language); ResourceManager rm = new ResourceManager("PrimeEagle.Leeder.GPSViewer.Form_Setting", Assembly.GetExecutingAssembly()); this.Label_UTCTime.Text = rm.GetString("Label_UTCTime.Text"); this.Label_Heading.Text = rm.GetString("Label_Heading.Text"); this.Label_Rateofturn.Text = rm.GetString("Label_Rateofturn.Text"); this.Label_Speed.Text = rm.GetString("Label_Speed.Text"); this.GroupBox_Position.Text = rm.GetString("GroupBox_Position.Text"); this.Button_DefaultPosition.Text = rm.GetString("Button_DefaultPosition.Text");

iOS關閉螢幕小鍵盤

圖片
我們常常在設計UI畫面的時候,會希望User輸入完一個資料欄位後可以關閉小鍵盤(自動或被動皆可),iPhone並不像Android有一個回上一動作的按鈕,因此我們會希望讓User隨意點選一個地方就自動關閉螢幕小鍵盤。在實際操作的過程中,發現有兩個物件的使用方式有點不太相同,因此我在下面會針對這兩個物件進行說明。