年份: 2009 年
開心農場被 DDOS
還以為上次 180 顆石榴已經夠誇張了,沒想到這次的更……….
到底有誰可以這麼有耐心一直重新整理,這不知道要收幾個小時才收的完…..。
縮短網址 vs. Hash
一直到剛剛才想通為什麼大多數的縮短網址會使用 Hash 產生 key,果然不先死過一次不知道為什麼要這樣作。
先從 key 開始起吧,為了讓 key 更短通常會使用更多的文字或符號,從數字、英文大小寫甚至特殊符號。假設使用數字和英文大小寫作組合,每一位數都有 62 種組合 (10 + 26 + 26),用四個位數的話可以儲存約一千五百萬比資料,這對我這種小網站應該很夠用了。
還沒想通資料量和 hash 有何關係?那就來看看新增時到底要作哪些事情:
- 查詢資料是否已經存在
- 產生網址與 key 的對應
- 儲存結果
問題很明顯出在第一步驟,一千萬筆資料 query 一次到底要花多久的時間?有作索引也要花超過十秒,沒作索引花個半小時可能也算快。
如果將步驟改成這樣:
- 將網址作 Hash
- 使用 Hash 的結果查詢資料是否存在
- 檢查是否發生碰撞
- 儲存結果
在第一步先產生 hash 結果就可以減少搜尋的範圍,範圍縮小就可以減少第二步驟查詢所需要的時間。
現在開始後悔沒有好好學演算法了,我要怎麼自己寫一個 hash 函式出來啊???
原來 FreeBSD 不需要 dos2unix 工具
從 Windows 複製到 FreeBSD 的檔案,通常會因為換行字元不同,在 FreeBSD 開起來以後會在行尾看到「^M」的符號。
一般狀況下可以用 dos2unix 工具作轉換,不過 FreeBSD ports 裡面並沒有這個套件,不過後來查一下資料發現其實不用這麼麻煩,下個指令就好了:
cat file | col -b > new_file
FAMP:FreeBSD + Apache + MySQL + PHP
Install Apache
cd /usr/ports/www/apache22
make WITH_MPM=worker WITH_THREADS=yes install clean
for subversion:
make WITH_MPM=worker WITH_THREADS=yes WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes WITH_SSL_MODULES=yes WITH_PROXY_MODULES=yes WITH_BERKELEYDB=db42 install clean
然後到 /boot/loader.conf 加入一行
accf_http_load="yes"
讓 Apache 開機時自動啟動,到 /etc/rc.conf 加入一行
apache_enable="YES"
若有看到以下錯誤訊息:
Invalid argument: Failed to enable the 'httpready' Accept Filter
檢查一下核心設定檔是否有加上:
options ACCEPT_FILTER_HTTP
Install MySQL
cd /usr/ports/databases/mysql51-servermake install clean
如果希望 MySQL 支援 Big5 編碼,請在 Makefile ONFIGURE_ARGS 參數後面新增:「–with-charset=big5」
CONFIGURE_ARGS= --localstatedir=/var/db/mysql --without-debug --without-readline --without-libedit --with-libwrap --with-mysqlfs --with-low-memory --with-comment='FreeBSD port: ${PKGNAME}' --enable-thread-safe-client --with-charset=big5
不過這個缺點是會讓 MySQL 建立新的資料庫時,預設的編碼都選擇 big5,而 big5 已經越來越少用了,所以建議以加上參數的方式,更改對 big5 的支援。
make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci install clean
設定開機自動啟動,在 /etc/rc.conf 加入一行
mysql_enable="YES"
請將適合的 MySQL 設定檔複製到 /etc 底下:
cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
Install PHP
cd /usr/ports/lang/php5make install clean
修改 Apache 設定檔
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
參考資料:
http://blog.twku.net/2005/10/15/18/
ps.餅乾又出現了 0.0
最後修改日期:2009/08/06