利用 PHP MySQL Quota-Tool 來限制 MySQL 存取空間大小

酷!學園發現這篇,有人問到如何限制 MySQL 的使用空間大小,我第一個想到的就是 Linux quota 指令限制大小,看回文有一篇利用 MySQL 來解決此問題:MySQL Quota-Tool,它利用了 MySQL INSERT 跟 CREATE 的權限控管,來達成限制,當資料庫大小超過您所設定的限制,系統就會拔除您的 INSERT 跟 CREATE 權限,如果沒有超過,就會將權限設定回去,基本上非常簡單,首先要先建立一個專屬控管每個資料庫的 database

CREATE TABLE `Quota` (`Db` CHAR(64) NOT NULL, 
`Limit` BIGINT NOT NULL,
`Exceeded` ENUM('Y','N') DEFAULT 'N' NOT NULL,
PRIMARY KEY (`Db`), UNIQUE (`Db`));
[Read More]

[新聞] CodeIgniter v1.7.2 Released

CodeIgniter 終於 Release V1.7.2 版本了,官方網站也公佈了此消息,那這次跟 v1.7.2 版本有哪些不一樣呢,我想最主要應該是支援 PHP 5.3.0 了

  • 相容於 PHP 5.3.0
  • 新增 Cart Class 類別
  • 改善 Form helper 函數
  • 新增 is_php() 到 Common functions 來更有善的比較 PHP 版本
  • 無數個 bug 修正
  • 修改 show_error() 函數功能 更多的 bug 修正,可以觀看

change log,我也順便了 send-pr 給 FreeBSD ports maintainer 請他 update 到 1.7.2:ports/138848,台灣的官網也需要來修正了,已經更新了 v1.7.2 上去,至於繁體中文文件方面還沒更新,有時間會把它更新,如果有任何問題,可以先到論壇留言找我。

[FreeBSD] 取得 FreeBSD CVSUP 的更新狀態

FreeBSD CVS Site_1251699923593 (by appleboy46) 在 Sayya Joehorn 個人版看到有人實做出偵測台灣 CVSUP Server 更新狀態,以及更新的時間,也有程式碼的釋出,參考這篇:Script: 取得 FreeBSD CVSUP 的更新狀態,這篇寫的蠻清楚的,只需要 perl 跟 php 就可以完成,不過在使用過程有些事項必須要注意,在 FreeBSD 6.2 R 之後,已經內建了 csup 指令來更新 ports 或者是核心,所以要在另外安裝上 cvsup ports 套件,在 Perl 方面,也先裝 net/p5-Net-Rendezvous 才可以正確使用。

# 安裝必備軟體
cd /usr/ports/net/p5-Net-Rendezvous/ && make install clean
cd /usr/ports/net/cvsup-without-gui && make install clean
[Read More]

[CodeIgniter] 分享中文官方網站範例程式碼

