2008年11月26日 星期三

PHP讀取*.csv檔

要做到用PHP讀*.csv,可以透過"fgetcsv"這個指令,又由於"fgetcsv"對中文的讀取有問題,所以還要用"setlocale"指令來輔助!

function output_csv($myfile,$q_id){
setlocale(LC_ALL, "zh_TW.BIG5");//設定編碼為BIG5
$dir="questionary/files/";//此為小弟預設的資料夾
$source=$dir.$myfile;
if(!$fp=fopen($source,"r")){
echo "ERROR";
exit;
}else{
$size=filesize($source)+1;
$row=0;
while($temp=fgetcsv($fp,$size,",")){
if($row>0){
$str=$str.$temp[1].",";
}else if($row==$size-1){
$str=$str.$temp[1];
}
$row=$row+1;
}
fclose($fp);
}
}

資料來源:http://lamb-mei.blogspot.com/2007/11/phpcsvmysql.html

2008年11月10日 星期一

電腦病毒倍增-使用者全面戒備

電腦病毒碼,3年來以20倍成長的速度,平均每4秒就有新病毒產生,所以怎麼防毒,是每個使用者都很關心的問題。
上網查資料、買東西,還有上msn,這些對於網友來說很平常,但你知道嗎?現在平均每4秒就有一個新病毒產生,所以每按下一個按鍵,都有可能導致電腦中毒,怎麼防毒?更新病毒碼不再是最快的方式。
業者洪偉淦:「我們的技術是使用者不用更新病毒碼,你去上網瀏覽網頁的時候,只要我們發現網頁是有問題的,我們在雲端會立刻加入資料庫,也就是說下一個人去瀏覽網頁時,已經得到保障。」
也就是說,只要一碰到危險網站,就會變紅色提醒使用者,上msn時也會有警示語;此外,新軟體也特別加強,網路安全最危險的中國地區病毒碼。
洪偉淦:「我們還搭載了中國地區的病毒碼,所以對華語區的病毒,可以提供更好的防禦,還有檔案保管項的功能,有些私密資料,能夠讓你個人的私密資料得到比較好的保護,即使你電腦失竊,你還是可以從遠端把資料鎖死。」
更多防護,才能全面抵抗無孔不入的危機。
http://tw.news.yahoo.com/article/url/d/a/081109/8/195os.html

中文電腦最易受木馬程式攻擊?專家:使用習慣問題

中文電腦使用者到底是不是網路駭客與病毒攻擊的首要目標?防毒專家解釋,「重點還是使用習慣的關係!」由於目前五成惡意程式採用中文編寫的關係,因此讓網友在瀏覽中文網頁或下載中文程式時,稍有不慎,則受病毒「魔手」入侵。
根據微軟日前公佈最新的全球網路威脅和網路弱點評估顯示,2008年上半年,在已發現網路的惡意軟體中,有47%是用中文寫的,而有23﹪的操作語言是英語。這類惡意軟體包括:記錄電腦使用者敲鍵盤動作或竊取用戶名、密碼、信用卡和銀行資料的程式,而網路攻擊最常見的攻擊武器:「木馬」病毒(Trojan Horses)最常隱藏在電腦使用者很容易被騙下載的軟體中。
該報告發佈同時掀起一個值得關注的議題:「木馬程式愛攻擊中文電腦」?
對此,賽門鐵克工程師王世煜解釋,網路病毒及惡意軟體程式的確有很多來自中國大陸,是以中文程式所編寫完成的,但電腦中毒與否最大的關鍵,還是在「使用者習慣的影響」!
王世煜說,無關電腦是否採用繁體或簡體中文作業系統,而是說,習慣使用中文介面的網友,以中文電腦來瀏覽中文網頁或下載中文程式的時候,不免容易受到47% 的中文惡意程式毒手入侵,而在這些47%的中文惡意程式中,又以木馬程式最多;即使是一個不曾下載任何程式的使用者,也可能因為瀏覽中文網頁的關係,在不知不覺中身中「傀儡」病毒等毒害,讓電腦成為駭客操控發送大量垃圾郵件的媒介。
「重點還是使用習慣的關係」,王世煜提醒,像是:新聞分享、遊戲打怪破解、免費程式/破解碼、誘人影音好康等網頁,其實都有可能暗藏惡意程式碼,是駭客利用消費者喜愛好康的心理,誘使網友點選,進而下載、成為攻擊目標的方法之一。
如何預防「毒駭」,王世煜建議,除定期更新電腦操作軟體和其他軟體外,近年來,網路安全業者也致力於協助電腦使用者管理IE等瀏覽器的防護漏洞問題,為使用者提供更安全的網路品質。
http://tw.news.yahoo.com/article/url/d/a/081110/17/196fi.html

