2009年5月10日星期日

CentOS 上安装Memcached笔记

环境:CentOS 5,X64
软件包:libevent-1.4.10(http://www.monkey.org/~provos/libevent/)
、memcached-1.2.8(http://www.danga.com/memcached/dist/)
说明:安装memcached前需要先安装libevent

开始:
安装libevent
CFLAGS=-m64 LDFLAGS=-m64 ./configure
make
sudo make install

安装memcached
CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=/usr/local/memcached
make
sudo make install

启动memcached
/usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root
遭遇:
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

通过LD_DEBUG=libs /usr/local/memcached/bin/memcached -h
看到类似输出
---------------------
30596: find library=libevent-1.4.so.2 [0]; searching
30596: search cache=/etc/ld.so.cache
30596: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64
/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64
(system search path)
30596: trying file=/lib64/tls/x86_64/libevent-1.4.so.2
30596: trying file=/lib64/tls/libevent-1.4.so.2
30596: trying file=/lib64/x86_64/libevent-1.4.so.2
30596: trying file=/lib64/libevent-1.4.so.2
30596: trying file=/usr/lib64/tls/x86_64/libevent-1.4.so.2
30596: trying file=/usr/lib64/tls/libevent-1.4.so.2
30596: trying file=/usr/lib64/x86_64/libevent-1.4.so.2
30596: trying file=/usr/lib64/libevent-1.4.so.2

-------------------------------
可以看到是在加载/usr/lib64/libevent-1.4.so.2文件时出现了问题,系统中确实是没有该文件的,查找后发现libevent-1.4.so.2存在于/usr/local/lib目录
然后做个软链接
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2

然后再来:
/usr/local/memcached/bin/memcached -d -m 1024 -p 11211 -u root

ps -A | grep memcached
可以看到
12389 ? 00:00:00 memcached
表明OK

那么,如何让它在系统启动的时候自启动呢:
达人告诉我:
在/etc/rc.d/rc.local中加入一行,上面命令
try it

2009年5月7日星期四

centos 5 64bit 安装mysql 5.1笔记

执行:
CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=/usr/local/mysql --enable-assembler --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-pthread --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-readline --with-plugins=innobase


遭遇:../depcomp: line 571: exec: g++: not found

执行:yum install gcc-c++

再次执行configure,OK

然后就是make && sudo make install, OK

接下去配置
添加组:/usr/sbin/groupadd -r mysql
添加用户:usr/sbin/useradd -c "mysql daemon" -r -s /bin/false -d /usr/local/mysql/var -g mysql -p mysql mysql

达人说。。。
---------------------------
cd /usr/local/mysql 进入mysql目录
bin/mysql_install_db --user=mysql 安装默认数据库
cp share/mysql/my-medium.cnf /etc/my.cnf 复制配置文件(可能需要适当修改)
cp share/mysql/mysql.server /etc/init.d/mysqld 复制mysql启动脚本
chmod 755 /etc/init.d/mysqld 更改mysql启动脚本权限,执行权限必须
chkconfig --add mysqld 添加mysql服务
chkconfig --level 35 mysqld on 设置服务在运行级3,5启动
chkconfig --list mysqld 显示mysql服务配置情况
cd var 进入mysql数据目录
chown mysql.mysql -R * 更改权限,权限不正确会导致无法启动
cd ../libexec 进入守护进程目录
cp mysqld mysqld.old 备份文件
strip mysqld 删除调试符号,生成的二进制可以快4%
service mysqld start 启动服务

注意这里,如果你的mysql无法启动,请查看/usr/local/mysql/var目录下有一个扩展名为.err的文件,文件中会记录mysql无法启动的原因。请根据需要进行修改。接下来我们需要进入mysql并设置密码:
---------------------------
我就这么做了

然后遭遇:[ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--skip-federated'
在/etc/my.cnf中注视掉--skip-federated就OK了


cd /usr/local/mysql/bin 进入mysql目录
./mysqladmin -uroot password mysql 设置root帐户的密码
./mysql -uroot -p 登录并输入密码,即上面设置的mysql
mysql>use mysql; 打开名为mysql的数据库

下面这句有点长,回车前请仔细核对,
mysql>update user set password=password('mysql') where user='root';
为安全起见,为所有的root用户设置密码。本例中密码为mysql, 你可以任意设定
mysql>update user set host='%' where user='root' and host='localhost'; 设置root帐户允许远程连接

mysql>delete from user where password=""; 删除用于本机匿名连接的空密码帐号
mysql>flush privileges; 重新读授权表,否则用户权限不会更新
mysql>quit 退出mysql

OK了,结束了,万事大吉,感谢“来源:不详 作者:佚名 时间:2009-4-4 10:51:36 发布:黑客软件园“的http://www.3389hack.com/xueyuan/fuwuqi/MySQL/22382.html

2009年5月6日星期三

ia64/amd64/em64是不同的cpu构架

转自http://www.linuxdiyf.com/viewarticle.php?id=84404
Lhhba发布于 2008-3-30 | 659次阅读 字号: 大 中 小 (网友评论 1 条) 我要评论
你在市面上买的到的intel 64位 cpu在gentoo里都属于amd64范畴

这个架构应该称为 x86_64,不过amd是最早推出这个架构的,gentoo就这么一直叫下来了,没有改

IA64指的是安腾,不是X86架构的。intel的amd64叫EM64T

ia64主要用在服务器上面,而不是我们平常使用的桌面,通常这些cpu很贵,相关的内存以及硬盘同样很贵!

其中后面两个比较相似,或者说是完全相同,主要用于个人桌面,

所以一般的linux发行版都把“amd”64和intel em“64”和起来叫(amd64)就是说你买了这两种的cpu要安装amd64版本的linux系统,

我记得debian的文档里面是这样标注的:amd是取自amd64,后面的64是来自于em64。

ia64是相对于ia32来讲得,

完全是另外一会事,兼容ia32,但是运行ia32得代码效果很差,比ia32得cpu还差,

市场上intel的cpu,除了安腾以外都不是ia64,

大家使用得多数是ia32的cpu或者是intel的em64或者是amd的amd64,

ia32的cpu已经很少买到了,

P4 5**的还是ia32,

P4 6**的就已经是em64了,

gentoo的文档里面有一个链接介绍amd64和ia32的性能比较,

大体的意思是说64在对cpu和内存比较苛刻的条件下比32有明显的提升(好像是用一些数据库软件以及网络服务软件来测的),但是在日常的软件下面没有太大的差距。

2009年4月28日星期二

在Ubuntu中通过源码安装编译安装软件(MySQL篇)

摘自http://blog.hnce.net/post/install_mysql_in_ubuntu.html
在Ubuntu中通过源码安装编译安装软件(MySQL篇)
作者:slick 日期:2008年5月4日

使用Ubuntu Server作为本地测试环境已经有一段时间了,一直都是使用apt-get方式来安装各种应用软件,通过源码编译安装应用软件是Linux和Unix环境下最常用的方式。通过源码编译安装的最大好处就是你知道自己做了什么,这种方式安装软件自由灵活,也适用于各种平台、维护方便;本系列文章都是在 Ubuntu Server系统的命令行模式下完成。

在进行源码编译安装之前,我们首先需要作如下的准备工作:

1、更新您的Ubuntu

sudo apt-get update
sudo apt-get upgrade

2、安装所需软件包

sudo apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential

apt-get可一次安装多个软件,以上安装可根据需要选装.在安装过程中可能会提示你插入Ubuntu的光盘.如果通过SSH远程管理Ubuntu出现乱码,不能正常查看汉字信息,请参考PuTTY连Ubuntu的SSH出现乱码的处理

3、安装libncurses5-dev

sudo apt-get install libncurses5-dev

通过源码编译安装软件时,出现错误信息:

checking for termcap functions library… configure: error: No curses/termcap library found

安装libncurses5-dev库方可解决.



今天首先介绍的是LAMP组中作为数据存储的MySQL的源码编译安装过程:

mysql使用utf-8作为默认编码:
groupadd mysql
useradd -g mysql mysql
tar -zxvf mysql-5.0.45.tar.gz
cd mysql-5.0.45
./configure –prefix=/usr/local/mysql –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=latin1
make
make install
cp support-files/my-medium.cnf /etc/my.cnf

启动vim修改my.cnf文件

vim /etc/my.cnf

找到log-bin=mysql-bin这一行,将其注释掉:#log-bin=mysql-bin


cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql /usr/local/mysql/var
chgrp -R mysql .

启动MySQL:

bin/mysqld_safe --user=mysql &



让mysql随系统一起启动:

使用vi编辑器,对/etc/rc.local文件进行编辑

vi /etc/rc.local

在exit 0前面加上

/usr/local/mysql/bin/mysqld_safe --user=mysql &

重启服务器,验证mysql是否能随系统正常启动,启动后:
mysql
如果能直接进入则说明启动成功。
为了安全,修改root密码:
mysql>use mysql
mysql>UPDATE user SET password=PASSWORD('new_password') WHERE user='root';
mysql>FLUSH PRIVILEGES;
mysql>exit

ipmsg GTK2版 linux上安装记录

ipmsg GTK2版

ipmsg(译名:飞鸽传书)是局域网内的文件传输工具。它是免费的,开源的,在GPL协议下发布。它有windows,linux,Mac,java等不同平台或语言的版本。

下面我来说一下它的GTK2版在ubuntu dapper/feisy/hardy下的安装过程。

安装依赖的包

sudo apt-get install intltool libgnomeui-dev libpanel-applet2-dev

下载

wget http://www.ipmsg.org/archive/g2ipmsg-0.9.5.tar.gz

配置

./configure –prefix=/usr –sysconfdir=/etc –enable-systray –with-ext-charcode=CP936

编译

make

安装

sudo make install

使用

将G2IPMSG Applet小程序添加到你的面板上。

效果

g2ipmsg.png

TroubleShootings

a)编译时出现如下错误:

file=`echo ja | sed ’s,.*/,,’`.gmo \
&& rm -f $file && -o $file ja.po
/bin/sh: -o: not found
make[2]: *** [ja.gmo] 错误 127
make[2]: Leaving directory `/home/xmx/g2ipmsg-0.9.1/po’
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/home/xmx/g2ipmsg-0.9.1′
make: *** [all] 错误 2

运行

sudo apt-get install gettext intltool

后再开始configure。

b)列表中没有其它用户

在设置里的Broadcast address setting加入自己的广播地址(将自己的子网掩码取‘反’再与自己的IP相‘或’)。

参考资料:

http://www.ipmsg.org

ChangeLog:

Thu Jun 19 CST 2008,更新为0.95版,简化了语言配置过程。
Wed May 23 CST 2007,添加TroubleShootings。

2009年4月27日星期一

GITHUB创始人回忆录

看到这样一篇译文,讲述了GITHUB创始人Tom Preston-Werner的创业历程

拒绝诱惑、追求真爱——看我怎么拒绝微软的30万转而投奔偶滴真爱GitHub

原文链接:How I Turned Down $300,000 from Microsoft to go Full-Time on GitHub
作者:Tom Preston-Werner
译者:Esther

版权声明:本文可以任意转载,转载时请务必保持作者、译者署名的完整性。

2008年是闰年。这意味着,366天前,几乎同一分钟,我独自一人坐在旧金山第三大道Zeke’s Sports Bar and Grill里。我通常很少在运动吧(sports bar)出现,就更别提SOMA的运动吧了,但那个周四是“我会Ruby”之夜。我猜当时“我会______”也是一个可以与很多事情相联系的合理说法。 ICHR是由志同道合的Ruby骇客们组成的半私人聚会,最后通常都自觉地演变成通宵达旦地饮酒。通常这种夜晚会如同我第二天早上的宿醉一样烟消云散,但是这个夜晚却与众不同。因为这正是GitHub的诞生之夜。

我估计当时我一人独坐是因为我刚刚定了一款新型的Fat Tire,需要从谈话中稍微退出一会,之前我们一直在酒吧后面昏暗灯光下围着长桌子说话。喝了四五口之后,Chris Wanstrath走了进来。我现在记不太清楚当时Chris和我算不算得上朋友。我们是通过Ruby聚会啊会议啊认识的,但只是泛泛之交。不过是寒暄几句“哎,我觉得你的代码写得非常棒”之类的。我不知道是什么促使我这么做,但是我跟他示意到我这边来,说,“哥们,看看这个。”大概一周前,我开始着手名为Grit的项目,该项目可以让我通过Ruby代码以目标方式进入Git贮藏室。Chris是当时寥寥无几的开始认真对待Git的人之一,他坐下,我让他看了看我手头的东西。东西不多,但足以看到这点燃了Chris身上的某种东西。察觉到这一点,我说出了尚未成熟的想法,建立一个网站,作为代码编写者分享Git贮藏室的枢纽。我甚至连名字都想好了:GitHub。我当时可能还在解释,他果断地插话说,“算我一个。咱们做吧!”

转一天晚上,也就是2007年10月19日星期五晚上10点24分,Chris对GitHub贮藏库做出了第一个贡献,为我们的联合冒险旅程打上了最初的烙印。至此,对于这事该如何进行,我们还都没商量。只是两个人决定在这件听起来很酷的东西上要大干一场罢了。

《小子难缠》里丹尼尔受训成为武术大师,还记得那奇妙的时间吗?记得音乐吗?嗯,也许你该买张碟,听听Joe Esposito的《你最棒(You’re The Best)》,因为我现在要大玩蒙太奇手法了。

在接下来的三个月里,Chris和我花了大量时间规划GitHub、写代码。我不断开发 Grit,设计了用户界面。Chris编写出Rails应用程序。我们每周六见面,进行设计决策,琢磨我们的定价方式到底应该如何是好。我记得有一天下着大雨,我们一口气谈了两个小时,讨论各种定价策略,还品尝了本市最好吃的越南蛋卷。在做这些的时候,我们都还有其他工作。以我为例,我当时在 Powerest,为Ranking和Relevance团队开发工具。

连着三个月,我们把晚上和周末时间都花在这个项目上,直到1月中旬,我们推出了私人试用模式,向朋友们发出了邀请。2月中旬,PJ Hyett加入,我们也变为了三强。4月10日,我们公开发布了网站。我们没把这事告诉TechCrunch。此时此刻,它仍由三个20多岁的人管理着,外界没有向它投资一分钱。

2008年7月1日,我还在Powerset全职工作,当时,我们听说微软刚刚用1亿美元收购了Powerset。时机耐人寻味。由于此收购,我被迫面临选择,比我预期得要早。我要么被迫成为微软员工,要么辞职奔赴GitHub全职工作。29岁的我是GitHub三人行中的老大,而我的累积债务和月消费也相应更大。我已经习惯了六位数的生活方式。让事情变得更错综复杂的是,我妻子特蕾萨结束她在哥斯达黎加的博士实地调查,马上要回来。我不能再假装是单身汉,而要恢复已婚男人的身份了。

微软也来凑热闹,让我更难抉择,因为他们提供的报酬很丰厚:工资再加上30万现钱。这足以让任何人犹豫一番。所以我面临的是:作微软人,有稳定的职业,固定的收入——或者——创业,工作有风险,收入不确定。我知道,我若在Powerset停留过久,其他两个人就会觉得极度紧张。他们存了些钱,几个月前成了自由职业者,两人都开始把所有时间投入到GitHub中。这是生死存亡之时。要么挑起GitHub全力以赴,要么做个稳妥的选择, 退出GitHub,到微软赚个盆满钵满。

如果你想要寝食难安的秘诀,我可以给你一份。再加一份“老婆大人会怎么想”,3000份本杰明·富兰克林;在“想抱怨,随时悉听尊便的啤酒”里搅一搅,再以财务独立的机会当头浇。

告诉老板说我要离开公司去做更酷的事情,这是我一贯的拿手好戏。我跟Powerset的老板摊牌之日正是任命之日。我告诉他我要辞职,要在GitHub全职投入。跟任何英明的老板一样,他不开心但也表示理解。他也没有用更多奖金或其他东西来诱惑我。我想他一早就知道我要走。我可能得有比别人更大的动机才会留下来,因为我早就有跳槽的准备。我跟你说,微软这些经理人精着呢。截流奖励已经被他们应用得出神入化。当然,除非你把业界独一无二的企业家扔进这群人中。只要周围有一个这样的人,事情就变得千奇百怪了。

最后,正如印第安那·琼斯不会放弃任何机会寻找圣杯,我也不能拒绝任何做自己真心热爱的事情的机会,不管其他选择有多么安全。当我垂垂老矣,即将告别人世时,我打算回望整个人生,说“啊,那可真是冒险,”而不是“哟,我当然觉得安全啦。”

Google Code还是Sourceforge?

最近在了解源代码管理服务,找到了一篇不错的文章,摘录如下:

许式伟
2006-12-28
概要

提起Google Code,我需要很惭愧地承认一点,我一开始的时候“把它看扁了”。初接触Google Code的时候,我简单地认为,Google Code只是一个半成品,从各方面的功能来讲,似乎远不能够与Sourceforge的完备相比。但是,随着对Google Code了解的深入,我不能不承认我错了,Google Code再一次证明“简单是美”的法则:Google的服务似乎永远是看似简单(甚至让你觉得不够用),而实则非常完备。
如果你有开源的计划,或者已经开源,或者你有私人的项目希望有个完备的平台去管理它,那么本文值得你一读,因为这是我在这方面的一些心得。到目前为止,我开源了WINX和DocX已经4个月多了,和Google Code、Sourceforge均有了较长时间的接触,希望借机会和大家交流下。

选择Google Code,还是Sourceforge?总体来讲,两者各有各的优势。从进入的门槛来讲,使用Google Code会比Sourceforge容易很多。

Google Code的优势与劣势

Google Code的优势

* 速度第一。Google的服务以快速著称,Google Code亦不例外。当你上传新的Release时,你会特别感受到这一点。

* 操作简洁。如果Sourceforge和Google Code提供了同样的功能,那么我可以毫不思索的讲,Google Code比Sourceforge快捷易用。我们后文将详细比较各个功能。

Google Code的劣势

* 容易被盾。以我的经验,Google Code被盾比较频繁。这导致我有时无法浏览Bug列表,发布新的Release等等。所幸的是,Google Code的SVN连接从来没有出现访问障碍。因此这不算太大的问题。另外,按Google Code的说法,有些功能可以在命令行进行,而不需要到Web上,但是我本人尚未进行详细的验证。

* 100M的容量限制。Google Code限制每个项目的SVN空间大小不能超过100M,发布的所有Release亦不能超过100M。由于目前我的项目刚刚开始,这一点还不是一个障碍。但是这是一个比较容易到达的数字。可以预见,你的项目要面临搬家的风险。我试图寻找办法来清除一部分SVN历史版本数据、删除一些历史Release 版本,未果。

* 无数据统计功能。你无法得知你的Release被下载的情况(下载总数以及趋势)。

Sourceforge的优势与劣势

Sourceforge的优势

* 更多的受众,已经形成第一开源社区。简单统计结果表明,Sourceforge上大约每5分钟就有一个新的Release。也就是说,一天大约有300个新的发布(这不是精确的统计,只是简单估算)。

* 功能更加完备。目前来看,Google Code在功能上并不比Sourceforge成熟。如果Google Code是一个完整、快捷、功能足够的平台,那么Sourceforge则是一个方方面面均已经相当完备的开发平台。

Sourceforge的劣势

* 操作繁复,速度较慢。


详细功能对比

下面我们展开来对比一下两者的功能:

* 建立帐号。Google Code只要你有Gmail帐号即可。Sourceforge要求你进行注册。而且你发现,Sourceforge的注册流程十分罗嗦。

* 建立项目。Google Code只要你简单填写一下项目的相关信息(http://code.google.com/hosting/createProject),仅一个页面即可完成申请。而Sourceforge的新Project申请流程是繁复的,有很多的下一步,并需要你阅读一些英文细节。另外,你的项目并不马上生效,而是需要进过审批。不出意外的话,在申请之后的第二天再上Sourceforge,你的项目应该通过审批了。

* 代码管理。Google Code仅支持SVN库,Sourceforge支持SVN和CVS。Google SVN限制在100M内,Sourceforge则尚未见到明确的容量限制。

* 代码库的权限管理。Google Code的代码库权限管理非常简单,在你登陆后,http://code.google.com/hosting/settings 将显示Google Code为你自动生成的随机密码。通过你的用户名和这个随机密码,你就可以访问SVN代码库,对其进行修改。sourceforge推荐使用putty套件,详细参考sourceforge上的说明,总的来说,相当繁复。

* 发布版本。Google Code限制所有Release包不能超过100M,单个Release不能超过10M。Sourceforge尚未见到明确的限制。

Google Code发布一个新的Release流程,仍然只需要一个页面即可完成。你只需要选择上传的文件,并为该文件加一些预定义的标签(用于告诉别人你的 Release支持的平台或其他信息,这些标签Google Code已经预定义部分,项目管理人员亦可以定义),确认即开始上传。特别地,如果一个Release被打上 Featured 标签,那么它将出现在项目首页。

Sourceforge的流程则比较复杂:
o 通过ftp上传你要发布的文件。上传地址:ftp://upload.sourceforge.net/incoming,这个过程匿名进行。上传的文件在你后续的步骤中进行“认领”,如果某个包长时间没人认领,Sourceforge将清理之。
o 进入Sourceforge。用你的Sourceforge帐号登陆。
o 进入项目主页,进入Admin -> FileReleases。
o 选择已有的Package或者新建Package,向该Package中添加一个Release。在你的项目发布的文件比较多(不是发布的历史版本多,而是一次发布的文件多,你可能希望对他们进行归类)时,Package可以更加有条理地管理这些文件。
o 为该Release添加ReleaseNote和ChangeLog。确认。
o 认领你上传到ftp上的文件。打上勾,确认即可。
o 为你发布的文件添加说明(支持的平台、包的格式及其他规格)。
o 如果有人关注这个项目的Release,最后一步,你可以向这些人发送信息,告诉他们发布了新的Release。这一步很有意思,是Google Code不能做到的。

* Bug报告。Google Code中的issues,Sourceforge的tracker。由于用的还不算多,暂时不做详细比较。

* 论坛。Google Code中并不直接提供论坛功能,当然,这是因为它推荐你使用强大的Google Groups。Sourceforge则除了提供给用户的论坛(并把用户论坛分为两个,一个讨论产品功能的,一个属于头脑风暴型的开放式讨论),也提供开发者专用的论坛(对非项目成员不可见)。

* Project Web。Google Code中没有提供项目主页,而是颇具创意的提供了一个Wiki Pages。Sourceforge提供了项目主页,项目主页的地址是:"项目名.sourceforge.net"。你可以利用这个网址来宣传项目、提供项目信息。这个空间是是php+mysql的,并且你可以通过远程Shell控制,极其灵活。

* 团队成员管理。Google Code你可以通过添加其他Gmail帐号为项目成员(Members)或管理员(Administers),但似乎还不能进行更加详细的权限管理。Sourceforge提供了非常精细的项目成员的权限管理。

* 下载与访问统计。Google Code无此功能。Sourceforge提供了最近7日、最近2个月、年、全部访问/下载统计。非常详细。

* 软件截图(ScreenShots)。可以让用户迅速获得项目的第一印象,吸引眼球。Google Code无此功能。


附加说明

* WINX的主页:
o http://code.google.com/p/winx/
o http://sourceforge.net/projects/winx (由于台湾地震影响,可能暂时不可访问)
o http://www.winxcn.com (由于台湾地震影响,可能暂时不可访问)
o 了解WINX...

* DocX的主页
o http://code.google.com/p/docxcn/
o http://sourceforge.net/projects/docx (由于台湾地震影响,可能暂时不可访问)
o 了解DocX...

* 更多关于Google的消息,参见这里。

摘自

2009年4月23日星期四

Centos上yum install遇到public key问题解决方法


http://www.fedorafaq.org/#gpgsig
把所有的key都import一次
如果有key import失败的,把那个key先down下来,在本地import即可

2009年4月7日星期二

在cent os 上使用TL WN322G无限网卡

TP-LINK TL-WN322G+无线网卡驱动 For Linux
阅读(7) 评论(0) 发表时间:2009年03月24日 13:15

本文地址:http://qzone.qq.com/blog/6080673-1237871729
本文标签: 网卡 eth1 WN322G+ TL Linux
TP-LINK TL-WN322G+ 54M无线USB网卡所用的芯片组是ZD1211b,我的Linux版本是CentOS5.1,方法其实不复杂,步骤如下:
1. 进入 http://zd1211.wiki.sourceforge.net/VendorDriver 下载最新的网卡驱动,我下载的是ZD1211LnxDrv_2_22_0_0.tar.gz。
2. tar 解压
3. cd 进入解压后的文件夹
4. # make
5. 如果没有问题,会编译出 zd1211.ko 。
6. # insmod zd1211.ko
# ifconfig eth1 up
# iwconfig
# iwlist eth1 scan
# iwconfig eth1 essid "your wireless net" ;; 填入你自己的ESSID
# iwconfig eth1 key "your key" ;; 填入你的口令key
7. OK了,设置一下IP地址和DNS,就可以上网了!

补充:
光做上面的好像还不行,ifconfig 命令只对本次会话起作用,还需要让系统能够记住它。我的办法是修改 /etc/profile 文件,在文件的末尾添加这样几句:
ifconfig eth1 up
iwconfig eth1 essid "your wireless net"
iwconfig eth1 key "your key"
这样就 OK 了!!

2009年2月17日星期二

Flex3+rails2的RequestForgeryProtection问题

话说,按照Flexible rails这个教程,为了预防CSRF攻击,我们开启了ApplicationController中的protect_from_forgery项
问题出来了
[RPC Fault FaultString="HTTP request error" faultCode="Server.Error.Request" faultDetail="Error:[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032:Stream Error.URL: http://localhost:3000/bugs/update"].URL: http://localhost:3000/bugs/update"]
at mx.rpc::AbstractInvoker/http://www.adobe:com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at flash.events::EventDispatcherdispatchEventFunction()
at.flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/redirectEvent()

查看log,发现问题出在authenticity_token上
因为如果由Rails来生成表单,所有用form_for或者form_tag等生成的表单均被隐藏注入一个特别的基于用户session生成的token,在表单被提交时一并将token提交至服务器并接受服务器端的检查。
但是我们在Flex中设计的表单没有包含authenticity_token。
咋办?
网上有人建议改写request_forgery_protection.rb的verified_request?,我认为改写那个方法不如不开启protect_from_forgery。
等待高人来解决此问题

2009年2月13日星期五

Flex 3.0.2的XXX

1377-4861-5964-4149-7405-5440
1377-4965-7922-2026-0118-6904
1377-4265-2531-7733-3832-7505
1377-4164-3292-3871-2072-6426
1377-4160-8078-3708-6370-4578