2007-08
13

下面对fcicq中的这篇文章 别拿这些太当回事: 就这些命令做一些解释, 做个深入浅出版的哈。

其实就是这些命令的排列组合:

  • awk用于写简单脚本;
  • sed用于正则表达式替换;
  • sort用于排序;
  • uniq用于统计。
阅读全文 »

2007-08
11

昨天搬动电脑,搬完之后发现音箱只有右声道有声音,在Windows里面调整声道平衡,发现左声道完全不响,右声道声音正常。遂调换左右音箱的接线,发现音箱本身是正常的;又调换音箱输入的左右声道线,得知音箱的接孔也没有故障。听了听耳机发现耳机也是只有一个声道有声音,排除了硬件的问题。

于是打开Windows中每一项关于声音的选项,寻找声道平衡,均无效果。考虑是不是Windows的某个地方还隐藏着我不知道的设置?那么换个操作系统怎么样?于是用Ubuntu的Live CD启动到Linux里面播放音乐,发现居然也是只有一个声道有声音。

正在一筹莫展之时,突然发现耳机线似乎松动了,于是顺手将其插紧。没想到这样一来,耳机的左右声道都响了。马上打开音箱,发现音箱也恢复了正常。回到Windows中测试,一切正常。

想了想原因,可能是耳机没插牢导致只有一侧声道连接到声卡上,于是声卡就误认为另一个声道没有接输出,索性连音箱的另一个声道都没有输出了。


2007-08
09

今天说说Apache的优化。为什么要优化?因为服务器资源不够用。 资源有很多方面,但根据木桶理论,只要有一种资源不够用, 整个服务器的性能就会受到影响(所谓瓶颈)。

服务器资源

那么服务器的资源包括哪些?对于网站来说主要是CPUTCP连接数这两者。 CPU表现在任务数上,在Linux下使用平均负载(loadavg)来衡量。 可通过以下命令来查看(参考这篇文章):

cat /proc/loadavg

对于单CPU的服务器,loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。 超过2以上就会明显感到性能降低了。

TCP连接数可通过以下命令查看:

netstat -ant | grep :80 | wc -l 

如果要实时监控服务器资源,可参考OpenNMS项目。

注1:内存不算,低廉的价格使得网站服务器很少有因为内存不够而down掉的。
注2:CPU%是瞬时的CPU使用率,通常无法反映出整体负载。

阅读全文 »

2007-07
28

刚刚为blog加了个面向打印的css,大家可以从浏览器的打印预览中看到效果。 之所以要加这个css,是因为blog显示的内容中有很多是不需要并且不便于打印的, 比如侧边栏、评论输入框等,打印时把这些无用的东西都隐藏掉, 对用户比较友好。

总结一下css的要点。参考的原文在这里

阅读全文 »

2007-07
25

今天看到一篇光照效果教程, 不禁大为赞叹,原来滤镜还可以这样使用。它不仅仅是一篇光照效果滤镜的教程, 也提供了高斯模糊滤镜的一种用法。翻译过来放在这里作为参考吧。 其实并不是原文翻译,只是用我自己的语言将步骤记录下来而已。 所用的Photoshop为CS3。

最终效果如下:

lighting-7.png

下面来看教程。

阅读全文 »

2007-07
25

最近关于photoshop很流行的一篇文章 《80款最好的PhotoShop文字效果制作教程》, 其中介绍了放射字的制作方法。 做法很简单,就是极坐标+风,以做出各种各样的放射线效果。我们先来看看教程。

放射字的做法

先来看看最终效果。

radioactive.jpg
阅读全文 »

2007-07
23

相信这张图大家一定见过,它描述了在软件开发各个阶段,发现并修改bug所需的相对费用。 例如,一个本应在设计阶段发现的bug,如果一直到部署并开展应用之后才被发现, 那么修改这个bug所花费的代价是设计时修改的代价的470倍-880倍。

relative-cost-per-life-cycle.png

设计阶段是在选定方向,而编程则是朝着目标前进,测试就是检查有没有达到目的地。 如果最初选择了错误的方向,那么无论如何努力前进也无法到达目的地, 事后走回头路会花费更多的时间。最近在开发中几次验证了这个事实。 一次是在详细设计审查时发现了设计中的一个重大方向性错误, 如果没发现并继续编程,测试阶段再去改代码就会使得代码、测试用例等完全重做, 浪费大量时间。另外一个例子就是以前开发的一个项目, 当时没有做详细设计而直接开始编程,就等于放弃了修改bug效率最高的设计阶段, 增大了项目风险。

因此在软件开发中,最重要的阶段不是测试,而是设计(概要设计和详细设计)。 做好设计文档并严格审查,就能大幅度地减少开发风险,降低开发费用。



2007-07
22

通常在制作网站首页时需要使页面内容在水平和垂直方向上都居中。 表格布局时代常用的方法是内容之前添加换行。实际上通过CSS有更方便的办法。

这个方法出自creamu.com。 先来看看代码和效果吧。

<style>
#warp {
  position: absolute;
  width:500px;
  height:200px;
  left:50%;
  top:50%;
  margin-left:-250px;
  margin-top:-100px;
  border: solid 3px red;
}
</style>
<body>
  <div id=warp>Test</div>
</body>
centered-div.png

原理很简单:将left和top设置为50%来定位div到浏览器中央,再将margin-left和margin-top值设置为宽和高的一半, 使div居中显示。



2007-07
22

今天介绍Excel的一个非常有趣(有时也有用)的功能:放大镜,它能将工作表上的任意区域放大缩小或者改变形状。

方法是,先选中区域,然后按住Shift键单击编辑菜单,选择粘贴图片链接,被选定的区域就会被当作图片粘贴进来, 然后你可以随意改变它的大小,如下图所示:

Excel放大镜

对源区域的任何修改都会即时反映到图片中,俨然就是个放大镜。它甚至可以放大源区域中的图形和图片:

Excel放大镜

那么这个功能有什么用呢?比如当你做了一张极其复杂的表格,想写一份说明文档教给别人如何使用时, 就可以利用这个功能了。



2007-07
20

我曾经做过一个失败的项目。那时我对项目管理一知半解, 对于风险管理、进度管理等更是一无所知, 以致最后花费了当初几倍的人力来挽救它造成的损失。

项目概况

这个项目的策划是在11月开始的,是对现有的一个Web应用程序进行改造。 客户写了一份简单的需求说明,希望能在12/25圣诞节之前投入使用。 根据这份需求说明,我们整理出了一份功能列表, 然后估算每个功能的代码规模,发现规模大大超出期限,于是跟客户交涉, 删减了一些功能,并将发布日期定为1/26。 最后结果为服务器端3KL,客户端3KL,按照1KL/人月的保守估计, 需要6个人月,投入两个人,正好能在1月底完工。 于是项目就开始了。

阅读全文 »