2008年11月4日 星期二

台大研發超高速晶片10秒下載電影

[速率為wifi百倍 最快可達5Gb/s]
只要十秒,就可下載一部4G大小的影片!台灣大學研發全世界體積最小、功耗最少、成本最低的「超高速無線通訊系統晶片」(SOC),傳輸速度是3.5G手機的三百五十倍,若順利量產,產值估計可達四百五十億美元,同時已連續兩年獲得「國際固態電路大會」(ISSCC)大獎。 台大電子研究所副教授李致毅昨天發表這項研究成果,用一台電腦連接傳輸訊號的晶片,即時傳送到接收訊號的晶片,同步在電視畫面播放,由於傳輸速度快,電腦、電視肉眼已看不出秒差,李致毅一把手放在兩個晶片中間,電視畫面立刻中斷。李致毅指出,高速暢行的資訊時代即將來臨,這種低功率、高傳輸的60GHz通訊系統晶片,傳輸速度是WiFi的一百倍,最快可達5Gb/s的傳輸速率,只要十秒的時間,就可以下載一部高畫質電影、數千張照片,或是各種檔案,目前正在申請專利。
[三年內量產 產值四百五十億美元]
李致毅強調,SOC使用現行的九十奈米製程,成功將所有電路整合在晶片中,大幅減少功率消耗、電路複雜度,也將晶片所需面積縮減至十分之一,大小只有零點五毫米。
同時,李致毅分析,研發團隊突破性的單晶片、天線整合技術,讓電路成本降到最低,成本可控制到只需一美元,估計二至三年內可以量產。他說,全世界約有二十二億台3C產品,如果未來這種晶片以單價二十美元計算,產值可達四百五十億美元。
[視聽設備都可高速無線網路連結]
李致毅說,這項超高速通訊晶片,可將家裡的電視、音響、攝錄放影機等視聽設備,都以高速無線網路連結,瞬間傳送到家中各角落的電視螢幕。另外,在美國的機場或車站裡,已有機器可讓民眾刷卡付費下載電影、遊戲,若成功運用這項技術,隨處都可以快速下載。
不過,李致政毅坦言,這項技術若使用陣列天線範圍約一公尺,若使用號角天線約五至十公尺,短距離較適合家庭、辦公室等室內空間,目前還無法在空間大的戶外使用。
聯發科副總陸國宏認為,要等到週邊軟硬體都成熟,才能朝著商品化努力。
資料來源:
http://tw.news.yahoo.com/article/url/d/a/081104/78/18sy6.html

2008年10月31日 星期五

Dreamweaver彈出式選單在 IE7 的問題

最近在用Dreamweaver8做網頁,而當中有一個彈出式選單還不錯用,可是在IE7中,會出現如下的問題:

而小弟在網路上查到了解,如下:
1. 開啟 mm_menu.js 來編輯。
2. 找到第 136 列。
3. 將 var itemProps = '';
改為
var itemProps = 'white-space:nowrap;';
就可以了!
資料來源:
http://tw.myblog.yahoo.com/class2u-com/article?mid=422&prev=797&l=f&fid=12

2008年10月28日 星期二

Gmail新增內建日曆與行事曆小工具

Gmail繼增加了表情符號功能之後,最近又新增了行事曆(Google Calendar)與文書處理(Google Docs)兩項小工具(gadgets),讓使用者可以嵌入Gmail的介面裡。
原本的Gmail介面裡,在左邊的工具列裡除了收發信件等基本功能之外,另外可以看到Google Talk的方塊列,如今Google又發展出新的小工具,使用者可以到更多工具列選項去選取,將Google Calendar與Google Docs放進來,未來在Gmail的左邊工具列中,就可以直接看到行事曆與最近所編輯使用過的檔案文件。
由於現代人的工作,很多時候幾乎作業介面都依賴電子郵件的介面,若網路電子信箱也可以達到如微軟Outlook那般,全部都整合在一個介面裡,使用者就不用為了要看網路行事曆還要特別點選行事曆的選項,讓網頁頁面另外跳出新的一頁,然後再兩個頁面間移動。
使用者今後只要把行事曆(Google Calendar)與文書處理(Google Docs)等小工具(gadgets)嵌入後,就可以直接在Gmail介面的左邊看到有一小方塊顯示今天到未來幾天的行程,以備隨時提醒使用者,讓使用者不會因沒點開行事曆而錯過重要的會議。下方的另一個小方塊文書處理 (Google Docs)小工具(gadgets),則可顯示近期所編輯與處理過的檔案文件有哪些,並且還提供文件檔案搜尋功能,使用者可以直接在小工具(gadgets)上搜尋。
相信未來Google將會把許多應用服務互通與整合,讓使用者在使用網路上的各種應用服務時,越來越方便與越來越直覺。
資料來源:
http://tw.news.yahoo.com/article/url/d/a/081028/35/18fub.html

