2010年9月27日 星期一

迷路

夢醒



我愕然置身於異度空間

四周充滿了透明七彩線條

透視彩線可看到一條未來的路

清楚的像是回憶

我感到自信,勇敢,不再害怕

忽然間天搖地動,群線亂舞了起來

我再也找不到來自未來的記憶

我蜷曲著身體

任由害怕趁機奪下心池

眼看彩線變的張牙舞爪

不再透明清晰,

而未來也漸漸模糊,回憶卻狂笑了起來

笑聲激昂高亢,回憶越笑越興奮

侵略的笑聲,一直不斷在我耳際迴響

使我的頭就像要裂開似的陣痛著.....








夢醒


我狂笑了起來........

2010年9月24日 星期五

VIEW的用法

VIEW的概念:

通常我們真正在瀏覽器上看到的版型,是由每個controllerlayoutaction對應的版型組合出來的。
 Layout:你可以打開album.thtml(/home/photo/app/views/layouts/album.thtml)你會發現layout只是一個外框,它並沒有處理任何有關資料呈現的方式,說明一下,
裏面的程式碼:
 echo $title_for_layout?> à 這個會對應到controllerpageTitle這個變數,你可以在controller中,修改它。
  echo $content_for_layout ?> à 這個是對應到每個action使用的view,也就是你資料呈現的地方。
  echo $this->renderElement('header');?> à 這個是有關於elemenet的機制,先簡單來說,通常一個網站所有版面中,會有許多相同的地方(: headerfooter),這時候我們就可以分離出來,讓網站的版型來共同即可。
 Action的版型:CakePHP的目錄擺法:app/views/controller/action.thtml (ex:/home/photo/app/views/ab/view.thtml),舉例來說,我們的Ab這個controller中的view這個aciton,它對應到的版型就應該是在/home/photo/app/views/ab/view.thtml。而view.thtml裏面的變數,都是來自當初在contoller中,$this->set()來的。
 Element:如同剛剛說的,通常一個網站的網頁,會有許多相同的部分,我們可以把它們分離出來,日後維護比較方便。你可以把這些分離出來的版型放在app/views/elements底下。要使用的時候,使用$this->renderElement()就可以了。

Model 用法

Model 用法:

Model是負責跟資料庫溝通用的,一個資料表會對應到一個model程式,
通常我們也會在這邊定義好資料庫中,資料表(model)與資料表(model)的關係。
Model的程式是要放在app/models裏面,要繼承AppModel (ex: class Album extends AppModel)。

Model的基本要素:

$name:和controller的$name相同,是用來告訴CakePHP這個model的名稱。

$primaryKey:是指這個model對應到的資料表中的primary key欄位名稱,
如果沒設定的話,CakePHP會預成”id”。

$useTable:是指這個model對應到的資料表名稱。CakePHP有自己一套對應的規則,
不過我們就直接指定給它比較清楚,日後維護也比較方便。

Model如何處理資料:

最簡單的方式,參照CakePHP手冊上的做法,在網頁裏面中,form的變數名稱取成”data[model_name][column_name]”的方式,這個可以透過$html這個helper來達成,
你會看到在某些view裏面,會有$html->input等的程式,就是在做這項工作。

當資料從網頁傳到controller時,controller會包裝這些資料到$data這個array中,
所以你會在controller裏面,常常看到$this->data。

資料儲存或更新至資料庫時,可以用model的save來達成,但是要注意的是,
如果沒有指定model中primaryKey的值時,model會當作是要做insert的動作,
如果有指定primaryKey的值時,則是做update。在controller的程式碼中,
ex:$this->Album->id = 1;$this->Album->save($this->data);
這個會對資料表中,primaryKey值為1的資料,做修改。

__contruct():在Model的__contruct()中,我們直接指定了Model各欄位的定義,
我們會這麼做的原因是,CakePHP在使用Model時,都會先對資料庫執行describe的指令,
來取得該資料表的欄位定義,因此我們先直接指定給Model,省去CakePHP做這樣子的動作。


2010年9月23日 星期四

cakephp 第一個範例

先修改連線設定檔,如果資料庫是 utf8 編碼,請最後加入鍵名 encoding 和鍵值 utf8:


/* /app/config/database.php */
var $default = array('driver' => 'mysql',

                          'connect' => 'mysql_connect',

                          'host' => 'localhost',

                          'login' => 'NAME',

                          'password' => 'PASSWORD',

                          'database' => 'cake',

                          'prefix' => '',

                          'encoding' => 'utf8'); // 請注意這一行!

在 app/Model/post.php 裡面宣告一個類別,代表要操作的資料庫

