2009年6月19日 星期五

"誰來我家"的廣告效應和程式架構

Pixnet 誰來我家 樣式


首先,要感謝 Pixnet 有提供拜訪紀錄的分析,專業術語是 query log,讓我好好地查看目前各大 search engines 連到我 blog 的關鍵字,雖然這些事也可以靠其他分析服務處理,但人有惰性,有時很懶再去連其他網站。除此之外,還有一個廣告效應,那就是誰來我家。


誰來我家是什麼服務呢?就只是很簡單地記錄到底有哪些使用者逛過你的網站,可能是部落格網誌或是相簿,然後各大部落格也會提供一個小框框讓你顯示有哪些使用者,基本上我不怎喜歡打開這種顯示或是記錄,畢竟這個隱私有不少關係。


至於它的效應如何?這半年觀察起來,一開始還滿常看到”固定班底”的帳號連到我的部落格,由於我在觀察 blog 到底是否會有相似的網友連過來,如喜好資訊、程式等,因此幾個月前幾乎都會連過去看一下個人資料,然後,就知道自己中計了!對方的網站純粹是在講某些產品的買賣,例如衣服、化妝品甚至線上遊戲等,接著等你熟悉它的出現時,它就給你換換照片 logo ,結果不小心又中計了!我相信扣除像我這麼閒的人外,應該還有不少人也會做這種事,像是看到照片是正妹帥哥等,很難會拒絕連過去吧?這樣的廣告效應就是吸引別人連回去他們的網站,廣告只要曝光就達到它的目的,就像各大八卦,醜聞敗家,但只要能上電視就是好宣傳!


Google 誰來我家


在網路上相關的關鍵字,頻率最高的是 "誰來我家 無名" ,其次是 "誰來我家 功能" ,緊接著就是 "誰來我家 廣告",由此可見,誰來我家的廣告效應並不小。無名在此的設定是很有頭腦的,為了讓越來越多人使用此功能,凡事想關閉此功能的,就無法查看誰來我家,算是一種變向鼓勵的機制。只是相較之下我反而比較欣賞 Pixnet 的規劃,讓使用者自訂要不要被記錄(隱藏身份),但仍享受觀看誰來我家的功能。


據說有些公司架設好 blog 後,還會請工讀生去逛其他網站喔!我覺得這並不是不可能的,所以,就來講講程式架構吧!


流程很簡單,先模擬帳號登入,接著再閒逛其他人的部落格!收工!然而,萬事起頭難,常常第一步就卡關了。來談談有名好了,其實流程很簡單:



  1. 連線至有名首頁收集 cookie 資訊

  2. 點選登入頁面,將轉至阿虎登入頁面,再收集 cookie 資訊

  3. 接著完成帳號密碼的輸入與送出,再收集 cookie 資訊

  4. 緊接著是吐給你一把鑰匙,要你連回有名跟它說你完成登入了,取得最終的 cookie 資訊


以上就是登入流程,其中的 cookie 資訊就是用來標記到底是哪位使用者登入,通常這件事是由瀏覽器完成的。接著,只要再閒晃別人的部落格時,網頁程式就會去讀 cookie 資訊,看看是誰來逛,以此在紀錄到資料庫中,最後,在"誰來我家"的頁面上就印出拜訪的使用者囉。


以上算是很簡單的流程敘述,建議使用 cURL and libcurl 等 library 來實作,並使用 Script Language,保證事半功倍。


至於有沒有加強版?倒也是有,那就像 Web Crawler 一樣,帶著 cookie 從部落格首頁開始去連別人的部落格,只是一般是去收集別人的資料,而這種程式恰好反過來,讓自己的資訊給別人收集囉。


好像還沒談論到廣告效應?那就粗算一次好了



  • 使用某廣告系統 ,一天約兩百次廣告的曝光可賺取 1.0~1.5 元台幣。

  • 使用此程式去到處留情,並把自己的 logo 打扮成型男辣妹,一天爬個 10,000 次就好

  • 對方回點率有 3 成,即 3,000 人回點,而在對方網站被其他人看到而點到你家的機率是 1 成,即 1,000 人


假設在上述很甜美的情境下,那一天來逛你的網站的人潮可能就有 3,000 的回點 + 1,000 人的第三者,總共就有 4,000 人潮。然後 200 的廣告曝光可賺 1.25 元,那 4,000 人潮可賺 25 元,那一個月就有 750 零用錢囉!那爬 10,000 次很難嗎?一分鐘爬 60 位好了,那程式不用 3 小時就做完此事耶?而一天有 24 小時,可以慢慢規劃使用耶。當然,以上的條件是賺很大的比例,事實如何我也不知道。


如果把一天爬的個數拉大或是多個 blog site,那一個月要賺進上千上萬的錢也就不是難事了,再這樣惡搞下去就.........所以,好孩子還是不要寫這種程式!這個議題搞到最後未來就變成一堆 User Agent 相互 PK 的世界。想來想去,網路的世界還真是虛虛實實啊。


最後有感,寫這種程式不如做一些更有意義的事吧!


2009年6月17日 星期三

[FreeBSD] 讓 Mail Server 支援 POP3 / POP3s / IMAP / IMAPs 功能 - 安裝 dovecot

測試環境:



  • FreeBSD 7 -  FreeBSD 7.0-RELEASE-p12