研究發現-蜜蜂會數到4

根據今天公布的一份研究報告,研究人員發現蜜蜂具有數到4的數數能力。
澳洲國家廣播公司(Australian Broadcasting Corporation )電台報導,昆士蘭大學(University of Queensland)研究人員在隧道裏放了5個標記,其中1個標記裏放有花蜜。
研究人員發現,蜜蜂被放入這個隧道之後會飛到這個含有花蜜的標記上,而當花蜜被拿掉之後,蜜蜂還是會繼續飛到同樣的標記上。
此以記憶法,可把蜜蜂訓練到第4處記號,但數目超過4牠們就無法記住。
資料來源:
http://tw.news.yahoo.com/article/url/d/a/081027/16/18d1w.html

2008年10月27日 星期一

快速開機電腦 30秒賺商機

很多人常會因為電腦開機時間過長,甚至要幾分鐘,乾脆利用時間泡杯咖啡。現在有多家電腦公司宣布開發快速開機電腦,包括台灣的華碩。
惠普、戴爾、聯想都開始開發這種快速開機電腦,讓使用者能在30秒或更短時間內,至少能先使用一些基本功能,如收發電子郵件、上網瀏覽網站等。
世界最大的個人電腦主機板製造商華碩,亦已在其所有生產線加入快速開機軟體。
微軟的視窗系統,常被批評開啟耗時,也表示要努力開發新系統,在15秒內開啟軟體。現在約有35%的電腦使用新的Vista程式,可在30秒再開機。蘋果的麥金塔電腦比視窗快,可是也常被抱怨太慢。
洛杉磯加州大學的賽梅爾神經科學暨人類行為研究中心學者斯摩爾表示,「我們的腦子對於這些要慢慢開機的程序非常沒有耐心,我們已被一些隨開隨用的手持3C產品寵壞了。」
對電腦公司而言,開發快速開機系統,不只是為了安撫這些資訊焦慮的使用者,也為了開發市場。對電腦廠商來說,就像跑車界會為能在幾秒內讓跑車從零加速到100公里而研發一樣。
惠普的研究顯示,開機時間要幾分鐘的話,會讓使用者覺得非常不耐,要是長達4、5分鐘,會讓人覺得沒完沒了。
惠普於6月發表新型快速開機筆記型電腦,要價1200美元(40,116台幣)。現在惠普的目標是讓桌上型電腦能在30至45秒內開機,惠普的個人電腦部主管麥肯尼說,「在18個月內,將能在20至30秒內開機。」
快速開機系統製造商機,快速開機系統Splashtop的製造商達維飛碼(Device VM)就表示,他們向電腦公司收每台電腦1到2美元使用此程式的授權費。
資料來源:http://tw.news.yahoo.com/article/url/d/a/081027/2/18cjg.html

2008年10月26日 星期日

駭客又強力入侵了!微軟發紅色警戒,民眾善用防毒抑止

使用Windows XP的民眾要注意了!微軟發現,作業系統遭到駭客入侵釋放病毒,如果中毒時,使用Windows XP,會發現作業速度變慢,甚至自動關機,微軟表示,這次病毒,很類似2003年造成全球百萬人受害的疾風病毒,預估下周將是關鍵期!
熟悉的開機聲音,點個兩下,利用Windows XP系統登入網路。不過,現在可得要小心。有民眾說:「吼!又中毒了!」是的,微軟24日晚間偵測到駭客密集流傳入侵微軟程式,尤其是使用Windows XP的民眾,下周將會是入侵的關鍵時刻。
如果連上網路時,發現會自動的連結到其他網站,或是自動下載惡意程式,最明顯的就是速度變得很慢,甚至莫名其妙的當機或是自動關機,很有可能就是中毒了。
而且這種病毒是透過windows作業系統漏洞入侵,很類似2003年造成全球百萬人受害的疾風病毒。
據微軟公關經理鄧安安表示:「攻擊的手法不是說寄一個郵件給你,你還要打開,然後會再用你的信箱再散播出去。」「不是!它是一個蠕蟲的攻擊,已經是存在在網路的環境裡面。」
微軟緊急在網路上發布紅色警戒,雖然目前還沒有發現有任何災情。微軟建議民眾還是得要定期更新防毒碼,開啟防火牆,或是到微軟的網站下載更新程式才是防止中毒的最好方法。
資料來源:http://tw.news.yahoo.com/article/url/d/a/081025/17/189tk.html

