<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>群英汇博客</title> <atom:link href="http://blog.ossxp.com/feed/" rel="self" type="application/rss+xml" /><link>http://blog.ossxp.com</link> <description></description> <lastBuildDate>Fri, 12 Mar 2010 07:49:48 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.9.2</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>TopGit的使用技巧 (3)</title><link>http://blog.ossxp.com/2010/03/802/</link> <comments>http://blog.ossxp.com/2010/03/802/#comments</comments> <pubDate>Wed, 10 Mar 2010 13:14:46 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[Git]]></category> <category><![CDATA[topgit]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=802</guid> <description><![CDATA[含有分支依赖且产生冲突的update操作创建一个Git版本库demo1
$ git clone demo1
$ cd demo1
$ vi sum.py      #编写一个求和的函数
$ cat sum.py
def sum(a,b):
return a + bprint "sum(1+2)=",sum(1,2)
$ git add .
$ git ci -m "init respoitory"
创建一个TopGit分支
$ tg create t/hack1
$ vi sum.py    #修改sum.py的形参
$ cat sum.py
def sum(num1,num2):
return num1 + num2print "sum(1+2)=",sum(1,2)
$ git ci -am "modify sum function's parameter"
$ tg summary
&#62;       t/hack1                         [PATCH] t/hack1
$ git rev-parse master top-bases/t/hack1 [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/802/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>TopGit的使用技巧 (2)</title><link>http://blog.ossxp.com/2010/03/800/</link> <comments>http://blog.ossxp.com/2010/03/800/#comments</comments> <pubDate>Wed, 10 Mar 2010 13:07:30 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[Git]]></category> <category><![CDATA[topgit]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=800</guid> <description><![CDATA[含有冲突的update操作创建一个Git版本库demo1
$ git clone demo1
$ cd demo1
$ vi sum.py #编写一个求和的函数
$ cat sum.py
def sum(a,b):
return a + bprint "sum(1+2)=",sum(1,2)
$ git add .
$ git ci -m "init repository"
创建一个TopGit分支
$ tg create t/hack1
$ vi sum.py    #修改sum.py的形参
$ cat sum.py
def sum(num1,num2):
return num1 + num2print "sum(1+2)=",sum(1,2)
$ git ci -am "modify sum function's parameter"
$ tg summary        #查看当前TopGit分支的状态
&#62;       t/hack1                         [PATCH] t/hack1
$ git rev-parse master top-bases/t/hack1 t/hack1
905d75e8cb4392149b0c74b03c53e5e6fdcac3cf
905d75e8cb4392149b0c74b03c53e5e6fdcac3cf
ebd8259b997ef79a423fd80be0748be48db4bdd2
修改master,致使 [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/800/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>TopGit的使用技巧 (1)</title><link>http://blog.ossxp.com/2010/03/796/</link> <comments>http://blog.ossxp.com/2010/03/796/#comments</comments> <pubDate>Wed, 10 Mar 2010 12:56:09 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[Git]]></category> <category><![CDATA[topgit]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=796</guid> <description><![CDATA[TopGit是基于分布式版本控制工具Git的一个轻量级的分支及补丁管理工具。使用TopGit可以很好的管理基于分支的开发模式。尤其对于二次开发人员来说，TopGit就是他们的杀手锏。
首先原型版本的代码用Git初始化成Git库，然后每给原型增加一个功能或者修改一个Bug都用TopGit创建一个分支（tg create t/feture1 或者 tg create t/bug1-fix），这样每一个功能或者Bug修复都是一个TopGit分支。当原型版本升级后，我们只需要切换到原型分支，即master分支 （git co master)，然后导入原型的新版本代码，最后将TopGit的分支一个一个迁移到新的原型之上，就完成了一次版本的升级。真的很有用啊，这个东东！
下面介绍一些TopGit的使用技巧，尤其是关于分支update的问题没有冲突的update操作
#创建一个Git版本库demo1
$ git clone demo1
$ cd demo1
$ vi sum.py   #编写一个求和的函数
$cat sum.py
def sum(a,b):
return a + bprint "sum(1+2)=",sum(1,2)
$ git add .
$ git ci -m "init repository"
#创建一个TopGit分支
$ tg create t/hack1
$ vi sum.py    #修改sum.py的形参
$ cat sum.py
def sum(num1,num2):
return num1 + num2print "sum(1+2)=",sum(1,2)
$ git ci -am "modify sum function's parameter"
$ tg summary        #查看当前TopGit分支的状态
&#62;       [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/796/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>群英汇部分应用的 /etc/init.d/ 下脚本名称改变</title><link>http://blog.ossxp.com/2010/03/793/</link> <comments>http://blog.ossxp.com/2010/03/793/#comments</comments> <pubDate>Tue, 09 Mar 2010 14:25:01 +0000</pubDate> <dc:creator>蒋 鑫</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[新闻]]></category> <category><![CDATA[Debian]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=793</guid> <description><![CDATA[群英汇最近对 ossxp-ntp, ossxp-apache2, ossxp-secure-fw-shorewall 作了升级，升级后，可能会感到不适应。原来在 /etc/init.d 下的脚本是： /etc/init.d/ntp, /etc/init.d/apache2, /etc/init.d/shorewall
此次修改之后，脚本改为：/etc/init.d/ossxp-ntp, /etc/init.d/ossxp-apache2, /etc/init.d/ossxp-secure-fw-shorewall这是为什么呢？
Debian 最新版本的 sysv-rc 包，提供了对 /etc/init.d/ 下脚本启动优化的功能，会根据启动脚本的对服务的依赖关系，自动建立启动顺序，而不是像以前那样完全凭借软件包维护者手工设定序号确定服务加载顺序。
让服务的加载更加合理，让启动的速度更快。
可 sysv-rc 包和群英汇调整 /etc/init.d/ 下脚本名称有什么关系呢？
拿 ossxp-secure-fw-shorewall 为例，做一说明。
ossxp-secure-fw-shorewall 该软件包依赖 Debian 的 shorewall 软件包。shorewall 是 Linux 中的企业级防火墙软件。
群英汇从本公司软件配置的易用性出发，修改了 /etc/init.d/shorewall 脚本：确认在启动防火墙，加载 SSH_OPEN 链，以便群英汇 SSH 动态打开端口的应用可以完成初始化
动态加载防火墙规则，为 LDAP 镜像服务器，备份服务器，单点登录客户端等提供动态规则这就需要修改 /etc/init.d/shorewall 配置文件。该配置文件来自于软件包 shorewall，不能有软件包使用同一个名称的脚本，即不能直接用 ossxp-secure-fw-shorewall提供一个同名脚本进行覆盖。
群英汇之前使用了 dpkg-divert 工具和 Debian Config Package，实现了对 Debian 软件包配置文件的覆盖：ossxp-secure-fw-shorewall 包提供一个脚本 /etc/init.d/shorewall.ossxp
将系统中原来的 /etc/init.d/shorewall 改名为 /etc/init.d/shorewall.ossxp-orig
将 [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/793/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Apache 性能调校</title><link>http://blog.ossxp.com/2010/03/789/</link> <comments>http://blog.ossxp.com/2010/03/789/#comments</comments> <pubDate>Tue, 09 Mar 2010 13:47:20 +0000</pubDate> <dc:creator>蒋 鑫</dc:creator> <category><![CDATA[Linux]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=789</guid> <description><![CDATA[Apache 是老牌子的网站服务器，论功能和插件，是无出其右，但是论性能，很多新手已经把 Apache 甩在后面，如 lighttpd, Nginx。在更换Web服务器软件这类激进的动作之前，你应该考虑一下：如果您拥有足够多的内存来应付现有的并发访问的话，建议你还是继续使用 Apache，但是作些性能上的调校是应该的。
关于 ServerLimit  和 MaxClients
MaxClients 参数决定了 Apache 最大并发访问数。
对于 mpm_prefork，如果 MaxClients 设置超过了 256，就需要对 ServerLimit 设置，ServerLimit 应该和 MaxClients 一样，至少不小于 MaxClient。
对于 mpm_worker，如果 MaxClients 除以 ThreadsPerChild  超过了 16，就要对 ServerLimit 进行设置。ServerLimit 乘以 ThreadsPerChild 要大于等于 MaxClients。
MaxClients 不是随意设定的
像 Apache 这样重量级的软件，内存消耗是很大的。MaxClients 的计算规则是 Apache 可占用的物理内存，除以单个 Apache进程的内存占用。
因此并发数目直接取决于内存的大小。然而如果内存足够大，而配置文件没有跟上，岂不是吃亏？
用MaxRequestsPerChild 降低内存泄漏的危害
难保有什么Web 应用/插件会导致内存泄漏，我曾经有过一个服务器，每隔两天就需要重启，可能是 ssl 模块导致的内存泄漏。如果配置了 MaxRequestsPerChild，就会将风险降到最小，当一个 Apache 进程服务了 MaRequestsPerChild 个请求后，就会杀掉自己，避免内存泄漏。
缺省 MaxRequestsPerChild 的配置为 0, [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/789/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>软RAID 提供低成本和高可靠性的 Linux 服务器</title><link>http://blog.ossxp.com/2010/03/783/</link> <comments>http://blog.ossxp.com/2010/03/783/#comments</comments> <pubDate>Tue, 09 Mar 2010 12:16:58 +0000</pubDate> <dc:creator>蒋 鑫</dc:creator> <category><![CDATA[Linux]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=783</guid> <description><![CDATA[群英汇服务器硬件升级，首先考虑到的就是使用 RAID 来提高磁盘的高可靠性。
本文介绍 Linux 下软 RAID 的管理&#8230;
硬 RAID，软 RAID?
硬 RAID 从性能考虑肯定是首选，毕竟有独立的控制器负责 RAID 的数据同步、校验等等，而软 RAID 则依靠操作系统本身，需要占用 CPU 时间。
事情都有两面。硬件 RAID 的成本很高，一块可靠的 RAID 卡可能要比几块硬盘加起来都要贵。硬件 RAID 的安全性存在隐患，如果 RAID 卡失效，必须要保证能够购买到同类型的 RAID 卡来替换，否则硬盘中的数据可能会永久失去。
软件RAID，无须任何多余的成本（除了需要多一块或几块硬盘），也不存在 RAID 卡损坏导致数据丢失的问题。而且软件 RAID 的配置非常简单。
Linux 下软件 RAID 的配置需要多个硬盘，如果是 RAID1，至少需要两块硬盘。
对于软RAID，可以使用不同大小的硬盘，这是因为 软件 RAID 是建立在磁盘分区上，不同大小的硬盘可以建立同样大小的分区。
RAID 的设置，只是在安装过程的分区中进行设置
磁盘分区的文件系统类型选择为 RAID 分区，而不要选择 ext3 等类型；不同的硬盘的分区要保持一致；
当有磁盘分区的文件系统类型设置为 RAID 类型时，分区的界面中会出现 RAID 配置界面，通过此界面创建 RAID 设备
RAID 的设备号为： /dev/md0, /dev/md1, .
就像对待普通分区一样对待 RAID 设备
为各个分区设备（/dev/md0,&#8230;）设定文件系统格式，如 [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/783/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Linux 应用程序失去输入焦点问题的解决</title><link>http://blog.ossxp.com/2010/03/778/</link> <comments>http://blog.ossxp.com/2010/03/778/#comments</comments> <pubDate>Tue, 09 Mar 2010 06:35:44 +0000</pubDate> <dc:creator>蒋 鑫</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Debian]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=778</guid> <description><![CDATA[最早在这个博客（Debian 版本升降级）中就已经提到了，在 Debian 版本升级后，发现部分应用在 Alt-Tab 切换时，输入焦点失去，无法进行切换。当时以为版本降级可以解决，但是因为最终没有找到具体是哪个包造成的，又不想将系统回退到 Lenny，最终我的笔记本一直带病工作，最近很多同事的机器都已经传染了这个毛病，今天终于解决了这个问题。
简单的一句话：卸载 scim，安装 fcitx 输入法。
输入焦点的丢失，在 Koncole (KDE 最好用的终端软件) 和 FreeMind (脑图软件) 最为明显：Alt-Tab 切换到其他应用（如 firefox），再用 Alt-Tab 切换回来，Konsole 或者 FreeMind 将不再响应键盘输入；
Konsole 支持多标签浏览，通过点击其他标签，按下 Shift + 左右方向键，切换标签可以重新获得输入焦点；
FreeMind 也可以通过多标签的切换，然后按下 Esc 键，键盘重新响应，或者鼠标点击任意节点，右键菜单选择编辑亦可获得输入焦点；你看，我的笔记本就是一直这样带病坚持工作，每天花在重获焦点的时间非常客观。和几个同事商量，一定要解决。
用了 xev 等事件诊断软件，包括借助 Google，最终怀疑的目光落在输入法上。这么一个明显的 Bug，如果在互联网上没有被讨论的铺天盖地，那么一定是只影响少数人的应用。SCIM（中文输入法）就是这种应用。
解决办法是彻底卸载 scim，安装 fcitx （小企鹅输入法）：
$ sudo aptitude remove scim
$ sudo aptitude install fcitx
# 配置小企鹅输入法为默认输入法
$ sudo im-switch -c
]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/778/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>robots.txt 文件的非标准扩展</title><link>http://blog.ossxp.com/2010/03/768/</link> <comments>http://blog.ossxp.com/2010/03/768/#comments</comments> <pubDate>Tue, 09 Mar 2010 04:38:51 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[搜索引擎]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=768</guid> <description><![CDATA[在前面的博客 关于机器人 /robots.txt 文件的常识 中已经介绍了 robots.txt 文件的一些基本用法，这篇文章向大家介绍一些 robots.txt 文件的一些扩展指令。1、Crawl-delay 指令
一些主要的爬虫支持 Crawl-delay 参数，该参数用于设置对于同一服务连续两个请求之间等待的秒数。
User-agent *
Crawl-delay: 10
2、Allow 指令
一些主要的爬虫支持 Allow 指令，该指令用于排除紧跟其后的 Diaallow 指令的设置。当你想排除整个目录的访问但又想让该目录中某些HTML文档能被爬取时这个指令相当有效。虽然按标准执行的第一个匹配的robots.txt模式总是能获得胜利，但谷歌的实施却有所不同：它首先评估所有允许的模式，然后才是所有不允许的模式。
为了和所有的机器人兼容，当只允许排除目录中的某一个文件被抓取时，你应该经 Allow 指令放在 Disallow 指令之前，例如：
Allow: /folder/myfile.html
Disallow: /folder1/
3、Sitemap 指令
一些爬虫支持 Sitemap指令，在一个 robots.txt 文件里允许出现多个 Sitemap
Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml
Sitemap: http://www.google.com/hostednews/sitemap_index.xml
4、扩展标准
Extended Standard for Robot Exclusion 已经被推出, 该标准推出了一些新的指令, 例如 Visit-time 和 Request-rate. 示例:
User-agent: *
Disallow: /downloads/
Request-rate: 1/5         # [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/768/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Debian/Linux下Redmine的安装步骤</title><link>http://blog.ossxp.com/2010/03/766/</link> <comments>http://blog.ossxp.com/2010/03/766/#comments</comments> <pubDate>Tue, 09 Mar 2010 01:49:55 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[项目管理]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[redmine]]></category> <category><![CDATA[缺陷跟踪管理工具]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=766</guid> <description><![CDATA[前提条件是：你的机器上已经安装了 ruby , rake, rails 和 mysql数据库。
至于ruby和rails的版本对应情况可以参考：http://www.redmine.org/wiki/redmine/RedmineInstall下载安装包 redmine-x.x.x.tar.gz
下载地址：http://rubyforge.org/frs/?group_id=1850
解压并进入解压后目录tar -zxvf redmine.x.x.x.tar.gz
cd redmine-x.x.x创建数据库mysql&#62; create database redmine;
mysql&#62; create user 'redmine'@'localhost' identified by 'redmine'';
mysql&#62; grant all privileges on redmine.* to 'redmine'@'localhost';配置redmine连接数据库所需的参数redmine-x.x.x$ cp config/database.yml.example config/database.yml
redmine-x.x.x$ vi config/database.yml
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: redmine
encoding: utf8
说明：粗体部分是修改的内容
创建一个session安装密钥
运行下面的命令：
redmine-x.x.x$ rake config/initializers/session_store.rb执行数据迁移redmine-x.x.x$ rake db:migrate RAILS_ENV='production'
说明：如果出现异常：
The [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/766/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>关于机器人 /robots.txt 文件的常识</title><link>http://blog.ossxp.com/2010/03/756/</link> <comments>http://blog.ossxp.com/2010/03/756/#comments</comments> <pubDate>Mon, 08 Mar 2010 12:52:52 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[搜索引擎]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=756</guid> <description><![CDATA[一、概述
网站所有者使用/ robots.txt文件提供有关其网站网络机器人的指示;这就是所谓的机器人排除协议 (The Robots Exclusion Protocol)。
它的作用机理： 一个网络机器人想要访问一个 Web 站点，比如说：http://www.example.com/welcome.html。在这之前，它会首先访问http://www.example.com/robots.txt，并发现：User-agent: *
Disallow: /
&#8220;User-agent: *&#8221;意味这该小节的配置适用于所有的网络机器人。
“Disallow: /&#8221; 告诉网络机器人不应该访问该站点的任何页面。使用 /robots.txt 时有两个重要的地方需要考虑：网络机器人可以忽略你的 /robots.txt文件。尤其是“脚本小子”进行漏洞扫描使用的恶意网络机器人，收集邮件地址的垃圾邮件发送器根本就不会理睬这些。
/ robots.txt文件是一个公开的文件。不要在 /robots.txt 中包含私秘的网址信息，因为任何人都可以看到您的服务器哪些部分你不想让机器人访问。参见：Can I block just bad robots?
Why did this robot ignore my /robots.txt?
What are the security implications of /robots.txt?二、详解
/ robots.txt 是一个事实上的标准，而不是由任何团体拥有的标准。有两个历史性的描述:the original 1994 A Standard for Robot Exclusion document.
a 1997 Internet Draft [...]]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/03/756/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- This site's performance optimized by W3 Total Cache. Dramatically improve the speed and reliability of your blog!

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (user agent is rejected)
Database Caching 8/13 queries in 0.006 seconds using disk

Served from: hostcn @ 2010-03-13 01:03:00 -->