PopSci 5-Minute Project: The Coffee Can Cellphone Booster
coolbean | 30 七月, 2007 17:48
Linux: 在英文环境中使用中文输入法
coolbean | 30 七月, 2007 02:04
适用版本: CentOS4 (RHEL4)
本来该开始配置Apache等服务应用了的, 但是在英文环境中无法输入中文, 上网找资料很麻烦. 切换成中文环境, 字又太难看, 后来在网上找了些资料, 修改成功, 记录如下:
首先我的GUI是Gnome, 不知道KDE会不会不同. 在/etc/sysconfig/i18n 这个文件中记录了默认的环境设置, 利用gedit打开, 发现如下信息:
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
按照网上的说法, 将
LANG="zh_CN.GB18030"
LANGUAGE="en_US.UTF-8"
LC_CTYPE="zh_CN.GB18030"
LC_TIME="en_US.UTF-8"
这几句添加后, 再从新启动, 就可以正常使用Ctrl+Space激活中文输入法了. 但是发现在很多应用程序的对话框中, 界面资源都变成了中文, 而Firefox的菜单项字体也变得非常难??. 后来把
LANG=”zh_CN.GB18030″这句去掉后, 问题解决.
但在此种方案下, 仍有不尽如人意的地方, Terminal由于也需要支持中文, 所以字体变得非常难看. 也需更完美的方法是需要在英文环境中直接加载输入法, 而不是将区域置为中文.
在此要感谢小兴兴同学的建议, 他告诉我要添加LC_CTYPE=”zh_CN”这一句, 经过实际测试发现不可行, 我猜测是因为zh_CN下也有不同的编码方式, 有GB2312, GB18030 还有UTF-8 (Unicode), 所以应该需要指定一种. 关于这几种编码方式的区别和??, 转载一篇 (来自 http://www.eygle.com/digest/2007/01/zhs16gbk_char.html):
(查看全文)
针对动态网站数据库查询优化的软件memcached
coolbean | 30 七月, 2007 02:00
在Computer News上看到一篇文章,Digg.com的应用也全部是基于LAMP构建的,同时也采用了一些优化工具,按图索骥找到 memcached,是 Danga Interactive 公司开发的一个数据库负载平衡软件,其工作原理是:
首先,在不同的机器上运行 memcached 软件(作为Daemon)。运行的过程很简单,只需要一行命令:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
-d 表示以Daemon方式运行,-m 2048 表示使用2GB的内存,-l 10.0.0.40 表示监听IP 10.0.0.40,而-p 11211 表示监听的端口。
其次,在应用程序中进行配置,在进行任何的数据库查询之前,先检查memcached。如果memcached没有返回任何对象,再连接到数据库,获取需要的数据,然后把它交给memcached缓存起来。
下面是一个基于Perl的示例:
sub get_foo_object {
my $foo_id = int(shift);
my $obj = $::MemCache->get("foo:$foo_id");
return $obj if $obj;
$obj = $::db->selectrow_hashref("SELECT .... FROM foo f, bar b ".
"WHERE ... AND f.fooid=$foo_id");
$::MemCache->set("foo:$foo_id", $obj);
return $obj;
}如果访问数据库的代码写的很精炼,那么不需要添加很多类似上述的代码,只需要把一些极大增加数据库负载的查询运行一下就可以了。
然后系统会把这些查询的结果作为索引保存,以后只要告诉 memcached要查询的内容,它就会返回给你相应的值,由于有多个服务器的 memcached Daemon 支持,可以做到负载平衡。如果一台机器Down了,memcached还会把它的工作自动转移到其它服务器上。
更多的信息,可以参考 memcached 的官方文档。先保存下来,以后偶在慢慢研究:
http://danga.com/memcached/
Google 使用 MySQL 数据库
coolbean | 30 七月, 2007 01:49
在 Donews 上看到一则新闻,Google在周二发布了基于GPL协议下的一些 针对 MySQL 的优化工具,以增强 MySQL的性能。原来 Google 的很多应用都是构建在MySQL之上的,这让我对MySQL的信念更加坚定了。
来到 Google 的 google-mysql-tools 首页,看到Google提供了三个工具,分别是:
- mypgrep.py - 一个类似pgrep的工具,用来管理MySQL连接;
- compact_innodb.py - 一个用来压缩innodb数据库文件的工具,它依靠转储和重新加载数据表的原理进行压缩;
- patches - 针对MySQL 4.0.26 的补丁,增加了很多新的功能。
又找到了一个页面 http://xooglers.blogspot.com/2005/12/lets-get-real-database.html ,应该是一位前Google员工所写的文章,文章讲述了Google的AdWords服务的数据库服务器更换的过程。在2000年左右,AdWords构建在MySQL之上,虽然那个时候的MySQL还缺少了一些功能,但是运行的性能是令人满意的,缺点就是为了弥补MySQL缺少的功能,Google不得不编写很多额外的代码。后来,AdWords小组的Manager提议更换一个商业的数据库,后来也确实这么做了(原作者没有透露该商业数据库的名称,不过我觉得不是Oracle就是DB2),并且耗费了大量的人力和时间,重写AdWords的大部分数据库操作的代码,并进行了大量的数据库优化,可最后发现效率还没有原来的MySQL高。。这使得AdWords不得不在相当的一段时间内在两个不同的数据库系统上运行。最后,MySQL推出了新的版本,AdWords又重回了MySQL的怀抱。
作者最后总结到,那些使用了商业数据库的企业,很多都是在浪费资金。(原话说得更搞笑:As far as I’m concerned they might as well be flushing that money down the toilet. )
国内的IT产业发展总是要比国外慢半拍,目前国内的企业很少听说有使用开源软件的。不过随着开源软件的成熟和推广,国内企业观念的转变,我相信开源软件一定会在中国市场占领半壁江山。这也就意味着自己现在选择的方向至少不会错。:)
libstdc++ on CentOS 4.5
coolbean | 30 七月, 2007 01:29
CentOS所带的shared libraries是6的版本(libstdc++.so.6), 所以需要再安装libstdc++.so.5. 网上推荐的做法是利用yum 直接执行 yum install libstdc++.so.5, 在网上查到libstdc++.so.5 的完整安装文件是compat-libstdc++-33-3.2.3-47.3.i386.rpm, 可以在http://mirror.centos.org/centos/4/os/i386/CentOS/RPMS/compat-libstdc+ +-33-3.2.3-47.3.i386.rpm进行下载.
选择合适的 Linux 发行版本
coolbean | 30 七月, 2007 01:20
Linux的发行版本大概可以分为两类,一类是由商业公司发行并维护的版本,代表是著名的RedHat系列;一类则是由开源社区组织发行并由志愿者维护的版本,代表是Debian系列。下面分别介绍比较主流的几个版本:
- RedHat Enterprise Linux:RedHat公司(http://www.redhat.com/)发布的商业版本,也就是所谓的Redhat Advance Server,用户注册后可以享受30天的免费支持服务,而过了30天则需要付费。(当然也存在一些绕过的方法)。RHEL为了服务器应用而优化,系统稳定,包的分发采用编译好的二进制rpm文件进行,利用yum对rpm包进行管理。RedHat系列的版本可以说是国内使用最多的版本,资源极其丰富,绝大多数教材都是以RedHat作为示例,很适合初学者使用。
- Fedora Core:由原来的RedHat Linux桌面版本改变而来,是免费产品。稳定性较RHEL差,同RHEL采用相同的包分发和管理方式。优点类似RHEL,资源较为丰富。
- CentOS:全称是Community Enterprise OS(http://www.centos.org/),由CentOS社区维护并发行的版本,该版本是在RHEL源代码的基础上,经过优化和BUG Fix重新编译而来,号称能够100%兼容RHEL运行的软件,而且最重要的是完全免费。经过用户的测试,它同样稳定可靠,适合用来构建服务器。同时由于是RHEL的克隆版本,RHEL的各种资源都可以享用,现在已经越来越多地为人们所接受。
- SUSE Linux:为Novell公司维护并发行的商业版本(http://www.novell.com/linux/),目前最高版本是10。分为Professional和Enterprise Server版本,也集成了一些很有用的软件,如Realplayer,GIMP,Eclipse开发平台等。新的版本中采用了类似MacOS的桌面,同时还提供了虚拟三维的操作方式,增强了用户的操作体验。
- Debian:Debian系列(http://www.debian.org/)是社区维护Linux版本的典范,是迄今为止最遵循GNU规范的Linux系统。它采用 apt -get 的方式对包进行管理,而社区维护着大量软件的Linux版本供用户下载免费使用。
- Ubuntu:社区网站(http://www.ubuntu.com/)严格意义上Ubuntu并不是一个独立的发行版本,???谀ebian改进而来,是一个将自由软件概念宣扬到极致的Linux版本。它由于附带了众多的常用软件,并且集成了GUI(用户可以选择Gnome、KDE或者Xfc,KDE版本被称作Kubuntu,Xfc版本被称作Xubuntu),在加上系统优化,非常适合桌面用户来使用。
- Gentoo:Gentoo(http://www.gentoo.org/)是Linux发行版本中最年轻的一个,同时也是最有特点的一个。它将很多原来由厂商做好的工作开放给用户完成,例如安装时需要自己挂接硬盘等,此外还因为它引入了类似FreeBSD的Portage包?芾矸绞剑蛓um以及apt的方式不同,Portage采用源代码的方式分发,用户需要在本机重新编译,对于软件的安装比较缓慢,但是由于在编译的过程中可以利用参数进行优化,所以安装完成后的效率却很高。所以Gentoo号称在同样的环境下运行速度最快的版本。
- 此外,还有一些国内的Linux版本,例如红旗,TurboLinux 等,这里就不一一介绍了。
根据各个Linux发行版本的特点,再根据实际的用途和需要,就不难做出选择:
- 如果你需要一个简单易用的桌面系统,那么Ubuntu系列是你的选择;
- 如果你需要稳定的服务器系统,并且有财力的支持,那么RHEL可以让你省下一些时间
- 如果你需要稳定的服务器系统,同时尽可能降低成本,那么CentOS更适合你;
- 如果你已经接触Linux一段时间,并且想更进一步的学习,那么Gentoo能够达到你的要求。