Lorem Ipsum Sit Dolor Amet Iscuim.

Oceanic | 人生海海

Time is always against us.

[Lighttpd] get real IP from proxy

由於先前在測試用 nginx 放在原本的 lighttpd 前面作 load balance 還是 reverse proxy 什麼的, 不過因為完全沒碰過, 只能亂搞, 沒想到成功了 XD (雖然有設錯, 整個站有掛掉一下下)

本來是想說到時候 StickerAction 撐不住, 可以把 request 分到別台去, 不過看目前的情形都還撐得住, 最高也還沒到 20 req/s, 是我小看了 256slice 阿 ~”~ 不過應該也是因為加了之前做的, 讓圖片快取住的功能, 才能減少一些 request 的。

不過當時唯一有問題的就是, 當我再看 log 跟 session 的時候, 發現, ip 全部都是 127.0.0.1 阿!! :o 幸好之前程式中 session 沒有要 match ip XD 原來 lighttpd 那邊要開 mod_extforward 來取得 client 經過 nginx proxy 後, 原本的 IP 位址。

lighttpd 再 1.4.14 之後就都有 mod_extforward, 只是好像預設的 lighttpd.conf 都不會列出來。 所以只要再 server.modules 裡面載入 mod_extforward 就可以了, 只是記得要放在 mod_accesslog 後面載入, 如下:

然後加上個相信的 IP 來源就可以啦 :D

雖然也不知道放個 nginx 在前面有沒有發揮什麼作用就是了 XD anyway 至少之後可以直接把 request 分到另外一台

關於 Simplepie cache (db cache)

這篇還是記錄在 StickerAction 的效能上做的處理。 StickerActionSimplepie 來讀取 RSS, 然後用上了 cache, 來避免一直對外部做 request, 也減少流量的支出。研究了一下 Simplepie 的 cache 儲存方式, Simplepie 就是把他所抓取的 url 做 md5 當成檔名存成 cache 檔案, 檔案裡面則是存放 serialize 後的資料。

所以為了搭配上一篇所提到的存取控制, 計算這次是否有對外部做了 request, 所以寫了下面這一段, 來判斷是否有對外存取, 進而做存取控制。

Read the rest…

簡單化的網頁設計

今天看了一篇文章 How Simple Web Design Helps Your Business 說明為何網頁設計要朝向簡單化的設計方向, 不要在網頁上放入太多東西, 特別你是在賣東西阿!

Apple 的網頁總是很精簡, 但很漂亮, 我也總能一目了然的就看出, 現在在主打哪個產品, 我想找的東西在哪, 都可以很快的找到我要的資訊, 或我想購買的產品頁面。像我用的 Slicehost 的網頁也非常簡單, 雖然說, 他們的產品線本來就很精簡 XD

而且現在的網路使用者越來越沒有耐心了阿, 所以當一個頁面放入太多東西, 會讓使用者找不到想要的東西, 或是被太多不相干的東西干擾視線。

基本上, 我個人覺得 8 秒差不多吧, 8 秒過了還沒看到我想要的東西, 就會讓我覺得這個頁面設計的很爛, 因為我就會開始沒耐心了 …

太多重點, 等於沒有重點阿!!!!

StickerAction 對外 request 被擋的處理

yahoo error 999
最近在為了減少 StickerAction 對外部的 request 數量作處理, 花了好一些工夫 XD 因為 wretch 那邊大概只要有 50 個 request(一小時或半小時, 阿災), 就會被先前 xdite大大 說的 Yahoo 金鐘罩檔掉了。 請見上圖 Yahoo 999 XD
Read the rest…

紀錄一下 OTRS 連 SQL Server 的東西

在 Perl 要連到 MS SQL Server 真的是很麻煩, 如果是透過 ODBC 的話, 則要設定好 FreeTDS 還有 unixODBC, 設定檔大概像下面這樣吧:

FreeTDS (freetds.conf)

[OTRS]
host = 192.168.1.1
port = 1433
tds version = 7.0
client charset = UTF-8

unixODBC (odbc.ini)

[OTRS]
Driver = FreeTDS
Description = Microsoft SQL Server(OTRS)
Trace = No
Servername = OTRS
Database = otrs_db

如果都運作正常的話, 執行下面的 Perl code 應該不會有錯誤訊息。
Read the rest…

base ball bear - change

我覺得這支 MV 拍的很屌, 同一個人, 同時出現兩個, 而且是不同方向, 可是動作一樣, 應該是一次出動兩支攝影機, 之後在合起來, 阿災, 我亂猜的, 但是就覺得很屌, 喜歡這支 MV, bass 手一開始的動作也很帥。
Read the rest…

[網摘] Aug 23th 2008

No need for set/get methods in Python

jQuery JSON with PHP json_encode and json_decode

How to filter user submitted data easily in PHP?

twittex.com Launches!
當中提到 twittex.com 只花了 6 天就搞定了, 用的是 symfony, PHP, mysql 跟 q4m

Implementing Iterators

Dynamically Creating Graphs and Charts with PHP and GDChart

Real-world experience with the new NetBeans PHP and JavaScript editors
NetBeans 現在好像拿來寫 PHP 還不錯, 只記得以前用 NetBeans 寫 Java 交作業…

NETTUTS.com: Building a Better BlogRoll: Dynamic Fun with SimplePie and jQuery

Running Zorba with PHP
Zorba, the XQuery processor

Gentoo 裝 logrotate 真的是很簡單

由於 StickerAction 的 request 數還算滿多的, 所以 access_log 一下子就累積到幾百 MB 了, 想說之前有聽過 logrotate 這種東西, 就用 portage 找了一下。

Gentoo 的 Portage 真的是很貼心阿, 在裝好 logrotate 之後, 自動把一些需要 logrotate 的服務設定也都作上去了, 似乎在裝的時候, 系統會看你目前的服務有那些, 然後把相關的服務都給設定好! 像是 lighttpd 跟 mysql 的 log 現在自動 rotate 了, 但是我只打了下面這一行進行安裝。

所以搞到最後我根本不知道怎麼設定 囧

要先放棄 kohana 了 Orz

validation 超難用, 可是他的 ORM 超好用阿!!! 幹…

設定 Kohana 透過 Gmail 發信

有了之前設定 CodeIgniter 透過 Gmail 發信的經驗, 這次設定 Kohana 就快很多了 :p

不過 CodeIgniter 是 email library, 而 Kohana 則是 email helper (實際上是使用 swift mailer)。

設定檔 /application/config/email.php

然後接著就可以用以下的 code 來發信啦!