纠结的terminator 0.90

经过数个月的开发,terminator终于发布了0.90版(从0.14直接到0.90 -. -)。但是令人失望的是bug众多,而且没有我需要的命令行拆分窗口的新特性。随后作者紧急发布了0.91版修正bug。

ps1: 我以前提交的kde下面关闭tab时导致窗口变小的bug已经修正

ps2: terminator已经进入了官方源

ps3: 貌似字体颜色有点问题,变深了,已经有人提交了这个bug

ps4: use_system_font选项在man手册里面没有,默认是True,会导致字体设置无效。我提交了这个bug

Posted in 应用 | Tagged | Leave a comment

nginx的log

access_log的最小作用域是location,关闭方式是:access_log off;

error_log的最小作用域是http,关闭方式是:error_log /dev/null;

如果一个请求是404之类的,则access_log中记录404,error_log同时会记录open filename failed等错误,如果不需要,可以改变http域error_log的记录等级,也可以直接关闭(还有log_not_found选项可以关闭记录open filename failed错误)。

Posted in nginx, 运维 | Tagged , , , | Leave a comment

nginx的rewrite

设置nginx的rewrite如果替换项是以http://开头,则起的是redirect的作用,即使最后的参数是last不是redirect,例如:

rewrite ^(.*)$ http://aaa.bbb.com/ccc$1 last;

浏览器端会得到302。

nginx的文档里提到:

redirect – returns temporary redirect with code 302; it is used if the substituting line begins with http://

另外,rewrite后的host的使用顺序如下:

  1. 当请求的http头里的host匹配sever_name里的任一host时,使用此host
  2. 若不匹配,或者为空,使用server_name的第一个host
  3. 若没有设置server_name,则使用本机的hostname
  4. 若要一直使用http头里的host,则将server_name设置为:servername _ *;(下划线不能少,因为 * 不能做为sever_name第一项的开头)
Posted in nginx, 运维 | Tagged , | Leave a comment

apt-get与aptitude

aptitude install默认会安装recommends的包,etch中apt-get不会,而lenny中则和aptitude相同。两者都不会安装suggests。

aptitude remove会清除所有不需要的包,apt-get remove只会清除指定包,但是有autoremove选项。

如果希望只安装必要的包的话,可以用apt-get –no-install-recommends,aptitude可以在设置里取消Install recommended packages automatically。

或者,在/etc/apt/apt.conf中根据需要写入以下配置:

[code]

APT::Install-Recommends "false";
APT::Install-Suggests "false";
Aptitude::Recommends-Important "false";
Aptitude::Keep-Suggests "false";

[/code]

附录:

2.2.8 软件包依赖关系

Debian 软件包管理系统依赖声明,它描述了这一事实:一些软件包需要其它软件包被安装才能正常运行或运行得更好。

  • 软件包 A 依赖(depends)软件包 B:要运行A必须安装 B。在有些情况下,A 不仅依赖 B,还要求 B 的特定版本。版本依赖通常有最低版本限制,A 更依赖于B的最新版而非某个特定版本。
  • 软件包 A 推荐(recommends)软件包 B:软件包维护者认为所有用户都不会喜欢缺少某些功能的 A,而这些功能需要 B 来提供。
  • 软件包 A 建议(suggests)软件包 B:B 中某些文件与 A 的功能相关,并能够增强 A 的功能。这种关系通过声明软件包 B 增强 Enhances 软件包 A 来表示。
  • 软件包 A 与软件包 B 冲突(conflicts):如果系统中安装了 B 那么 A 无法运行。“Conflicts”常和“replaces”同时出现。
  • 软件包 A 替换(replaces)软件包 B:B 安装的文件被 A 中的文件移除和覆盖了。
  • 软件包 A 提供(provides)软件包 B:A 中包含了 B 中的所有文件和功能。

上述术语使用方法的更详细的信息参阅 Packaging Manual 和 the Policy Manual。

注意,aptitude 和 dselect 可以对 recommends 和 suggests 类软件包进行更细粒度的操作,apt-get 只会简单的下载安装 depends 类软件包而不管 recommends 和 suggests 类软件包。这两个程序均正式使用 APT 作为其后端。

Posted in debian, 运维 | Tagged , , , | Leave a comment

cfengine的哲学

最近在做基于cfengine的二次开发,目前正在进行的是系统初始化的工作。

开始的时候我直接对现有的shell脚本进行cfengine化,然而随着工作的深入,越发疑惑这么做的意义,使用脚本逐句执行的方式来运用cfengine有什么优势呢?不就是相当于使用了cfengine语法的“脚本”么?而且系统初始化后,如何保证这个状态呢?难道要再写一套“脚本”?

