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的網頁所造成的,實在需要好好檢討檢討。

2010年9月7日 星期二

wine的初體驗

今天來公司最主要是把網路環境弄好XD
因為公司的內部網頁是 ie only 嘗試用過fire fox和google chrome都不行 0rz

雖然很爛但是沒辦法...在Linux下想用ie目前比較方便的作法就是用wine搭配winetricks來下載並安裝ie瀏覽器。

不免俗的先介紹wine和winetricks是何方神聖:
wine wiki:http://en.wikipedia.org/wiki/Wine_%28software%29
winetricks:http://wiki.winehq.org/winetricks

簡言之,wine就是夠在Linux上執行windows的平台,而wintricks就是能夠幫您下載windows所需的函式庫,感覺很像是ubuntu上的lazyscript, XD。

下載wine的方式很簡便,依照官網的說明把來源加入進去後
sudo apt-get update
sudo apt-get install wine 就好,或是使用Synaptic這套GUI介面的套件管理程式下載

我是使用Synaptic安裝,不過在安裝過程中它一直卡在 ttf-mscorefonts-installer,terminal畫面則是顯示ariald32.exe這東西下載不下來Http request不到,上網找了解答對岸有人有提出solution,在這裡
下這行指令:sudo aptitude purge ttf-mscorefonts-installer ubuntu-restricted-extras

就可以把這問題給解決了。
目前先紀錄到這裡,看來wine還有些地雷要踩踩。

2010年9月6日 星期一

Ubuntu10.04裝mono2.6

說到會安裝mono這套在linux上面可以開發ASP.NET的平台,其實都是因為工作上會需要用到。因為我才剛進公司不久9/1進去到今天也才上班日第三天,所以並沒有個人的電腦,而我為了不悶到發慌也就只好帶著自己的 Lenovo SL410 去公司解悶順便練習在 Linux 上面開發ASP.NET 的應用,讓 Linux 可以跟 Windows 更無間隙,終極目標就是未來都使用 Linux 系統,連玩遊戲也要用 Linux XD。

關於Mono到底是什麼我想 Wiki有很詳細的說明:

Monodevelop官網:http://monodevelop.com/

會分成Mono和Monodevelop我們可以先想成一個是編譯器另一個是IDE,所以才有這樣分成兩個的情況,不過我想大多數的人應該都是一起裝得,畢竟有整合環境的話開發應用會快很多 :D 。

今天一早去公司的時候我原本想說自行下載原始碼來編譯,但是編譯完
libgdiplus-2.6.7、mono-2.6.7之後要安裝其他的packeg就會出現路徑問題,因為實在是煩不盛煩所以就放棄自行編譯了 0rz 。

最後還是去投靠 badgerports 這個非官方的計畫,雖然是非官方但是他裡面所提供的服務卻是相當棒!預設來說 Ubuntu 10.04 的 mono應該是2.4版,但是用這個計畫所提供的solution卻可以讓你無痛升級到mono2.6 版!這樣當然超方便的啊~我也就義無反顧的投靠它了XD。

為什麼會這麼執著於升到mono2.6呢?貼個 release note出來~ Release_Note_Mono 2.6 我們可以看到這個版本可以支援到一小部份的 C# 4.0 和 ASP.NET 4.0。另外也修正不少的bug,還有一個很大的原因,就是我比較喜歡用新的XD。

好啦~反正就是很無腦的就把mono給安裝完畢,也可以直接把先前寫得code拿來編譯了 :D 。以後公司的電腦來了,就灌灌Windows吧~同事都是用Windows就自己用Linux顯得很不合群XD。

最後貼上一個我常看的部落格:如何將

2010年6月1日 星期二

[Ubuntu]套件更新GPG驗證失敗

當下達 sudo apt-get update 時出現:
W: GPG error: http://ppa.launchpad.net hardy Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY 6AF0E1940624A220

GPG Key是用來驗證正確的軟體來源,保護電腦免於惡意軟體的威脅,因此有必要解決驗證失敗的問題

Step 1 →
使用 keyserver來尋找 KEY_ID
語法:gpg --keyserver keyserver.ubuntu.com --recv-key [KEY_ID]
ps.這裡的 KEY_ID 就是 6AF0E1940624A220

