[資料夾]
連同資料夾權限一起備份,還原時才不會有問題。
備份:
# tar pzcf 備份檔案.tar.gz 欲備份資料夾
還原:
# tar pzxvf 備份檔案.tar.gz
[MySQL]
這是 MySQL 正規的作法,比用 phpMyAdmin 匯出再匯入遇到的問題會少一些。
備份:
# mysqldump --user=root -p 資料庫名稱 > 備份檔案
還原:
# mysql -u root -p
mysql> create database 資料庫名稱;
mysql> quit
# mysql -u 使用者 -p 資料庫名稱 < 備份檔案
2009年3月11日 星期三
資料夾 與 MySQL 之備份/還原
2009年2月4日 星期三
SugarCRM 安裝筆記
環境:
FreeBSD 7.1-RELEASE
Apache 2.2
PHP 5.2.8
MySQL 5.0.67
SugarCRM CE 5.2.0a
設定:
為了避免 chmod 權限錯誤,直接將 SugarCRM 的 根目錄設定擁有者為 Apache 預設使用者。
chown -R www:www SugarCRM_Path
2009年1月21日 星期三
FreeBSD 下安裝 Apache2.2 + PHP 5.2 + MySQL 5.0
[MySQL 5.0 with InnoDB & UTF-8]
# cd /usr/ports/databases/mysql50-server
# make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_unicode_ci BUILD_OPTIMIZED=yes BUILD_STATIC=yes --with-plugins=innobase install clean
安裝好之後,我們要產生 MySQL 一開始所要用的 Database,預設會裝在 /var/db/mysql 裡 ( 若不想裝在預設的地方,安裝時下參數 --localstatedir=/path/to/your/location )
# rehash
# mysql_install_db
複製 MySQL 的系統設定檔到 /etc 下,這裡使用的是 InnoDB 設定檔,需記得修改 INNODB 相關設定值
# cp /usr/local/share/mysql/my-innodb-heavy-4G.cnf /etc/my.cnf
或者做最簡單設定
# vi /etc/my.cnf
寫入以下設定:
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_unicode_ci
default_table_type = innodb
設定 MySQL 資料庫權限,並且啟動它
# chown -R mysql:mysql /var/db/mysql
# mysqld_safe &
啟動無誤的話,畫面會出現此訊息
Starting mysqld daemon with databases from /var/db/mysql
確認是否正常執行中
# ps -aux | grep mysql
mysql 53989 0.0 13.3 66404 16868 p0 IN 10:17PM 0:00.62 /usr/local/libexec/mys
mysql 53990 0.0 13.3 66404 16868 p0 SN 10:17PM 0:00.00 /usr/local/libexec/mys
mysql 53991 0.0 13.3 66404 16868 p0 IN 10:17PM 0:00.00 /usr/local/libexec/mys
設定 MySQL Root 的密碼
# mysqladmin -u root password 新密碼
增加新使用者
# mysql -u root -p
# GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON 資料庫.* TO '帳號'@'localhost' IDENTIFIED BY '密碼';
# FLUSH PRIVILEGES;
[Apache2.2]
# cd /usr/ports/www/apache22
# make install clean
在此可選擇所需要的模組,完成後自動繼續進行編譯
[PHP 5.2]
# cd /usr/ports/lang/php5
# make config install clean
在此可選擇所需要的模組,完成後自動繼續進行編譯
記得要勾選此選項,不然 Apache 會不認得 PHP
APACHE Build Apache module
再安裝 PHP Extensions
# cd /usr/ports/lang/php5-extensions
# make config install clean
在此可選擇所需要的模組,完成後自動繼續進行編譯
[Configure]
首先設定 PHP 的設定檔,以後就是設定 php.ini 這檔
# cp /usr/local/etc/php.ini-dist php.ini
修改 Apache 的設定
# vi /usr/local/etc/apache22/httpd.conf
在最上面加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到
DirectoryIndex index.html
把它變成
DirectoryIndex index.php index.html index.htm
設定一開機啟動 Apache & MySQL
# vi /etc/rc.conf
加入這三行
apache22_enable="YES"
apache22_http_accept_enable="YES"
mysql_enable="YES"
啟用服務
/usr/local/etc/rc.d/apache22 start
/usr/local/etc/rc.d/mysql-server start
參考來源:
http://www.centerbbs.com/redirect.php?tid=24380&goto=lastpost
http://forum.shareget.com/t115314/
2008年12月25日 星期四
Linux Bash 寫作筆記
*read <自 stdin 取得使用者輸入資料>
example: 自 stdin 取得使用者輸入資料,並存放於 $input_value 中
read -p "Please input something: " input_value
*sed <使用正規表達式對資料進行 尋找、取代...等 處理>
example: 將 A.txt 檔案內容中 oldvalue 字串取代為 使用者輸入值(上一個範例中取得)
sed_string=s/oldvalue/"$input_value"/g
cat A.txt | sed $sed_string > A.tmp
mv -f A.tmp A.txt
2008年10月3日 星期五
MySQL InnoDB 相關技巧
使用 MySQL InnoDB 可以帶來許多的好處,官方說有這些「transactions, row-level locking, and foreign keys 」,但也帶來許多奇奇怪怪的問題,和一些要注意的小地方。
因此在此做一些整理,以利將來查找使用。
***將 InnoDB 設定為預設表格型態***
my.cnf (Linux 或 Solaris) 或 my.ini (Windows) 包含下列選項:
default-table-type=innodb
不應該包含 skip-innodb 選項。
***MySQL #1005 - Can't create table 問題處理***
打開 MySQL Command Line,並輸入:
# mysql -u root -p
mysql> show innodb status;
在輸出資料中就可以找到詳細錯誤敘述。
2008年8月1日 星期五
我的第一個 OpenSouce(開放原始碼) 專案 - Abyss

