分类目录
-
近期文章
链接表
功能
Author Archives: flex
纠结的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
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错误)。
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的使用顺序如下: 当请求的http头里的host匹配sever_name里的任一host时,使用此host 若不匹配,或者为空,使用server_name的第一个host 若没有设置server_name,则使用本机的hostname 若要一直使用http头里的host,则将server_name设置为:servername _ *;(下划线不能少,因为 * 不能做为sever_name第一项的开头)
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:软件包维护者认为所有用户都不会喜欢缺少某些功能的 … Continue reading
cfengine的哲学
最近在做基于cfengine的二次开发,目前正在进行的是系统初始化的工作。 开始的时候我直接对现有的shell脚本进行cfengine化,然而随着工作的深入,越发疑惑这么做的意义,使用脚本逐句执行的方式来运用cfengine有什么优势呢?不就是相当于使用了cfengine语法的“脚本”么?而且系统初始化后,如何保证这个状态呢?难道要再写一套“脚本”? 随后和老大的一番讨论让我发现我还是没有理解透彻cfengine对于promise的定义。即,promise是为了保证一种状态的不变。用户需要定义的就是这个状态。当然,对于复杂的cfengine没有提供原生支持的状态,还需要定义修复方法。 所以,使用cfengine首先要确定的是要达到什么状态,其次是状态意外改变后如何修复。 对于系统初始化,首先用cfengine描述出系统应达到的状态,而第一次运行,整个系统明显是“偏离”这个状态的,于是修复过程开始。
Gentoo中virtual/jdk依赖icedtea-bin的解决
virtual/jdk默认依赖icedtea-bin,在/etc/make.conf中添加ACCEPT_LICENSE=”*”即可解决
windows任务计划与at命令
windows计划任务有两种,一种是开始-程序-附件-系统工具-任务计划,另一种方式是用at命令 两者的区别在于“任务计划”会在前台运行,运行帐户为当前用户;而at命令在后台运行,运行帐户为system。当然at命令也可以使用/interactive选项在前台运行。 使用at命令要注意两点: 因为运行帐户不同,所以一些环境变量是不同的,比如使用pscp远程拷贝的时候,当前用户的key已经在注册表里,但是system用户没有,导致运行失败。(system如果第一次运行pscp会出现主机验证,解决方案是要么用/interactive运行一次,要么使用pscp -batch) 只有可执行文件(.exe .bat .com)可以直接使用at命令运行,cmd内置命令(如copy、ren和bat的语法等)要使用at 19:00 cmd /c copy ….的形式来运行,如果bat文件中也包含cmd命令,也要使用这种方式。
redmine vs trac
以下介绍仅限于两者初级试用阶段 trac基于python,有easy_install的话安装很简单,然而配置起来比较复杂,项目管理和用户权限控制等都要基于命令行,本土化工作也比较落后,不过插件很多,相关的功能比较完善 redmine和trac很像,基于ror,使用gem安装也很简单,配置全部可以在web界面搞定,本土化工作很不错,不过插件很少,有一些小的bug(主要集中在ajax上),svn的代码高亮很简陋,相关高亮插件有诡异的问题,具体表现是在 一些机器上只有在服务端第一次启动的时候高亮正常,其余情况下均产生错误的html页面。 redmine的一些注意事项: 使用mod_rails(passenger)或者直接运行内置服务器比较高效,fastcgi反应比较慢 使用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. 如果ruby、apache(apxs)均为自己编译,安装mod_rails的时候要注意将ruby加到PATH中,然后export APXS2指向apxs,同时软连接一个rake到ruby的bin目录(没找到哪个环境变量能起作用,不得不说mod_rails的安装脚本虽然用户体验很好,但是比较弱智……) 使用mod_rails要在VirtualHost中设置RailsEnv production(请自行修改),同时注意加上Order
个人项目管理的意义
项目管理的意义在于多人开发环境下,将责任和功劳分配到每个人身上,然而对于一个人进行开发的项目而言,管理的意义是什么呢? 我觉得主要是起强制和记录的作用,强制的意思是强制进行细化的需求分析,并且因为需求的可见,继而督促自己在合理的时间内完成每一项任务(一个小功能,因为对自己的懒惰,极可能N久也完不成);记录的意思是指记录下开发的轨迹,这样能清晰的呈现项目的开发流程,方便进行code review以及引人多人开发。