步驟:



  1. 編譯與安裝

    • # cd /usr/ports/mail/dovecot ; make install clean ; // 預設就很 ok 了



  2. 建立 SSL 相關資料

    • # openssl req -new -x509 -nodes -out /tmp/public.pem -keyout /tmp/private.pem -days 3650

      • Country Name (2 letter code) [AU]:TW
        State or Province Name (full name) [Some-State]:Taiwan
        Locality Name (eg, city) []:ChiaYi County
        Organization Name (eg, company) [Internet Widgits Pty Ltd]:CYY
        Organizational Unit Name (eg, section) []:CYY
        Common Name (eg, YOUR name) []:
        Email Address []:admin@localhost



    • # cd /etc/ssl/ ; mkdir certs private ; chmod 700 certs private

    • # cp /tmp/public.pem /etc/ssl/certs/dovecot.pem ; cp /tmp/private.pem /etc/ssl/private/dovecot.pem

    • # rm -rf /tmp/public.pem /tmp/private.pem



  3. 啟動

    • # vim /etc/rc.conf

      • dovecot_enable="YES"



    • # /usr/local/etc/rc.d/dovecot start




如此一來,即可使用,可使用以下方式測試



  • POP3

    • # telnet localhost 110



  • POP3s

    • # telnet localhost 995



  • IMAP

    • # telnet localhost 143



  • IMAPs

    • # telnet localhost 993




指令



  • POP3

    • USER id

    • PASS password

    • QUIT



  • IMAP

    • - login id password

    • - logout




2009年6月16日 星期二

Opera Unite



一個軟體架構與 NUWeb 相似的 Project ,以 Browser 結合 Client 和 Server 架構,讓使用者的電腦既是 Client 又是 Server 的軟體。
















以 NUWeb 來說,當初秉持著「民有、民治、民享」的信念而實作,希望盡可能地讓使用者創作的資料、知識,保留其個人的權力,不再受現況 Web 2.0 那種 Server 端鯨吞使用者的權力,以此,創造研發出 NUWeb 服務。


目前 Opera Unite 恰好成品像 NUWeb 的雛型,未來將會如何變化?或許雲端架構又會再掀一股風波吧!


2009年6月15日 星期一

[PHP] 透過 Web Server 背景執行 PHP Script 程式

明明 PHP 就是常常搭配 Apache HTTP Server 透過瀏覽器直接執行的程式語言,那為什麼又需要用到背景執行呢?


這個理由是因為我把 PHP 當作像 Perl 、bash、csh 等 script 語言來使用,然而,當這個 script 需要花費大量的時間處理時,背景執行就是個不錯的選擇。


我以為寫一個小網頁用 shell_exec( '/usr/local/bin/php /tmp/test.php &' ); 的方式就能搞定,但試了很久並沒有那種效果,最後我發現必須把輸出導向才行!



  • shell_exec( '/usr/local/bin/php /tmp/test.php > /tmp/cmd_out &' );


另外,也可以直接用 ` 來執行



  • `/usr/local/bin/php /tmp/test.php > /tmp/cmd_out &`


至於 Windows 上則是可以使用類似下面的方式



  • pclose(popen("start /B C:\php\php.exe > C:\temp\out", "r") );


看來我寫的程式架構又可以再更新一下了!


2010/01/24 更新!


關於 Windows 的運行方式,如果 Web Server 只有一支 process 還是會有問題,請參考 Executing background processes from PHP on Windows ,可改成


<?php
$cmd = 'C:\php\php.exe C:\test.php' ;
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C $cmd", 0, false);
?>


其中 cmd /C 的部份,可以自行在 Windows 下的 cmd mode 打入 cmd /? 可看看說明囉!至於 WScript.Shell 執行時所帶的參數意義,可以到 Run Method (Windows Script Host) 查看。


相較於之前的 "start /B ..." ,原先在 taskmgr 會看到有一支 php.exe 在運行,改成新的方式後,會再多一支 cmd.exe 囉


2009年6月10日 星期三

[Unix] svn db 之 backup script

前天下午,學校突然發生大停電,讓我回想起自己好像三月份起就忘了備份自己的 project 了,這個原因是基於壓縮後的單檔已經超過 Gmail 附件的檔案大小的關係,前陣子 bluesway 恰好有提到自己的備份 script ,就要來稍微修改修改。


使用上非常懶,直接對 svn db 壓縮,然後丟到 gmail 上,在透過 filter 將帶有 "[Backup] My Project with SVN Servce" 字樣的標題信件進行管理即可。最後就是搭配 crontab 來執行囉。


#!/bin/sh

DATE=`date +%Y%m%d%H%M`
BASE_PATH="/tmp"
BACKUP_PATH="/home/uid/svn/"
BACKUP_TEMP="${BASE_PATH}/project_svn.${DATE}.tgz"
BACKUP_EMAIL="email@gmail.com"
PREFIX_NAME="${BACKUP_TEMP}."
MAIL_SUBJECT="[Backup] My Project with SVN Servce"

/usr/bin/tar -zcvf ${BACKUP_TEMP} ${BACKUP_PATH} > /dev/null 2>&1
if [ -f ${BACKUP_TEMP} ]; then
        /usr/bin/split -b 14m ${BACKUP_TEMP} ${PREFIX_NAME}
        filelist=`/bin/ls  ${PREFIX_NAME}*`
        for fn in ${filelist}
        do
                #echo "/usr/local/bin/mutt -s \"${MAIL_SUBJECT} - Part - ${fn}\" -a ${fn} ${BACKUP_EMAIL}"
                test -r ${fn} && /bin/ls -la ${BACKUP_PATH} | /usr/local/bin/mutt -s "${MAIL_SUBJECT} - Part - ${fn}" -a ${fn} -b ${BACKUP_EMAIL}
        done
        #ls -1d ${PREFIX_NAME}* | xargs -n 1 -J % /usr/local/bin/mpack -s ${BACKUP_TEMP} % ${BACKUP_EMAIL}
        rm -rf ${BACKUP_TEMP}*
fi
#restore: cat ${PREFIX_NAME}* >> RESTORE_NAME