Archive

Archive for June, 2010

VIM在多窗口编辑时的几个快捷键

June 25th, 2010 CoCoWool No comments

image

使用VI提供的多窗口编辑在项目文件比较多的情况下非常方便。今天总结了几个比较好用的快捷键。

最基本的是打开分割窗口 :sp a.pl

切换窗口 Ctrl + w 按一次加上下键可以自己选择切换方向,按两次则从上到下自动遍历窗口

扩大窗口 Ctrl-w + 扩大窗口

缩小窗口 Ctrl-w – 缩小当前编辑窗口

在vim中执行shell命令 :! ls 这样可以执行shell命令,或者也可以 :shell top

放大当前窗口,缩小其他窗口 :res ,后面可以设置行数,比如 :res 10 则将当前窗口设置为10行

有了这几个功能,在vim中编辑复杂的项目也变得非常简单了

Categories: WebTech Tags:

设计网事读书笔记

June 13th, 2010 CoCoWool No comments

从三月份的时候开始读,利用零零星星的时间,终于读完了千年的《设计网事》这本书。虽名为书,实则是他最近几年的博文汇集而来。纵观此书,却与阅读单篇感觉很不一样。下面是读书的时候,摘抄的一些句子。

SEO的迎合对象是搜索引擎,而我们主张的迎合对象是用户需求

搜索引擎的需求其实就是用户需求的不完全表述

提供服务的关键是有没有效,而不是叫SEO或UCD

1998年,W3C发布HTML 4.0 Specification

每天都有无数的网站消失、无数页面在改版

改版的目标是平稳过渡,让大家不觉得这么陌生

用户挑剔,说明还在乎

Web Design是跨学科的技艺结合体,将来一定是互联网的世界

通过事物的本质去总结出概念,而不是通过概念放大理解事物的本质

超过90%的原创者无法做到有效积累,同样超过90%的阅读者对内容好坏没有准确判断力

互联网设计不是行业,只是个技术领域,参考立足于传统行业设计

规则有规则的秩序感,不规则有不规则的位置感

做真实的自己,不要想复制别人的生活方式和轨迹

此书并没有长篇累牍的的设计理论,也没有太多枯燥无味的技术教程,加上合理的编排,让我感觉受益良多

1、互联网产品,甚至做任何事情都得有自己的想法。所有事情都需要经过自己的思考提炼,而不是人云亦云。就像有一篇讨论电梯按钮排布的文章,平凡的日常现象,其实背后也有通用的艺术设计原则。我们一则是需要认真的观察,同时还需要融入自己的思考。做事情,不能为完成而完成,加入自己的想法,才能使产品不断地进步。

2、流程化的管理和团队合作非常重要。现在互联网的项目,不再是单枪匹马就能够做出花样的年代。Ajax、CSS、DOM结构、后台,构建一个成熟的Web 2.0应用时,这些东西必不可少,在不可能一个人全完成的情况下,团队协作和流程管理就非常重要。我目前所在的单位,基本上就是按照瀑布式的开发方式来进行的,我想国内多数做互联网的团队应该也都是这个模式。敏捷目前还没试验过,感觉其实现门槛比较高,只有小组成员都具备了敏捷的能力之后,才能谈得上。所以,我相信,规范化的管理流程,是推进提高生产率的关键因素。

3、用户体验,需要用心、细致的去做。在一个趋同的审美背景下,要把自己的产品做到出彩,做到令人过目不忘常回头。在用户体验的界面设计上,必须要用心、细致的去做。互联网产品的产生过程,是一个技术和艺术结合的过程。我们不能只看艺术性而忽略了开发商的难度,也不能只考虑开发上的便捷性,而把一堆丑陋的页面丢给用户。从重要性上来看,应该吧界面设计与交互设计放在技术开发之前。首先,很多需求的产生是来自战略层而不是技术人员,所以需要有足以说服人的细化的原型作为基础。

以上是一些合上书之后的胡思乱想,看来自己的思维系统性和整理性还是有待强化。

Technorati 标签: ,,,,,

PHP性能监测的工具介绍 – XHProf

June 2nd, 2010 CoCoWool No comments

