2013年2月28日 星期四
2013年2月23日 星期六
2013年2月18日 星期一
五招圖解 Google 搜尋密技
2013年2月15日 星期五
網頁圖表
Google
最近網頁需要圖表,前幾日花了一天時間研究 Google Chart Editor。後來發現相關服務套上 deprecated 這個字:Google Chart Tools: Image Charts (Deprecated)。如果我沒看錯的話,這項服務(用 img 元素產生圖表的方式)只延續到 2015 年。這樣會讓人害怕,萬一哪天 google 整個圖表服務也停止,或是改成收費服務,那所有寫過的程式可能都要改寫。最好還是使用那種可以把整個套件、程式碼下載的比較好。一個專案就用一套,也不用怕改版。
Fushion Charts 不是免費的,不過還是可以下載 Trial 版本,只是產生出來的圖表都會有 Fushion Charts Trial 這個字嵌在上面。這應該還可以接受。
amCharts
一樣也不是真正免費,不過還是可以免費使用。原本還在猶豫要用哪一套,看到這一頁的展示,決定用它了!曲線圖的 x 軸竟然可以選擇範圍區間,太方便了。
amCharts 介紹
Getting Started with amCharts Bundle v.2. Part 1.
基本介紹,比較 Javascript 跟 Flash 這兩種方式產生的圖表有何不同。
最近網頁需要圖表,前幾日花了一天時間研究 Google Chart Editor。後來發現相關服務套上 deprecated 這個字:Google Chart Tools: Image Charts (Deprecated)。如果我沒看錯的話,這項服務(用 img 元素產生圖表的方式)只延續到 2015 年。這樣會讓人害怕,萬一哪天 google 整個圖表服務也停止,或是改成收費服務,那所有寫過的程式可能都要改寫。最好還是使用那種可以把整個套件、程式碼下載的比較好。一個專案就用一套,也不用怕改版。
Fushion Charts 不是免費的,不過還是可以下載 Trial 版本,只是產生出來的圖表都會有 Fushion Charts Trial 這個字嵌在上面。這應該還可以接受。
amCharts
一樣也不是真正免費,不過還是可以免費使用。原本還在猶豫要用哪一套,看到這一頁的展示,決定用它了!曲線圖的 x 軸竟然可以選擇範圍區間,太方便了。
amCharts 介紹
Getting Started with amCharts Bundle v.2. Part 1.
基本介紹,比較 Javascript 跟 Flash 這兩種方式產生的圖表有何不同。
2013年2月7日 星期四
Voip 電話
免費且開放的 SIP VoIP 網路電話
VoipBuster 免費網路電話 (台灣免費!)
VoipBuster官網
VoipBuster中國代理
Fine-Start - http://www.fine-start.com/
看起來是在賣各種介面卡,但是它的產品目前沒有任何文件。不過它導覽列的 download 可以下載有 trixbox 及 asterisk 的說明。
Trixbox 中文論壇(簡體)
Google 網上論壇-Asterisk
https://groups.google.com/forum/?hl=zh-TW%E3%80%82&fromgroups#!forum/asterisk-tw
(第二篇) 如何在一個site內部署一部Elastix
(第三篇) Elastix安裝
自建專業級 PBX:trixbox
trixbox - 百度百科
VoipBuster 免費網路電話 (台灣免費!)
VoipBuster官網
VoipBuster中國代理
Fine-Start - http://www.fine-start.com/
看起來是在賣各種介面卡,但是它的產品目前沒有任何文件。不過它導覽列的 download 可以下載有 trixbox 及 asterisk 的說明。
Trixbox 中文論壇(簡體)
Google 網上論壇-Asterisk
https://groups.google.com/forum/?hl=zh-TW%E3%80%82&fromgroups#!forum/asterisk-tw
(第二篇) 如何在一個site內部署一部Elastix
(第三篇) Elastix安裝
自建專業級 PBX:trixbox
trixbox - 百度百科
表單送出前先以 ajax 方式檢查 phpcapcha 圖片驗證的問題
phpcapcha 使用方法
最近遇到一個問題。表單送出後,先執行一個 Javascript 函數,檢查各欄位資料有無問題,若有問題,立即以 return false 終止函數。其中最後一步是做圖片驗證的檢查,都通過之後再將表單送出。
這部份照理來說應該是循序執行,最後送出表單。但最近遇到的問題,圖片驗證不論怎麼打,隨便打,表單一定會送出。查了一陣子才發現是 ajax 的問題。先來看下列程式碼:
原本預想的流程是這樣:一開始 phpcaptcha_checked 變數是 0 ,等到圖片驗證通過之後,再將 phpcaptcha_checked 改為 1 。然後當 phpcaptcha_checked = 1 的時候,將表單送出。
後來才發現 phpcaptcha_checked 的值永遠是 0 。因為 phpcaptcha_checked 是用 ajax + jquery 的方式做後端處理,而 ajax 的特性就是可以不重整頁面來更新資料。看看上面程式碼,回傳 success 那一行。雖然照理來說,回傳 success 之後 phpcaptcha_checked 應該就要變成 1 。但是 alert 出來的結果,即便圖片驗證的字串正確輸入, phpcaptcha_checked 的值還是 0 。
ajax 是可以在更新資料的時候,不用重整頁面。但我指定同一個東西,不是應該可以改變嗎?就像常用的:document.getElementById(id).innerHTML=xmlHttp.responseText,改變現有頁面上的某個元素啊。看起來,大概是函數裡的變數會重新指派吧。總之,要把把送出表單的指令移到 sucess 那一段裡面。
最近遇到一個問題。表單送出後,先執行一個 Javascript 函數,檢查各欄位資料有無問題,若有問題,立即以 return false 終止函數。其中最後一步是做圖片驗證的檢查,都通過之後再將表單送出。
這部份照理來說應該是循序執行,最後送出表單。但最近遇到的問題,圖片驗證不論怎麼打,隨便打,表單一定會送出。查了一陣子才發現是 ajax 的問題。先來看下列程式碼:
function checkForm(){
//check account
//...
//check password
//...
//check phpcaptcha
var phpcaptcha_checked = 0;
var ct_captcha = document.getElementById('ct_captcha').value;
$.post("libs/ajax_phpcaptcha.php", {ct_captcha: ""+ct_captcha+""}, function(data){
if(data=='error'){
showErrorToast('Incorrect security code entered');
return false;
}else if(data=='success'){
var phpcaptcha_checked = 1;
}
});
//alert('isChecked='+isChecked+' isChecked='+isChecked);
if(phpcaptcha_checked==1){
document.getElementById('pgForm').submit();
}
}
原本預想的流程是這樣:一開始 phpcaptcha_checked 變數是 0 ,等到圖片驗證通過之後,再將 phpcaptcha_checked 改為 1 。然後當 phpcaptcha_checked = 1 的時候,將表單送出。
後來才發現 phpcaptcha_checked 的值永遠是 0 。因為 phpcaptcha_checked 是用 ajax + jquery 的方式做後端處理,而 ajax 的特性就是可以不重整頁面來更新資料。看看上面程式碼,回傳 success 那一行。雖然照理來說,回傳 success 之後 phpcaptcha_checked 應該就要變成 1 。但是 alert 出來的結果,即便圖片驗證的字串正確輸入, phpcaptcha_checked 的值還是 0 。
ajax 是可以在更新資料的時候,不用重整頁面。但我指定同一個東西,不是應該可以改變嗎?就像常用的:document.getElementById(id).innerHTML=xmlHttp.responseText,改變現有頁面上的某個元素啊。看起來,大概是函數裡的變數會重新指派吧。總之,要把把送出表單的指令移到 sucess 那一段裡面。
//check phpcaptcha
var ct_captcha = document.getElementById('ct_captcha').value;
$.post("libs/ajax_phpcaptcha.php", {ct_captcha: ""+ct_captcha+""}, function(data){
if(data=='error'){
showErrorToast('Incorrect security code entered');
return false;
}else if(data=='success'){
document.getElementById('pgForm').submit();
}
});
2013年2月6日 星期三
2013年2月3日 星期日
檢測瀏覽器
JavaScript程式碼:
<script type="text/javascript">
var ua = navigator.userAgent.toString();
if(/MSIE/.test(ua)){var isIE=1;}
else if(/Firefox/.test(ua)){var isFirefox=1;}
else if(/Chrome/.test(ua)){var isChrome=1;}
else if(/Safari/.test(ua)){var isSafari=1;}
else if(/Opera/.test(ua)){var isOpera=1;}
document.write('ua='+ua+'<BR>');
document.write('isIE='+isIE+'<BR>');
document.write('isFirefox='+isFirefox+'<BR>');
document.write('isChrome='+isChrome+'<BR>');
document.write('isSafari='+isSafari+'<BR>');
document.write('isOpera='+isOpera+'<BR>');
document.write('isFirefox='+isFirefox+'<BR>');
</script>
2013年2月2日 星期六
IP與黑名單
TCPIPUTILS.com
包括 Whois, Traceroute, 各種 Blacklist,以及 Ping
SPAMHAUS
http://www.spamhaus.org/lookup/
可檢測 IP 位址或網域
http://cbl.abuseat.org/lookup.cgi?ip=203.69.30.1&.pubmit=Lookup
http://www.backscatterer.org/?ip=203.69.30.1
http://moensted.dk/spam/
http://whatismyipaddress.com/blacklist-check
http://www.dnsbl.info/dnsbl-database-check.php
http://www.mxtoolbox.com/blacklists.aspx
How to find BOTs in a LAN
http://cbl.abuseat.org/advanced.html
2013年2月1日 星期五
訂閱:
文章 (Atom)