2010年一月

eclipse下的vim插件vimPlugin及破解方法

vimPlugin是eclipse下的vim插件,很好用

下载地址:http://www.viplugin.com/viplugin/

破解方法:在提示的路径(一般为eclipse或workspace路径)新建一个名为viPlugin.license的文件,内容为Xq@a*4

本文地址:http://www.yaronspace.cn/blog/index.php/archives/415



我的七个建议

作者Joel Spolsky

[编者按]由于Joel Spolsky的双重身份(昔日耶鲁大学计算机系学长,今日Fog Creek软件公司的CEO),所以听听他的建议,对于当今无数困扰于就业压力的中国高校计算机专业学子来说,是大有裨益的。你们会发现,大多数建议,都在强调软实力的价值。本文转载自《软件随想录》(作者:Joel Spolsky ,译者: 阮一峰,200912月出版),感谢北京图灵文化发展有限公司的支持。

如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以自己喜欢的事谋生。大多数人没有这么幸运。你认为理所当然的观念热爱你的工作,其实是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得不去上班。你工作的目的是为了攒下钱去干那些自己真正喜欢干的事,但是前提是你得等到65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,你没有老到走不动,你还有体力去干那些事情;条件三,你喜欢的事情不需要用到脆弱的膝盖、昏花的视力,也不要求你走上一里地不喘气,等等。 更多 >



php安装模式mod_php和Fastcgi的选择与对比

安装php又面临到了模式的选择,以前都是选择mod_php模式,因为这样安装比较方便哈,今天突然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面的讨论,现在发出来留一个记号,以便进一步研究:

第一篇:php在apache中安装模式的区别:fastcgi和mod_php

说到fastCgi就不得不说Cgi。
CGI英文全称是 Common Gateway Interface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写, 它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。

CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交。CGI方式的缺点也越来越突出。因 为HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工作。这就出现了FastCGI。

百度百科关于FastCGI

2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
3. FastCGI 支持 C/C++,Ruby, Perl,Tcl,Java,Python 等程序语言。
4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

mod_php就是把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言,不需要每一个请求就启动PHP解释器来解释PHP。

第二篇:mod_php or fastcgi性能比较与选择

用php肯定少了不这个问题的选择,cgi自然就不必说了,但是mod_php和fastcgi的争论确还是比较多的。
找了一些资料,晾在这,可供参考。
首先,性能应该是大家最关心的问题了,除了mod_php和fastcgi 的 benchmark,还有一些服务器差别的测试,如apache vs lighthttpd

1 mod_php, LightTPD, FastCGI – What’s fastest?
这个bechmark的结果是 Apache(prefork)+Fastcgi+php的性能是最好的。超过了apache+mod_php,甚至也超过了 lightty+fastcgi+php。当然,这个结果得出值相差都很小。另外,以上说的几个结果都使用了APC加速,使用APC后性能提高1倍以上。

2 php4-mod-vs-cgi
这个bechmark是在php4的环境下完成的。其summary.txt的内容如下。

————————

PHP4 module, very simple script (phpinfo.php): requests/s
plain 130.04
+turckcache 129.42
+turckcache+zend-optimizer 125.50

PHP4 module, very complex script (insurance application): requests/s
plain 1.84
+turckcache 6.23
+turckcache+zend-optimizer 5.58
+optimizer 1.58

PHP4 CGI, very simple script (phpinfo.php): requests/s
plain 22.69
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 21.23

PHP4 CGI, very complex script (insurance application): requests/s
plain 2.00
+turckcache n/a*
+turckcache+zend-optimizer n/a*
+optimizer 1.72

* = turkcache doesn’t support caching of the PHP scripts in CGI mode

上面的结果我觉得需要关注的是无cache的情况,因为使用mod_php或fastcgi主要还是用来生成动态页面。前面的cache有更好的工具来实现,如squid。所以,这个结果也是fastcgi胜出,相差也不大。

3 http://buytaert.net/drupal-performance?page=1
这个文章的结果和上面两个刚好相反。使用fastcgi代替mod_php后,”When switching from

to

we observe a 63% slowdown for anonymous visitors, and a 18% slowdown for authenticated visitors.”以下是图表

另外,benchmark中也做了和lightty的比较,如下图:

这个文章的结论是Apache+mod_php性能好于Apache+fastcgi。另外,Apache+mod_php略好于lightty+fastcgi。

4 最后看看 fastcgi官方自己怎么说的吧
Of course, the answer is that it depends upon the application. A more complete answer is that FastCGI often wins by a significant margin, and seldom loses by very much.

5 结论是,还是根据自己的应用测一下吧….

