Lorem Ipsum Sit Dolor Amet Iscuim.

Oceanic | 人生海海

Time is always against us.

phpQuery - PHP 處理 HTML DOM 的好幫手阿!

phpQuery, 在 PHP 處理 HTML DOM 的好幫手阿!! 哈! 這個 project 真不錯, 尤其是對於有使用 jQuery 的人, 更容易上手阿 :p 顧名思義, 就是 PHP 的 jQuery 阿! DOM select 的語法跟 jQuery 完全一樣阿! 而且, 當然是 chainable :p 也就是說, 只有 PHP 5 能用囉 :p

目前在 stickeraction 有用到 phpQuery, 真的是很方便 :p

可以看看以下範例, 這一段是我用來抓取網頁中, rss feed url 跟 title 的。

本來這個工作是直接用 simplepie 來作, 直接就可以抓到 RSS feed url 跟 RSS , 可是在抓 xuite blog 的時候卻有問題, 都抓不到 feed_url。
Read the rest…

StickerAction 恢復正常!


因為前幾天的資料庫大爆炸, 導致 StickerAction 的快取都不見了, 所以主機因為沒辦法接受那麼大量的 request, 所以就先把偵測的功能關掉, 這兩天就一直在重寫程式的架構, 終於在今天把 StickerAction 給恢復正常了。

由於 StickerAction 最吃重的地方是在貼出去的貼紙, 貼紙的程式跑的時間越長, request 累積越多, 效能則是直線往下掉。 一開始在寫 StickerAction 的時候沒有考慮到太多效能的問題, 一方面也是因為很懶, 就想把工作一次做完, 所以其實一開始的架構根本就沒辦法負荷太多人貼貼紙。 一開始就只有對貼紙圖片加上一些讓瀏覽器快取的處理, 減少 request。
Read the rest…

主機資料庫大爆炸

老實說, 我也不太清楚是怎麼一回事, 幸好資料庫有備份, 也有另外一台主機可以馬上接手資料庫的部份, 只是 stickeraction 的 cache 被清掉之後, 沒辦法一下子馬上處理那麼多的 request, 其實這也就表示當初程式的設計是有問題的, 沒辦法處理那麼大量的 request。 其實也是因為當初根本沒想說會有那麼多人用 XD

除了 stickeraction 之外, 我放在同一台主機的服務 twitthat 跟我的 blog 也都掛點, 幸好每天都有用 automysqlbackup 在備份, 所以沒有釀成太大的悲劇 Orz

總之, 目前 stickeraction 的狀況就是, 除了無法將已經貼了貼紙的新部落格加進來之外, 其他一切都正常 XD 接下來這幾天要來把 stickeraction 的架構重新寫一遍吧! 還沒有看到被加進串連的朋友請稍後幾天嘿!!

關於 Simplepie cache (db cache)

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

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

Read the rest…

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…

要先放棄 kohana 了 Orz

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

utf-8 轉換至 big5

原本以為碰不到 big5 了說 XD hmm… 在 php 用 iconv 應該都要知道有 //translit 跟 //ignore 這兩個參數可以用, 使用 //translit 參數的話, 如果某個字無法順利轉換, 那麼根據 php manual 的說法是, iconv 會找相近的字代替, 如果真的不行就是用問號代替。 如果使用 //ignore 的話, 碰到沒辦法轉換的字, 就是直接略過那個字, 然後接續剩下的字串。 如果 //translit 跟 //ignore 這兩參數都沒有加, 那麼… 碰到沒辦法轉換的字, 那麼除了發生問題的字之外, 連後面後續的字串也都會不見, 就截斷了。 所以基本上這兩個參數應該是隨便選一個加都比不加好吧? 除非是 big5 轉 utf-8 等, 小字集轉大字集的狀況。

不過今天碰到某個問題, 碰到字串沒辦法轉換就得回覆使用者狀況, 所以寫了下面這一段來處理這個問題, 其中的 $utf8_str 包含了兩個無法轉換至 big5 的字元, “喆”跟”担”。

做法是利用 //translit 參數來轉換字串, 如果無法轉換就會變成問號, 那麼我們就可以從問號來知道字元的位置, 進而回覆使用者無法轉換的是哪些字, 而要求使用者修改, 使用替代的字。

另外, 由於是使用問號來處理, 所以得避開原本就存在的問號, 所以會先將 $utf8_str 裡面的問號 replace 掉, 之後再還原回來即可。 下面混用了 iconv 跟 mb_string XD 應該可以把 mb_strlen 等函式換成 iconv_strlen 會比較統一 :p
Read the rest…

讓瀏覽器快取 PHP 產生的圖片

由於 stickeraction 的關係, 貼出去的貼紙讓我的主機流量暴增, 覺得這樣下去這個月的 100G 流量一定會爆, 所以對於貼出去的貼紙做了一些處理, 讓瀏覽器快取住, 多少可以減少一些流量, 其實一開始就該做了 XD 只是沒有意識到, 完全沒有經驗 XD 而且工作上也比較沒有流量的考量, 所以這次也學到了些東西。

原本在主機上就都有設定 lighttpd, 讓圖片, js 跟 css 檔產生 etag、expire 跟 last modified … 等的 HTTP headers, 利用瀏覽器的快取機制來減少主機的流量。 不過由 PHP 產生的圖片完全沒有 cache, 今天才改了一下程式, 加上一些 header, 來減少流量的支出, 不然這個月主機流量穩爆 ~”~
Read the rest…

vim 也可以有 textmate 的 snippet 功能!!

snippetsemu 真是好物阿!!

話說 textmate 真的是很屌, 可是我還是離不開 vim, vim 的 dd, yy 真的是很贊阿! XD 其實最主要的是, 上班不會帶 mac 去公司, 在公司又是用 windows, 所以通常都直接 ssh 上測試環境的 server 用 vi 在寫程式。

今天突然想到 vim 搞不好有 textmate snippet 外掛, 所以就找了一下, 就找到了 snippetsemu 啦!! 真的是很 high!

記一下安裝方式:

  1. 首先要有 vim 7
  2. snippetsemu 在 vim.org 的頁面下載 snippy_plugin.vba 跟 snippy_bundles.vba
  3. 然後用 vi 打開 snippy_plugin.vba, 應該會在最下面一行看到 ***vimball*** Source this file to extract it! (:so %)
  4. 接著就照做啦, 打 :so% 就會裝上 snippy plugin
  5. 最後對著 snippy_bundles.vba 依同樣步驟做即可

再來就是測試一下, 編輯個 foo.php, 先輸入 for 然後打 <tab> 看看, 哈! 超 high 的勒!

[ links ]
snippetsemu on Google Code
snippets blog

Page 1 of 712345»...Last »