SQL Server的Identity欄位使用/複製/重設

在資料庫中, 常用的一個流水編號通常會使用 identity 欄位來進行設置, 這種編號的好處是一定不會重覆, 而且一定是唯一的, 這對table中的唯一值特性很重要, 通常用來做客戶編號, 訂單編號等功能, 以下介紹關於此種欄位常用方式及相關技術.

後面的範例表皆以此表為建立:

CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
分類
程式技術

Referer參數的最大長度

在分析網站記錄時, 很常用的一個資訊就是來源參考, 也就是 http reqeust header 中的 referer, 我們先來看看 rfc 的規格:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36

在 rfc 內並未對此進行規範, 也就是說, 沒有限制該參數的最大長度限制, 這樣看來應該從 url 的最大長度來看, 接下來我們再來看看相關的 rfc 資料:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

隨機文章列表RandomArticle 0.9

利用了 MySQL 的 rand() 函數, 將文章做出隨機列表, 內容相當簡單明瞭, 可以做為寫 plugin 的入門參考資料. (詳情參考 https://diary.tw/archives/372 這篇隨機資料取得)

由於在 {$database[‘prefix’]}Entries 要選出文章, 得有以下幾個條件:

  1. owner=$owner (使用者blog內的文章)
  2. visibility=2 (公開的)
  3. draft = 0 (非草稿)
  4. category >= 0 (非公告, 寫到這, 想到 TopView 有一些問題, 因為沒區分公告連結)

TT的$suri好用資訊

在實作這麼多支 plugin 後, 因為網友在留言問了 RSS for Categories plugin 的問題, 於是找到了韓國 TT 官網上的 plugin 名稱為 Sub RSS (for TT 1.0.2), 接下來就測試, 也觀察這個 plugin 的實作方式及用法. (link)

因為都是韓文, 所以也就看不懂說明, 不過看 code 多少可以看得懂用法, 這個 plugin 是用來做在分類檢視(Category View)及標籤檢視(Tag View)下, 將 [ ##_SubRSS##_ ]這個代碼取代為一個 RSS 的圖案, 並含有在該分類檢視或標籤檢視下的 RSS 連結, 可以達成該網友問的問題的參考解答.

ASP中的cache方法

之前介紹了在 ASP.NET 中的 cache 方式, 現在來看看 ASP 中的 cache 方式.

由於 ASP 中沒有內建的 cache 物件, 所以沒辦法利用 ASP 中的內建的方式來進行 cache, 如前篇所言, cache 類似全域物件的 Application , 所以實作 ASP 的 cache 方法, 就是利用 Application 來實作囉.

這裡利用了兩個變數, exp_”cacheToken” 及 data_”cacheToken” 兩個 Application 的變數來進行操作, 程式碼如下:

全域form變數的取得

在寫網頁全域 javascript 的部分, 由於 ie 可以很容易的解析全域型變數, 也造成有些網站在實作 client javascript 時, 會發生一些問題.

基本上在網頁上存取頁面元件時, 可以利用 DOM 的方式進行, 以免發生跨瀏覽器的問題, 以下為一些常見的狀況. 例如頁面上有個唯一的 form, name為 f1 時, 通常會有人這麼寫:

f1.submit();

分類
好用軟體

WordPress MU 1.0終於出來囉

http://blog.chweng.idv.tw/archives/396/ 得到這個消息!
WordPress 是一個很棒的架 blog 站的軟體, 但多人使用 mu 版本一直都在開發階段, 終於正式的版本出來囉!

先將安裝及觀察的狀況簡單說明一下.

多人結構可以支援子網域及子目錄的方式. 基本上它可以線上直接申請一個新的 blog, 但目前是直接利用 wp-signup.php 這個程式進行申請, 不過線上申請是只能用4碼自定子域名, 而無法更短, 但由 admin 的介面上, 邀請的話, 則是可以設定更短的域名哦!

在php中的UTF-8字元斷字方式

在 PHP 中, 若是有中文字時, 使用 substr() 函數時, 會發生斷字的問題. 如何解決呢? 我們可以利用 mb_ 開頭的系列函數來操作我們需要的行為, 例如取出左五碼, 可以這麼下:

$str = "中文字及english測試";
echo mb_substr($str, 0, 5, 'UTF-8');

這樣會顯示 “中文字及e” 這樣五個字出來.

另外一個重點在於該組函數後面加入的 encodeing 是關鍵, 若是 UTF-8, 可以用 UTF-8 或 UTF8 皆可以正常使用, 還有較常用的兩個函數: mb_strlen 及 mb_strwidth, 前者是用來取得字元個數, 後者則是取得寬度, 後者目地主要在於排版顯示用途, 因為寬字元會計算為 2, 如此一來便能有效地算出參考寬度.

以下為參考程式碼:
http://sample.diary.tw/4/php.php

TT實作閱讀統計資訊-ViewCounter1.1插件實作

由於 TatterTools 的文章閱讀方式, 和一般的 blog 有些差距, 大多數的 blog 是將文章(或稱article)”繼續閱讀” (“more…”) 這種放在另一個文章頁面裡, 也就是說, 將文章區分為兩個部分, 好讓集合的頁面只顯示前面(一般使用summary, abstract, first part來描述), 而整篇的內容則是用 content, body, article 來描述, 如此一來就將文章區分為兩塊.

最近HEMiDEMi有點慢

由於在右側有引用了 HEMiDEMi 的最近書籤, 但因為在網路尖峰時間, HEMiDEMi 有點慢, 也會造成本網頁的負擔, 於是乾脆自行寫個快取機制來解決這個問題.

做法很單純, 我實作了一支小程式, 利用 php 去取得原來 javascript 內的網址內容:

http://www.hemidemi.com/digest/user/timhuang/bookmark/recent

再來就是存在本地檔, 利用了 filemtime 來取出檔案的修改時間, 並與現在時間比對, 若久於一定的時間(目前訂為 1200秒), 就重新再取, 否則就直接用快取檔案的內容, 如此一來便能大幅加速這個在尖峰時間的 javascript 下載慢速的問題.

所以原來的 <script type=”text/javascript” src=”http://www.hemidemi.com/digest/user/timhuang/bookmark/recent”></script> 就被改為引用實作好的 cache php 檔案: <script type=”text/javascript” src=”https://diary.tw/skin/customize/1/hemidemi.php”></script> 如此一來, 該 php 就會依上述工作方式來進行工作.

實作完成後, 覺得要多加個統計來找出 cache 的比例, 於是再利用了另一個檔案記錄 cache 和總使用次數, 並例在該 HEMiDEMi 區域, 如下:

其中前面的數字代表使用 cache 的, 後面為總使用次數, 這樣看起來蠻好的…

[2006/10/4 23:46]
再新增讓使用者知道是利用 cache 出來, 或是真實去 HEMiDEMi 取得內容的狀況, 會出現 Cached 及 Real 兩種說明:

[2006/10/9 16:46]
為了能讓 cache 效能更發揮, 調整 cache 時間為 6小時, 所以 Real 的機會更低囉..