最后,个人观点
如果mod_php和fastcgi的性能相差不是很大的话,还是倾向于fastcgi的,这种方式毕竟更灵活、安全和简单。
1 使用fastcgi,你的web server 可以比较简单的切换,可以测试不同的服务器,Apache,lightty,ngix 等等,不需要有代码的修改
2 如果想换脚本的实现,如不用php,而是改成perl,python之类的,web服务器也不需要任何的改动
3 web server和fastcgi可以用不同的帐号运行,带来了一定的安全隔离
4 只在Apache中编个mod_fastcgi可以说是简单多了,把mod_php编进apache时,出问题时很难定位是php的问题还是apache的问题,我就见过这样的core,函数调用几十层,一点头绪都没有



利用javascript窗口或页面之间异步传值的实现

背景:传统的页面间传值是通过session实现的,这样页面间的传值必须通过服务器端或者通过cookie也可在browser端实现,不过明显是同步。

今天遇到一个新的需求:当用户从一个页面点击一个新的窗口,操作完成时,当新的窗口关闭时,需要在原有的页面上异步地更新一部分相关内容,从网上找了相关资料,最终找到了解决办法,分享之。

有javascript两种解决办法:

1,使用window.showModalDialog()来打开一个新的窗口,而该函数有个返回值,当窗口关闭时可以获得该返回值。

比如 var rtnValue = window.showModalDialog(“test.html”);

可以在test.html中通过<script>window.returnValue = “this is return value.”;来设置窗口的返回值

这样在结合javascript中的相关函数,即可实现需求。

2,使用window.open()来打开一个新的个窗口,在新的窗口里可以通过window.opener.document来引用原有的窗口的文档内容,进而进行修改。

例如代码:window.opener.document.getElementById(“txt0″).value=”new_value”;window.close();

本文地址: http://www.yaronspace.cn/blog/index.php/archives/403



使用WordPress内置的缓存机制

WordPress可以使用插件缓存,但其实在WordPress内部也有一套缓存机制,你可以使用很多函数轻松实现缓存。 为了让大家认识和了解这个功能,我使用一个简单的例子,缓存一个feed并在前端显示。

最先的缓存方案是WordPress 2.3中基于文件的缓存。该缓存是可选的,并需配置一些参数。 可通过下面的常量激活缓存: define ( ‘ENABLE_CACHE’, true); 更多 >



i18n的意思

I18N 是 internationalization 的缩写形式,意即在 i 和 n 之间有 18 个字母,本意是指软件的“国际化”

原来是这个意思呀,呵呵。

http://www.yaronspace.cn/blog/index.php/archives/397



defined() isset()和function_exists()的用法

defined()判断一个常量是否定义

isset()判断一个变量是否定义

function_exists判断一个函数是否定义

file_exists判断一个文件是否存在



大数据量,海量数据 处理方法总结 转自兵马俑bbs

发信人: phylips (星星||一年磨十剑), 信区: Algorithm
标  题: 大数据量,海量数据 处理方法总结
发信站: 兵马俑BBS (Thu Nov 26 16:32:38 2009), 本站(bbs.xjtu.edu.cn)
最近有点忙,稍微空闲下来,发篇总结贴。

大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。

下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。

1.Bloom filter

适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

基本原理及要点:
对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存 在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简 单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。 更多 >



关于php优化的好文

A HOWTO on Optimizing PHP

PHP is a very fast programming language, but there is more to optimizing PHP than just speed of code execution.

In this chapter, we explain why optimizing PHP involves many factors which are not code related, and why tuning PHP requires an understanding of how PHP performs in relation to all the other subsystems on your server, and then identifying bottlenecks caused by these subsystems and fixing them. We also cover how to tune and optimize your PHP scripts so they run even faster.

Achieving High Performance

When we talk about good performance, we are not talking about how fast your PHP scripts will run. Performance is a set of tradeoffs between speed versus accuracy versus scalability. An example of speed versus accuracy is your scripts might be tuned to run fast with caching, but the data will tend to grow stale and be less accurate. For an example of speed versus scalability you could write a script that runs fast by loading everything into memory, or write a more scalable one that only loads data in chunks so that it does not exhaust application memory (Updated 30 Oct 2009 from speed vs scalability to speed vs accuracy vs scalability).

In the example below, A.php is a sprinter that can run fast, and B.php is a marathon runner than can jog forever at the nearly the same speed. For light loads, A.php is substantially faster, but as the web traffic increases, the performance of B.php only drops a little bit while A.php just runs out of steam.

http://phplens.com/lens/php-book/optimizing-debugging-php.php 具体请参看



比较三款免费的PHP加速器:APC vs eAccelerator vs XCache

一、PHP加速器介绍

PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提高了不少。

Apache中使用mod_php的请求、响应执行流程:

1、Apache接收请求。
2、Apache传递请求给mod_php。
3、mod_php定位磁盘文件,并加载到内存中。
4、mod_php编译源代码成为opcode树。
5、mod_php执行opcode树。 更多 >