class Post extends AppModel
{
     var $name = 'Post';
    
     //var $userTable = 'articles'; 也可以這樣指定資料表
}


這代表了新增一個 Model ,我們採用預設的命名規則,資料表的名稱叫做 posts (複數)。

當然,我們也可以不用預設命名規則,如上所示。

接下來建立 app/controllers/posts_controller.php 當作 Controller 。

set('posts', $this->Post->findAll($conditions = null,

                                $fields = "",

                                $order = 'ID ASC',

                                $limit = null,

                                $page = 1,

                                $recursive = null));

        } // 這邊要依照 ID 排序,$condition 代表的是 SQL 的 WHERE 條件

 

        function view($id = null)

        {

            $this->Post->id = $id;

            $this->set('post', $this->Post->read());

        } // 這是閱讀單篇文章用的

}

?>
Controller 裡面的$this->set() 就是用來把變數「傳遞」到 view 中,例如


//在某個 Controller 裡面的 method

$hello = "Hello World"

$this->set('post', $hello);
這個動作可以把 Hello World 這個字串傳到 view ,變成 $post 變數,當在 view 中執行 echo $post 的時候,會印出 Hello World 。

至於 view 的寫法,


2010年9月17日 星期五

綠樂團

最新單曲【Stand by me】也是偵探學園Q(日劇)的主題曲

歌手 / 團體: 綠樂團 / the brilliant green 
所屬地區:日本 
團體簡介: 川瀨智子可說是樂隊的焦點。
她優美的歌聲及美麗的外表更是受傳媒的矚目。
精通日語和英語的她﹐常為樂隊的歌填詞。 松井亮是樂隊的吉他手﹐偶爾也為樂隊作詞。
愛換發型的他﹐ 比其他隊友換髮型的次數來得多。 奧田俊作是樂隊的主要作詞者。
他負責低音吉他手的任務。 最初樂隊只有奧田俊作和松井亮二人。
後來在1995年,他們在一間 PUB 裡認識了川瀨智子,發覺她的聲線優秀,便邀請她作樂隊的主音。
樂隊便取名為 The Brilliant Green ,簡稱為"buriguri"。在1997年的春天,樂隊得到新力唱片公司的賞識,
取得一份合約。就這樣,他們加入了樂壇。   The Brilliant Green 的歌曲屬於搖滾類型,
但並不是所有歌曲都是重型搖滾的。因為他們的音樂受了英倫式搖滾所影響! 女主音 川瀨智子以略帶憂鬱的甜美唱腔,配合具清涼感及力道的曲風,使他們的歌曲都很容易的被喜愛各類型音樂的聽眾所接受。







兩個都一樣↑↓


歌手: 松井亮 / Ryo Matsui
出生日: 1972-02-11
個人簡介:
日本綠樂團團員
星座﹕水瓶座
出身地﹕京都府
血型﹕O
喜歡的顏色﹕茶色系列
最想擁有的東西﹕各類吉他



歌手: 川瀨智子 / Tomoko Kawase
出生日:1975-02-06
個人簡介:
日本綠樂團主唱
星座﹕水瓶座
出身地﹕京都府
血型﹕ B
喜歡的顏色﹕紅色
最想擁有的東西﹕土地


歌手: 奧田俊作 / Shunsaku Okuda
出生日: 1971-07-11
個人簡介:
日本綠樂團團員
星座﹕巨蟹座
出身地﹕京都府
血型﹕B
喜歡的顏色﹕藍色
最想擁有的東西﹕電纜



冷花


2010年9月16日 星期四

Band of Skulls



Band of Skulls.這組英國搖滾樂團. 雖然團名聽起來很像Metal團.但聽了他們的音樂之後.我想你就不會這麼覺得了.Band of Skulls的音樂,喚起了許多搖滾迷的搖滾回憶.感覺又回到搖滾樂主宰音樂市場的那個年代(沒有電子樂"污染"的搖滾時光.真的也挺令人懷念的).當 然,或許很多人透過電影Twilight:New Moon(暮光之城:新月)的原聲帶,已經認識這組樂團了.但是他們的首張專輯Baby Darling Doll Face Honey是一張不容錯過的好輯!!所以朋友們,暫時先把"電子樂"擺旁邊.感受一下原汁原味的搖滾樂吧!!

Band of Skulls來自英格蘭的 Southampton.三人都是同一所大學認識.也在大學時代組團.最早的成員只有男主唱兼吉它手Russell Marsden和鼓手Matt Hayward,他們是從小到大的好朋友.2人也上同一所藝術大學.在大學期間他們遇到女主唱兼貝斯手的Emma Richardson.於是邀請她加入樂團.最早他們的團名叫Fleeing New York.團名來自作家Hunter S.Thompson的一本書"Songs Of The Doomed".

