月歸檔:十月 2007

從Ubuntu轉到Mac OS X

2007年11月10日更新 為什麼轉到Mac OS X?
看了Steve Jobs關於新版Mac OS X 10.5的展示錄像, 找到了一種驚艷的感覺.決定轉到Mac OS X.
以前看國外的教學視頻,發現大多使用Mac系統,或也為這次轉變埋下過伏筆.

相比Ubuntu, 對Mac OS X的感受
Mac OS X是一個比Ubuntu更漂亮,更成熟的桌面系統.

屏幕截圖:

常用軟件
Fun Input Toy,不錯的輸入法軟件,集合拼音和五筆.
Path Finder,資源管理器,這個比自帶的Finder好用.
FireFox,雖然Safari不錯,但FF可以安裝很多實用的插件.
Safari,速度很快的瀏覽器。平時我都用它。
我為safari安裝了一個附件:TabStop。這樣關閉帶多個TAB的窗口時彈出提醒框。個人認為這個很實用,不然經常誤關窗口。
Mplayer,多媒體播放器,安裝插件後基本上可以播放所有視頻文件.

解碼器包:

http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-macosx-x86-20060611.zip
關聯rmvb格式文件:
在finder中get info,然後選擇用mplayer打開(選擇應用到全部)。
在finder中右鍵點擊mplayer,點顯示包內容 用文本編輯打開Contents下的Info.plist文件
找到:<string>NUV</string>
在下面同樣加:
<string>rmvb</string>
<string>rm</string>
保存就可以了

realplayer,mplayer很好用,但和linux上的mplayer一樣,播放少數rmvb文件時會花屏,於是安裝一個realplayer成為了必要。
Cog,音頻播放器,用來聽歌曲.
LumaQQ,可以用來登錄QQ,但功能有限,似乎只能打字聊天.語音,文件傳輸等功能都不支持.還好我用QQ也不是很多.
Parallels,虛擬機,我在上面安裝了一個Windows XP.主要是來解決工行和淘寶網的問題.Parallels的Coherence功能很有趣,可以將虛擬機裡面的Windows窗口變成一個看似Mac OS X程序的窗口在桌面上移動和顯示.
BetterZip解壓縮工具.
Chmox,用來讀CHM格式文檔的軟件
iGetter多線程下載軟件
ViewIt,看圖軟件.
menumeters,安裝了這個之後(在系統參數中設置)可以在狀態欄上顯示CPU,內存,硬盤使用情況.
Adobe Reader,PDF文件閱讀器,但後來發現Path Finder好像帶了個PDF閱讀器,感覺安裝這個有點多餘.
growl,即時信息提示軟件.Cog和LumaQQ等一些軟件自動支持這個軟件.這樣在Cog換歌時,桌面上就會顯出一個小窗口提示下一首歌的名稱和歌手.自己手動設置還可以將它和ruby gem autotest關聯,在測試rails程序時提示測試結果.很好玩.

安裝Ruby on Rails
參看Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X,詳細非常.

編輯器
用了Mac OS X,終於可以使用TextMate了.可惜見面不如聞名,沒想到TextMate對中文支持不好.所有的中文字都重疊着,雖然有文章指出將中文字體進行修改後可以顯示,但顯示出來的中文很瘦,看着不太舒服. 還好代碼中基本沒有中文。
TextMate感覺即簡單又強大。所以手感真的很不錯。
還找了個CotEditor,功能不弱,中文顯示不錯,而且免費,編輯中文文章時可以使用.
Aptana也安裝了,不過估計以後使用的機會不多了.

終端

顯示中文
ls
 ~/.profile(注意,.profile好像和.bash_login只能使用一個,不然.profile的設置會被忽略,要不修改到/etc/profile中也行,就是修改結果應該會影響到電腦上的所有用戶)
增加  alias ls=’ls -Gw’
G彩色顯示, w中文顯示

還原終端del鍵設置
參考:http://desp.night.pl/terminal.html

終端UTF-8支持(不知是否必要)
新建~/.MacOSX/environment.plist文件,內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>LANG</key>
        <string>en_US.UTF-8</string>
        <key>LC_ALL</key>
        <string>en_US.UTF-8</string>
</dict>
</plist>

總結
優點:
比Ubuntu的雙屏顯示功能更加完善.
主屏啟動的程序不會主動在副屏上打開.
Mplayer自動識別當前屏的分辨率,全屏時不會只用小分辨率填充大分辨率的屏.
雙屏可以獨立使用自己的桌面牆紙.

