Linux 程式開發編輯器 Geany + Fuse 遠端掛載

Geny 自己買的筆電灌上了 Ubuntu 作業系統,Linux 系統好處多多,指令自己也熟悉,想架什麼站都可以,但是最主要還是要找一套程式開發編輯器,網路上看了大部份文章,我決定用 Geany 這套免費的編輯器,在 Windows XP 底下我則是使用 PSPad 搭配內建的 FTP 功能遠端編輯寫程式,但是 Geany 並沒有支援 FTP 功能,可以詳細看到官方網站 Q&A,官方建議搭配 FuseLUFS,這樣並不只是 Geany 可以使用,其他 Application 也可以任意使用了。 在介紹 Fuse 之前可以先參考過去寫的一篇教學: [SSHFS] 好用的 SSH Filesystem fusefs-sshfs in FreeBSD or Linux,裡面分享了 FreeBSD 跟 Linux 底下的 tarball 安裝方式,當然現階段 Ubuntu 安裝就很容易了,透過 Apt 管理的方式安裝:
$ apt-cache search sshfs
sshfs - filesystem client based on SSH File Transfer Protocol
sshfs-dbg - filesystem client based on SSH File Transfer Protocol (with debbuging symbols)
sbackup-plugins-fuse - Simple Backup Suite FUSE plugins
$ apt-get install sshfs
安裝完成,透過底下指令把遠端資料夾 mount 過來吧。
$ mkdir /home/appleboy/tmp
$ sshfs -p 22 appleboy@XXX.XXX.XXX.XXX:/home/appleboy /home/appleboy/tmp
Geany 真的蠻好用的喔,推薦給大家,還有其他 screenshot 可以參考這裡

PHP 將長期宣導程式設計師將 ext/mysql 改用 pdo_mysql 和 mysqli

php-logo
今天看到一篇 PHP-Dev 公佈一篇 [PHP-DEV] deprecating ext/mysql,大意就是 PHP 官方未來將打算移除 ext/mysql 的所有相關文件及功能,作者相信很多程式開發者都是用 mysql 套件下去開發,聽到這消息會非常錯愕吧。 官方 documentation team 討論移除的原因在於安全性的考量,在 DK 大神那邊看到是使用 ext/mysql 必須自己處理 mysql_real_escape_string 和 mysql_escape_string,所以官方希望教育使用者不要再使用 ext/mysql 了,底下是官方會做的事情
  • 增加說明指出 ext/mysql 已過時
  • 建議和取代方案
  • 包含取代方案的範例
官方提供了兩個解決方案 pdo_mysqlmysqli,官方列了幾點說明:
  • 從現在開始教育使用者及增加說明文件
  • 在 5.4 版本增加 E_DEPRECATED 訊息,甚至 5.5 6.0 都可以
  • 提供 pdo_mysql 轉換的說明文件
  • 專注於整理 pdo_mysql 跟 mysqli 的線上文件
  • 增加 “The MySQL situation” 的文件說明現況
看完這篇,大家現在趕快轉換到 mysqli 或者是使用 PDO 來開發程式吧

簡易 CodeIgniter Layout Library for Template

在 Web 開發網站,最重要的就是切割版面 CSS 化,制定共同部份 header 跟 footer…等,如果是用在 CodeIgniter Controller 裡面,呼叫 Views 的時候,如底下程式碼:
$data = array(
    "title" => "Welcome to Test"
);
$this->load->view("header");
$this->load->view("welcome", $data);
$this->load->view("footer");
大家可以發現只要任何一個 Controller 的函式都必須寫上面的程式碼,這樣是不是重複率太高了呢?在 CodeIgniter Wiki 裡面發現一個不錯用的簡易 layout library,他的作法就是利用 $this->load->view 裡面的第三個參數來達成,可以參考線上文件 – Views 最後一個段落 Returning views as data,我們參考看看底下官網提供的程式碼:
obj =& get_instance();
        $this->layout = $layout;
    }

    function setLayout($layout)
    {
      $this->layout = $layout;
    }
    
    function view($view, $data=null, $return=false)
    {
        $loadedData = array();
        $loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);
        
        if($return)
        {
            $output = $this->obj->load->view($this->layout, $loadedData, true);
            return $output;
        }
        else
        {
            $this->obj->load->view($this->layout, $loadedData, false);
        }
    }
}
?> 
注意裡面制定了 layout_main.php 這個 Template PHP 檔案,所以大家需要在 application/views 資料夾產生此檔案,或者是可以透過程式 setLayout 函式去修改,至於我們怎麼傳變數到 Template 裡面呢,作者的作法是建立一個 config 檔案,裡面把不會變動的變數都寫在裡面,比如說是網站 site_name site_description site_keywords 等資料寫到 application/config/site_settings.php,接下來修改 layout library 裡面的 view function:
$loadedData = array(
    "content" => $this->obj->load->view($view, $data, true),
    "site_name" => $this->obj->config->item('site_name') . $title,
    "site_description" => $this->obj->config->item('site_description'),
    "site_keywords" => $this->obj->config->item('site_keywords'),
); 
可以自己變化看看,我想應該是不難的。如果有任何問題,歡迎到討論區留言