XHProf

这个软件本是Facebook内部的一个应用工具,2009年3月份开源,为PHP的性能监测提供了很好的工具。官方的介绍中提到:

XHProf is a hierarchical profiler for PHP. It reports function-level call counts and inclusive and exclusive metrics such as wall (elapsed) time, CPU time and memory usage.

XHProf’s light-weight nature and aggregation capabilities make it well suited for collecting "function-level" performance statistics from production environments.

 

可以先来看看 XHProf 提供的图形界面的截图

 

XHProf的一些特性:

1、Flat Profile. 提供函数级的汇总信息,比如调用次数、执行时间、内存使用、CPU占用等。

2、Hierarchical Profile。 对每个程序,进行了父级调用和子级调用的分解。

3、Diff Reports(差异报告)。有很多种情况,我们希望能够对比,比如新版本比旧版本提升了多少速度,两个版本的差距究竟在哪里。Diff Report 就是这样的工具,接收两个输入,并且分别给出各自的 Flat Profile 和 Hierarchical Profile 报告。

4、Callgraph View(调用视图)。性能监测的数据可以绘制成调用视图,方便我们查看。

5、Memory Profile(内存监控)。这个特性帮助我们了解PHP如何分配和释放内存。值得注意的是,XHProf并不是严格的监测内存的分配和释放动作,而是计算每个函数进入和退出时的内存状况,这是一个相对简单的实现方式,但是基本上也能够满足我们日常的监控需求。

6、如何处理外部文件。XHProf将 include,require,include_once,require_once进来的文件视作是一个 function。

XHProf目前只支持一个级别的函数追踪,但是貌似也没有特别大的影响。

XHProf的安装配置

xhprof的安装配置很简单,我们首先在 PECL 的网站上下载 源码包 然后执行安装过程

% cd <xhprof_source_directory>/extension/
% phpize
% ./configure --with-php-config=<path to php-config>
% make
% make install
% make test

php.ini file: You can update your php.ini file to automatically load your extension. Add the following to your php.ini file.

[xhprof]
extension=xhprof.so
;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
xhprof.output_dir=<directory_for_storing_xhprof_runs>

 

xhprof的使用也很简单,只要将需要监控的脚本放在 xhprof_enable() 和 xhprof_disable() 中间,就可以得到相应的结果,同时也提供了一些参数可以让我们设置是否监控 Memory, CPU 的使用,是否监控PHP内置的函数,从 0.9.2 之后,还可以设置跳过一些特定的函数。

XHProf 生成的数据,可以用 XHProf UI 来进行简单的显示。

XHProf使用也很简单,下面是一个官方的例子:

<?php

function bar($x) {

  if ($x > 0) {

    bar($x – 1);

  }

}

function foo() {

  for ($idx = 0; $idx < 2; $idx++) {

    bar($idx);

    $x = strlen("abc");

  }

}

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

foo();

$xhprof_data = xhprof_disable();

//

// Saving the XHProf run

// using the default implementation of iXHProfRuns.

//

include_once "xhprof_lib/utils/xhprof_lib.php";

include_once "xhprof_lib/utils/xhprof_runs.php";

$xhprof_runs = new XHProfRuns_Default();

// Save the run under a namespace "xhprof_foo".

//

// **NOTE**:

// By default save_run() will automatically generate a unique

// run id for you. [You can override that behavior by passing

// a run id (optional arg) to the save_run() method instead.]

//

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");

echo "—————\n".

     "Assuming you have set up the http based UI for \n".

     "XHProf at some address, you can view run at \n".

     "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".

     "—————\n";

?>

 

我们可以持久化记录的数据,数据以文件的形式保存在指定的目录,如下图:

image 有了这个工具,我们可以根据其提供的数据,与相应的通知接口整合,在程序运行出现问题时,及时的发送通知信息。

 

PHP性能监控,还有两个可用的工具,一个是 XDebug,另外一个是 ZendServer,我会在接下来继续进行介绍。

Technorati 标签: ,,

参考文档:

1、Speed UP your php with xhprof

2、xhprof document

Categories: WebTech Tags: , , , ,