2009年2月15日星期日

buildout with MinGW

Plone

for windows builout

在windows環境下使用buildout,有時後可能會遇到有些套件需要重新編譯的情形,因此在windows下也就需要安裝編譯器。在此介紹MinGW的安裝方法,MinGW 是指 Minimalistic GNU for Windows,可以建立在 Windows 下的 GNU 編譯環境。安裝步驟如下:

1.下載 Automated MinGW Installer,點此下載適合自己的版本


2.預設將MinGW安裝在 C:\MinGW ,安裝完成後到 C:\MinGW\libexec\gcc\mingw32\3.4.5 目錄把 cc1.exe 和 collect2.exe 複製到 C:\MinGW\bin 目錄裡


3.到此 下載 libpython24.a 放到 C:\MinGW\lib 目錄,再把 C:\MinGW\bin 加到系統環境變數 PATH 裡。


4.接著打開命令提示字元,輸入 gcc --version 測試是否成功。


5.接著要通知 Python 的 distutils 已可以使用 MinGW,以 Plone 安裝在 C:\Plone3 目錄為例,要到 C:\Plone3\python\Lib\distutiles 目錄裡建立 distutils.cfg 檔案,內

容是:


[build]
compiler=mingw32


其他更多的設定細節,可以參考 Using buildout on Windows 文件。


此文件參考 marr's weblog

2009年1月12日星期一

Install ssh server on Debian

最近想架一台server來玩 選擇了Debain做為系統
Debain的系統很乾淨 剛裝完很多東西都沒有 需要自動安裝
最常用的ssh也是 這時就需要安裝囉~~~

Debian的線上套件管理是使用 apt這隻程式
首先 先來找套件
xiang-debian:~# apt-cache search ssh
openssh-client - Secure shell client, an rlogin/rsh/rcp replacement
openssh-server - Secure shell server, an rshd replacement
上面的指令是搜尋有ssh的套件 當然 會列出很多 這裡全部省略 只要注意上面這兩個
openssh-client 就是ssh用戶端的意思,有安裝這個才可以登入別人的ssh 主機
openssh-server 就是ssh伺服器的意思,安裝完就可以讓別人使用ssh登入你的主機
系統預設會安裝client不會安裝serer,所以為了能方便之後的作業可以使用ssh來登入,現在就要安裝openssh-server這個套件

xiang-debian:~# apt-get install openssh-server
apt的優點就是會自動把相關的套件都安裝好,安裝過程只要確認一下就好了

之後再到 /etc/init.d下執行
./ssh start 讓他跑起來後就能用ssh登入了

2008年12月30日星期二

Plone的備份與還原

這裡以Plone-3.1.7為例

Plone使用repozo這隻程式來做備份與還原的工作,以下將示範如何使用這支程式來執行備份與還原的工作。

以Plone-3.1.7版來說,repozo位於/zinstance/bin/目錄下,執行的時候需注意路徑,底下介紹相關參數:

-B 執行備份
-v 顯示詳細訊息
-z 使用gzip壓縮
-F 完整備份
-r 指定備份目錄
-f 指定 FileStorage
-R 執行還原
-o 指定還原檔案

備份



紅色底線框起來的表示repozo的路徑,-BQv 就是執行備份並顯示詳細資訊,-r 用來指定要將備份檔備份到哪個目錄,-f 則是選擇Data.fs的來源路徑。備份有分完整備份及差異備份,如果要執行完整備份可以加參數 -F,由於這個範例是第一次執行,所以它會先執行完整備份,之後就會執行差異備份。



還原


-R 選項是用來還原資料,紅色底線的 -r代表要從該路徑還原,藍色底線的 -o代表要將資料寫入的目的地檔案,也就是系統的Data.fs


2008年12月19日星期五

reStructuredText

甚麼是reStructuredText?

reStructuredText是一種純文字標記語法和分析系統,透過它可以將文件轉成各種格式,像HTML、OpenOffice 格式和LaTex格式等等,甚至也可以轉成簡報檔。個人覺得這是一個非常好用也很方便的工具,reStructuredText也很容易學習,你只要懂幾個常用的標記語法就可以開始編輯reStructuredText文件了,而且你甚至不用懂python,因為只有再轉換格式時,才會用到幾個python指令。


安裝Docutils

reStructuredText是利用Python中的Docutils元件將純文字轉換成各種格式,因此我們必須要安裝Docutils,這樣就可以使用reStructuredText了:
首先到Docutils的網站下載Docutils:



下載回來後將檔案解壓縮:
[root@localhost ~]# tar -zxvf docutils-0.5

切換到該目錄底下:
[root@localhost ~]# cd docutils-0.5