2008年10月17日 星期五

又中了KAVO的變種病毒(jwedsfdo0.dll)

ps.小弟推薦用新的方法,簡單又快速!
今天幫老爸換PC,基本裝好後,當然要裝防毒程式啦!誰知道一裝好就抓到jwedsfdo0.dll,在網路上找了一下,以下是解毒的方法:
Step 1.將以下的CODE貼到記事本

@echo off

title 清除kavo及同類型變種 XP版 (2008/08/09更新)

set A=C D E F G H I J K L M N O P Q R S T U V W X Y Z

set T=這個資料夾是用來防止病毒寫入的「請勿刪除!」怪貓...

echo 開始解除kavo木馬病毒,請按下任意鍵...

echo 請按任意鍵繼續.........

pause >nul 2>nul

rem 刪除個磁碟中的autorun.inf的自動執行檔,並建立同名的資料夾,用以防止病毒寫入,屬性改成「唯讀、隱藏、系統」

for %%x in (%A%) do (

if exist %%x:\autorun.inf attrib -r -s -h -a %%x:\autorun.inf >nul 2>nul

del %%x:\autorun.inf /q /f >nul 2>nul

if not exist %%x:\AUTORUN.INF md %%x:\AUTORUN.INF >nul 2>nul

attrib +r +s +h %%x:\AUTORUN.INF >nul 2>nul

echo %T%> %%x:\AUTORUN.INF\README.TXT

cls)

rem 病毒感染用的檔案刪除完成

echo.

rem 關閉正在使用病毒檔的程式(工作列會消失一陣子)

start /wait taskkill /f /im explorer.exe

start /wait taskkill /f /im wuauclt.exe

echo.

rem 刪除登錄檔中KAVO病毒的起動值

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "jvsoft" /f >nul 2>nul

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "tasoft" /f >nul 2>nul

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "kava" /f >nul 2>nul

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "tava" /f >nul 2>nul

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "tasa" /f >nul 2>nul

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "mnsa" /f >nul 2>nul

echo.

rem 將被鎖定的隱藏檢視功能開啟(登錄檔)

reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v "CheckedValue" /t REG_DWORD /d 00000001 /f >nul 2>nul

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "Hidden" /t REG_DWORD /d 00000001 /f >nul 2>nul

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowSuperHidden" /t REG_DWORD /d 00000001 /f >nul 2>nul

reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks" /v "{AEB6717E-7E19-11d0-97EE-00C04FD91972}" >nul 2>nul

rem 已修復無法開啟檢視隱藏檔的功能,有需要請到資料夾中的資料夾選項去開啟檢視隱藏的功能,不需要就別開

echo.

rem 刪除kavo的病毒主程式及建立防毒用的資料夾

echo.

for %%z in (

J3EWRO.EXE

JWEDSFDO0.DLL

KAVO.EXE

KAVO0.DLL

KAVO1.DLL

KAVO2.DLL

TAVO.EXE

TAVO0.DLL

JVVO.EXE

JVVO0.DLL

KXVO.EXE

KXVO0.DLL

KXVO1.DLL

) do (

attrib -s -h -r "%windir%\system32\%%z" >nul 2>nul

echo.

echo.

del "%windir%\system32\%%z" >nul 2>nul

if not exist "%windir%\system32\%%z" md "%windir%\system32\%%z" >nul 2>nul

attrib +s +h +r "%windir%\system32\%%z"

echo %T% > "%windir%\system32\%%z\README.TXT")

cls

Step 2.存在C:底下(del.bat)
Step 3.用cmd模式執行del.bat,如此即可將其刪除
資料來源:http://tw.myblog.yahoo.com/jw!ljyxR6.BFU.mrG8YGw--/article?mid=107&prev=668&next=7

2008年10月9日 星期四

簡單的E-mail格式確認-I

一般在寫會員資料時,通常都會有E-mail這一個欄位,但E-mail的格式要如何檢查呢?在此用JavaScript做簡單的檢查:
[ck_mail]

<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<title>ck_mail</title>
</head>

<body>

