2007-10-26

InnoDB 實現了 MySQL 的 Foreign Key

記得 MySQL 預設是不支援 Foreign Key 的功能,但其實 MySQL 中有相關的套件了,只是沒有開啟而已,InnoDB 是 MySQL 上第一個提供外鍵約束的表引擎。

如何啟動:請在 my.ini 中將 skip-innodb 這行用 # 號註解掉。

引用範例:

CREATE TABLE parent(
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE = INNODB;

CREATE TABLE child(
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY(parent_id) REFERENCES parent(id) ON DELETE CASCADE
) ENGINE = INNODB;
-- 參數:
[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]


當關聯父資料表的主鍵紀錄行被刪除修改時,InnoDB 對子資料表中紀錄行的處理方式:
CASCADE - 會將有所關聯的紀錄行也會進行刪除或修改。
SET NULL - 會將有所關聯的紀錄行設定成 NULL。
NO ACTION - 有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。
RESTRICT - 與 NO ACTION 相同。

詳細的錯誤訊息可以在 MySQL 指令模式下輸入:
SHOW engine innodb status;

由於會列出很多資料,所以要找一下,在訊息中有一组【LATEST FOREIGN KEY ERROR】會有最近錯誤的詳細描述和解决辦法。

phpMyAdmin 中文亂碼問題

因為 phpMyAdmin 就算編碼方式設定在 UTF-8,中文還是會出現亂碼的問題,真是奇怪的現象,上網找了些資料發現只要改個設定就好了,為了怕以後會忘記,在這裡記錄一下。

設定檔:phpMyAdmin\libraries\select_lang.lib.php

/* 找到下面的這個變數 */
$mysql_charset_map = array(
/* UTF-8 */
'utf-8' => 'utf8' 改成 'utf-8' => 'latin1'

/* Big5 */
'big5' => 'big5' 改成 'big5' => 'latin1'
2007-10-25

為了 Web Server 忙一天! [Linux]

今天又是做了很沒有效率的事,因為 Web Server 一直不能正常 Work,花了很多時間在找問題,原本是安裝系統選單中的 LAMP 套件,做了一些設定後,只有 Apache 運作是正常的,PHP 則是找不到相關 Lib,又是上網找了一堆資料,還到處求助同學,就因為效能的考量必須用到 Linux。

想說套裝的 Ubuntu Linux 應該安裝好就能 Work,但卻不是我想的那麼快樂,雖然是有學到東西,但花的時間實在太多了,真想利用自己的時間慢慢做,不過所花的時間是值得的,在效能上的確比 Windows 快,而且所耗費的資源也很低,今天的問題就是預設的程序中少安裝了幾個套件。

sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server
sudo apt-get install php5-mysql
sudo apt-get install libapache2-mod-php5
sudo apt-get install libapache2-mod-auth-mysql
sudo a2enmod php5

藍色的指令是 LAMP 預設安裝的,紅色的指令是我自己後來裝上去的,安裝完後就可以正常 Work,真是給他卡到陰,出現了莫名其妙的怪問題,我還一直以為是我設定錯誤。

相關教學:LAMP伺服器的配置
2007-10-24

初次使用 Ubuntu [Linux]

今天為了將 Server 架起來,花了不少時間,由於以前很少使用 Linux 的作業系統,所以上網找了很多資料來看,為了安裝 FTP Server 找了半天,結果原來光碟裡已經有套裝軟體了,就是這行
sudo apt-get install vsftpd
安裝指令,既簡單又快速,囧!我花了那麼多時間是在幹嘛!!快炸掉了!而且有很多不常用的指令,Ubuntu 預設都沒有裝,反正也不會用到,後來去了 Ubuntu 論壇看到不少有用的資料,看來我有點跟不上時代了,原來已經不用像以前那麼麻煩了,真是方便的說,明天就可以將 Web 的設定完成了,今天進度有點落後!
2007-10-17

三層 INNER JOIN 五層 SELECT

今天工作時在寫 MySQL 的查詢指令,為了算出一個複雜的結果,必須用到四個資料表,三個 INNER JOIN 及五個 SELECT,一共用了四個子查詢,再推關聯性時我已經昏了 @ @,想說用 IN() 去簡化查詢指令,可是會造成 MySQL 整個當掉,結果只好用原本的去做了。

第一次下那麼長的指令,而且第一個子查詢如果沒有將範圍縮小的話,後面所要的計算時間就會需要很久,原本想用預存程序的,但查詢條件卻設在最基本的子查詢裡面,頭很大!目前還找不到更快且簡潔的方法。
2007-10-16

好用的 iGoogle

今天看硬是要學中寫了一篇有關 iGoogle 的介紹,心血來潮也將我的 iGoogle 分類了一下,而且發現到原來之前掛的書籤工具Google Bookmarks蠻人性化的,除了高度不能變長,且最多只顯示四個,也沒有捲軸,真是缺失阿!!

不過呢!在新增和修改的操作上很人性化,還具有分類的功能,你只要貼上網址,他自動會去抓那個網頁的標題,真的很方便的說,不知道以後會不會修得更好,期待一下吧!要是沒有的話,只好自己寫一個。

iGoogle 可以自訂喜歡的樣式,還可以增加頁籤,不用將一推工具都放在一起了,可以看起來更簡潔,Google 有很多服務都很好用,有興趣的人可以多嘗試一些沒用過的服務,或者去看看相關的介紹文章,別錯失了這些好用的工具。

教學連結:硬是要學

UltraEdit-32 關鍵字色彩

為了讓寫 SQL 指令可以更容易,我修改了 UltraEdit-32 中的 WORDFILE.TXT 檔,可是關鍵字實在太多了,所以上網找了一些定義好的來用,但是只有支援小寫,所以只好自己再加上大寫的部分,也順便加了 PHP 及 JavaScript2.0 的色彩樣式。

在新增樣式時要注意樣式編號要改一下,在每個樣式的第一行都有一個 /L? 的編號,而且必須延續上一個編號,用 UltraEdit-32 那麼久,他真的是一個不錯的文字編輯器,可以在很多語言上都用得到,還有非常方便的編碼轉換及許多功能。

官方下載 FTP

資料列表:山区程序员
2007-10-13

Blogger 排版方式


這是 blogger 的排版方式,雖然不是每個樣式都一樣,但主要都會有這些區塊,在這裡可以讓大家有個參考,如果想知道更明確的排版方式可以用 Firefox 的 DOM 觀察器去瞭解詳細的內容。

線性代數 計算機

這是在讀二技時寫的,當初是用 C++ 去寫 RREF(),後來為了能有圖形介面,又用 Java 改寫,並且加了其他的運算進去,學了 JavaScript 之後又將他移到網頁上,基本上是用瀏覽器再做運算,在結構上整個語法並不是很好,當時學藝不精,不過功能上是正常的。

檔案連結
2007-10-11

浮動的需求文件

自從在虎尾上過劉景秋老師的課以後,我就在也沒有寫過完整的需求分析書了,當初沒有好好去學真是個錯誤,後悔也來不及了,由於那麼課並沒有課本,只好從新把上課的投影片那來看吧!

說實在的這次的需求分析書並不是寫得很好,雖然把該定義的需求都寫上了,但整體的架構上並沒有定義的很清楚,連自己看了都有點灰掉。

而且我們的需求目前並沒有定案,在三天的上班日都有去討論需求,並且做一些變動,整個需求都在浮動中,正所謂牽一髮而動全身,所以這樣的計畫也不能進入開發階段,要不然只會做白工,我要效率!快想點有效率的辦法,但當下也只能用正規的方法,讓系統的需求定義能更完整。

因為專案的問題,開始想研究如何用 Ajax 做分散式運算,好讓使用者去分擔屬於自己的運算。
2007-10-10

PHP Smarty 樣版引擎


這是今天下午兩點才買的書,剛剛將這本書前半段語法說明的部分看完了,原來 Smarty 樣版引擎並沒有想像中的困難,而且書中用了一些簡單的範例作說明。

至於使用樣版的好處我就不多做說明了,已經有多位前輩寫過很多了,他也有很多成功的例子背書了。

這真是一本好書,這也已經有很多人說過了,但我想說的是, 感謝 Jace Ju 寫了這本好書。
2007-10-05

最新 JavaScript 完整語法參考辭典


這本書是我最常用到的一本工具書,裡面收錄了常用且共通性高的語法,以簡單的範例教你如何使用這些語法。

目錄的編排很清楚,可以讓你快速且容易找到你想要的函數或功能,而且每個函數或物件都標示針對不同瀏覽器的支援,是一本實用的工具書,而且價格也不貴。

他是翻譯自日本的書籍,有部分較新的函數並沒有收錄進去,你可以查閱他的原始網站。
連結: OpenSpaceJavaScript 例文辭典

相關連結:
博碩文化股份有限公司
博客來書籍館
Findbook

Form 標籤在 IE6 中會有奇怪的段落現象

最近在練習使用 Div 標籤排版,也順便修改自己常用的網頁,那個頁面是以前用表格排版的,隔了很久的時間我已經快看不懂裡面寫什麼了!果然用表格排版是個錯誤,在練習的過程中真的省去許多不必要的大小和標籤,原始碼的可閱讀性也增加了,我也在裡面加上了一些註解,要養成寫註解的良好習慣。

正題:Form 中如果有隱藏欄位時,在 IE6 中總會多出空的一行,使的 Div 超出預設的大小,嘗試了很多方法之後,終於找到一個有效的辦法,就是在 Div 中設定 overflow:hidden; 這個樣式,可能是我對 CSS 還不是很瞭解才會花那麼多時間,但原先的排版在 Firefox 裡卻是和我想像中的設定一樣,不知道是不是 IE6 本身的問題。
2007-10-03

IE7 的 CSS 樣式

為了解決上次的版面問題,終於找到應對的語法了,看來以後查詢時要多試幾個關鍵字,這次很快的就找到相關的文章了。
#wrapper { 
    color : #00ff00; 
} /* Moz */

*+html #wrapper {
    color : #0000ff; 
} /* IE7 */

