2012年9月26日 星期三

[MySQL] Manual

Download location

2012年9月21日 星期五

[PHP] primitive data structure--array


  1. 皆為 key-value pair, 預設 key仍為 0, 1, ...
  2. 可以用字串作為 key
  3. 利用 => assign key-value pair, e.g. $array= array("first"=>1, "second"=>2, "third"=>3);
  4. 利用 unset移除元素, 移除後 key(index)不變, e.g.本來是 [0]=> "iii", [1]=>"jjj", [2]=>"kkk", [3]=> "fff"經過 unset($array[2]) 會變成  [0]=> "iii", [1]=>"jjj", [3]=> "fff"
  5. 刪除整個陣列, unset($array)即可
  6. array中 index的順序與加入的順序有關. 先加 [1], [3], [5]再加[2], [4], [6], 則陣列中的順序即為 [1], [3], [5], [2], [4], [6](想成全部都是 key, not index就很好理解了)
  7. array中各元素可以是不同 type
  8. 可以用 array建立多維槽狀 array
  9. 常用 API
    1. bool in_array()
    2. array explode(string separator, string subject): 用 separator將 string 變成 array
    3. string implode(string glue, array pieces): 用 glue將 array中每個元素以 glue隔開形成一個 string

[PHP] PHP的類別與物件


  1. 宣告方式
    1. 關鍵字為 class, 尾端不用分號
    2. member data需加關鍵字 var, e.g. var $unit = 0;
    3. member function需加關鍵字 function, e.g. function add(){}
    4. function 不用寫 return type
  2. 建立物件
    1. 以 new建立, 但不需 (), e.g. $bottle = new UnitCounter; // UnitCounter為 class, 建立好 instance後, assign給 $bottle變數
  3. 存取物件
    1. class name沒有大小寫之分
    2. 以 -> 存取 member data與 member function, e.g. $bottle->unit, $bottle->add()其中 $unit為 class UnitCounter的 member data, 而 add()為其 member function
    3. member function中以 $this->unit, $this->add()呼叫其 member data or function
  4. 建構與解構
    1. 建構式為 function __construct() 或與 class同名的 function, 不過一般建議使用 __construct()以便於搬移類別 (P.S. 此為 PHP 5之後才支援的功能), 另外, __construct()可帶參數建構成員變數.
    2. 解構式為 function __destruct(), 不可帶參數. 通常用於關閉資料庫的連結. 另外, 有時候很好用, 例如:  擁有 static 變數為 static $nObj; 其在 construct就呼叫其 +1, 而 destruct則 -1, 則可以輕鬆維護該類所有 object個數
    3. 利用 unset()可摧毀物件
  5. 存取設定
    1. 預設皆為 public
    2. private: 
      1. 於變數或 function前加 private, 不能用 private: 來一次宣告一堆 private變數
    3. 同時也支援 protected
    4. static: 
      1. 與 C++相同, 同一類別共享 static變數.
      2. static function只能呼叫 static變數, 當然也不能呼叫 $this, 因為其並沒有建立物件
      3. static變數以類別參照方式呼叫, e.g. class Donation 擁有 static member $num, 則 member function 以 Donation::$num而非 $this->num來存取.
  6. 複製物件
    1. 建立新物件後, PHP 5回傳的是物件參照, 而不是物件本身(copy). 從下方可看出端倪. (假定 unitCounter擁有 $unit, 且 add($value)為 $unit=$unit+$value; 
    2. $a = new UnitCounter();
      
      $a->add(5);
      $b = $a;
      $b->add(5);
      
      print "number = {$a->$unit}"; //列出 number = 10
      
    3. 若要純粹複至某物件的副本, e.g. 就像複製資料庫一樣, 不止複製格式, 也複製目前的內容, 則使用 __clone()函數, 見下例
    4. $a = new UnitCounter();
      
      $a->add(5);
      $b = $a->__clone();
      $b->add(5);
      
      print "number = {$a->$unit}"; //列出 number = 5
      print "number = {$b->$unit}"; //列出 number = 10
      
  7. 繼承
    1. 關鍵字 extends
    2. 單一繼承
    3. 以 parent:: 呼叫父類別, e.g.  parent::__construct($parameter); 呼叫父建構子

2012年9月19日 星期三

[Mantis] 安裝與使用


  1. Requirements:
    1. Apache
    2. MySQL
    3. PHP: 5.3 up
    4. 前兩個沒寫主要是我用 Apache 2.2跟 MySQL 5.07並沒遇到啥問題, 反倒是 PHP 5.2.6被 argue了, 所以特別註明一下
  2. 基本安裝
    1. 下載
    2. 解壓縮並丟到 apache上執行該資料夾下 admin/install.php, 其快速安裝在其 doc/INSTALL, 詳細 document在 doc/lang中
    3. 過程中會幫你設定 MySQL, 若沒給定具有建 database權限的使用者, 將會有點 issue, 必須手動建立一下
    4. 安裝完執行 admin/check.php 看是否相容
      1. 一般就是 upload file的 size問題, 稍微改一下 php.ini的 upload_max_filesize應該就可以通過
    5. 移除 admin資料夾
  3. 更改預設帳號 (帳號: administrator/密碼: root)
    1. 以預設帳號登入後, 選擇 Manage-> Manage Users
    2. Create User並將其權限設為 Administrator
    3. 移除預設 administrator帳號
  4. 用 stmp發送信件(預設為 php.mail()), 底下以 gmail為例
    1. 開啟 mantis資料夾下\config_defaults_inc.php
    2. 修改參數
      1. $g_phpMailer_method= PHPMAILER_METHOD_SMTP;
      2. $g_smtp_host = 'smtp.gmail.com';
      3. $g_smtp_username = 'gmail帳號';
      4. $g_smtp_password = 'gmail密碼';
      5. $g_smtp_connection_mode = 'ssl';
      6. $g_smtp_port = 465;
    3. 搞定! (若還是不行, 可參考 Joomla Gmail設定中修改 php.ini)
  5. 開始使用
    1. 語言設定
      1. 若不習慣英文, 每個人可自行調整看到的介面
        1. My Profile->Preference->language調整即可
    2. 個人設定
      1. 我的帳號-> 基本資料->可以加入平常操作環境, 等回報 bug時選擇環境即可
    3. Manage Projects-> Create New Project
    4. 使用者管理
      1. 如果 config_defaults_inc.php設定 $g_enable_email_notification = ON (預設為 ON), 則使用者註冊需通過 email來建立帳號
    5. 回報問題

    6. Issue 生命週期與流程
      1. 建立 issue
      2. issue狀態
  6. Ref:
    1. 中文化問題
    2. Mantis操作說明
    3. Mantis安裝設定

[Software] 開發工具

其實開發輔助工具超級多的, 像是

  1. build chain 就有 configure工具、make工具
  2. IDE (Integrated Development environment) 就更不用說了, 萬萬種, e.g. Code Blocks, Visual Studio, XCode, etc.
  3. 版本控制: 有名的有 CVS, SVN, Git
  4. Bug Tracker: BugZilla, Mantis
  5. CI: jenkins
  6. Code review: gerrit
  7. Code formatter: AStyle (setting)

[PHP] 更新 PHP 5.2.6 到 5.3.5

以下為在 Windows底下更新 PHP 5.2.6到 5.3.5的過程記錄 (一開始 PHP 5.2.6以 Appserv安裝)
  1. download PHP VC6 x86 Thread Safe, Zip version (另有 Installer version, 可自行嘗試)--關於版本的問題, 下載頁面有詳細說明: Which version do I choose? 簡單說, 用 apache就是要用 VC6的版本...其實...5.3.5以後就找沒 VC6的版本了...完整 archive...若是用 apache的捧由...要碼就改用非官方版 Apache, 或是改用 IIS...
  2. 解壓縮假設到 C:\php
  3. 編輯 php.ini-development (或者直接 diff 原本 C:\Windows\php.ini 與 下載的package\php.ini-production)
    1. 更改 ; extension_dir ="ext" 為 extension_dir = "C:\php\ext"
    2. 比較一下 Windows\php.ini 已開啓的 extension(避免你以前哪些程式已經要求某些 extensions). e.g. extion=php_gd2.dll, ...
    3. timezone也可以設定一下
      1. data.timezone="Asia/Taipei"
    4. SMTP可自行設定, 若要利用 gmail發信的話, 可參考 利用 Gmail SMTP Server發信
    5. 設定 session存取位置
      1. session.save_path = "C:\php\SessionsTemp"
    6. upload path
      1. upload_tmp_dir = "C:\php\FIleuploadTemp"
    7. pear include path
      1. include_path=".;C:\php\pear", 如果還沒安裝, 可在安裝後再設定, 或是指向舊的 pear library, e.g. C:\AppServ\php\pear
    8. 可開啓 error log
      1. error_log = syslog改為 error_log = "C:\php\errorlog\error.log"
  4. 存檔後 copy到 C:\Windows\php.ini
  5. 讓 Apache server執行 php程式
    1. 修改 C:\AppServ\Apache2.2\conf\http.conf
    2. 加入
      1. LoadModule php5_module "C:/php/php5apache2_2.dll"
      2. 剩下應該原本 AppServ就設定好了
  6. Restart!
  7. Done! 記得 Windows7若是用 AppServ->Control Server by Service->Apache Restart要用管理者身份執行 (按右鍵)
  8. Ref: 在 Windows 7下安裝 PHP 5.3.5

2012年9月14日 星期五

[IE] 將 Windows 7上 IE 9降為 IE 8

最近因為當志工做翻譯, 需要測試網頁, 環境是 IE8, 不過在 Windows 7上若直接透過 Windows IE8安裝會失敗. 志工夥伴 Yi-Hsin提供了 Downgrade IE9 to IE 8的分享. 這邊就整理整理囉!

  1. 開啟控制台 
  2. 選擇 "程式和功能" 
  3. 選擇左手邊的 "檢視已安裝的更新" 
  4. 找到 Windows Internet Explorer 9 
  5. 解除安裝(需要重開機) 
  6. Done!

[Design] 好用的 Icon網站

NounProject