Band of Skulls用"Fleeing New York"的名字表演了一段時間.當時這個名字只是隨意取的.所以Band of Skulls也沒認真去經營這個"Fleeing New York".之後他們甚至連團名都沒再用.只是專心埋頭寫歌.等到他們發現新寫出來的歌.好像已經不適用Fleeing New York這個團名及風格了.而且他們對未來也有了規劃.因此將名稱正式改為Band of Skulls.他們決定用這個名字.好好經營自己的音樂事業.所以改名Band of Skulls之後.也代表他們未來對音樂事業的決心!



Band of Skulls的首張專輯Baby Darling Doll Face Honey

前後花了18個月的時間準備.由加州獨立廠牌Shangri-La於2009年3月20日發行.
部份歌曲來自他們早期的EP(有些歌好像也是 Fleeing New York時期的歌曲耶


.anyway, 專輯發行後不管是樂迷或樂評都給予好評.甚至在國際上打出知名度,
Band of Skulss自己很驚訝.因為原先他們只是很興奮有機會去錄製自己的專輯.
沒想到反應會那麼好,想起以前,他們不過只有幾首DEMO.
也沒想過有一天竟然 有機會和唱片製作人在錄音室錄製專輯.
這種感覺真是太神奇了!!對Band of Skulls而言.這一切真的發生的好快!!

Band of Skulls靠著歌曲的好口碑.逐 漸累積自己的粉絲團.也漸漸被大眾樂迷所熟悉和接受.

我想他們換團名真是換對了! Band of Skulls的歌曲有時會拿來和White Stripes比較
(不同的是.Band of Skulls是一男一女的主唱).sorrry,White Stripes的歌曲我很少聽.
我不確定他們的才華是否真能媲美Jack White,畢竟這只是第一張專輯,

Band of Skulls的專輯.從70年代的 藍調搖滾到90年代的Garage.

還有Folk等不同音樂元素.詞曲全由3人創作(鼓手也會寫歌).專輯封面是由女主唱兼貝斯手Emma繪製的.
同時她 也是一名唱片收藏家.不過我對她唱片收藏家的頭銜比較沒興趣.
因為Emma真的很厲害.不僅會創作又會唱歌,而且也很會彈貝斯.
重點是她長的很有型,人美 腿又長,吸睛程度百分百!



推薦歌曲

I Know What I Am
這是我第一次聽到Band of Skulls的歌曲.當時直覺就是"很復古,而且還是男女合唱".真是太特別了.

這首歌也曾被iTunes選為當週單曲.但當時Band of Skulls其實還沒完成這首歌.
所以知道被選上後.他們有點嚇到.歌都還沒完成竟然就要被趕著上架了..
團員們想來想去.人家給他們機會.當然要好好把 握.所以最後他們還是順利完成這首歌.
而這首歌也讓Band of Skulls有了很好的開始.因為雖然是"當週免費單曲".
但至少被下載了40萬次.對Band of Skulls而言.真的是很好的宣傳機會.為他們開拓了世界各地的樂迷~~

Fires
很多人都覺得這首歌很像
The Bends時期的Radiohead
(他們也是在Radiohead用的那間Courtyard Studios錄音室錄製專輯的).
本來我不這麼覺得.但多聽幾次後.忍不住會想把The Bends拿出來聽一聽.
最重要的是The Bends那張專輯已經是"15年前"的經典專輯了.誰會想到15年後.
竟然會在一支新團裡聽到和The Bends同樣感覺的歌曲(雖然只有這首讓我想到.).
撇開這個不談.Band of Skulls其實希望藉由這首不一樣風格的歌曲,
為他們吸引新的歌迷(我想應該有成功到!)

Hollywood Bowl (Live)
這首歌也很棒.但一直找不到合適的試聽檔.以後有找到再補上來.請大家忍耐聽一下"品質不佳"的LIVE版吧!

Honest
(Live Acoustic)
別以為他們只會玩藍調和Garage.在Folk的表現也不錯喔.這首抒情曲.就非常耐聽而且很有feel.



Patterns
後勁十足的搖滾歌曲.每次聽都會著迷.

不知是不是鼓手Matt Hayward曾經是吉它手的關係.
他們很多歌曲鼓的部份都和電吉它一樣,精彩程度不會輸電吉它.

Bomb

這首歌好有"老搖滾"的感覺.每個喜歡ROCK的歌迷們應該會覺得聽的很過癮吧!

(所以我並不太想聽主唱在"鬼叫"什麼)

Death By Diamonds And Pearls
這首歌被認為很像White Stripes的歌曲.突然覺得主唱的部份也挺像的(但Jack的聲音比較"高一點")

Light Of The Morning
專輯的開場曲.有人形容這首歌就像"升級版"的Led Zeppelin和Cream(60年代英國藍調搖滾樂團).但我想形容為"現代版的藍調搖滾歌曲".我可能比較容易接受.

Band of Skulls的專輯中大部份的歌曲 都是我的菜.

它很輕易的就把沉浸在電子樂中的我.拉回搖滾樂的世界裡.
尤其是Band of Skulls走的不是POP Rock or Punk.
這已讓他們能和許多當下的新樂團輕易做出分別了!
此外,愈聽他們的歌.有時我會覺得好像在聽以前買的搖滾合輯.
不同的是.這是"同組樂團"的作 品.不是樂團的"大合輯"!




Warning:引用或截取部份文章,請註明出處或連結喔.文中所有圖片來源:Last.fm、www.live4ever.uk.com)

