2015-08-28

mod_rewrite 的寫法(以 Zend Framework 為例)

Rewrite Configuration Guide - Recommended Project Structure for Zend Framework MVC Applications - Zend Framework 提供給 .htaccess 的語法為例:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

簡單來說就是:除了有存在的檔案(-s)或([OR])符號連結(-l)或目錄(-d) 不做更動以外,其它都轉到 index.php 。其中:

  • - (第五行) 指不做變動
  • NC (No Case) 不分大小寫
  • L (Last) 若配對到此規則的話,就不重覆配對接下來的其它規則

若是轉址過來的話, $_SERVER 會多出三個變數:

$_SERVER["REDIRECT_URL"]
$_SERVER["REDIRECT_QUERY_STRING"]
$_SERVER["REDIRECT_STATUS"]

細節請參考:mod_rewrite - Apache HTTP Server Version 2.4

2015-08-27

PHP SimpleXML 和 XMLReader

SimpleXML

  • 語法較簡單,將 XML 檔案簡化成一個物件。
  • 可讀可寫。
  • 需要較多記憶體,開啟較大的 XML 檔案時要注意。

XMLReader

  • 語法較複雜,在節點(node)間移動游標(cursor)很繁雜。
  • 只能讀取。
  • 記憶體需要較少。

結論:先用 SimpleXML 開發,等到有效能問題再用 XMLReader 改寫。

2015-08-26

快速格式化與配置單位大小

快速格式化 (quick format)

相對於一般格式化主要是少了標記損壞磁區,事後再檢查磁碟也可以。

而一般格式化需要的時間,大約是“寫入“速度*容量,像記憶卡這種讀寫速差很多,或是大容量的硬碟要注意時間。

配置單位大小(allocation unit size)

簡單來說就是:

  • 越大 效能越好
  • 越小 越節省空間

把硬碟比喻成倉庫的話,配置單位就像統一大小的箱子:
有個箱子只裝一份文件 - 浪費空間;
大量的資料放在大箱子,比分成好幾個小箱子放來的有效率

2015-08-25

SD 卡的寫入保護

昨晚遇到了神奇的事件… SD 卡上的寫入保護開關調了兩次還是無法寫入 =_=


(這不就跟怎麼轉都插不進去的USB一樣嗎!!)


插尋 sd card write protect regedit 找到解法:
  1. 開啟 regedit.exe
  2. 移到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies (沒有的話就新增)
  3. 編輯或新增 WriteProtect 值為 0 (DWORD (32-bit) Value)

2011-08-28

取得 YouTube 縮圖

取得 YouTube 的影片縮圖(thumbnail) 把下面的“KhPGeiL6kB8”換成 YouTube 的影片 ID 即可
  • 影片連結
    • http://www.youtube.com/watch?v=KhPGeiL6kB8
  • 120*90px
    • http://img.youtube.com/vi/KhPGeiL6kB8/default.jpg
  • 480*360px
    • http://img.youtube.com/vi/KhPGeiL6kB8/0.jpg
  • 120*90px
    • http://img.youtube.com/vi/KhPGeiL6kB8/1.jpg
    • http://img.youtube.com/vi/KhPGeiL6kB8/2.jpg
    • http://img.youtube.com/vi/KhPGeiL6kB8/3.jpg

2011-05-16

用 PHP 處理 dBase III (*.dbf)

這個六、日幫朋友處理一個舊系統的 dBase III 資料庫,主要是將地址裡的台北市替換為新北市。

近九萬筆的資料,手動一筆筆的輸入肯定要花上不少時間。用程式取代的方式,實際執行的時間不過1分鐘,反而大部份的時間都花在連接 dBase III 資料庫上。

最近的 PHP 版本已不再內附 dBase 函式庫,而不知為何,試了前幾個 PHP 版本的 dBase 都沒有辨法正常運作,最後還是得自行編譯才解決這個問題。

2011-05-15

在 Windows 上編譯 PHP (2011-05-16)

這次是為了 dBase 為編的。


  1. 執行開始程式集 Microsoft Windows SDK v7.1 下的 Windows SK 7.1 Command Prompt
  2. SetEnv /Release /x86 /win7
  3. 建立一個工作目錄:C:\php-sdk
  4. 下載原始碼後解壓至 C:\php-sdk\php-5.3.6 ,並跳至該目錄。
  5. 建立一個工作目錄:C:\php-sdk
  6. 到 PECL 下載 dBase 放至 C:\php-sdk\php-5.3.6\ext 裡
  7. cscript win32\build\buildconf.js
  8. cscript configure.js --enable-object-out-dir=.. --disable-all --enable-cli --enable-dbase
  9. nmake
  10. nmake install 安裝至 C:\php 需要編 cli 才行