2011年5月10日 星期二

.net excel

這天為了快樂的在程式中使用excel
開心的使用了ADO.NET的Microsoft.Jet.OleDb
哇讀取excel真方便啊
しかぁぁぁぁし
卻發生了有資料不見的情況= =
原來是用OleDb的寫法
系統只會去偵測前8列的欄位型態
會碰到如果前8列的A欄位為皆為數字,當第9列後A欄位為文字時,則會無法辦別而讀到NULL
可用HDR=NO;IMEX=1;解決
(HDR)使EXCEL中第一列欄位名當作內容用,(IMEX)當欄位為混合型態時以文字型態優先(也是只檢查前8列= =)
雖然有人提出改機碼的方法使偵測值為0
但我還是不滿足
所以我找了NPOI

幸運的是裡面有別人寫好的method可以用
不幸的是COPY過來後出現了
您是否漏掉了轉型?

這是因為我download的是1.2.3版
而範例的似乎是1.2.2版
所造成版本不符的關係
解決方法是強制轉型
HSSFSheet sheet = (HSSFSheet)workbook.GetSheet(SheetName);

使用範例提供的excelToDataTable
就沒有再發生掉資料的問題囉
めでたしめでたし~


--
參考網址
http://www.dotblogs.com.tw/puma/archive/2008/03/16/1652.aspx
http://bgm.pixnet.net/blog/post/21031912
http://sanchen.blogspot.com/2007/08/imex1-oledb-excel-null.html
http://club.excelhome.net/thread-488632-1-6.html
http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/e396290a-cded-43fb-9a9f-d05b107a6e06/

2011年5月5日 星期四

.net FileUpload

懶得寫敍述了...直接貼
protected void Button1_Click(object sender, EventArgs e)
{
 if (FileUpload1.HasFile)
 {
  FileUpload1.PostedFile.SaveAs(Server.MapPath("~/upload/") + FileUpload1.FileName);
  uploadvalid.IsValid = false;
  uploadvalid.ErrorMessage = "Your file was uploaded successfully.";
 }
 else
 {
  uploadvalid.IsValid = false;
  uploadvalid.ErrorMessage = "You did not specify a file to upload.";
 }
}

雖說從提示方框中是這樣區分
FileUpload1.PostedFile.SaveAs("放文件名稱")
FileUpload1.SaveAs("完整路徑")
但我只放文件名稱的話還是會有問題
放完整路徑才OK

另外因為開發環境跟實際上線環境當然不一樣
所以完整路徑自然不能直接寫"C:/XXX"
要用到另一個方法Server.MapPath
將相對路徑轉換成絕對路徑

--
參考網站
http://blog.xuite.net/sunnysoap/r/16996207
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.fileupload.saveas%28v=vs.90%29.aspx#Y960
http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3455.aspx

2011年5月4日 星期三

.net 類別中使用Session和Response

寫一個cs檔放類別供呼叫時,會遇到無法直接使用Session和Response的情況
這時就要寫的迂迴一點
if (HttpContext.Current.Session["login"] == null)
HttpContext.Current.Response.Redirect("../");

以上
--
參考網址
http://www.w17x.com/AritcleDisplay.aspx?id=670

.net 使用外部dll

在網站專案上選擇新增參考->瀏覽->選要加入的dll檔案
加入後會放在自動新增的bin資料夾裡面
使用時要加上
using dllname;

2011年4月12日 星期二

Perl異常吃CPU

今天主機又被攻擊了= =
top內看到perl的程式把CPU吃光了,不過我沒抓下來
用netstat看一下從那裡來的@@
# netstat -n|more
Proto Recv-Q Send-Q Local Address           Foreign Address        State
tcp 0 0 xxx.xxx.xxx.xxx:80 134.208.xxx.xxx:49561 SYN_RECV
tcp 0 0 xxx.xxx.xxx.xxx:38693 69.64.47.228:5190 ESTABLISHED
你是誰啊= =
# lsof -i :5190
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
perl 2524 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 2561 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 2573 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 2654 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 2680 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 2741 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)
perl 10443 apache 3u IPv4 74879420 TCP xxx-xxx-xxx-xxx:38693->balder791.startdedicated.com:aol (ESTABLISHED)

=..=每次攻擊都是這個域名公司的
全部kill掉後,上辜狗找到可能的原因是透過php的fileupload上來的,可執行的程式碼上傳到/tmp底下,利用/tmp預設大家都可寫入可執行的特色,進行攻擊。
進到/tmp底下發現名為'f'的檔案,手賤的我一看到它就rm掉了
忘了看它裡面寫什麼東西...= =""
但是網站還是需要上傳的功能,總不能把它關了
這時候就要利用mount -o noexec,nosuid的方式
將/tmp掛載成不能執行,不能使用指令的模式
# vi /etc/fstab
/dev/VG00/lv_tmp /tmp ext3 noexec,nosuid 1 2

#mount /tmp -o remount

希望降子能有效阻擋此類攻擊 囧>

--
參考網址
http://www.study-area.org/phorum/index.php?topic=59532.0
http://blog.teatime.com.tw/1/post/126

2010年11月23日 星期二

jQuery find

在表單(form)中如果有動態表格(table)的話,要找到表格內的動態元素的笨方法是
$("#formid").children("table:last").children("tbody").children("tr")[0].children("td")[0].children("select");

為了避免這種蠢斃了的情況
jQuery很貼心的給了我們find(大心)
上面的笨句子就可以改成
$("#formid").children("table:last").find("select");

世界整個變美好了(茶)

2010年11月17日 星期三

visual studio 2010 要求驗證

我在用vs2010時,它臨時的網頁伺服器一直叫我驗證
雖然可以在IE設定裡調成預設使用window驗證
可是在使用服務參考時就行不通了
找了老半天,在website的起始選項裡的起始選項
底下的伺服器有個選項是「NTLM驗證」
把它勾掉後就不會再要求驗證了
我的平台是win7 64bit,vs2010是32bit
不知道是不是這個原因??

--
一開始灌好vs2010
寫好hello world,按下run
結果完全不理我= =
網頁跳不出來

原來是因為我的預設瀏覽器是firefox的關係...
套句曹老師的話
真是爛透了