2010年1月21日 星期四

Cross-Domain Communication

由於XMLHttpRequest-based的通訊模式有著安全性的限制, 使得不同網域之間無法進行資訊的傳輸, 當然在實做上還是有很多迂迴的解決方式, 比如說facebook connect利用Iframe建立一傳輸的通道, 再透過此通道將資料往上傳, 有關以iframe來溝通也可參考這篇, 而Yahoo!則利用JSONP做為Web Service的資料交換,

舉例來說, 當foo.com想與bar.com進行資料交換時, 我們可以在foo的主機上加入bar上的script以取得bar的資料,
<html>
<head>
<title>Cross-Domain Communication with JSON</title>
</head>
</body>
<script type="text/javascript">
function call_bar(obj) {
 alert(obj.name);
}
</script>
<script type="text/javascript" 
src="http://bar.com/?callback=call_bar"></script>
<body></body>
</html>    
  
而在bar上的script中則提供JSON格式的資料內容, 其中call_bar為callback function的名稱, 此callback將會在foo讀取到script的內容時回呼, 並且無法控制執行順序,
call_bar({"name":"bar"})
  
透過以上例子, 將能進行跨網域的資料交換, 參考資料:

2009年12月15日 星期二

Antivir False Positive Alarm

昨天(2009/12/14)發現小紅傘的誤判, 回報之後回信說明了是誤判, 但病毒碼似乎還沒對此結果做更新...

誤判情形是這樣的, 只要將<a href="http://www.paypal.com.tw/">這樣的字串寫入文字檔, 就會被判斷為HTML/Spoofing.Gen, 搜尋了一下, 之前也有別人遇到類似的問題阿 (煙)

update一下: 今天(2009/12/23)發現病毒碼更新了

2009年11月5日 星期四

[Adroid] MAERD

Eng.Mode
*#*#4636#*#*

Reset
[Home]+[Power]
[ALT]+[L]
[Home]+[Backup] - reboot system now
[ALT]+[L] - toggle log text display
[ALT]+[S] - apply sdcard:update.zip
[ALT]+[W] - wipe data/factory reset

2009年10月21日 星期三

[Tips] 如何在virtual host對php做不同的設定

以顯示/不顯示php錯誤訊息為例
[root@localhost ~]# vi .htaccess 
php_flag error_reporting = E_ALL
php_flag display_errors = Off 

出處: php_flag in .htaccess

[Tips] scp & ssh-agent

如何在local機器與remote機器進行自動化scp?

