Tuesday, March 29, 2011

TIMESTAMP 的使用 memo

查詢某個 TIMESTAMP 欄位在一天內的資料

SELECT * FROM table WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) > time
DATE_SUB 的參考文獻
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

TIMESTAMP 的幾種 Default 值:
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

Monday, March 28, 2011

MVC Frameworks Document (1)

./controllers/api_welcomes_controller.php
/**
 * Example Controller
 * 網址範例 http://localhost/api.php?c=api_welcomes&a=index&p[]=p1&p[]=p2
 * 參數 p 是一個矩陣, 可以帶到 action 使用
 * 目前 index 這個 actin 有兩個引數 ($p1 和 $p2)
 * 所以要帶兩個參數 p (p[]=p1&p[]=p2) 來滿足該 action 的引數需求
 */
class STOCK_ApiWelcomesController extends STOCK_AppController
{
  public function index($p1, $p2)
  {
    // using argument example
    d($p1);
    d($p2);
    
    // load model example
    $this->load->model('example');
    $this->m_example->info();
    $this->load->model('example2');
    $this->m_example2->info();
    
    // load config example
    $config = $this->load->config('auth_exception');
    
    // set view data
    $this->view->set('abc.def', 123456);
    $this->view->set('abc.f', 456);
    $this->view->set('abc.def.xyz', 6);
    // render a element
    $this->view->render_element(
      'example',    // element name
      array('test' => 'this is a element test (1).')
    );
    // set veiw layout name
    $this->view->set_layout('');
    // render a layout
    $this->view->render();
  }
}

./models/example.php
class STOCK_Example extends STOCK_AppModel
{
  public function __construct()
  {
    parent::__construct();
  }
  
  public function info()
  {
    $this->load_database();
    d($this->db);
    $this->load_memcache();
    d($this->mc);
    // load model is also avaliable!
    $this->load_model('user');
    d($this->m_user);
  }
}

./views/api_welcomes/index.php
<p>
---------- This is work! ---------- line 2 ----------
</p>
<?php echo d($abc); ?>
<?php
$this->render_element(
  'example',
  array('test' => 'this is a element test (2).')
);
?>

./views/elements/example.php
<div><?php echo $test; ?></div>

在任何地方插入下面的程式, 可以完成事件的處理 (Event Handle), event 的程式放在 ./events/ 下, 檔名即為 event name
include(event('example'));

Wednesday, March 16, 2011

Race Condition of Memcached

最近在思考使用 memcached 時產生的 race condition 的問題, 因此開始 Google 了一些資料, 目前找到最有用的資料莫過於官網上的文件, 原理還算簡單易懂, 但因為沒有使用過這種方案的經驗, 還不知道實際執行的效果為何, 下個月應該就能作實驗了吧, 希望能有不錯的收獲!