輸入下列安裝指令:
[root@localhost docutils-0.5]# python setup.py install.py

這樣就完成安裝了!!


相關網站:

reStructuredText簡易入門

reStructuredText

VST(Vim reStructured Text)簡介

2008年11月21日星期五

2008酷學園群英會

一年一度的酷學園群英會又要到了 今年的主題是目前正夯的 "Green IT"


有興趣的朋友可以到 酷學園 網站報名

以下為活動內容:

活動日期:2008 年 12 月 20 日 (星期六)

地點:國立臺灣大學工學院應用力學研究所國際會議廳
   106 台北市羅斯福路4段1號



主辦單位:酷學園

友情贊助:台灣科技大學資訊工程系學會,光華 - 益大書局,鳥哥的 Linux 私房菜,魔力門,三秒練功房,FTUG

活動議程表:

時間 活動議程 講師
------------------------------------------------------------------------------------
08:00 ~ 08:30 入場
08:30 ~ 08:50 來賓致詞,活動簡介
08:50 ~ 10:40 企業IT環境部署虛擬化架構 - HOWTO Oreo & Thx
10:50 ~ 11:50 潔淨能源 - 風力發電與太陽能發電 台灣風能科技 - 朱銘隆
11:50 ~ 13:10 中餐
13:10 ~ 14:10 Green Data Center ZMAN
14:20 ~ 15:20 Hyper-V 被 SCVMM 2008 包下來了 Jerry
15:20 ~ 15:40 下午茶時間
15:40 ~ 16:40 綠色救援 - 從EXT2 / EXT3架構談資料救援 巨匠 楊濬銘
16:40 閉幕

2008年11月4日星期二

建立及使用資料庫

建立資料庫
------------

create 是mysql用來新增資料用的語句,像資料庫、資料表等等,都可以使用它來新增:

mysql> create database new;
Query OK, 1 row affected (0.02 sec)
第一句意思為新增一個名為new的資料庫,如果要新增資料表,把database改成table就好了。資料庫或資料表名稱需注意大小寫需一樣。

建立完資料庫,我們就可以在裡面新增資料,但在新增資料我們必須確定我們現在用的是哪個資料庫,mysql使用use來設定使用的資料庫:

mysql> use new
Database changed
第一行意思為要使用new這個資料庫,第二行顯示使用的資料庫已經是new。

我們也可以在登入mysql時就指定要使用的資料庫:

[root@localhost ~]# mysql -u root -p new
Enter password:

要注意後面那個new,是要使用的資料庫名稱,而不是你的密碼,當你輸入完並按下Enter,它才會要你輸入密碼。


建立資料表
-----------

先來看看new這個資料庫裡面有甚麼資料表:

mysql> show tables;
Empty set (0.00 sec)
用show這個指令來看有甚麼資料表,記住你要看哪個資料庫的資料表,要先用use切換到那個資料庫下面。同樣的,我們也可以使用show來看有甚麼資料庫,記住tables跟databases,用show都要加s。

和新增資料庫一樣,使用create這個指令來新增資料表:

mysql> create table phonebook(
-> name varchar(20),
-> phone int(20));
Query OK, 0 rows affected (0.08 sec)
為了方便閱讀所以我分三行輸入。create table phonebook後面用()包了一些指令,資料表裡的欄位要使用()包起來,以這個例子來看,第一個欄位為name,後面接資料型別(下面會介紹資料型別),資料型別後面的(20)代表這個欄位的長度。如果還有別的欄位請用","(逗點)分開。
這裡我新增一個叫做phonebook的資料表,裡面包含兩個欄位,分別為name跟phone。

建立完資料表我們來看看是否真的有建立進去:


mysql> show tables;
+---------------+
| Tables_in_new |
+---------------+
| phonebook |
+---------------+
1 row in set (0.00 sec)

真的有剛剛新增的資料表。

除了show,還可以使用describe來看看資料表欄位的類型:

mysql> describe phonebook;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| phone | int(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
這個指令會將資料表欄位的資訊顯示出來,如果你忘記欄位類型,這是很好用的指令。


新增資料
---------

接著便要在資料表裡新增資料,新增的方式有幾種,先講第一種:
直接輸入:
在mysql>提示字元下,一行一行輸入資料:

mysql> insert into phonebook values('xiang', '0970-123456');
Query OK, 1 row affected, 1 warning (0.00 sec)
新增的指令為"insert into",phonebook代表你要新增資料到哪個資料表,values後面接(),裡面用來放新增的資料。以這個例子來看,phonebook資料表裡有兩個欄位,因此()內我必須要有兩筆資料,每筆資料要以''框起來,資料間要以,隔開,新增資料有分順序,因為phonebook第一個欄位為name,第二個欄位為phone,所以第一個欄位就要輸入名字,第二個欄位要須入電話號碼,要注意資料型別,資料型別錯誤的話,新增會有問題的。

mysql> insert into phonebook values('0970-123456', 'xiang');
ERROR 1046 (3D000): No database selected
我將上面例子的資料反過來,就出現錯誤了。

另一種方法,你可以先將資料寫好,使用匯入的方式,在資料很多的時候這是很方便的方法:
我在/tmp/mysql下面建立了一個名為phonebook.txt的文字檔,內容如下:
jack 0935-000000
mary 0933-123456
david 0928-101999
一行為一筆資料,每行有兩個欄位,欄位之間用tab鍵隔開,建立完之後再來就要匯入了:

mysql> load data local infile '/tmp/mysql/phonebook.txt' into table phonebook;
Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 3
應該很容易看出來語法吧,匯入指令load data local infile,用''框起來的就是檔案路徑,into table phonebook就是要匯入到phonebook這個資料表。

安裝與登入mysql

安裝mysql

以fedora環境下,直接輸入 yum install mysql及yum install mysql-server


啟動mysql


與一般服務的管理方式一樣,在fedora可以使用 service來管理,亦或是在 /etc/init.d下直接來管理服務。輸入 service mysqld restart,安裝後第一次啟動mysql,會提示你使用 mysqladmin -u root password 'your-password'來指定root密碼:


[root@Fedora8DK etc]# service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h Fedora8DK password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[ OK ]
Starting MySQL: [ OK ]



登入mysql


登入mysql的指令如下:
mysql [-h host_name][-u user_name][-pyour_pass ]

-h為要登入的主機名稱,可省略,未指定就是本機
-u為使用者名稱,可省略,未指定就是下指令的user
-p為密碼,如果有設密碼的話就不能省略。密碼不用先輸入,按下確定後系統會請你輸入密碼,如範例第二行
-h, -u和-p選項的另一種形式是--host=host_name、--user=user_name和--password=your_pass。注意在-p或--password=與跟隨它後面的口令之間沒有空格。
下面為指令範例:

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

成功登入後,提示字元變成mysql>,代表現在在mysql底下。


登出mysql

輸入quit即可,或是按Ctrl+d也可以。



輸入查詢


這裡將介紹輸入命令的基本原則及特性。一般進入mysql後會顯示 mysql>,表示已經在mysql底下,並可以開始輸入命令,mysql>有幾個特性:
* 通常一個命令會以 ;(分號結尾),如果沒有";"即使按Enter鍵,mysql仍然會等待輸入(並非全部,像quit就不用以;結尾)
* mysql用資料表格(行和列)方式顯示查詢輸出。第一行包含列的標籤,隨後的行是查詢結果。通常,列標籤是您取自資料庫資料表的列的名字。
* 當執行完一個命令,mysql會將命令傳給伺服器,並將結果顯示出來,然後顯示另一個 mysql>等待下一個命令的輸入
* mysql的結果會顯示返回了多少行,以及查詢花了多長時間,它給您提供伺服器性能的一個大致概念。
* mysql底下不分大小寫,除了一些特定的字

底下為一些示範:

select version()使用version()來查詢現在的版本,底下輸出結果以及查詢所花費的時間。
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)


您可以在一行上輸入多條語句,只需要以一個;(分號)間隔開各語句:

mysql> select version(); select now();
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)

+---------------------+
| now() |
+---------------------+
| 2008-11-03 16:13:32 |
+---------------------+
1 row in set (0.00 sec)


你可以不用把所有的命令都集中在同一行,前面有說過,mysql以;(分號)做為結束符號,因此你也可以將命令分成好幾行,像這樣:
一樣使用select version();這個命令做示範,我將這個命令分成三行輸入,結果是一樣的。
mysql> select
-> version()
-> ;
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)

如果你在輸入到一半的想取消輸入,可以直接輸入 "\c"來取消輸入:
mysql> select
-> version()
-> \c
mysql>

這裡要注意一下,當我沒輸入;就按Enter的話,提示字元為 ->,其實每個符號各有不同的意思:

提示符號 含義
mysql> 準備好接受新的命令
-> 等待多行命令的下一行
'> 等待下一行,等待以單引號(「'」)開始的字串的結束。
"> 等待下一行,等待以雙引號(「"」)開始的字串的結束。
`> 等待下一行,等待以反斜點(『`』)開始的識別符的結束。
/*> 等待下一行,等待以/*開始的註釋的結束。