ScarShow

< IS >

接續前一篇,我們開始實做比對的機制,所以我們稍微修改一下route.php

<?php
// filename: router.php
class router {
    public function __construct() {
        $this->method = $_SERVER['REQUEST_METHOD'];
        $this->url = $_SERVER['PATH_INFO'];
    }

    public function add($route, $callback) {
        $this->rules[] = array(
            'route' => $route,
            'callback' => $callback
        );
    }

    public function run() {
        foreach($this->rules as $rule) {
            if($rule['route'] == $this->url) {
                $rule['callback']();
                break;
            }
        }
    }
}

之前有個開發Framework的經驗,在REST的設計風格中,HTTP Method是操作Resource的動作,而URL則是需要操作的Resource本身。所以我們必須讓HTTP Method及URL對應到要執行的程式上,實做Router的需求就這樣產生。那麼以下是不專業的範例教學。

首先建立一個PHP程式 server.php

<?php
// filename: server.php
print_r($_SERVER);

最近有個專案有機會用到Facebook所提出的HipHop for PHP,它可以將PHP程式碼轉為C++並編譯成可執行檔用來加速處理效能,在這邊筆記一下安裝過程。

refrence: Building and Installing on Ubuntu 11.10

先將系統的編譯環境用apt安裝好

sudo apt-get install git-core cmake g++ libboost-dev libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl build-essential binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev wget memcached libreadline-dev libncurses-dev libmemcached-dev libbz2-dev libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev libcloog-ppl0

HTML5提供了許多的新功能其中一項就是Local端的儲存功能,在Javascript中的函示分別為window.openDatabase及window.localStorage,window.openDatabase相較於Cookie有很大的不同,而window.localStorage比較相近於Cookie是一種key-value的儲存方式。

使用window.openDatabase的方法,這是在Local端建立一個SQL資料庫

var db = window.openDatabase(name, version, display_name, size);

最近因為專案所以在開發手機及平板的網頁,當在測試時發現只有iOS的裝置 (iPhone/iPad) 在旋轉後網頁怎麼會自動放大 Android 則一切正常,查了一下原因是出在meta這個 Tag 的設定。

以下是原本的meta

<meta name="viewport" content="width=device-width, initial-scale=1">