2009年1月18日星期日

鸡蛋三明治

喜欢半夜做宵夜的日子,玉米沙拉,意粉,鸡蛋三明治。
其实鸡蛋三明治很简单,重要是煎蛋时的手感。
  • 先准备好面包片,摊好。
  • 菜片,生菜叶或其它喜欢的生食菜品,铺好,我喜欢这个时候就涂沙拉酱上去。用两片面包就夹好它。摆在盘上。
  • 升火,火不能太大,要有平底锅,少少油,轻轻的把蛋打下去,慢慢看它成形。等底部煎定型以后视情况铲起来滑一下,免得焦底。出锅不太早,不然会完全流掉,也不能太老,就不好吃了。以最上面的蛋白定型,可包住蛋黄为宜。
  • 把蛋直接摆到面包片上,油多的话可以先控下油再摆。
  • 然后把夹着菜的面包片摆上来。
  • 经验上来说,最好不要直接在蛋上涂沙拉酱,感觉不好吃。

好喜欢太太吃到三明治的时候开心的样子,上次的早餐煎得有点糊,太手忙脚乱啦。

2009年1月4日星期日

Bamboo 安装指南

  • 文档属主: 刘鑫

  • 目标读者: 软件事业部全体员工
  • 版本历史:

环境需求

实现本文过程使用的环境如下: ::

  • Ubuntu 8.10
  • gcc 4.2
  • g++ 4.1
  • PostgreSQL 8.3.5

关于 Bamboo

Bamboo项目是一个中文语言分析引擎,开发者是Postgre领域久负盛誉的eeee团队。目前使用者还不算多,但是从http://code.google.com/p/nlpbamboo/wiki/Benchmark|测试数据来看也有着不错的成绩 。它最大的亮点是集成了PostgreSQL接口。

Bamboo项目提供DEB、RPM等几种格式的安装程序,不过源码编译也很方便。

参考资料

Bamboo 项目站点

Bamboo 安装入门

PostgreSQL 数据库系统 *NIX 简易安装指南

Bamboo 与 Tsearch2 的集成配置

环境准备

CRF++

编译Bamboo需要CRF++库支持,可以从这里下载

CRF++的安装并不复杂,标准的configure/make:

./configure
make
sudo make install

但是此时如果编译Bamboo,会提示找不到libcrfpp.so.0,因为默认情况下crf安装到/usr/local,我们可以修改path,也可以configure的时候指明--prefix参数。这里我建立了一个ln:

sudo ln -s /usr/local/lib/libcrfpp.so.0.0.0 /usr/lib/libcrfpp.so.0

CMake

Bamboo 安装需要cmake支持,在ubuntu下可以用apt安装:

sudo apt-get install cmake

安装

假设用户位于~/third-party目录下,Bamboo的源码包在~/downloads下:

tar vxf ~/downloads/bamboo-1.1.0.tar.bz2
cd bamboo-1.1.0
mkdir build
cd build
cmake ..
make
sudo make install

默认情况下bamboo安装在/opt/bamboo目录下,此时的bamboo还不能直接使用,因为需要辞典,训练过程很简单,详见Bamboo 安装入门。简单来说可以这样:

sudo /opt/bamboo/bin/autobuild -t crf_seg

这个过程非常漫长,在AMD 2300+ CPU,1G内存,kubuntu 8.10的机器上用时超过了12小时。我没有尝试,但是也许可以直接把编译生成的data和index目录复制过去使用。

Bamboo项目现在还支持词性、实体词和主题词分析,详见Bamboo 安装入门

PostgreSQL 集成

要在PostgreSQL中使用全文索引,首先应该安装Tsearch2引擎,详见PostgreSQL 数据库系统 *NIX 简易安装指南

配置好PostgreSQL后,进入Bamboo目录安装PostgreSQL支持,在默认设置下,我们需要编辑一下Make命令,将PG_CONFIG 指定为 /usr/local/pgsql/bin/pg_config。执行命令如下:

cd /opt/bamboo/exts/postgresql/chinese_parser
make
sudo make install

形式上我们需要一个stop word文件,实际上bamboo并不需要它的支持,所以可以在如下位置(默认安装路径)建立如下的空文件:

/usr/local/pgsql/share/tsearch_data/chinese_utf8.stop

接下来以超级用户登录到需要支持中文搜索的数据库,执行:

# \i /usr/local/pgsql/share/contrib/pg_bamboo.sql
# \i /usr/local/pgsql/share/contrib/chinese_parser.sql

如果没有错误,就可以执行SQL测试一下分词效果了:

select bamboo('中文分词');

SELECT to_tsvector('chinesecfg', '我爱北京天安门');

2009年1月3日星期六

