2011年2月21日 星期一

在.NET3.5的環境中使用TPL!

微軟目前最新釋出的.NET4.0環境中已經把大勢所趨的平行計算給納入標準的Lib中了,所以我們可以直接在.NET4.0的環境中直接使Parallel類別中的方法,體驗到平行計算帶來的好處,不過.NET3.5的環境就沒有直接內入Lib中...好在微軟有提供額外的Extension供使用者下載...http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx
下載之後是一個msi檔,click install之後預設的路徑為:C:\Program Files (x86)\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2838.0\Net35
底下有個System.Threading.dll把這個東西放入方案中的參考並在cs檔中using System.Threading;這個namespace就可以如同在.NET 4.0中使用TPL一樣,免去自己分配工作給Thread的麻煩。

2010年10月12日 星期二

IEnumerable介面問題---Linq相關


這是一個當我在把Linq實際應用在案子時所遇到的問題,錯誤訊息如下:
The non-generic type 'System.Collections.IEnumerable' cannot be used with type arguments

當我的Compile跟我抱怨的時候,我壓根不曉得這到底出了什麼樣的問題...
在使用Linq時我知道一定要引用System.Linq和System.Collections這兩命名空間
出問題的程式碼如下:
IEnumerable TURL = from c in root.Elements("TargetURL") select c;

其實問題就出在命名空間引用錯誤...使用Linq時除了System.Linq之外,另一個一定要引用的命名空間其實是System.Collections.Gereric,而這個命名空間就是Linq的核心。
Linq實質上就是引用了IEnumerable型別物件方法,對資料進行搜尋與維護。

而IEnumerable其實是IEnumerable介面的泛型版本,之所以說是因為很剛好的System.Collections也有IEnumerable介面...只是他是處理非泛型的集合。

MSDN是這樣說得公開能逐一查看非泛型集合內容一次的列舉值。


回到我的程式,就是因為引用的命名空間錯誤,所以才造成我Compile出現錯誤,其實這個錯誤可以用google查得到,另外一位苦主

下次在使用到Linq的時候要多注意命名空間不要引用錯誤。

2010年9月30日 星期四

解決DEB package安裝失敗後package移除不能

因為getdeb-repository deb package無法從網路上抓下金鑰導致安裝只能進行到一半,也無法移除getdeb導致每次更新完系統都會自動去完成這個不可能完成的安裝讓我很痛苦。終於在受不了的情況下去找得solution,以下就是我找出的solution。

當使用 apt-get remove package-name 或是 dpkg -r package-name 都移除不了時,就只好手動來一除了。

1. 找出 package 相關安裝檔案
dpkg -L package-name .... 列出的都移除

2. 將索引文件中的 package 相關訊息都移除
sudo gedit /var/lib/dpkg/status ... 找到package-name的部份全刪除

3. 重建索引
sudo apt-get update

以上大致上就可以解決這個問題...在不然就是安裝不會有問題的版本把訊息蓋過去....這是沒有辦法的辦法...

2010年9月10日 星期五

Response.ContentType的屬性

最近這一兩天在研究要如何匯出成xls表單,但是因為目前我的電腦的作業系統是Linux所以很多方法對我來說並不適用。
目前是把檔案轉成html然後存成xls檔案,用excel來開。這樣可以達成一樣的目的同時也是最方便的方式,不過因為本質上依舊不是excel檔所以仍有其限制,但是這樣的方式不需要安裝MS Office或是安裝MS 的 COM元件,也不需要用oleDB的方式去達成。
不過若是要用這種最方便的方式匯出表格,需要了解下面這個類別
System.Web.HttpContext.Current.Response
這個類別在我所找到的例子中大量的使用到...
而Response.ContentType是取得或設定HttpResponse中的資料格式(Gets or sets the HTTP MIME type of the output stream.)這是MSDN上面對於ContentType的解釋。
而這個屬性有很多值可以設定,像是這次要輸出成xls檔我們可以這樣設定:
.副檔名 -屬性值
.xls - application/ms-excel
HttpContext.Current.Response.ContentType = "application/ms-excel";
其他比較常見的有~
.avi - video/x-msvideo
.c - text/plain
.cc -text/plain
.css - text/css
.doc - application/msword
.exe - application/octet-stream
.gif - image/gif
.html - text/html
.ips - application/x-ipscript
.jpe - image/jpeg
.js - application/x-javascript
.mp3 - audio/mpeg
.pdf - application/pdf
.ppt - application/mspowerpoint
.txt - text/plain
.zip - application/zip

其實還有滿多其他格式的,不過最常用的應該就是這些了吧

2010年9月8日 星期三

Ubuntu 10.04 install IE7(可瀏覽)

剛剛趁著還早的時候終於把Ubuntu上面成功安裝IE7了!我最後是依照這篇的解法把IE7成功裝進ubuntu 10.04中

雖然很令人開心,不過不論是安裝前或安裝後還是遭遇不少的挑戰0rz...

在安裝前看了很多的網友心得不論中外都看了,不過實際裝起來依然是以失敗收場,今天本來想說作最後一次嘗試,就把這篇拿出來參考參考,這篇之前就找到了只是我當時想說我的wine版本是1.2版,而他的是1.1.42所以可能參考價值不大,沒想到他反而是唯一能讓我成功安裝的關鍵@@

不過雖然他幫我成功裝起來也可以瀏覽網頁,不過他有個致命缺點...那就是它只支援簡易的網頁,對於一寫應用上AJAX或是JavaScript的網頁他基本上就死了,button按下去不是沒有反應就是會死當。這樣對於我當初對他抱持的期待完全落空...

真的必須得承認Windows系統還是有其優勢和不可取代的地位,現在真的很多政府相關部門或是金融相關企業的網站都是寫出IE only的網頁供使用者使用。在其他作業環境要安裝IE卻有其難度,而支援程度也不完整。這樣對於其他作業系統的散佈來說確實是一大打擊。

追究這原因我們可以發現就是我們這些寫網頁的人因為貪圖自己的便利寫了一個only for IE的網頁所造成的,實在需要好好檢討檢討。