找個counter來用用

找一個可以統計文章的 counter 來用用, 有找到一篇文章介紹: Views counter for WordPress, 於是就進行安裝, 由於目前系統環境是在 php 4的關係, 所以使用了原作者建議的 vc.0.07版本使用.

該 plugin會在系統內建立一個table, 用來存放記錄, 內容為文章 id, 訪問者 ip, 以及該 ip 的訪問次數 views, table 內容如下:

table.png

所以文章會依設定狀況顯示出被多少訪客(visitors, viewers)訪問多少次(view times)的資訊. 習慣研究 plugin 寫法的我, 當然先看看該 plugin內容一下, 結果發現有個可以改善的地方, 就是 function get_stats($id) 這個 function, 原來的寫法是查詢兩次, 分別查出訪問次數及訪客數, 而其中訪問次數是查詢出來後再用迴圈做加總, 這個真的不是很理想的方式, 而第二個查詢則是用較正常的 count(*) 方式(aggregation function)來取得訪客數, 其實要改善的主要是第一個先用 sum(views) 改為aggregation function, 把加總的工作改由 db 運算, 再來就是兩個查詢都是用 aggregation function 的話, 可以再合併起來查詢, 更能節省資源, 於是就由原來的:

“SELECT views FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” + for-loop 取得 $cnt

“SELECT COUNT(*) FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” 取得 $viewers

改為

“SELECT sum(views),COUNT(*) FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” 同時取得兩個值.

一次取得兩個值, 並利用 wordpress 的 $wpdb->get_row 配合 ARRAY_N (取得值陣列)的參數調整直接 return 回去即可大幅改善效能. 這個部分我想再通知原作者調整, 讓該插件的效能更好, 取得作者同意後我再將更新的插件連結提供出來.

另外由於 wordpress 本身的設計良好, 所以這個插件在我目前使用的 wordpress mu 也都能順利正常地工作無誤, 若是有使用 wordpress mu的朋友可以放心使用.

[2007/10/1 1:07]
將 cryonyx 放在 google repo 的連結放上來: http://code.google.com/p/views-counter/
並新增版本 vc0.071: http://views-counter.googlecode.com/files/vc.0.071.zip

RSS2才有pubDate啦

由於習慣用手機訂閱rss閱讀blog文章, 但一直覺得 wordpress怪怪的, 怎麼會沒有 pubDate 這個屬性, 因為在訂閱 wordpress 的 rss 時, 在手機上顯示的文章日期總是 0-0 0:00, 於是今天觀察一下的確是沒有這個屬性的, http://tim.diary.tw/rss 試看看, 每個 item 內就只有 title, description, link 三個屬性, 當然不能怪手機的 rss reader 沒有取得文章發表時間囉.

查了一下資料: http://codex.wordpress.org/Customizing_Feeds 發現原來 wordpress 提供了多種 rss 的格式, 一共有: RSS2.0, RSS0.92, RDF, Atom 多種格式, 使用方式就直接用 http://tim.diary.tw/rss2, http://tim.diary.tw/rss, http://tim.diary.tw/rdf, http://tim.diary.tw/atom 這樣就可以了, 然而在 http://tim.diary.tw/ 頁面上就有提供了

<link rel=”alternate” type=”application/rss+xml” title=”Another My Program RSS Feed” href=”http://tim.diary.tw/feed/” /> 

這個 link 了, 所以其實是我用 rss 的關係才造成沒有 pubDate 屬性啦, 真的是誤會一場啦. 趕快把手機上的訂閱連結更一下囉, 果然就有正常的發表時間功能了.

另外上面提供的 http://codex.wordpress.org/Customizing_Feeds 有許多可以自製的 rss 設定及方式, 是相當實用的一篇技術文章, 若是有要自訂特殊格式的需求, 應該很容易調整的!

SQL Server Transactional Replication注意參數(max text repl size)

在使用 SQL Server Replication 發行資料時, 有個重要的參數必須要特別注意的地方, 就是 max text repl size, (在 SQL 2005也會影響 varchar(MAX) 這種型態的欄位).

參考這篇 最大文字覆寫大小選項 的設定方法來進行調整(利用 sp_configure).

另外在這篇 交易式複寫考量 也有說明在使用 Replication 時, 要注意覆寫資料的 size 上限, 若是在寫入資料大於該設定的 size 時, 將會發生 error, 內容如下:

Length of LOB data (??????) to be replicated exceeds configured maximum 65536

如此一來便會造成寫入失敗而無法成功寫入資料, 這在沒有使用 交易式複寫 時不會發生的問題. 這在使用交易式複寫時要特別注意的地方!

SQL Server Replication預設不會複製nonclustered index

在使用 SQL Server Replication 機制時, 要特別注意有關複寫參數的部分, 由於預設是不會複製 noclustered indexes的, 所以在使用上要特別注意這點. 這樣的預設有好有壞, 好處是複寫出來到訂閱者資料庫的彈性相當大, 可以依需要再進行 index 設計及應用, 壞處是若管理人員或使用人員沒有發現, 在使用上將會有某種影響訂閱者資料庫的效能!

閱讀全文

plugin for google analytics

新安裝好的 wordpress mu 開好了 blog: http://tim.diary.tw 一定是要安裝一下 google analytics 來進行分析, 於是到 google analytics 新增加了一個一分析站台後, 取得了追蹤 code (javascript), 然後想說不要修改 skin 的狀況下, 利用 widget 進行 javascript 的安插, 結果發現內建並沒有適合的 plugin 可以做這樣的功能, 於是就開始找看看有沒有這樣的 plugin.

閱讀全文