PostgreSQL 数据库系统 *NIX 简易安装指南

环境需求

实现本文过程使用的环境如下: ::

  • Ubuntu 8.10
  • gcc 4.2
  • g++ 4.1

本文涉及的内容同样适用于KUbuntu,其它Linux可能在启动设置上略有差别,编译与安装过程也同样适用于类似的UNIX操作系统。

参考文献

PostgreSQL 8.3.5 Document : Install Procedure

注意事项

很多Linux发行版的软件库中都集成了 PostgreSQL。例如ubuntu可以通过

sudo apt-get install postgresql

命令直接安装。但是ubuntu的postgresql做了一些定制,命令行位置、调用格式等都略有差别,对于只有官方文档的学习者,可能自己编译更容易掌握和学习。

安装过程

=== 获取代码 ===

  • 下载 Postgresql 的源码(当前最新版本是 8.3.5)。

  • 解压(这里假设下载至~/downloads)

tar vxf ~/downloads/postgresql-8.3.5.tar.gz
  • 进入解压后的源码目录

cd postgresql-8.3.5

配置与编译安装

  • 执行配置命令

./configure

应注意阅读这一步输出的信息,可能你的系统中缺少一些依赖库,可能你想要添加一些其它的设置,如我在这里编译时调用的是:

./configure --with-python --with-perl

* 编译与安装

make
sudo make install

这样编译安装后,数据库位于/usr/local/pgsql目录。

扩展

PostgreSQL 的一些扩展功能,例如tsearch2全文检索,默认不会安装。需要手工安装(使用linux发行版的集成版本时,可能需要单独指定其软件包安装)。

这个安装过程也很简单,只要在源码的contrib子目录下执行make:

cd contrib
make
sudo make install

配置与启动

配置基本信息

首先,PostgreSQL需要一个名为postgres的系统帐户做为默认的超级用户。$pg_path/bin目录下的命令需要以这个用户的身份执行。

sudo adduser

(或许你需要用passwd命令给它设定一个密码)

建立默认的数据存储位置,我遵循文档设定,建在/usr/local/pgsql/data。

sudo mkdir /usr/local/pgsql/data

接下来,要将这个目录的所有权赋给postgres。

sudo chown postgres /usr/local/pgsql/data

然后,初始化数据库目录。这一步需要切换到postgres帐户

su - postgres
/usr/local/pgsql/bin/initdb --locale=zh_CN.utf8 --encoding=utf8 /usr/local/postgres/data

从系统提示来看,ubuntu linux上“--locale=zh_CN.utf8 --encoding=utf8”已经是默认配置了,不需要干涉。

启动与运行

开发人员可以手工启动PosggreSQL,这也需要在postgres用户下。

su - postgres
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start

pg_ctl可以控制服务运行,详见其help或PosgreSQL文档。

需要以守护进程模式运行在系统后台的话,可以手工配置。在contrib目录下有一个子目录名为start_scripts,分别有freeebsd、linux和osx上的启动脚本示例。这里只介绍linux脚本的使用:::

  • 将contrib/start_scripts/linux文件放到系统的init.d目录:

sudo cp linux /etc/init.d/postgresql
  • 然后建立六个符号链接,该脚本自己的示例是:

sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc0.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc1.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc2.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc3.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc4.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc5.d/S98postgresql

然而我用这样的方法在ubuntu上不能启动,经梁庆喜指点,改为如下六个符号链接:

sudo ln -s /etc/init.d/postgresql /etc/rc3.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc6.d/K90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc0.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc2.d/S90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc1.d/S90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc4.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc5.d/S98postgresql

重启即可。

测试

登录到postgres

先确认服务器处于运行状态。然后执行:

su - postgres
/usr/local/pgsql/bin/psql postgres

在此控制台环境下可以查看可用的命名(\?),可以查看SQL语法帮助(\help),可以查看环境信息(\SHOW ALL)。详请可以执行\?查看。

创建新用户

切换到postgres用户下执行创建命令:

su - postgres
/usr/local/pgsql/bin/createuser march

这样会将我系统中的 march 用户与之关联起来。

创建数据库

切换到postgres用户下执行创建命令:

su - postgres
/usr/local/pgsql/bin/createdb -O march UniSearch

-O 参数指定这个数据库的所有者为march。

信任授权

如果从网络无法访问数据库,提示连接被拒绝,可能是权限问题,此时打开数据库目录下的pg_hba.conf,找到类似如下格式的文本(通常在最后):

# IPv4 local connections:
host all all 127.0.0.1/32 trust

将需要信任的IP加入,设为trust。或按照注释文档中的说明进行配置。

附录

INSTALL 文档中的 Short Version 一节

./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test