網頁

2012年9月25日 星期二

Timeline

Simile Widget Timeline - 用靜態網頁表現時間線

Timeline是採用時間軸示意的手法來表示所發生的事件。它可以用在那呢?

也許可以將它應用在,歷年來所舉辦的說明會課程展覽活動、大世紀等活動,應該是非常有趣的應用











試玩了一下,將它拿來當作自我介紹時的專案展現結果介紹也是不錯的。

2012年9月21日 星期五

個人資料保護法因應措施

個人資料保護法將在今年的十月份正式上路,想要多了解個人資料保護法,可以來看看
新版個資法大解密這個網站的內容資訊。

為了避免未來發生令人困擾的事,我的想法是最好這些敏感性的資料根本就沒有存在於資料庫內,它就不會發生。所以目前重新審查所管理的一些系統,想儘量的將一些不必要的資料欄位刪除;在界定那些欄位可以做刪除的過程中,發現有些欄位的資料與實際作業時是一定要存在的,是無法避免的,例如需要生日欄位來計算使用者的年齡。

對於此點,最後的做法,應是將這欄位的資料另外編碼處理,想法子把資料的組合從原來的「可直接辨識資料」轉換成「間接的識別資料」。雖然這樣子做,到時是不是合於法條的解釋,不過看起來,這應也是目前唯一所能做的解套方式。當然,若是從實際的作業流程來做修改,應是更直接也更可行,不過許多事也不是個人想怎做就怎麼做的。

編碼的實作:

生日欄位做編碼的動作,第一個直覺就是轉換成 UNIX TIME OR TIMESTAMP 的做法,不過後來才發現 TIMESTAMP 在時間處理上有些限制,它僅能表示 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC 的範圍,(http://dev.mysql.com/doc/refman/5.5/en/datetime.html

此路不通,山不轉路轉。

查一下 MySQL 文件,有部份是針對字串的加解密的 Function,應該是可以利用  ENCODE 與 DECODE 函數來完成。語法為 ENCODE(str, pass_str) 、DECODE(crpty_str, pass_str),要稍微注意的是它儲存加密資料的欄位一定要改為 BLOG型態。
這樣一來,所取出的資料即是一連串編碼後的文字,透過解密動作後,再調用相關的日期的函數,重新轉成日期,應該就可以了。


參考資料:

2012年9月10日 星期一

SQLite

最近常在搞一些系統升級的事,發覺有些資料庫內的資料是萬年不變而且也沒什麼敏感性的資料。也許將這資料轉移至 SQLite 是一勞永逸的做法。

什麼是 SQLite:

可以直接到 WikiPedia 參考:http://zh.wikipedia.org/zh-hant/SQLite 

也因為它對系統來說僅是一個檔案而已,所以在做轉移時只需要環境配置需要的 SQLite後,直接將相關的檔案複製至新主機就可以了。

此種方式,只要是知道檔案的路徑就可以直接下載 SQLite檔案,所以一些較為敏感性的資料不太建議採此機制實作,不過也是有一些方式可以避免直接下載 SQLite檔案,方式如下:
  • 檔案放在網站根目錄外
  • 設定Apache ,將該檔案限制存取
  • 將 SQLite 維裝為 PHP檔案

2012年9月5日 星期三

Tomcat - Unable to open the service

今天升級舊主機,將主機的作業系統從 Server 2003 升級成 Server 2008。

重新佈署 Tomcat  時,一路順利安裝成功也順利的啟動 Tomcat 服務,但主機重新開機時,確出現 Unable to open the service'Tomcat 5.XXX' 的錯誤訊息。

了解了一下發生原因,是因為 Server 2008 的帳戶控制 (User Account Control) 所造成,要額外做一些調整設定,做法如下:

  • 將 tomcat5.exe & tomcat5w.exe 指定以特殊權限等級執行(如圖)。
  • 再使用「本機安全性原則」功能 (@ 開始 =>系統管理工具 => 本機安全性原則),將啟動時的項目檢查取消打勾即。

2012年9月3日 星期一

PHP Warning - Notice: Undefined index ......

預計將現行的所有的系統,升級至 5.4.X版本後。在測試的同時,發生了有許多的程式碼出現 Notice: Undefined index: 變數 in xxx.php on line xxx 的錯誤訊息。

了解一下發生的原因在於所設定的變數未設定定義所引起。

解決的方式有以下數種:

1.)    php.ini 內將 error_reporting = E_ALL 修改為 error_reporting = E_ALL & ~E_NOTICE

2.)    將 display_errors = On 改為 display_errors = Off

3.)    在每個程式檔前加入 ini_set("error_reporting","E_ALL & ~E_NOTICE");

4.)    每個變數做個檢查,沒有定義的就直接給個定義值。
例如: isset($_GET['變數'])前加入一個 if 判斷
if(isset($_GET['變數']))
{
5.)    在$_GET['變數']前加入@;@表示這行若有錯誤或是警告時不要輸出訊息提示