2010年9月16日

免費轉圖、合併圖:ImageMagick

ImageMagick  官方網站:http://www.imagemagick.org/

免費軟體,可轉換圖檔格式、合併TIF成PDF、重疊圖檔(ex.浮水印)、圖上加字或加圖、裁切旋轉加邊框...、取得圖檔資訊等。
Windows、Linux 上均可安裝,具命令列模式,可與多種程式語言結合使用。

參考網址:
功能    http://ebeach.javaeye.com/blog/251082
命令簡述    http://pjluo.javaeye.com/blog/98056

命令摘要:

轉換圖檔格式
convert 1.jpg 1_new.png

合併檔案 ex.將所有TIF檔合併為一個all.pdf檔案
convert *.tif  all.pdf

若合併後產生反色現象(ex.原為白底黑字,合併後成黑底白字),可加參數 -negate
convert -negate *.tif all.pdf

縮小圖片 ex.將圖片縮成80x60, icon的大小
convert -sample 80x60 big.jpg thumb.jpg

convert -resize 500x500 ori.jpg output.jpg
(會以寬度為主,維持原圖比例縮小)

以百分比縮小圖片
convert  -sample 30%x30% big.jpg thumb.jpg

加浮水印
    格式:composite 浮水印參數 透明度 浮水印位置參數 浮水印位置 要加的浮水印圖檔 被加的圖檔 合成後的圖
composite -watermark 50% -gravity south watermark.gif 00001.jpg all.jpg
      -dissolve        浮水印圖檔維持原色 
      -watermark    浮水印圖檔變黑白
      -gravity可用選項:NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast

旋轉 Rotate
convert -rotate 90 image.tiff output.tiff

裁切 flip
convert -flip image.tiff output.tiff

把圖片變黑白
convert -monochrome foo.png bar.png

在影像加上文字
convert -font helvetica -fill yellow -pointsize 25 -draw 'text 100,250"ShimanDame" ' image.png  imagewithtext.png

加邊框
convert -bordercolor blue -border 5x5 pic001.png border001.png

在CentOS上安裝遠端桌面(XRDP)

參考 http://cmwang.wordpress.com/2009/07/14/xrdp-on-centos-5/
下載site: http://sourceforge.net/projects/xrdp/files/

# 安裝相關套件
$ yum install gcc pam-devel openssl-devel
# 抓取安裝檔,解開並安裝
$ wget http://ncu.dl.sourceforge.net/sourceforge/xrdp/xrdp-0.4.1.tar.gz
$ tar -zxvf xrdp-0.4.1.tar.gz
$ cd xrdp-0.4.1
$ make
$ sudo make install