* html #wrapper {
    color : #ff0000; 
} /* IE6 */

參考文章:Ben's 部落不及格
2007-10-02

可惡的 Microsoft IE

這是之前 Blog 在 IE6 中顯示的樣式狀況,很奇怪的多了一條線,在 HTML 中明明就沒有套用樣式,可是那個 div 卻自己套用了上一個父標籤的樣式。


在 Firefox 中沒有這個問題,能夠正常顯示我所設定的樣式。


為了能讓更多的瀏覽者能夠正確的顯示我的網頁,於是我只好另外設計對應 IE6 的樣式,選擇了替代方案。


可是呢?我找別人幫我測試我的網頁,在 IE7 中一樣出現了之前的問題,為了解決這個問題,在網路上找尋相對應的方法,但在胡思乱想的 Blog 中看到了這段話:

話說回來,IE7 的出現,又給網頁設計師們出了個難題,拋開 IE345,以往僅僅要顧及 IE6 和 Firefox 的差異就夠令人鬱悶的了,這又出現了 IE7。一直呼喊著標準啊標準啊,強悍的微軟告訴我們,他們家的 IE 就是標準,什麼 W3C,滾一邊去。


這讓我失去了為 IE7 修改錯誤的動力,就暫時先考量 IE6 和 Firefox 這兩大族群,對於其他不遵守標準的 IE 就暫時不理他吧!
2007-10-01

設定 Blogger 在 IE 的 CSS

由於我另一個 Blog 在 IE 中有了奇怪顯示錯誤,為了達到親和力信念,我無法忽視這討厭的錯誤。

原本是用 !important 的方法去做,但發現完全沒有用,真奇怪到底是那裡不行,原來 blogger 有自己的設定方式。

只要在給 IE 樣式名稱前加上 _ 就可以了,但如果也有給 Firefox 系列用的樣式,必須將Firefox 的樣式放在 IE 樣式的前面。

.sidebar .widget {
border : 1px dotted #FFFFFF ; /*這是給 Firefox 的樣式*/
_border : 2px dotted #999999 ; /*這是給 IE 的樣式*/
}