Mac OS X啟動速度比較快.

Safari打開網頁速度超快.
Spotlight索引功能不錯.

缺點
應用軟件還是沒有Windows平台下豐富(但感覺比linux下已經好多了,雖然大多數是商業版…)
迅雷,utorrent這樣強勁的下載軟件Mac OS X下面目前還沒有找到.
aMule雖然可以在Mac OS X下代eMule運行,但我一直認為速度還是eMule快.
暫時用Azureus下載BT資源,用aMule下載ed2k資源。下載國外資源速度也將就。
Mac OS X的雙屏功能也不是完美的,如雙屏間移動窗口時不會根據屏幕分辨率自動調整窗口大小,Ubuntu就會.
Mac OS X平台的軟件大部分是商業軟件,不交錢時大部分有使用限制.

硬件

兼容性不比Linux.

聲卡
買了個Creative Digital Music外置聲卡,在Mac OS X下顯示為USB Audio,但離奇得很, 有時可以發聲,有時不可以.
換了一個Creative Sound Blaster Live! 24bit External, Mac OS X正確識別了硬件,發聲也沒有問題了. 但音質怎樣聽好像都不如內置PCI的Live!. (要在Application/Utilities/Audio MIDI Setup下設置聲道和format.設置後聲音感覺好很多了。)

HP LaserJet 1100打印機
Mac OS X和惠普網站都不提供這個型號的打印機驅動.最後上網找了一個名為hpijs的驅動.

安裝這個驅動時要先安裝ESP Ghostscript(espgs)和Foomatic-RIP,現在打印機也可以使用了.網上有網友說使用HP LaserJet 6 series – GimpPrint v5.0.0-beta或Gutenprint 5.x驅動可以工作得更好,但我沒試.

讓PS2遊戲機手柄在Mac OS X下工作。
緣於躺在沙發上的我在看電影時要頻繁起身為電影截圖(按Command+shit+3),非常不便,於是我便產生了要為找mac找一個遙控器的想法。但搜索發現兼容Mac的遙控器很少,而且找到的少數幾個按鍵數非常有限(只有四五個),而且只針對個別指定程序有效。而我想找那種可以map鍵盤按鍵的那種,這樣理論上就可以控制所有鍵盤可以控制的程序。
無奈之下我竟然又想起了我的PS2震動手柄。我曾為這個手柄買了一個USB轉換頭,在安裝附帶的驅動後可以在windows下當遊戲手柄使用。然後再安裝另一個軟件後可以將手柄上的按鍵map成鍵盤上的按鍵。當年也曾這樣用遊戲機手柄遙控電腦。
於是我抱着僥倖的心理去google PS2手柄的mac驅動。結果我很幸運。我找到了USB Overdrive X。這個軟件識別到了手柄,並通過個軟件可以直接map按鍵。而且這個軟件可以為不同的程序設置不同的按鍵map方案。
我現在可以躺在沙發上,不用起身為電影截圖,快進快退,加大減小音量了。這個“遙控器”唯一的問題是它是有線的,不過也好,起碼省了電池,也更環保。號外,sony ps2手柄用來遙控電腦,它的手感也比一般的遙控器好吧。。。

發表在 信息處理 | 6 條評論

Open MDB file on Ubuntu, convert it to CSV, import it to Rails

Open MDB file on Ubuntu, convert it to CSV, import it to Rails
MDB is a data file format used by Microsoft Office Access. To open and view MDB files on ubuntu, you can install a tools named mdbtools :

sudo apt-get install libmdbtools mdbtools mdbtools-gmdb

This will also install MDB viewer, and you can use it to open and view MDB files. It also can be used to export tables to CSV(Comma-separated_values) files.

And here is an example importing CSV data into Rails model:
require ‘csv’
CSV::Reader.parse(File.open(‘/path/to/file’, ‘rb’)).each do |row|
    Production.create(:name => row[1],
        :price => row[3])
end

發表在 Ruby on Rails, 信息處理 | 留下評論

在ubuntu6.06上安裝apache2.2X + mysql + PHP + Ruby on Rails + Mongrel Cluster

到現在已經安裝了好幾次服務器了。總結出了一些經驗,在這裡和大家分享一下。

說明
我使用的linux是ubuntu 6.06 server cd版本。選第一項安裝最基本的系統文件,不自動安裝LAMP服務,因為ubuntu 6.06自帶的apache2是2.0X的,不適合做mongrel cluster的前台,安裝自帶的apache2.0X之後卸載它比較麻煩,所以乾脆不要自動安裝LAMP服務,而手動安裝apache2.2。

