月归档:十月 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 条评论