1.製作public keys & private keys
[root@local ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <- 不用輸入
Enter same passphrase again: <- 不用輸入
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
7e:16:f4:57:87:5c:60:be:91:70:82:ac:cc:a9:95:74 root@localhost.localdomain

2. 從local機器複製/root/.ssh/id_dsa.pub到remote機器
[root@local ~]# scp /root/.ssh/id_dsa.pub root@remote:/root/.ssh/id_dsa.pub
root@remote 's password:
id_dsa.pub 100% |*****************************| 718 00:00 

3.將id_dsa.pub加到authorized_keys
[root@remote ~]# cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys 

4.再以ssh連線到遠端機器, 未來將不用再輸入密碼啦
[root@local ~]# ssh root@remote

出處: 請問如何用scp或rsync每天自動備份到不同的日期目錄中?

2009年9月27日 星期日

紀念

話說前兩天收到giga寄來的一封信,

親愛的 xxxxxxxxx 您好:

您使用的 Giga Mail 服務即將到期,請先確認您的點數餘額,因本公司營運方向調整,
自2008/10/30起Gpass Mail已停止銷售,故服務到期後您的電子信箱將無法繼續使用,請您注意
以下情況:

1.若您的剩餘點數為「0」,很抱歉本公司因上述原因無法繼續提供您續訂Mail服務,
請您於服務到期前完成檔案備份,避免造成資料遺失,並記得通知親友信箱變更事宜,
造成您的不便,尚祈見諒!

2.若您的剩餘點數為「1以上」,但不足以續購下一年度的Mail服務,請您來信 客服中心,
我們將有專人為您處理。

以下列出您即將到期的 Giga Mail 服務 內容。

※帳號 : xxxxxxxx
※服務內容 : Giga Mail - Gpass會員 50MB 信箱網路型一年份
※起始日 : 2008/10/xx
※到期日 : 2009/10/xx
※您目前在G點中心的剩餘點數 : 0 點
 您可利用Gpass網站的G點中心,查詢/管理您的點數帳戶

倘若您已完成服務續訂,請無須理會本通知信,提醒您,若於服務到期三個月後
仍未續訂服務,則系統將自動刪除您原訂購服務之內容,為避免遺失重要資料,
建議您按時備份。若有任何疑問或建議,歡迎來信至客服中心,我們將竭誠為您
服務,謝謝!


敬祝  順心如意!!

現在大家都很習慣使用email做為傳遞訊息的方式, 而多數人也都有一個以上的email, 我相信現在還使用付費email的人可說是少之又少, 而我卻是其中的一個...

由於我開始使用寬頻上網就是使用和信的單向cable服務, 當時的寬頻用戶有贈送一組email帳號, 因此我理所當然的申請了一組帳號使用

話說這種單向cable服務也真是一個奇蹟, 可能有些人是從來沒聽過...
單向cable的原理是透過一台需要撥號的數據機連線到ISP業者的機房, 所謂的單向即是下載是使用家中的cable線, 而上傳是使用電話線, 而電話線的上傳速度最高就是與撥接速度相同, 64Kb, 由於並非上傳下載都是使用cable傳輸, 因此稱為單向cable服務

這樣的服務有幾大缺點, 當然包括了上傳的速度限制以外, 當使用者開始進行連線後, 就會佔據掉撥號的電話線路以做數據傳輸, 當然這電話線路是要另外付電話費的... 我也竟然使用這種神奇的服務有三四年之久.. 最後當然還是承租通用的ADSL服務做為上網之用,

但就在退租以後, 發現原本和信所贈送的email需要另外付費才能繼續使用, 由於當時眾多資訊往來都是以這一郵件地址做為聯絡方式, 因此我也開始額外付費購買此一郵件服務...

老實說, 和信giga mail一年付200元可使用50mb的信箱空間, 這真是開玩笑的貴, 在當時已經有許多業者讓使用者申請幾G幾G的免費信箱, 但因為不願意輕易更動郵件地址而讓我額外使用了多年的付費信箱, 甚至此一郵件地址讓我在當時的青澀歲月與ex產生了許多的爭執, 而這些是是非非現在也隨著giga mail的服務下線畫下句點,

僅以此文章紀念無緣的ex

2009年9月26日 星期六

[轉貼]apache動態編譯/靜態編譯問題

出處: apache動態編譯/靜態編譯問題 - 城市胡同
以前編譯apache的時候
都是google搜索到的直接拿來用

這次自己編譯mod_rewrite和ssl遇到了問題
又不知道問題出在哪裡
一個是mod_rewrite模塊沒有起作用
一個是以ssl啟動apache的時候報告如下錯誤:
apachectl startssl
Syntax error on line 246 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: X509_free

後來經過查找
明白了問題出在哪裡

當時我是這麼編譯apache的

./configure
--prefix=/usr/local/apache2
--enable-so
--enable-mods-shared=most
--enable-rewrite
--enable-speling
--enable-forward
--enable-ssl
--with-ssl=/usr/local/openssl

而問題就出在–enable-so
現在知道了–enable-so的意思是說
讓apache 核心裝載DSO,但是不實際編譯任何動態模塊
–enable-ModuleName的意思是說 編譯并包含模塊ModuleName
而 –enable-ModuleName=shared 的意思是說將這個模塊編譯成動態的.

明白了這幾個選項的意思,感覺就水落石出了
根據上面的總結
我應該去掉–enable-so這行
如何希望動態編譯模塊
比如:–enable-rewrite應該替換為: –enable-rewrite=shared

最後,我將要編譯的應該為:

./configure
--prefix=/usr/local/apache2
--enable-mods-shared=most
--enable-rewrite
--enable-speling
--enable-forward
--enable-ssl
--with-ssl=/usr/local/openssl

上面中 –enable-mods-shared=most的意思是說 動態的編譯進來大多數的模塊
而 –enable-mods-shared=all是指動態的編譯所有的模塊
如果把-shared去掉,就是靜態的編譯了…

綜上所述
總結出了我個人對apache的動態與靜態編譯的理解
好比有兩個人a和m
a代表apache,m代表module
要想讓a使用m的東西
一個方法是把m的東西都放到a那裡去,a使用的時候就是現成的了
就是所謂的靜態編譯

還有一個方法,
就是告訴a, m的住址,當a要使用m的東西的時候,a去找m,然後使用
不過,這種方法要注意的一個問題就是:m必須要有實際的住址,
否則a會找不到m而產生錯誤的,我此文開始提到的 apachectl startssl產生
的錯誤就是這個原因,應該再編譯好ssl才可以的.
這種方法也就是apache 的動態(DSO)編譯了