ubuntu 6.06 server cd的基本安裝只安裝系統必要文件,不安裝其它服務,甚至連ssh都要手動:
sudo apt-get install ssh
安裝,請大家注意要安裝上ssh才能遠程訪問。

安裝準備

加本地ubuntu源,加快下載速度
sudo nano /etc/apt/sources.list
加入速度比較快的源,如cn99的:
deb http://ubuntu.cn99.com/ubuntu/ dapper main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

更新系統
sudo apt-get update
sudo apt-get dist-upgrade

準備必要文件
sudo apt-get install build-essential

創建下載源碼文件夾

cd ~
mkdir src
cd src

安裝zlib
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar xvfz zlib-1.2.3.tar.gz
cd zlib-1.2.3/
./configure –prefix=/usr/local
make
sudo make install
cd ..

安裝Apache2.2
下載安裝apche2.2
sudo dpkg –purge apache apache2
wget http://apache.rmplc.co.uk/httpd/httpd-2.2.4.tar.gz
tar xvfz httpd-2.2.4.tar.gz
cd httpd-2.2.4/
./configure –prefix=/usr/local/apache2 –enable-mods-shared=all –enable-deflate –enable-proxy –enable-proxy-balancer –enable-proxy-http
make
sudo make install
cd ..

測試apache2.2
啟動apache2.2
sudo /usr/local/apache2/bin/apachectl start
訪問測試
http://xxx.xxx.xxx.xxx(服務器IP)
停止apache2.2
sudo /usr/local/apache2/bin/apachectl stop

讓apache2.2在系統啟動時自動運行
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apachectl
sudo chmod +x /etc/init.d/apachectl
sudo nano /etc/init.d/apachectl
修改文件,增加:
#!/bin/sh
#
# chkconfig: – 85 15
# description: Apache is a web server.
sudo /usr/sbin/update-rc.d apachectl defaults

增加apache用戶,增強系統安全性
sudo adduser –system apache
sudo nano /usr/local/apache2/conf/httpd.conf
修改文件,將
User daemon
Group daemon
改成:
User apache
Group nogroup

PHP模塊安裝
如果你不想在服務器中使用php網站,直接跳過本節
下載安裝php4(因為我的服務器只是用來運行早點的php程序,php4夠用了)
sudo apt-get install flex
wget http://au2.php.net/get/php-4.4.7.tar.gz/from/cn.php.net/mirror
tar xvfz php-4.4.7.tar.gz
cd php-4.4.7
./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql –disable-cgi –with-zlib –with-gettext
make
sudo make install
sudo cp php.ini-dist /usr/local/lib/php.ini
cd ..

設置php
sudo nano /usr/local/apache2/conf/httpd.conf
修改文件,
增加(如果已經加上就不用了)
LoadModule php4_module        modules/libphp4.so

AddType application/x-gzip .gz .tgz
之後增加:
AddType application/x-httpd-php .php
修改
DirectoryIndex index.html

DirectoryIndex index.html index.php default.php

測試php
在網站目錄(默認/usr/local/apache2/hdocs/)創建test.php文件,內容
<?php
phpinfo();
?>
然後訪問:
http://xxx.xxx.xxx.xxx/test.php
應顯示系統php模塊信息。

安裝MySQL
sudo apt-get install mysql-server mysql-client

修改root用戶密碼
sudo mysqladmin -u root password 新密碼
sudo mysqladmin -u root -h localhost password 新密碼

如果要進行其它基本設置,修改/etc/mysql/my.cnf文件。

mysql數據備份與恢復
備份
mysqldump -u 用戶名 -p 數據庫名 > 備份文件名
恢復
mysql -u 用戶名 -p 數據庫名 < 備份文件名

安裝ruby1.8.6
ubuntu 6.06自帶的ruby是1.8.4, 因為在使用1.8.4版的ruby時我遇到mongrel提示ruby版本過舊的問題,所以自行編譯安裝1.8.6版的ruby.

安裝ruby1.8.6
wget http://rubyforge.org/frs/download.php/18421/ruby-1.8.6.tar.gz
sudo tar -xvf ruby-1.8.6.tar.gz
cd ruby-1.8.6
./configure
make test
make
sudo make install

