2009年2月26日 星期四

Flash的鳥問題

這幾天用Flash做事老是碰到一堆鳥問題, 首先是前一版本編輯的class拿來cs4使用會有“The name of this class conflicts with the name of another class that was loaded”, 表示類別名稱有衝突, google一下之後, 把系統時間用NTPClock校正再重新除錯就沒問題, 這部份還好...。

昨天重灌了cs3, 為什麼呢?因為cs4 bug實在太多了, 例如像是MovieClip裡有很多文字欄位, 整個編輯的速度就會慢到不像話, 但換回去之後麻煩才大, 首先把原本的fla存成cs3格式, 打開cs3後相當順暢, Ctrl + Enter compile過程也很順利, 放到網站上, 咦...怎麼某一部份的元件就是無法addChild上去?原本還以為程式寫錯, 但是本機執行一切正常, 網路上就會有問題, 找到今天才想到會不會是版本, 開啟cs4重新編譯放上去後...正常= =, 差點跌到在座位前。

然後之前flp的檔案cs4也沒有了, 硬是要用AIR作一個檔案管理的組件放在cs4中, 又不好操作。所以最後還是換回cs3比較保險。

感覺Adobe也開始和微軟一樣想靠軟體亂改版賺錢...大公司的詬病!總是想把使用者榨乾

2009年2月18日 星期三

程式語言版本的相容性

雖然Sam不會因為程式語言版本相容問題而去學習一種語言, 但最近的情況的確困擾了我。

首先是前年ActionScript2.0晉升3.0, 完全變成一種類Java語言, 當然2.0之前的概念已不復見, 即使這樣但看見優化多倍的效能時還是得盡力去學習, 目前也在專案當中使用, 事實上對於像Sam這種物件導向起家的工程師來說如此的改變再好不過, 因為有Java的底子所以學起來事半功倍, 但對於那些程序導向的工程師就...

然後PHP6的改變, 最恐怖的就是資料庫這段上面統一了(使用PDO), 不再像以前一樣每種資料庫要調用不同的module, 基於oo的立場是很好的改變但對大多數現在線上仍然使用php4, 5的朋友就是惡夢了, 表示你們要砍掉重練!

其他的變革像是:

1.支援Unicode

2.Register Globals將被移除

3.Magic Quotes 將消失

4.Safe Mode Out

5.類別內的Var宣告變成public

6.Return by Reference will error

7.Freetype1 and GD1 support 將不見

8.dl() 加載extension Libs現在被移到 SAPI

9.一些Extension的變更

10.告別ASP風格的啟始標籤

而重點是php6效能不一定比php5好, 所以國內大概也都不會換成php6, 下場應該和Windows Vista一樣。

再來, 我最近很努力的想學python(因為這個語言很簡單上手, 直譯式語言, 可以作到幾乎任何事情, 跨平台, 有規則的約束撰寫縮排等...), Google和Youtube都把python當成開發語言之一(NASA也是), 可以用document執行, 也能用script在終端運作, 可以套用不同的library寫出視窗軟體, 也能寫網頁, 以上已經表示它很強了, 另外還有加速器。

記得去年國外某知名linux討論區評選python榮登年度最佳語言, 國內市場上應用的卻很少, 最近幾年有在某些大專院校研究所聽到在使用而已。Anyway, 我想要得就是它的簡單中帶著強大, 有時候我只是單純的想寫出某些功能卻還是要用Eclipse在那裡搞來搞去實在很煩, 所以就想說不如來學一下python, 沒想到它也改版為3.01, 而且官網上說

Python 3.0 (a.k.a. "Python 3000" or "Py3k") is a new version of the language that is incompatible with the 2.x line of releases.

講到這裡我不知道要該哭還是該笑, 學最新版本的感覺有很多套件來不及搭配, 但是還好他的教學頁面裡有蠻多補充http://docs.python.org/3.0/, 還是來花時間研究一下好了。

總之最近都東一個西一個語言在大幅度的更新, 真是無言~

2009年2月7日 星期六

一些php網頁驗證小技巧

一般而言坊間教學書上對於登入驗證這塊都沒有說明的很詳細, 但其實還有一些技巧需注意, 雖然這些技巧並不能讓你網站100%安全, 但是至少能夠防範"輕易"的被誤用或連結.

例如說處理表單的php來源照理來說應該要是表單的html等, 如果不判斷來源, 就能夠使用一些機器人隨意新增或修改資料, 下段程式判斷時否有來源網頁, 有的話是否是你設定的網頁.

<?php
$referrer = $_SERVER['HTTP_REFERER'];
if($referrer == '' || strpos($referrer, 'your_php.php') == false){        // 判斷來源網頁
    die('來源網頁錯誤');
}
?>

至於登入很多人可能會忘記要驗證當初登入的瀏覽器與IP位址, 你可以在登入時註冊一個session為如下:

<?php
$_SESSION['userAgent'] = $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'];
?>

如果要使用cookie記憶長時效, 為了不讓cookie被破解我們會做一些混淆動作, 但要還原卻又很困難, 所以我們把混淆後的cookie記錄在資料庫中, 並設定時效, 每次瀏覽需要驗證的頁面時都去比對, 直到cookie過期失效.

<?php
$cookie = md5($date.$mail.$identify.rand(0, 1000000));
$cookieexpiry = (time() + 21600);
setcookie('memberVerify', $cookie, $cookieexpiry); //時效驗證
?>

如果有看過我之前破解一些網站的文章就知道上述方法還是能夠被手動取代, 但至少不會輕易讓門外漢利用!