星期二, 十一月 11, 2008

Ruby on Rails 初學入門(4) - Scaffold 的程式說明(MVC)

瞭解Scaffold 的程式流程是怎麼跑後, 再來就由它的程式碼來學習囉~

先看下述幾個頁面:

  • Controller: app/controllers/posts_controller.rb
  • Model: app/models/post.rb
  • View: app/views/posts/edit.html.erb # 編輯
  • View Layout: app/views/layouts/posts.html.erb # 此檔案是 posts html layout 的 template 檔.
 (閱讀全文)

星期一, 十一月 10, 2008

Ruby on Rails 初學入門(3) - Scaffold 的 CRUD 程式流程

要感受 Ruby on Rails 的快速, 由 Scaffold 來學習/修改會是比較快的方法, 所以先看 Scaffold 產生的程式流程是怎麼跑的.

 (閱讀全文)

星期五, 十一月 07, 2008

Ruby on Rails 初學入門(2) - config 與 MVC 關連性

Ruby on Rails 剛建立完專案後, 馬上要碰到的就是 config/* 和 MVC 的程式撰寫/修改等, 所以此篇就先簡單介紹 config/* 與 MVC 之間的檔案關聯性.

 (閱讀全文)

星期三, 十一月 05, 2008

Ruby on Rails 初學入門(1) - 快速建立Blog (CRUD)

大家對 RoR 的印象應該是開發很快, 可以很快的把雛型建立出來.

但是 Rails 的改版變動都非常大, 之前 10分鐘建立 Blog 的影片 和 目前市面上的書都是 Rails 1.x 版, 現在都是使用 2.x 版, 照著書上做的話, 會有一堆錯誤(程式都不會動), 於是來寫幾篇紀錄摸索的過程.

在此假設您已經建好基本環境, 並且知道 Ruby 的語法, 若不清楚, 可以參考下述兩篇:

 (閱讀全文)

星期三, 十月 08, 2008

PHP 設定 session 的過期時間

現在的網站都流行登入後, 除非按了登出, 不然就永遠是登入狀態(永不過期).(註: 相對需要更注意使用者帳號的安全問題)

不過, 這樣子設的話, 計算 目前站上人數 就得要另外想辦法做囉~ :)

 (閱讀全文)

星期二, 十月 07, 2008

PHP 判斷網址是否正確 / 網頁是否存在

PHP 要判斷網頁是否存在, 簡單的方法就是 fopen / file_get_contents .. 等等, 有一堆的方式可以做, 不過這些方式都會把整頁 HTML 拉回來, 要判斷的網址資料很多時, 就會有點慢.

要判斷可以由 HTTP HEADER 來判斷, 就不用把整頁的內容都抓回來(詳可見: Hypertext Transfer Protocol -- HTTP/1.1).

 (閱讀全文)

星期四, 九月 25, 2008

UUID generator function (PHP/Javascript/Ruby)

要產生 唯一值 的做法, 在 PHP 可以用 unique().

除了用 unique 外, 要產生唯一來辨視用的值, 可以考慮使用 UUID(Universally Unique Identifier).

 (閱讀全文)

星期三, 九月 24, 2008

PHP 判斷 Header 送出前, 是否有值被送出去: headers_sent()

header() 最常被拿來送 header('Location: /'); 等等, 做網頁導向的動作.

除了這些動作外, 還有 setcookie(), header()... 等, 這些 function 在執行前, 頁面上都不能有任何輸出(空白也不行), 若有任何輸出, 就會有下述的錯誤訊息:

<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/test.php:5) in <b>/var/www/test.php</b> on line <b>6</b><br />
 (閱讀全文)

星期二, 九月 23, 2008

Linux Bash 命令: Join (指定某個欄位為主, 來合併多個檔案)

常會遇到有幾個文字檔, 裡面有幾個欄位是跟另外檔案是一致的, 要把他合併成一個檔案, 這時後最快的就是用 join.

  • Man 說明: join - join lines of two files on a common field

這次遇到的狀況是:

  1. find . -size 0 > a # 找出 size 是 0 的 "圖檔檔名"
  2. b # 從 DB 撈出所有的 "相對應的帳號 => 圖檔檔名"
  3. 要將 size = 0 的圖檔都抓出來, 再將 a 和 b 做 join, 會把 a 和 b 依照 "圖檔檔名" 做結合, 就可知道哪些帳號的圖檔 Size = 0, 再來做其它處理囉~
  4. 註: 要注意要結合的那個欄位, 要先做過 sort, 不然可能會有某些欄位無法 match.
  5. 最後再 find . -size 0 -delete 全部砍掉~ :P
 (閱讀全文)

星期一, 九月 22, 2008

PHP 為 Regex 加跳脫字元 的 function: quotemeta

使用 Regular expression 時, 有以下這些特殊用途的符號:

. \ + * ? [ ^ ] ( $ )

若要處理某些輸入, 直接丟給 preg_match / preg_replace.. 等 使用, 就會有出乎意料外的結果.

 (閱讀全文)

星期一, 九月 15, 2008

IE 對 CSS 相容性文件 (MSDN)

Yahoo! UI Library: Graded Browser Support 中, 在 IE 6.0 沒有從 A-grade 移除前, 還是乖乖的把文件看清楚.

 (閱讀全文)

星期四, 九月 11, 2008

Project release 的 更新/還原 控制 Script

專案完成後, 第一次就直接 Release 即可, 那之後的版本更新應該怎麼辦?

常見的幾種做法:

  1. 開發者更新程式是直接修改線上版
  2. 開發者先在測試環境修改完程式, 再將修改過的程式複製到線上 (或直接 svn release / svn up 蓋掉線上檔案)
  3. 將舊版的 proejct_name mv 做成 舊版project_name-當天日期, 再將新版程式改成 project_name.
  4. 不管哪種版本, 總之全都加上日期(ex: prject_name-日期), 然後用 ln 的方式, 將 project_name link 到最新版的程式.
  5. 最標準的做法: 包裝成 Package, 然後去做 Release, 當有問題時, 可再馬上還原回舊版的程式.
 (閱讀全文)

星期三, 九月 10, 2008

PHP 分割字串 Function 的速度比較(substr/sscanf/preg_match)

固定長度的字串(假設是 06481a63041b578d702f159f520847f8), 要照固定格式做切割, 使用 PHP 要怎麼切會比較快?

註: 要將此字串切成 => 06 / 48 / 1a63041b578d702f159f520847f8 這三個字串.

 (閱讀全文)

星期一, 九月 08, 2008

PHP: 使用 range() 快速產生序列資料

寫 Perl 都喜歡用 1..10, 就會自動產生 1~10 的數字, 但是在 PHP 要怎麼做呢?

Perl example:

for (1..10) {
    print $_;
}
 (閱讀全文)

星期日, 八月 31, 2008

PHP Zlib Compression 範例

PHP 於 4.3 以上的版本都支援 compress.zlib:// 和 compress.bzip2://, 那要怎麼使用?

 (閱讀全文)
1 2 3 4 5 6  下一篇»