在終端機輸入下列:
gpg --keyserver keyserver.ubuntu.com --recv-key 6AF0E1940624A220
若出現下列字樣gpg: 正在請求金鑰 0624A220 自 hkp 伺服器 keyserver.ubuntu.com
gpg: 金鑰 6AF0E1940624A220: "
Launchpad PPA for OpenOffice.org Scribblers" 未改變
gpg: 處理總量: 1 gpg: 未改變的: 1代表這個金鑰屬於「Launchpad PPA for OpenOffice.org Scribblers」

Step 2 →匯出存成GPG檔
gpg --export --armor 60D11217247D1CFF > ooo.gpg

Step 3 →匯入GPG檔
sudo apt-key add ooo.gpg

Step 4 → 重新執行
sudo apt-get update
就不會出現錯誤了


2010年5月26日 星期三

How to Install Pidgin 2.6.x in Ubuntu

這是提供 solutioin 的網址
http://www.ubuntugeek.com/install-pidgin-2-6-0-in-ubuntu.html

Method:

1.Download all package here.
http://www.getdeb.net/app/pidgin

2.After download all package type follow command in terminal
sudo dpkg -i packagename

3.edit /etc/apt/source.list
sudo gedit /etc/apt/source.list or sudo vi /etc/apt/source.list

4. add follow lines in file
for junty version (Ubuntu 9.04)
deb http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu jaunty main

for intrepid version (Ubuntu 8.10)
deb http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu intrepid main

5.add GPG key using the following command
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 67265eb522bdd6b1c69e66ed7fb8bee0a1f196a8

6.update the source list
udo apt-get update

7.Install pidgin using following command
sudo apt-get install pidgin

2010年5月4日 星期二

在 Linux 下安裝OpenOffice

Step 1.到官方下載 .deb 檔案:
http://download.openoffice.org/other.html

選擇:Download Full Istallation Sets
再從中選擇適合的版本...我選的是「正體中文3.2.0 Linux 32-bit DEB」...

Step 2.移除OpenOffice 2.4版本:
sudo apt-get remove --purge openoffice.org-common

Step 3.進入解壓縮後裡面的 DEBS 資料夾:
sudo dpkg -i *.deb

dpkg → 操作deb套件包的指令
-i → dpkg的參數,代表安裝

ps.裡面有 "DEBS" "licenses" "readmes" "update"四個資料夾
DEBS很多.deb檔...請進入該資料夾執行上面的指令

Step 4.安裝選單:
cd desktop-integration
sudo dpkg -i *.deb

Step 5. 完成!

2010年4月27日 星期二

NS2中新增Agent

撰寫ns2模擬器的時候,常會需要自行撰寫 agent 來驗證自己的系統是否能達成預期的功效

但是要在ns2中使用本身沒有提供的 agent 是需要在ns2中作些修改才能使用的

因此第一步就是在ns2中新增一個 agent.

Step 1.
把自訂的 agent 的資料夾放入「ns2 資料夾」中,名稱自訂(ZoneAgent)
「ns2資料夾」就等於下面這一串
ex. /home/program/ns-allinone-2.34/ns-2.34

就放在這個資料夾中
Step 2.
修改「ns2 資料夾」中的 Makefile.in
於 OBJ_CC= 該處加上 ZoneAgent/ZoneAgent.o

Step 3.
修改「ns2 資料夾」中 /common/packet.h 加上新的封包型態

ns2.32 之前
      在 enum packet_t 加上 PT_HybridZone
      ps.PT_NTYPE 需放置最後面

      class p_info 的 public:p_info(){}內加上
      name_[PT_HybridZone]="PT_HybridZone";
      ps.PT_NTYPE 需放置最後面

ns2.32 之後
      static packet_t PT_NTYPE 前加上
      static const packet_t PT_HybridZone=??
??是一個尚未用過得數字
但是請注意,這組數字一定要比 PT_NTYPE 的數字還小

      在class p_info 的 public:static void initName(){}內
name_[PT_NTYPE]= “undefined”; 前加上
name_[PT_HybridZone]=”ZoneAgent”;

Step 4.
開始編譯
case 1. (有改 Makefile.in 或 xx.h 時)
自「ns2 資料夾」中執行 ↓
./configure; make clean; make depend; make

case 2 (只有改 source code 亦即 xx.cc 時)
在「ns2 資料夾」中執行 make

以上資料參考至: sokoyo's 隨手記