Abyss 是我參與的第一個「正式」的 OpenSouce(開放原始碼) 專案,之前自己的 OpenSouce 作品都沒有嚴謹的坐 Licence 發佈與版權宣告,所以 Abyss 對我來說是一個新的里程碑!
Abyss v1.0.0 的開發者是 OHM KAO,在這個版本中我只是幫助 OHM 把 Abyss 轉換成一個 OpenSouce 的專案,接下來的版本我將加入開發的行列,希望能夠貢獻一些自己的力量!
OHM 是我前公司的同事,某次在聊天中 OHM 提到他做了一個 PHP 的 Framework 並邀請我看看這個 Framework 的架構,這個 Framework 是他集合了長久以來接 CASE 的經驗與目前各大 PHP Framework 的優點而研發出來的,我聽了當然是非常有興趣,在仔細的看過這個 Framework 之後我感到真是「相見恨晚」!
Abyss 提供了良好的 PHP 系統架構,導入導出機制、多國語言機制、並使用 SMARTY Template 技術、jQuery Framework,這些技術都是目前 PHP 的主流技術,同時集中在一個 Framwork 上我是第一次見到!這是我夢想中的 Framework 阿!
使用 Abyss 之前,對於 PHP 與 SMARTY 的架構要有一定程度的瞭解,這樣才能在使用上得心應手喔!
Abyss 於 SourceForge 專案:http://sourceforge.net/projects/abyss-system/
2008年7月10日 星期四
刺激 1995 = 肖申克的救贖?
「刺激 1995」這部電影一直都名列我最喜愛的電影的前 5 名,今天在網路上找資料時,無意間逛到一個大陸人的 BLOG,裡面出現了這部電影的海報,但仔細一看電影名稱卻非常的不一樣...
原來這部電影在大陸被翻譯成「肖申克的救贖」...
去查了 WIKI 之後,發現原來台灣的片名翻得比大陸更爛...
以前就一直搞不懂為甚麼要叫「刺激1995」...哪裡有刺激到了?
這部電影的英文原名叫做「The Shawshank Redemption」,單依電影名稱最貼切的翻譯應該是「鯊城監獄的贖罪」吧。
Wiki 相關資料:
肖申克的救贖
2008年7月9日 星期三
MySQL View 效能堪慮
MySQL View 效能堪慮,使用前請三思...
自從上個 CASE 開始使用 MySQL 5,感受到 MySQL 真的有在慢慢進步了,其中 MySQL 5 終於開始支援 VIEW 就是一個重點,但是上一個 CASE 中不敢冒然使用。
今天早上在規劃目前手上 CASE 的 資料庫規格,突然心血來潮想要用 VIEW 來減低 QUERY 的複雜度,在開始實做前照慣例,先上 GOOGLE 搜尋一下相關的資訊。
結果不搜還好,一搜就給我發現大問題,那就是 MySQL 5 的 VIEW 似乎效能不好...主因來自於 MySQL 5 伺服沒有對 VIEW 做最佳化...
這件事對我這個完美主意者來說真是一個天大的災難...等於是叫我不准用 VIEW...看來只好繼續寫落落長的 QUERY 了...
MySQL VIEW 效能相關文章,都是出自「www.mysqlperformanceblog.com」:
MySQL VIEW as performance troublemaker
Derived Tables and Views Performance
2008年7月3日 星期四
Google App Engine 之 Python 與 BigTable 心得
上星期 5 (2008/06/27) 從朋友那裡得知有「Google App Engine」這個新的服務後,就開一連串對這個新服務的研究與測試。結果發現使用 Python 的問題不算大,而 BigTable 這個非關聯資料庫對於已經熟悉傳統關聯資料庫開發的技術人員來說,應該才是個真正的門檻。
首先來說說 Python。
在這次研究「Google App Engine」之前,我對 Python 的瞭解都只限於「是一種直譯式程式語言,跟 JAVA 有點像,可以用於 WEB 與 APPLICATION」,直到這次才有機會比較深入的去試試看 Python 到底是個什麼東西。
我得到 3 點心得:
1.結構鬆散
因為我一直都習慣使用 C 與 C++,而網頁程式也大都使用 PHP 開發,因此 Python 給我的第一個感覺是「很鬆散」...Python 並沒有像 C 語言的大括號 { } 可以用來切割程式碼的層級,因此只要程式碼比較長一點或是層級比較多一些,閱讀上就會變得很吃力...
2.格式限制
Python 的每個層級「一定」要用「兩個空格」做間隔,多了或少了都不行!這其實也是起因於 Python 沒有像 C++ 的大括號 { } 可以用來切割程式碼的層級,因此 Python 無法知道每個層級的開始與結束位置在哪裡,所以就必須要強制規定每個層級都是以「兩個空格」做間隔...
這對於程式設計師來說真是個惡夢!我在測試的期間就曾經因為不小心多按了一個 SPEACE 而跳出一個「怵目驚心」的花花綠綠錯誤警告頁面...當最後發現止是多按了一個 SPEACE 時,心裡著實有用力的喊了一聲「靠...」。
3.其實沒那麼難
基本上只要會寫 PHP 5(物件導向)、C++ 或 JAVA 的人,對於 Python 應該都會能夠快速的上手,因為 Python 用起來的感覺是「十分簡化後的 C++」,因此要使用「Google App Engine」這個服務的門檻其實沒有想像中的這麼高。
再來講講 BigTable。
這是我第一次聽到 BigTable 的名號,雖然經過閱讀一堆文件之後發現 Google 的很多產品都是使用這個資料庫,例如有名的 Google Analizy、Google Earth....等等,真是一個令人驚訝的事實阿!
而這更是我第一次接觸「非關聯式資料庫」,其實也不能這樣說,因為又經過閱讀一堆文件之後,我發現其實「非關聯式資料庫」的典型就是 EXCEL...也就是說,只要用過 EXCEL 的人,都可以自稱使用過「非關聯式資料庫」,只是使用深度上的差異罷了。
我得到以下 3 點心得:
1.丟掉正規化
要使用 BigTable 之前,首先要做的工作就是「把所有正規化的方法與技巧全部丟掉」,因為 BigTable 就像是一個 EXCEL 表格一樣,基本上是沒有必要正規化的,因為正規化的目的是在於「節省資料儲存空間」,而這個目標其實是「關聯式資料庫」的主要目標。
BigTable 的訴求完全不是這樣,BigTable 一開始設計時的主要目標就擺在「處理速度」,對於 Google 的服務來說,反應時間是首要考量,而反應時間要快就要使用叢集平行處理的技術,但正規化過後的資料大部分都只剩下「代號」,這對於叢集平行處理來說是個大問題!因為單一主機中所儲存的資料在沒有其它主機的表格做相互參照的情況下,會變得根本就沒有意義。試想今天你將數個已經正規化過後的表格,分別交給多個人持有,然後個別問他們表格中資料所代表的意義,大概就是那種況!
因此 BigTable 的設計,就像是一個「超大號」EXCEL 工作表,每一筆資料擁有超多的欄位。但在 Google 的眼裡,我們所謂的「超多」對他還說是「少量」,而且 Google 所說的是「欄位家族」(我自己翻的)會有數百個。(Google 的論文「Bigtable: A Distributed Storage System for Structured Data」中提到「It is our intent that the number of distinct column families in a table be small (in the hundreds at most)」)
欄位家族不是欄位,而是欄位的群組,也就是說一個欄位家族中會有很多個欄位...因此你可以想像,在 Google 眼中的「少量」到底有多少...
因此在這樣的架構下,一定要丟掉「所有正規化的想法」,回歸「自然」,然後你就會瞭解該要怎麼把資料儲存在 BigTable 裡面了,就像使用 EXCEL 一樣簡單!
2.不用 JOIN 好像也不錯
因為 BigTable 就像是 EXCEL 一樣,所以沒有 JOIN 這一回事!請試想在 EXCEL 裡面儲存正規化的資料,然後每看一筆資料就要去查另外的一堆表格才知道意義,那是一種何等痛苦的事?
在接受了 BigTable 就像 EXCEL 這個事實之後,我突然發現「不用 JOIN 好像也不賴」,因為取得資料變得超直覺,再也不用思考哪些資料存在什麼表裡面,需要怎麼 JOIN 近來效率才會好,因為取得的資料永遠都是「值」而不再會有「代號」了!
3.空間換取時間的優勢
Google 目前的伺服器數量與儲存空間在世界上是赫赫有名的!在這個儲存空間極度便宜的時代,我們真的還需要斤斤計較正規化所省下來的那一點點的儲存空間嗎?而且在叢集平行處理的加持之下,處理速度快得嚇死人的非關聯式資料庫真的有可能變成接下來的趨勢,至少 Google 帶起了這個可能性,不是嗎?
得到了這些心得之後,再回頭看「Google App Engine」好像也變得比較沒有這麼難搞了。接下來應該會有越來越多的應用在「Google App Engine」上面發生,我期待著所有有能力開發程式的人都可以簡單的取得一個良好的環境,為這個世界盡一份小小的力量,讓大家的生活更美好!
2008年5月19日 星期一
jQuery Plugin Demo 連結自動擷取(jQuery Plugin Demo Link Digger) for Firefox + GreaseMonkey
最近在玩 jQuery 發現他是一個設計良好的 Javascript 架構,可以讓程式設計師省去很多搞 DOM 的時間,只要要懂一些 CSS 就可以使用 jQuery 迷人的 CSS Selector 來取得所需的 HTML 物件,進而對此物件進行各種操作。
最棒的是,他提供了一個設計良好的 Plugin 架構,讓程式設計師可以把自己的創意或工作成果做成 Plugin 分享給大家,而其他程式設計師就不需要再時間去做別人已經完成的事情了~
如此一來也大幅的減低了使用 JavaScript 的門檻,基本上只要懂得 CSS、HTML 與簡單的 JavaScript 就可以使用幾乎所有的 jQuery Pligin 來為你的網站創造各種令人激賞的效果!
雖然 jQuery 這麼棒,但是 jQuery Plugin 的網站卻設計得讓人不敢恭維...
在 Category 頁面中,居然看不到每個 Plugin 的 Demo,而是要點入每個 Plugin 的 Project 頁面才「有機會」看到 Demo 連結,而且在 Category 頁面中也看不到使用者對此 Plugin 的投票評價...讓我才看了兩個 Plugin 就很火大...
因此我就寫了這個 UserScript:jQuery Plugin Demo 連結自動擷取(jQuery Plugin Demo Link Digger)
jQuery Plugin Demo 連結自動擷取(jQuery Plugin Demo Link Digger)
這個 UserScript 為您在 jQuery Plugin 的 Category 頁面,自動加上每個 Plugin 的 Demo 連結、Home Page 連結 與 使用者投評價,並使用字型大小的變化來增加此 Plugin 的評價識別度, 使用者評價越高 字體會越大、越粗!
背景的顏色則是用來識別 AJAX 資料的取得狀況:
[綠色] 代表 正在載入資料
[黃色] 代表 找到 Demo 連結
[灰色] 代表 找不到 Demo 連結
者投評價 會以 [V] 來顯示,越多 [V] 代表評價月高~
安裝網址( English with install ):
http://userscripts.org/scripts/show/26824

jQuery:
http://jquery.com/
jQuery Plugin:
http://plugins.jquery.com/project/Plugins
@
下午1:11
#
OpenSource