Tag Archive for '开发'

发挥你的思维,没有做不到的事情

新的一年,Yo2服务器压力比以前大多了。为了能够提供快度的博客访问,我们使用了多种服务软件。比如 nginxsquidlighttpd等,这些在 linux 系统上的性能都是十分棒的 :) 不过我们还在追求更快、更高效率的解决方案。

我作为一个开发员,想法又特别的多 _-!! 居然想到自己写个 web server _-!! 汗~

有了想法当然必须做出行动 :) 立刻到网上查找相关资料,首先从英文网站出发(国外的开源项目多,并且代码都很好),逛了一整天,终于找到一个国人写的 epoll 代码模型。因为只是个模型,根本没有任何业务处理能力,这些就得自己写了 :) 花费2天 时间,就在这个基础模型上实现了 web server 功能。

yo2pagengine 终于面世 :) 不到 1000 行代码,当然还有很多功能没加进去,但已经可以实现基本的 web server 服务。

我使用了 siege web 服务压力测试软件,测试了一下 yo2pagengine 的性能。在 gdb 调试进程内服务,得出的成绩是每秒处理 150 个请求。我把该结果告诉了 charles 和一个熟悉 web 系统的网友,都觉得这个成绩很棒咯。呵呵,但这个数据只是我在 debug 模式测试出来的,真正的业务处理能力在下面:

$:siege -c 300 -r 100 -f oneoo.com.url (包含350个URL)

Transactions: 30000 hits
Availability: 100.00 %
Elapsed time: 83.53 secs
Data transferred: 217.47 MB
Response time: 0.07 secs
Transaction rate: 359.15 trans/sec
Throughput: 2.60 MB/sec
Concurrency: 25.49
Successful transactions: 30000
Failed transactions: 0
Longest transaction: 13.77
Shortest transaction: 0.00

处理能力达到每秒处理 360 个请求 !哇~这个成绩是在我自己的电脑上测试的,web server 和 siege 都开在同一个电脑上,还有 linux 效率比较低的 X (在我的电脑上,Vista 运行起来比它流畅多了,很不解,怎么人人都说它性能好)如果是在真正的服务器上使用,肯定不只这个成绩 :)

下面才是本文主要部分:

其实我也不熟悉C语言,只能算入门。但还是顺利实现了自己的需要的功能 :)

这么多的编程语言,人是不可能全都熟悉的,问题是人的思维是否灵活。

不要担心前路是否平坦,只有踏出了第一步,你才真正知道这条路的好坏,遇到什么问题,尽努力逐一解决,方可实现自己的目标。但如果你连第一步都无法踏出去,你连成功的机会都没了。

点子恐惧

子、idea想法太多,会使人抓狂。就像我现在的状态一样。

 

对于新版yo2开发,我有着太多的想法,很想把全部想到的都做出来,但现实上,我是无法实现的。可能我只能完成想到的50%,更糟糕的是每当我完成一部分,新的点子又出来了 _-!!

 

我现在就好比进入了程序的死循环一样,无论我怎么做都无法break;我自己并未给自己设计这一功能 _-!! 呵呵。

 

 

 

纳闷,所以记录一下 ;)

使用 SubVersion 做开发

S
ubversion是什么?

Subversion是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。从这个方面看,许多人把版本控制系统当作一种“时间机器”。

Subversion可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。进展可能非常的迅速,并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。

一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。然而,Subversion不是这样一个系统,它是一个通用系统,可以管理任何类型的文件集,对你这可能是源代码—对别人,可能是一个货物清单或者是数字电影。

SVN svnserve 方式安装及配置

I.Linux RedHat 9
1.卸载原版本
# rpm -ev subversion-0.17.1-4503.0

2.安装包
# rpm -ivh --nodeps apr-0.9.5-0.2.i386.rpm
# rpm -ivh --nodeps apr-util-0.9.5-0.1.i386.rpm
# rpm -ivh --nodeps neon-0.24.7-1.i386.rpm
# rpm -ivh --nodeps subversion-1.2.3-1.rh90.i386.rpm

3.建立用户svn,创建repostory
$ svnadmin create /home/svn/svnroot

4.启动SVN服务
$ svnserve -d -r /home/svn/svnroot

这样就简单的建立了一个基础的 SubVersion 开发环境,普通情况下代码是存放在 SubVersion 的数据库中,我们是无法直接把这些代码及时应用,当然 SubVersion 的功能不至于这么简单 :) 我们可以在代码更新的时候添加一个 hook 上去,让 SubVersion 自动把代码更新到我们应用的地方。

添加自动更新的 hook

在 /home/svn/svnroot/hooks 创建一个名称为 post-commit 的脚本,内容为:

#!/bin/sh
REPOS="$1"
REV="$2"
# 第一次更新代码,请使用 checkout 方法把全部文件导出

svn checkout svn://localhost /home/svn/willbe --username oneoo --password ******

# svn://localhost => SubVersion 访问地址

# /home/svn/willbe => 将要把代码输出到的目录

 

# 次后的代码更新只需要做 update 处理
#svn update /home/svn/willbe --username oneoo --password ******