# 建立連結,調整參數
$ ln /usr/local/xrdp/xrdp_control.sh /etc/init.d/xrdesktop
$ gconftool-2 –type list –list-type=string –set /desktop/gnome/peripherals/keyboard/kbd/layouts [damnlayouts] # map keyboard layout
(# map....需省略)

# 開放外部連線
# /etc/xrdp/sesman.ini 在 [Globals] 中的這一行: ListenAddress=127.0.0.1
# 表示只允許從本機連結 RDP Server,如果要從別的主機進行操作 (配合登入 xrdp 的 "sesman-any" 選項),
# 要改成 "0.0.0.0"
$ sudo nano /etc/xrdp/sesman.ini
=> change 127.0.0.1 to 0.0.0.0    # 改成0.0.0.0

# 增加與啟動服務
$ /sbin/chkconfig --add xrdesktop
$ /sbin/service xrdesktop start

# 在檔案的第二行加入 export LANG=zh_TW.UTF-8, 才能讓遠端桌面預設為中文環境
$ cd /usr/local/xrdp/
$ cp startwm.sh startwm.sh.bak
$ nano /usr/local/xrdp/startwm.sh
export LANG=zh_TW.UTF-8

# 裝完後需開啟防火牆 port 3389
/sbin/iptables -I INPUT -p tcp --dport 3389 -j ACCEPT
# 儲存設定
/etc/rc.d/init.d/iptables save 
# 重新啟動防火牆
/etc/init.d/iptables restart

# 之後即可以Windows「遠端桌面連線」程式連線,登入視窗內選擇 sesman-Xvnc 選項
(以下轉自 http://www.vixual.net/blog/archives/524 )
連線後,首先會看到 xrdp 的登入視窗,你可以選擇:

   1. sesman-Xvnc: 使用 xrdp 內建的 libvnc.so 模組登入本機,本機不需啟動 VNC Server。
   2. console: 登入本機的 VNC Server。
   3. vnc-any: 登入其它已經啟動 VNC Server 的主機。
   4. sesman-any:登入其它有安裝 xrdp 的主機。
   5. rpd-any: 登入其它已經啟動遠端桌面 (RDP Server) 的 Windows 電腦或主機。
   6. sesman-X11rdp: 這個項目我沒有測試成功,從字面上的意思來看,應該是連結本機端由 X Server 提供的 RDP,但目前 Linux 的桌面應該還沒有具備這樣的功能!

2010年4月16日

將MySQL資料轉換為真正的UTF-8

以資料庫 lalala 為例:

1. 將MySQL 資料庫 匯出 lalala_latin1.sql 檔(以phpMyAdmin匯出即可) → 此時檔案編碼為UTF-8,預設建立資料表編碼為 latin1

2. 將 lalala.sql 檔內的「DEFAULT CHARSET=latin1」 皆改為 「DEFAULT CHARSET=utf8」,轉存為「lalala_utf8.sql」(注意是否含BOM)


3. 於MySQL5 內建立空資料庫 「lalala」,把 lalala_latin1.sql 或 lalala_utf8.sql 匯至 MySQL5

3.1「校對」選 「 latin1_swedish_ci 」+ lalala_latin1.sql (假的UTF-8):

使用phpMyAdmin:需使用改過 latin1 設定的版本 (ex. 使用phpMyAdmin2.6.0-rc1並改過設定) 進行匯入,SQL檔案需為「UTF-8未含BOM」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=latin1 lalala < lalala_latin1.sql

3.2「校對」選 「 utf8_general_ci 」+ lalala_utf8.sql:

使用phpMyAdmin:需使用「未改過」latin1 設定的版本 (ex. phpMyAdmin2.11.10) 進行匯入,SQL檔案「需為 UTF-8、有無BOM皆可」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=utf8 lalala < lalala_utf8.sql

(lalala 為欲匯入的資料庫名稱,lalala_utf8.sql 為匯入的SQL檔名)

4. 使用步驟 3.2 匯入真正的UTF-8資料時,conn_db 連線函數內、查詢sql指令前,需加上下列三行
mysql_query('SET NAMES `utf8`');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');

$result=mysql_db_query($sys_dbname,$sql,$link);
===> // PHP5.3以上已棄用mysql_db_query,需改使用下列程式碼

$db_selected = mysql_select_db($sys_dbname, $link);
if (!$db_selected)
{ die ('Can\'t use DB : ' . mysql_error()); }
$result=mysql_query($sql);

可參考的網址

[Linux]在掛載失敗時修改磁碟掛載表 fstab

[問題]在 fstab 設定開機自動掛載分區,reboot 後,出現 filesystem 錯誤,無法進入系統。
想修改fstab表,以便移除開機掛載分區的設定,
但在修復 filesystem (repairing filesystem) 模式下,fstab 檔案為”read-only”無法異動。

[解決方法]
[root@linux ~]# mount -n -o remount,rw /
加上-n則不更新/etc/mtab,加上-o提供額外的參數設置。
使用這一操作, / (根目錄)就可以讀寫,就可以更新 fstab 的內容了。



檢視系統目前掛載情況
cat /etc/fstab

/etc/fstab 是開機時的設定檔,不過,實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個檔案當中的。

掛載: mount /dev/sdb1 /data1

開機掛載: /etc/fstab
* 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
* 其它 mount point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則
* 所有 mount point 在同一時間之內﹐只能掛載一次。
* 所有 partition 在同一時間之內﹐只能掛載一次。
* 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。

vi /etc/fstab
修改範例
/dev/sdb1 /data1 ext3 defaults 1 2
/dev/sdc1 /data2 ext3 defaults 1 2

先卸載
umount /dev/sdb1
umount /dev/sdc1

再掛載測試 mount -a
檢視掛載 df -hs

手動安裝MySQL

手動安裝MySQL on Windows

1.解壓縮,ex.mysql-noinstall-5.1.xx-win32.zip
2.將預設的my.ini ex.my-medium.ini (或其他) 改為 my.ini

3.my.ini:
3.1 將 [client] 和 [mysqld] 兩區段內的 /tmp/mysql.sock,
均改為 C:\mysql\tmp\mysql.sock 之類的路徑(windows下需使用 \ !!)
3.2 在[mysqld]區段下加上下述兩行,以設定 MySQL 的執行路徑及資料庫存放路徑:
basedir = C:\mysql
datadir = C:\mysql\data
4.安裝服務:
把mysql安裝成服務 C:\mysql\bin\mysqld(-nt) --install
移除服務: C:\mysql\bin\mysqld(-nt) --remove
※ MySQL 5.1.21 以後的版本就沒有 mysqld-nt 這支程式
5.啟動服務: C:\>NET START MYSQL
或用服務管理員來啟動 MySQL

手動安裝PHP5 on IIS6

IIS6(win2003)+PHP5 (ISAPI) 安裝攻略 (原文出處)
1. 確認 IIS 已經裝好,到 PHP 官網下載新版 PHP5 壓縮檔(ex.php-5.2.3-Win32.zip),
並且解壓縮(假設在 C:\PHP5)。
2. 將 C:\PHP5\php.ini-dist 改名為 php.ini,然後依需求編輯設定檔內容,範例:
include_path = ".;C:\Inetpub\wwwroot"
extension_dir = "C:\PHP5\ext"

magic_quotes_gpc = On
display_errors = On
error_reporting = E_ALL & ~E_NOTICE (預設 error_reporting = E_ALL 需關掉)
register_globals = Off
session.save_path = "C:\PHP5\tmp" (檢查此目錄是否存在)
upload_max_filesize = 2M (上傳檔案的最大size,可自行修改)
date.timezone = "Asia/Taipei"
SMTP = tts.tbmc.com.tw (Windows Only)
short_open_tag = On

//開啟需要的模組
extension=php_gd2.dll
extension=php_iconv.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_zip.dll
extension=php_pgsql.dll (for postgreSQL)

3. 對 C:\PHP5 目錄增加 IIS_WPG 群組及 IUSR_XXXX 使用者的讀取及執行權限。
(關鍵步驟,一定要兩個都增加,否則執行 PHP 會跳出驗證框)
※ 目錄下所有檔案皆需增加此權限,特別是php5isapi.dll)
※ 於IIS下建立虛擬站台時,該站台下所有程式檔案亦需執行步驟3,加入權限方可正常使用。

4. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
我的電腦按右鍵→內容→進階→環境變數:系統變數

Path=C:\PHP5;
PHPRC=C:\PHP5

5. 開啟 IIS 管理員。

5.1 根目錄網站按右鍵→主目錄:設定→對應:快取處理ISAPI擴充程式:新增
5.2 執行檔:C:\PHP5\php5isapi.dll
副檔名:.php
指令動詞:限於為:GET,HEAD,POST
勾選 指令碼引擎,不勾選 確認該檔案是否存在
5.3 確定

6. 增加預設首頁 index.php
文件tab→新增:index.php→確定

7. 增加網頁服務延伸。
IIS:點選「網頁服務延伸」→新增網頁服務延伸:

7.1 延伸名稱:PHP ISAPI
7.2 需要的檔案:新增→C:\PHP5\php5isapi.dll
7.3 勾選 設定延伸狀態成允許
7.4 確定

8. 重新啟動 IIS 就 OK 囉~(非僅重新啟動WEB站台!)

※ php出現「No input file specified.」訊息時,將php.ini的doc_root註解起來,
再重新啟動IIS即可

※ postgreSQL: php_pgsql.dll要打開,僅適用於php5.2.5以下,
再不行就增加postgresql\bin目錄至"系統變數"
(參考: http://sea.tokyo.idv.tw/?p=76)