分類
PHP 懶得分類

php中改變ini設置方法

在 php 中, 有時需要調整 ini 內的設定值, 以獲得某些特性, 例如將 display_errors 參數設置為 Off 時, 做為錯誤資訊隱藏, 但是在寫作或除錯程式時, 希望能將此參數設置為 On, 設置完成後又要重起 apache, 這樣不僅不方便, 又會影響服務, 此時使用 ini_set() 函數將會是最方便有效的方式.

string ini_set ( string varname, string newvalue )
函數用法: http://tw2.php.net/manual/tw/function.ini-set.php

利用 ini_set 可以將 ini 的參數於設置時更動, 並於該 php 結束時復原, 若需要提早復原, 可以利用 ini_restore ( string varname ) 進行參數復原操作.

如此一來, 便能方便快速地在某些程式裡進行參數調整又不影響其他程式運行, 將能有效方便維護及應用. 後面為一個範例:

http://sample.diary.tw/6/ini.php

另外值得注意的是, 此參數可用 On, on, 1 代表開啟, 利用 Off, off, 0 代表關閉!

參考資料:
http://blog.chweng.idv.tw/archives/413/

分類
Database 懶得分類

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

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

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

CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
分類
TatterTools 懶得分類

隨機文章列表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 有一些問題, 因為沒區分公告連結)
分類
TatterTools 懶得分類

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 的變數來進行操作, 程式碼如下:

分類
Javascript 懶得分類

全域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 懶得分類

在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

分類
TatterTools 懶得分類

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

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

分類
PHP 懶得分類

最近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 的機會更低囉..