安裝ruby1.8.6後在運行script/console時遇到了
      /usr/local/lib/ruby/1.8/irb/completion.rb:10:in `require’:
      no such file to load — readline (LoadError)
錯誤,解決辦法是
安裝readline

sudo apt-get install libncurses5-dev libreadline5-dev
cd ext/readline
ruby extconf.rb
make
sudo make install
cd ../../..

ruby gems安裝
sudo wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
tar -xvzf rubygems-0.9.0.tgz
cd rubygems-0.9.0
sudo ruby setup.rb
sudo gem update –system
cd ..

安裝libmysql
sudo apt-get install libmysql-ruby libmysql-ruby1.8 libruby1.8
安裝好這個後
irb
irb(main):001:0> require ‘mysql’
還是提示出錯,於是我安裝mysql gem
sudo gem install mysql
但安裝出錯。。。。
奇怪的是後來發現RoR網站可以正常運行,沒有問題。網友如果解決了這個問題,請留言一下。

安裝Rails
sudo gem install rails –include-dependencies
注意linux平台安裝過程要選帶ruby的rails。

安裝Mongrel Cluster
sudo gem install daemons gem_plugin mongrel mongrel_cluster –include-dependencies
同上,linux平台安裝過程要選帶ruby的程序。

增加一個mongrel用戶,增強系統安全性
sudo adduser mongrel
將網站文件歸到這個用戶
sudo chown -R mongrel:mongrel /www/app
上面/www/app為RoR程序目錄

創建mongrel群

sudo mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /www/app -a 127.0.0.1 –user mongrel –group mongrel
其中/www/app為RoR程序目錄
8000為mongrel群開始端口
-N 3中的3為mongrel群中的mongrel服務器數量,3表示3個mongrel組成這個群,群使用的端口從8000開始,8000,8001,8002三個。
上面的命令將會在RoR程序/www/app/config目錄下生成mongrel_cluster.yml文件。
將新文件歸到mongrel用戶
sudo chown -R mongrel:mongrel /www/app/config/mongrel_cluster.yml

啟動mongrel群測試
在當前RoR程序根目錄(如上面的/www/app)下運行
sudo mongrel_rails cluster::start

讓mongrel cluster在系統啟動時自動運行
sudo mkdir /etc/mongrel_cluster
sudo ln -s /www/app/config/mongrel_cluster.yml /etc/mongrel_cluster/app.yml
sudo cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2/resources/mongrel_cluster /etc/init.d/
上面的/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2/是mongrel gem所在的目錄。
修改mongrel_cluster文件
sudo nano /etc/init.d/mongrel_cluster
在CONF_DIR之上加入一行:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin
解決一些情況下因為mongrel找不到程序而不能在系統啟動時自動運行的問題。
sudo chmod +x /etc/init.d/mongrel_cluster
sudo /usr/sbin/update-rc.d -f mongrel_cluster defaults
手動修改mongrel cluster的啟動順序,讓它在最後運行,解決有可能發生的另一些啟動問題。
sudo mv /etc/rc2.d/S20mongrel_cluster /etc/rc2.d/S99mongrel_cluster

讓Apache成為mongrel的前台
修改httpd.conf文件(默認在/usr/local/apache2/conf/目錄下)
最後加入:
NameVirtualHost 192.168.1.1
<Proxy balancer://cslog_cluster>
  BalancerMember http://127.0.0.1:8000
  BalancerMember http://127.0.0.1:8001
  BalancerMember http://127.0.0.1:8002
</Proxy>

<VirtualHost 192.168.1.1>
    ServerName www.cslog.cn
    DocumentRoot /www/cslog/public
  RewriteEngine On
  RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /maintenance.html [L]
  # Rewrite index to check for static index.html
  RewriteRule ^/$ /index.html [QSA]
  # Rewrite to check for Rails cached pages with .html extentions
  RewriteRule ^([^.]+)$ $1.html [QSA]
  # All dynamic requests get sent to the cluster
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://cslog_cluster%{REQUEST_URI} [P,QSA,L]
  # Deflate for clients that support it.
  AddOutputFilterByType DEFLATE text/html text/plain text/xml
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Error and access logs.
  ErrorLog logs/cslog_error_log
  CustomLog logs/cslog_access_log combined
</VirtualHost>
文件中的cslog_cluster可以自己命名,但要對應。
8000,8001,8002為mongrel群對應的端口。

總結
到這裡,ubuntu6.06上的apache2.2, mysql, PHP, Ruby on Rails , Mongrel Cluster安裝設置已經完成。下午一次全過程大概用了兩個小時,如果寫成腳本,應該可以系統自動安裝,可以更快完成全過程。

發表在 Ruby on Rails, 站長文檔 | 3 條評論