<form method="POST" action="" name="TEST" onsubmit="return ck_mail(document.TEST.T1.value)">
<input type="text" name="T1" size="20"></p>
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重新設定" name="B2"></p>
</form>

</body>

</html>

Script如下:

function ck_mail(mail){
var tag=true;
var message="";
if(mail!=""){
mouse=mail.indexOf('@');
dot=mail.indexOf('.');
if(mouse==-1 | dot==-1){
message="E-mail格式有錯";
alert(message);
tag=false;
}
}else{
message="請輸入E-mail!";
alert(message);
tag=false;
}
return tag;
}

如此就能夠做最簡單的檢查,或許其漏浻很大,但至少可以減少因打錯而產生的問題!
測試
ps.下方亂碼請不要管它,小的也不知道是什麼!

Google Chart API讓你用網址Show圖!

最近在練習用C#寫簡易的問卷系統時,需要作簡單的統計圖表,但我總覺得很單調,所以想起之前看到的Google Chart API,以下簡單的Show一下:

<img src="http://chart.apis.google.com/chart?cht=p3&chd=t:50,30,20&chs=250x100&chl=GoodBadBetween">

結果如下:

說明:
chd->是在圖中的數值比例.
chs->依比例所對應的文字.
如果要顯示中文字,只要將網頁編碼設成Unicode就可以了.
其實當初會找到這個,有幾個原因:
1.要自己寫一個Show圖的程式,小弟寫不出來.
2.在產生圖片時,對SERVER的負擔不小.
而有了Google Chart API,,這些問題就沒了.
資料來源:http://mmdays.com/2007/12/07/google-chart-api/

2008年10月2日 星期四

PHP產生亂數字串?

小弟最近在寫"忘記密碼"的功能,而小弟是想說,系統會先重設密碼,然後在將密碼Send給使用者,因此,小弟需產生固定長度為9的字串,Code如下:

$ps="";
while(strlen($ps)<9){
switch(rand(1,3)){
case 1:
$ps=$ps.chr(rand(65,90));
break;
case 2:
$ps=$ps.chr(rand(97,122));
break;
case 3:
$ps=$ps.chr(rand(48,57));
break;
}
}

資料來源:http://tw.knowledge.yahoo.com/question/question?qid=1406081506091

2008年9月28日 星期日

PHP萬年曆


<?
//顯示月曆開始
if ($_POST['addY']){
$addY=$_POST['addY'];
}else{
$addY=date(Y);
}
if ($_POST['addM']){
$addM=$_POST['addM'];
}else{
$addM=date(m);
}

$t=date(t,mktime(0,0,0,$addM,1,$addY));
$w=date(w,mktime(0,0,0,$addM,1,$addY));
$F=date(F,mktime(0,0,0,$addM,1,$addY));

echo "<table align=center border=0><tr align=center><td><font size=5 color=999999><b>";
echo $yearYM=$F." ".$addY;
echo "</b></td></tr><tr align=center><td> </td></tr></table>";
echo "<table align=center border=0>";
echo "<tr align=center height=40>
<td><font color=red><b>Sun</b></td>
<td><b>Mon</b></td>
<td><b>Tue</b></td>
<td><b>Wed</b></td>
<td><b>Thu</b></td>
<td><b>Fri</b></td>
<td><font color=green><b>Sat</b></td>
</tr>";

if ($w > 1) {
echo "<tr>";
for ($i=1; $i<=$w-1; $i++) {
echo "<td align=center width=40></td>";
}
}

for ($i=$w; $i<=$w+$t; $i++) { //$w+$t=35
//一週七天
if ($i%7==1){
echo "<tr><td align=center width=40>";
}else{
echo "<td align=center width=40>";
}

if ($i-$w > 0) {
echo "<font size=5><b>";
//echo $i-$w;
echo "<a href=".($i-$w).">".($i-$w)."</a>";
echo "</b></font>";
}else{
echo " ";
}

if ($i%7==0){
echo "</td></tr>";
}else{
echo "</td>";
}
}

if ($i%7==0) {
echo "<td width=40> </td>";
}elseif ($i%7==1) {
echo "";
}elseif (($i%7)>0) {
for ($j=$i; $j<=$i+7; $j++) {
if (($j%7)==0) {
echo "<td width=40> </td>";
break;
}else{
echo "<td width=40> </td>";
}
}
echo "</tr>";
}
echo "</table>";
//顯示月曆結束
?>
<form method=post name=form1 id=form1 enctype="multipart/form-data" action="" onsubmit="submitbutton();">
<table align=center border=0><tr align=center><td><font size=5 color=999999>
<tr><td align=right></td><td><b>顯示月份 :</b>
<input size=4 type="text" name="addY" value="<?echo $addY?>"><b>年</b> 
<b>
<select name="addM" size="1">
<?php
for ($temp=1;$temp<=12;$temp++){
if ($temp==$addM){
?>
<option selected><?php echo $temp;?></option>
<?php }else{?>
<option><?php echo $temp;?></option>
<?php }
}
?>
</select>
月</b> </td>
</tr>
<tr><td align=center colspan=2>
<input type="submit" name="submitbtn" value="顯示">
</td></tr>
</table>


