學生時期,只做過軟體開發類的打工,攝影類型的工作還是頭一遭。
前陣子透過「影像紀錄區」的攝影履歷功能,收到外部的攝影專案發包訊息,是台南市新光三越西門店週年慶活動,徵求攝影師為活動做記錄。
平常都是拍風景與研討會居多,這次是魔術表演與氣球藝術創作,非常特別。氣球師父不到一分鐘可以把長條形氣球折成刀、劍、槍,還有超強的生氣鳥帽子!最好笑的是魔術師表演結束時觀眾的表情!
ps. 好家在魔術師沒有把我的工讀金變不見 XDDDD
軟體開發、伺服器和生活瑣事
CodeIgniter 是個輕巧的 PHP framework,支援 MVC 架構、詳細的文件、還有外掛可以裝。若是第一次使用 PHP framework,CodeIgniter 會是個不錯的選擇。
到官方網站的下載頁面把壓縮檔抓回來,解壓縮到網站目錄下:
wget http://codeigniter.com/download.php -O codeigniter.zip
unzip codeigniter -d ~/public_html
Done.
解壓縮完成就可以說是安裝完成,不需要特別設定,打開瀏覽器就能看到歡迎畫面。
在 CodeIgniter 目錄下會看到這幾個檔案。其中 system 目錄就是 CodeIgniter 的核心程式碼,整個 framework 的函式庫、資料庫驅動、類別檔都會在這個目錄。application 則是網站程式的所在位置,未來所要撰寫的程式都會放在這個目錄下。index.php 是網站唯一的進入點,依照設定以及傳入的參數不同,而載入不同的程式執行。
$ tree -L 1 .
.
├── application
├── index.php
├── license.txt
├── system
└── user_guide
因為核心程式與使用者自行撰寫的程式分開,之後若 CodeIgniter 有新的版本,更新時只要替換 system 目錄和 index.php 即可。
CodeIgniter 的設定檔位於 application/config/ 目錄下,按照不同類型分成幾個不同的檔案,以下針對一些較常用的設定做介紹。
config.php
整個 framework 的基本設定,包括網站網址、character set、session encrypt key、log 與快取位置等。如果安裝完畢需要做設定,通常先來看這個設定檔。
database.php
需要連接資料庫時,帳號、密碼會在這個檔案設定。依照 dbdriver 的不同,需要填寫的項目也會不同,不是每個項目都必須填寫,例如使用 sqlite 時,username、password 是不需要填寫的。
route.php
CodeIgniter 有 URI routing 功能,會將 index.php 後方參數對應到 controller 及他的 method。這個設定檔能讓你設定預設要使用的 controller、自訂 routing。
autoload.php
CodeIgniter 中除了 Load、Input 等類別是預設自動載入以外,其他類別、函式、模組都是需要用到時才載入,若希望 CodeIgniter 執行時期自動載入類別或是函式,可以在這個設定檔中做設定。
FuelPHP 的 oil 提供快速建立 model 和 migration 的方法,例如要建立一資料表存放使用者帳號:
oil g model users id:int username:varvhar[100] email:varchar[200]
oil 則會幫你產生 table 的 migration:
<?php
namespace FuelMigrations;
class Create_users
{
public function up()
{
DBUtil::create_table('users', array(
'id' => array('constraint' => 11, 'type' => 'int'),
'username' => array('constraint' => 100, 'type' => 'varvhar'),
'email' => array('constraint' => 200, 'type' => 'varchar'),
'created_at' => array('constraint' => 11, 'type' => 'int'),
'updated_at' => array('constraint' => 11, 'type' => 'int'),
), array('id'));
}
public function down()
{
DBUtil::drop_table('users');
}
}
其中 id 自動被當作 primary key,沒有設定 auto_increment。
若要建立一個資料表,需要有欄位「id」當作 primary key 且設定 auto_increment 屬性,可以將「id」從 oil 參數中去掉,當 oil 偵測到資料表沒有欄位名稱包含 id 且沒辦法設定 primary key 時,便會自動新增一個「id」的欄位:
public function up()
{
DBUtil::create_table('users', array(
'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),
'username' => array('constraint' => 100, 'type' => 'varchar'),
'email' => array('constraint' => 200, 'type' => 'varchar'),
'created_at' => array('constraint' => 11, 'type' => 'int'),
'updated_at' => array('constraint' => 11, 'type' => 'int'),
), array('id'));
}
oil 的參數中很清楚標示欄位的設定為 fieldname:type,沒辦法加入其他欄位屬性。假設要為欄位加上其他屬性,像是 null、index 等,則必須在 oil 產生 migration 以後,手動在 migration 中新增自己需要的屬性。
ps. oil 還會偵測資料表名稱,migration 會將資料表名稱改成複數。
新版的 Chrome 已經無法安裝未透過 Chrome Web Store 驗證的外掛,但可以透過 Tampermonkey 載入。
先安裝 Tampermonkey:
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
安裝好後,便可以透過 Tampermonkey 再載入 YouTube HD Suite。
ps. Tampermonkey 雖然可以載入第三方外掛,但執行不明外掛還是會有安全上的疑慮,請記得先確認外掛安全性。