2010年9月14日 星期二

php安全程式範例

php安全寫code的範例

提供了6大種的攻擊方式

相對的提供了6種解決方法

好文章值得推薦!!!



PHP安全程式寫作

網路應用程式的安全性如今已是大家重視的話題,但是在程式開發過程,常常是到了最後一刻才將security的部分補足。
其中有一個原因是安全程式碼撰寫的概念並未建立,如果在程式撰寫階段就將安全性的問題考慮進去,在日後檢驗與維護系統安全時,將會更容易。

因此,我們針對從客戶端送進來的資料常見的六種攻擊方式,分別提示PHP程式如何撰寫來防禦這些攻擊行為:
1. SQL 注入攻擊 (SQL injection attack)
2. 操縱 GET 的值 (manipulating GET variables)
3. 緩衝器溢位攻擊 (buffer overflow attack)
4. 跨站腳本攻擊 (cross-site scripting)
5. 操縱瀏覽器內的資料 (manipulating data inside the browser)
6. 遠程表格遞交 (remote form posting)

另外,下面有幾項簡單的安全性原則是每一個PHP程式撰寫者都應該遵守的:
1.永遠不信任外來的資料
外來的資料包括所有不是直接由programmer撰寫於PHP code裡的資料,像是從GET、POST取得的input、database、configuration file、session variable、cookie等,這些資料在經過驗證或消毒以前都必須將它視為tainted。而通常最簡單的消毒input方式是利用regular expression,定義你所接受的字串類型或內容。

2.確保一些PHP設定例如register_globals、display_errors等已關閉
如果開啟register_globals,將造成GET和POST的值($_GET、$_POST)都能直接使用$variable去接收,這將造成安全性問題。另外,當系統上線後錯誤報告必須謹慎處理,不該讓它出現在瀏覽畫面上,許多attacker就是利用錯誤報告內的資訊來猜想你系統的相關內容,所以要記得關閉display_errors等error-reporting的功能。

3.寫簡潔清晰的程式碼,使安全漏洞更容易被檢查出來
避免使用艱深的語法,這種寫法或許會有較好的效能,但是如果無法簡單地讓人了解code的內容,也會造成安全性判斷的困難。

4.把「深度防禦」列為座右銘
對於網路應用程式的安全必須為全面性的,當你已利用regex檢驗GET的input值後,當然也不能遺忘SQL query內是否也有安全性的疑慮。

SQL注入攻擊(SQL injection attack)

為了防止form重複提交。
可以在form提交成功以後用header來重定向一下,
這樣用戶不管怎樣重新整理頁面也不會造成重複提交form了,
用js或html meta的方式一般情況下會有緩存,
可能會造成form重複提交,用header就不會哩。




$login = $_REQUEST['login'];
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$op = $_REQUEST['op'];

大家注意,关键在这儿,header的时候一定要在内容输出之前操作,否则会报错的!

if ($login) {
if ($username == 'test' && $password == 'test') {
header("Location: login.php?op=succeed");
} else {
header("Location: login.php?op=failed");
}
}

switch ($op) {
case 'succeed':
echo 'Logged succeed!';
break;
case 'failed':
echo 'Logged failed!';
break;
}
?>

username:

password:








參考文獻: http://q.sohu.com/forum/5/topic/3479759

2010年9月13日 星期一

忘記習慣


家鄉是習慣的根源

生活是習慣的一部分

忘記習慣

用旅遊的心情看自己居住的城市

讓每天都像在旅行

忘記習慣

踏上異地

用居民的態度身處異鄉

真實的體驗當地生活








ps:不過我可以換個異鄉嗎?shit