随后和老大的一番讨论让我发现我还是没有理解透彻cfengine对于promise的定义。即,promise是为了保证一种状态的不变。用户需要定义的就是这个状态。当然,对于复杂的cfengine没有提供原生支持的状态,还需要定义修复方法。

所以,使用cfengine首先要确定的是要达到什么状态,其次是状态意外改变后如何修复。

对于系统初始化,首先用cfengine描述出系统应达到的状态,而第一次运行,整个系统明显是“偏离”这个状态的,于是修复过程开始。

Posted in cfengine, 运维 | Tagged , | 4 Comments

nginx fancyindex插件严重影响效率

补记:

nginx的fancyindex插件能提供定制性更好的index页面(插件许久没有更新,有一个小的bug,含有冒号的url不能正确生成,稍稍改下代码就行了)。不过经过一段时间高负载的使用后,发现页面载入延迟比较高,使用ab局域网压力测试的结果(nginx 0.7.64)表明fancyindex的效率只有原生autoindex的37.5%。

Posted in nginx, 运维 | Tagged , | 4 Comments

Gentoo中virtual/jdk依赖icedtea-bin的解决

virtual/jdk默认依赖icedtea-bin,在/etc/make.conf中添加ACCEPT_LICENSE=”*”即可解决

Posted in gentoo | Tagged , , | 1 Comment

windows任务计划与at命令

windows计划任务有两种,一种是开始-程序-附件-系统工具-任务计划,另一种方式是用at命令

两者的区别在于“任务计划”会在前台运行,运行帐户为当前用户;而at命令在后台运行,运行帐户为system。当然at命令也可以使用/interactive选项在前台运行。

使用at命令要注意两点:

  1. 因为运行帐户不同,所以一些环境变量是不同的,比如使用pscp远程拷贝的时候,当前用户的key已经在注册表里,但是system用户没有,导致运行失败。(system如果第一次运行pscp会出现主机验证,解决方案是要么用/interactive运行一次,要么使用pscp -batch)
  2. 只有可执行文件(.exe .bat .com)可以直接使用at命令运行,cmd内置命令(如copy、ren和bat的语法等)要使用at 19:00 cmd /c copy ….的形式来运行,如果bat文件中也包含cmd命令,也要使用这种方式。
Posted in 应用 | Tagged , , | Leave a comment

redmine vs trac

以下介绍仅限于两者初级试用阶段

trac基于python,有easy_install的话安装很简单,然而配置起来比较复杂,项目管理和用户权限控制等都要基于命令行,本土化工作也比较落后,不过插件很多,相关的功能比较完善

redmine和trac很像,基于ror,使用gem安装也很简单,配置全部可以在web界面搞定,本土化工作很不错,不过插件很少,有一些小的bug(主要集中在ajax上),svn的代码高亮很简陋,相关高亮插件有诡异的问题,具体表现是在 一些机器上只有在服务端第一次启动的时候高亮正常,其余情况下均产生错误的html页面。

redmine的一些注意事项:

  1. 使用mod_rails(passenger)或者直接运行内置服务器比较高效,fastcgi反应比较慢
  2. 使用fastcgi的话,注意要打开apache的rewrite模块,同时public目录下.htaccess设置RewriteBase,然后删掉除了fcgi的部分,不然会出循环rewrite的错误,类似这样:Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
  3. 如果ruby、apache(apxs)均为自己编译,安装mod_rails的时候要注意将ruby加到PATH中,然后export APXS2指向apxs,同时软连接一个rake到ruby的bin目录(没找到哪个环境变量能起作用,不得不说mod_rails的安装脚本虽然用户体验很好,但是比较弱智……)
  4. 使用mod_rails要在VirtualHost中设置RailsEnv production(请自行修改),同时注意加上Order
Posted in 应用 | Tagged , , , , , , | Leave a comment

个人项目管理的意义

项目管理的意义在于多人开发环境下,将责任和功劳分配到每个人身上,然而对于一个人进行开发的项目而言,管理的意义是什么呢?

我觉得主要是起强制和记录的作用,强制的意思是强制进行细化的需求分析,并且因为需求的可见,继而督促自己在合理的时间内完成每一项任务(一个小功能,因为对自己的懒惰,极可能N久也完不成);记录的意思是指记录下开发的轨迹,这样能清晰的呈现项目的开发流程,方便进行code review以及引人多人开发。

Posted in 思考 | Tagged | 2 Comments