之前在高雄開了一堂:[CodeIgniter] Open Source PHP Web Framework 系列講座,在上課過程,我很強調大家可以多多參考網路上的範例來學習,所以找了官方網站的程式碼想分享給大家,希望大家看完程式碼,可以針對 CodeIgniter 的 Model Views Controller 有比較深入的瞭解,如果有不懂的地方,可以來論壇這邊提出問題,我會儘快回答大家,底下是程式碼的下載網址,包含論壇程式 PHPBB3,以及所有影片程式碼,大家可以參考看看: 檔案下載 裡面有需要注意的,就是 .htaccess 檔案:

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(videos|download_files|user_guide|forum|index\.php|admin|css|flash|images|img|includes|js|language|captcha|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
裡面會附上 db.sql 檔案,這是資料庫檔案,請麻煩匯入到您的資料庫,然後修改

system/application/config/database.php 內容的資料庫相關資訊,這樣就可以了。

[SQL] MySQL ROW_NUMBER Simulation

在台大 PTT Database 版看到有人問一個問題,我覺得還不錯,問題如下:網頁版

小弟在練習做一個系統遇到以下問題 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | c | 退選 4 | d | 退選 5 | e | 退選 網頁介面如上(用for迴圈+mysql_fetch_object抓出資料) 報名序號 | 姓名 | 志願1 | 志願2 | 志願3 | 志願4 | 志願5 1001 小王 a b c d e 資料庫欄位內容如上 想請問若使用者想退選志願3~~照理說用update把志願3欄位清掉 網頁再一次抓資料會變成志願3的系所變空的(如下表) 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | | 退選 4 | d | 退選 5 | e | 退選 有沒有辦法在select的時候排除空的那欄 也就是說抓資料的時候,以上述為例,只抓出4筆,變成下表 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | d | 退選 4 | e | 退選

[Read More]

[PHP] Gallery 3.0 Beta 1 使用 Kohana MVC Framework

Gallery Gallery 3.0 Beta 1 出來了,在 roga’s blog,看到這篇訊息,gallery 3 捨去 php smaty template engine,而改用 Kohana MVC Framework 這套 base on CodeIgniter 的 Framework,在 Gallery3:FAQ 裡面有提到為什麼會使用 Kohana 這套 MVC,gallery 團隊找尋了許多 MVC 的架構來幫助開發整個相簿系統,包含了 CakePHPZend FrameworkPradoSymfonyCodeIgniter,最後經過許多人的討論,選用了 Kohana 這套 MVC,原本打算考慮 CI 的,雖然 CI 支援 PHP4 跟 PHP5,以及它非常的小,對於效能方面也非常的好,但是並不支援 PHP5 的 exception,畢且有些少數的 Structure 只有支援 PHP4,所以就不被他們採納了,再來 Zend Framework 因為包含了 1705 個檔案,相當龐大,效能比 CI 少了 200-300%,雖然 ZF 文件相當豐富,不過沒有良好的 example 範例,所以導致 gallery 團隊遇到很多挫折,XDD。 最後選擇了 Kohana,雖然 Kohana 效能輸給 CI,不過這之間的差異極小,Kohana 也有 support PHP5 的 exception,Kohana 文件比 CI 還要少了些,不過對 gallery 團隊已經相當足夠了。底下有一篇各大 Framework 的效能比較:PHP framework comparison benchmarks,還有另一篇:Kohana vs CodeIgniter: Speed and Memory Usage Performance Benchmark

[PHP] FreeBSD Sphinx 繁體中文全文檢索 on PHP

sphinx 最近想說幫之前替代役單位來把全文檢索的中文部份搞定,所以找了一些全文檢索的 open source,挑了這套網路上評價還不錯的 Sphinx,目前 Sphinx 支援的作業系統如下:

  • Linux 2.4.x, 2.6.x (various distributions)
  • Windows 2000, XP
  • FreeBSD 4.x, 5.x, 6.x
  • NetBSD 1.6, 3.0
  • Solaris 9, 11
  • Mac OS X 雖然上面寫 FreeBSD 只支援到 6.X,但是我測試是在 FreeBSD 7.1-RELEASE-p6 的環境,所以相當 ok 的,底下是我安裝在 FreeBSD 的心得筆記,PHP 官網上面有支援

Search Engine Extensions 的介紹,包含了 mnoGoSearchSphinx — Sphinx Client、Swish — Swish Indexing,可以利用 pecl 來安裝 Sphinx,目前版本:0.9.9-rc1。

[Read More]

[CodeIgniter] 使用者註冊 auth code 亂數認證碼圖片

我想這已經是網站最基本的技術,防止機器人大量註冊,或者是灌爆留言板,之前寫了兩篇製作認證碼的教學:[PHP]製作類似 google 網頁認證碼[PHP] 好用的留言板 驗證碼 功能,這篇是要寫如何實做把第一篇教學整合到 CodeIgniter 系統裡面,來筆記一下,以後用到就相當方便了,CodeIgniter 在 path 路徑上面有小 bug,查了國外討論區發現了這篇 Path to CSS doesn’t work a second time,不過這並沒有解決我的問題,主機的網址是 http://xxxxx.xxx/path/,所有的 CI 檔案都是放在 path 目錄底下,包含圖片是 http://xxxxx.xxx/path/images/,在 View 裡面基本上只要寫 這樣就可以顯示圖片了,但是要改成 才能,但是我的 index.php 是放在 /path/ 裡面,以絕對路徑跟相對路徑來想,都是不太合理的,所以後來用 來解決,不過這是暫時的問題,我比較龜毛,喜歡寫短一點的 code。 如何裝上類似 google 的認證碼呢,首先打開 index.php 檔案

/* 算出 index.php 根目錄 */
define('Document_root',dirname(__FILE__));
[Read More]

[CodeIgniter] Text 補助函數 character_limiter 不適用於中文字

CodeIgniter 裡面的 Text 補助函數,目前只適用於英文字體,不支援 utf-8 或者是簡體字體,bite 數超過2的都會出問題,當然是因為這是國外的 mvc 所以也沒有考慮到這麼週到就是了,也不是沒有辦法解決,之前就用了PHP官方網站所提供的一個函式來正確切割中文字串,就是要利用 ord 判斷 ASCII 編碼範圍,或者是可以使用 mb_substr 函式正確切割,之前寫一篇可以參考看看:[PHP] 如何切割中文標題。 底下是原本 CodeIgniter 所提供的 Text 函數

if ( ! function_exists('character_limiter'))
{
	function character_limiter($str, $n = 500, $end_char = '…')
	{
		if (strlen($str) < $n)
		{
			return $str;
		}
		
		$str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));
    
		if (strlen($str) <= $n)
		{
			return $str;
		}
    
		$out = "";
		foreach (explode(' ', trim($str)) as $val)
		{
			$out .= $val.' ';
			
			if (strlen($out) >= $n)
			{
				$out = trim($out);
				return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
			}		
		}
	}
}
[Read More]