<p>最下面的表單部分,您也可以改成下拉式表單
或是根本不用表單,直接做成下拉式連結就更方便
包括視覺效果您也可以自己改變
就像是這樣 http://www.tenway.com.tw/memberList/ (左邊會員登入的下面)

上面的程式碼做出來的效果就像這樣
http://works.sdcs.com.tw/Imgck/makeCalendar4.php </p>
<p> </p>
<form name="form1" method="post" action="">
</form>
<p> </p>

資料來源:因忘了在那找的,所以無來源,但版權為原作者所有!

常用ASCII碼表

ASCII碼鍵盤ASCII 碼鍵盤ASCII 碼鍵盤ASCII 碼鍵盤
27ESC32SPACE33!34"
35#36$37%38&
39'40(41)42*
43+44'45-46.
47/480491502
513524535546
55756857958:
59;60<61=62>
63?64@65A66B
67C68D69E70F
71G72H73I74J
75K76L77M78N
79O80P81Q82R
83S84T85U86V
87W88X89Y90Z
91[92\93]94^
95_96`97a98b
99c100d101e102f
103g104h105i106j
107k108l109m110n
111o112p113q114r
115s116t117u118v
119w120x121y122z
123{124|125}126~

資料來源:http://www.geo.ntnu.edu.tw/faculty/hchou/class/ntptc/gis/ascii_table.htm

2008年9月18日 星期四

連結MS-Express/Enterprise時的差別!

一般在寫ASP.NET時,若DataBase是MS-SQL,那麼一般有兩
種版本-Express/Enterprise,而這兩種版本的連結語法
是不一樣的:
Express
Express連結時,是以"資料庫檔案"的方式在連接



strdbcon = "DataSource=.\SQLEXPRESS;AttachDbFilename=DataDirectory\資料庫檔名.mdf;Integrated Security=True;User Instance=True";

Enterprise
Exterprise連結時,因其不支援"資料庫檔案"的方式,所
以必須以"SQL Server"的方式連結



public SqlConnection conn = new SqlConnection("Data Source=網域名稱;AttachDbFilename=資料庫實體路徑;Integrated Security=True");
public SqlCommand cmd;
public SqlDataReader dr;

2008年9月13日 星期六

當有多個控制項時,要如何傳值?

如果今天有如下的一個Table:



<table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="98%" id="AutoNumber11">
<tr>
<td width="100%"> </td>
<td width="100%"> </td>
</tr>
<?php
$i=1;
$r=mysql_query("select * from q$q_id");
while($row=mysql_fetch_object($r)){
?>
<tr>
<td width="100%" colspan="2" bgcolor="#E6E6FF"><div align="left"><font size="2"><?php echo $i.". ".$row->option_title; ?></font></div></td>
</tr>
<?php
switch($row->qtype){
case '0':
?>
<tr>
<?php
$temp=explode(",",$row->option_body);
for($j=0;$j<sizeof($temp)-1;$j++){
?>
<td width="100%" colspan="2">
<div align="left">
<input type="radio" value="<?php echo $j+1; ?>" name="q<?php echo $i; ?>[<?php echo $i; ?>]">
<?php echo $temp[$j]; ?></div></td>
</tr>
<?php
}
break;
case '1':
$temp=explode(",",$row->option_body);
for($j=0;$j<sizeof($temp)-1;$j++){
?>
<tr>
<td colspan="2"><label>
<div align="left">
<input name="q<?php echo $i; ?>[<?php echo $j+1; ?>]" type="checkbox" id="q<?php echo $i; ?>[<?php echo $j+1; ?>]" value="<?php echo $j+1; ?>">
<?php echo $temp[$j]; ?> </div>
</label></td>
</tr>
<?php
}
break;
case '2':
?>
<tr>
<td colspan="2"><label>

<div align="left">
<textarea name="q<?php echo $i; ?>[<?php echo $i; ?>]" cols="30" rows="6" id="q<?php echo $i; ?>[<?php echo $i; ?>]"></textarea>
</div>
</label></td>
</tr>
<?
break;
}
$i=$i+1;
}
?>

<tr>
<td width="100%" colspan="2"> </td>
</tr>
<tr>
<td width="100%" colspan="2" bgcolor="#99CCFF"> </td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="right"><font size="2"><a href="./?action=answer&q_id=<?php echo $q_id?>#top">TOP↑</a></font></td>
</tr>
</table>

當Submit後,由於是以Array來對Form的控制項命名,所以可以用Loop的方式來處理:

for($i=1;$i<=$_POST["qmax"];$i++){
$q=$_POST["q".$i];
for(reset($q);$k=key($q);next($q)){
echo "{$q[$k]}".",";
}
echo "<br>";
}

2008年9月8日 星期一

如何讓表格內的文字可以自動斷行?

最近小弟在用PHP寫留言板,但遇到了如果內容太長沒斷行("\n"),會導致表格無限變大,所以上網去查了一下有沒有可以改擅的方法,於是查到此一CSS:
很多人在留言板看過因為訪客輸入較長的英文或連續符號,表格隨著文字變寬,就破壞了版面美觀,這個CSS語法可以避免這樣的情形,不過記得表格(table及td)的寬度要設正確啦!不然加了可能更糟。
複製語法貼於標籤之間


<style type="text/css">
<!-- table,td {table-layout:fixed;word-wrap:break-word;word-break:break-all} -->
</style>

使用在單一表格時,請在<table>或<tbody><tr><td>加上

style="table-layout:fixed;word-wrap:break-word;word-break:break-all"

ex.

<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all; WORD-WRAP: break-word" width="150">

資料來源:
http://blog.blueshop.com.tw/petlife/archive/2004/10/13/496.aspx

2008年9月6日 星期六

解決ASP.NET的HyperLink使用window.open會出現[object]或[object Window]的問題

最近在寫"訊息公告"的功能,想說用GridView來完成,可是預到問題,當我把field改HyperLink來做開新視窗時會出現兩個視窗,在網上找了到解決的方法:
一般在.aspx網頁上加入一個HyperLink控制項並且設定NavigateUrl為"javascript:window.open('http://www.dotblogs.com.tw/puma/')"
在IE,FF都會開新視窗,但本身視窗會出現[object]or[object Window]的訊息要解決這個問題,只要在多一個"void",如下所示,就可以解決了..."javascript:void window.open('http://www.dotblogs.com.tw/puma/')"
資料來源:
http://www.dotblogs.com.tw/puma/archive/2008/03/21/1989.aspx

2008年8月25日 星期一

讓ASP.NET也可以如PHP一樣include

  一般在寫ASP.NET時,總是會有一些部份的功能是要自己寫的,如果是要連DataBase那就要定義一些sqlconnection之類的東西,如果有很多的Page都要用到,那麼就會有一堆一樣的東西,若那天要移到別台SERVER或PC上時,一定又是一頁一頁的改,若把那些東西都寫在某一個File中,要用的時候在"建立"(new),並且引用,這樣一來不是方便多了!

先建立一個"類別"
For VB


Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient

Public Class Class1
Public str As String = "Data Source=CUTE;Initial Catalog=C:\INETPUB\WWWROOT\PRACTICE\APP_DATA\STUDY.MDF;Integrated Security=True"
Public sqlcon As SqlConnection = New SqlConnection(str)
Public strsql As String
Public cmd As SqlCommand

End Class


For C#


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
///
/// Class1 的摘要描述
///

public class Class1
{
public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\questionary\\App_Data\\qu_an.mdb");
public OleDbCommand cmd;
public OleDbDataReader dr;
public void constr()
{

}
}

2008年8月20日 星期三

如何設計問卷系統?

  其實問卷系統和大多數的系統,都有著大同小意的功能,所以在此就不貲述。
  問卷系統最難處理的就是DataBase,讓User設計問卷時,要如何處理選項是很重要的,當然,如果你把選項訂成有最大上限(例:10個),那這麼一來資料庫的選項欄位只要設10個就行,但這並不是一個好方法,如果今天User,有11的選項,那不就掛點了,所以,如果把同一題的選項做成String並以符號分開(例:","),這樣字串就會變成AAA,BBB,CCC,這樣就可以存在同一個欄位,然後每次在輸出到頁面時,只要依分隔符號將字串切開,就可以正常輸出了。
  小弟在此舉一個最簡單的例子:


(將"題目"和"選項"拆成兩個Table,並以"編號"做關聯)
ps.還有令一種做法,此法為Johnny.Net大大所提出(小弟覺得很特殊):
把選項以二進位方式表示並且儲存為整數或長整數, 然後再放到資料庫裡面去。舉個例子, 假設有一個題目如下:
(1) 請問 blah blah blah...
□ AAA, □ BBB, □ CCC, □ DDD, □ EEE, □ FFF, □ GGG, □ HHH, □ III, □ JJJ

假設獲得的回答是

□ AAA, ■ BBB, □ CCC, □ DDD, ■ EEE, □ FFF, □ GGG, ■ HHH, □ III, ■ JJJ

那麼你就把答案轉換成 0100100101B, 結果變成 125H 或 293。一個 int32 整數的最大值是 2147483647, 或是 7FFFFFFFH, 或是 1111111111111111111111111111111B; 換句話說, 一個問題最多可以儲存 31 個項目的回答 (我覺得應該不會有人願意回答超過 31 個選項的問卷吧? 如果真的有, 則可以採用 bigint/int64), 只會佔用一個整數, 而數值互換的運算速度也很快, 應該不會造成系統什麼負擔。
使用這種方法, 無論單選或複選都同樣適用, 邏輯也相同。
此外, 在針對資料庫中的答案做統計時, 只需要下指令計算該欄位數字除以 2 的 N 次方的餘數是 0 還是 1, 就知道某個項目有多少人勾選, 例如:

(
@pow int
)
AS
BEGIN
SELECT COUNT(*) AS totl
FROM tblMyDataBase
WHERE (fieldA % POWER(2, @pow) = 1)
END

資料來源:
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3768982&SiteID=14

2008年8月18日 星期一

如何在Google Blog中用SyntaxHighlighter

  在網路上已有很多關於該 Tool 的教學,但小弟不才,看了好幾篇才做出來,在此也分享一下我的過程:
  在撰寫網誌時,若是有使用到程式碼,可能多半會遇到將程式碼貼到網誌時,版面是一團混亂,而 SyntaxHighlighter 這個免費的 Java Script 工具。這個是在客戶端的瀏覽器上執行,所以只要瀏覽器有支援,應該都可以正確顯示:
Step1. 先去 SyntaxHighlighter 下載檔案
Step2. 再將裡面相關的javascript檔案和css上傳到自己的網頁空間
(只要 Scripts 資料夾內的程式(*.js 與 *.swf) 及 Styles 資料夾內的 SyntaxHighlighter.css上傳即可)
Step3. 登入您的 Blogger
Step4. 點選[版面配置]\[範本]\[修改 HTML]
Step5. 將以下的範例,複製到</body></html>標籤的前面



<link href="http://你的網頁空間網址/SyntaxHighlighter.css" rel="stylesheet" type="text/css">
<script class="javascript" src="http://你的網頁空間網址/shCore.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushCSharp.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushPhp.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushJScript.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushJava.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushVb.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushSql.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushXml.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushDelphi.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushPython.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushRuby.js"></script> <script class="javascript" src="http://你的網頁空間網址/shBrushCss.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushCpp.js"></script>
<script class="javascript">
//<![CDATA[
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
//]]>
</script>

Step6. 測試是否 SyntaxHighlighter 與 BloggerMode 有正常運作
使用時加上如下的 Code:

<textarea name='code' class='language'>
程式碼
</textarea>
or
<pre name='code' class='language'>
程式碼
</pre>




其中 languages 部分,目前所支援有:


C++、C#、CSS、Delphi、Java、Java Script、PHP、Python、Ruby、Sql、VB、XML/HTML 等等。
請參考以下列表,將指定的語言之 Aliases 置換到 languages 的位置上。

Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt

ps.建議若在<pre>...</pre>區塊中有"<"和">"時要將"<"轉成"& l t ;",">"轉成"& g t ;",這樣才不會錯(把空格去掉)
資料來源:
http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html
http://yehhou.blogspot.com/2007/06/blogger-dpsyntaxhighlighter.html

2008年8月17日 星期日

如何讓DIV可以自動變大變小?

今天在寫PHP網頁時,因美功差,所以抓了免費的模版來用,由於都是用別人設定好的,所以很多都變的不可預期,今天用include_once()去引入其它的*.php,結果因為該頁的height比DIV所設的還大,結果使得它和其它內容重疊在一起,但後來發現只要不設定它的參數height就可以解決次問題:
[style.css]
...
#contenttext{float:right; height:300px; width:526px;}
...
只要把紅字delete即可:
[style.css]
...
#contenttext{float:right; width:526px;}
...