2009-03-06

算术

2008-12-29

Vim的一般模式

撤销:
u
上下左右:
hjkl
去到文件尾:
Shift + g
去到行尾:
$
去到行首:
0
整页翻页(f就是forword b就是backward)
ctrl-f ctrl-b
翻半页(d=down u=up)
ctrl-d ctlr-u
滚一行
ctrl-e ctrl-y

当前光标之前插入:
i
当前光标之后插入:
a
块缩进(比如:光标下的12行缩进一次)
12>1
退出命令行模式:
ESC

2008-12-25

Vim的插件

准备工作:
cd ~
mkdir .vim
cd .vim
mkdir doc
mkdir plugin
推荐插件一(taglist):
先在ubuntu的新立得包管理器中搜索ctags,把它装上。它是用来“build tag file indexes of source code definitions”,然后,按照这里提示的进行操作
:TlistOpen 打开标签窗口
:TlistClose 关闭标签窗口
:TlistToggle 切换打开和关闭状态
这里有更详细的文档
推荐插件二(matrix):
这里下载,然后放到plugin目录下,执行 :Matrix 就可以看到黑客帝国主题的屏保了。酷!
作者似乎是华裔。
推荐插件四(Calendar)
http://www.vim.org/scripts/script.php?script_id=52
:Calendar

推荐插件五(Template)

:NewTemplate php

Vim的命令行模式下常用操作

显示行数:
:set nu
去到某行:
:某
搜索:
:/^hello$/
搜索时,不区分大小写
:set ic
也就是
:set ignorecase
强大的g
对指定内容执行编辑器命令,比如:删除所有空白行用 :g/^$/d。这样,结合正则表达式,就很方便对文档进行许多自动化的操作。这里有更详细的描述
:g/^$/d
加密
:X
替换功能
去掉所有的行尾空格:
:%s/\s\+$//g
去掉所有行首空格:
:%s/^\s\+//g
去掉所有的空白行:
:%s/\(\s*\n\)\+/\r/
去掉所有的“//”注释:
:%s!\s*//.*!!
去掉所有的“/* */”注释:
:%s!\s*/\*\_.\{-}\*/\s*! !g
将多个空格替换为单个tab键
:%s/\s\+/\t/g
对多行进行单行注释:
: 30,45 s/^/#/
取消对多行进行单行注释:
: 30,45 s/^#//
隐藏菜单栏和工具栏:
:set go=
设置一个养眼的配色方案:
:colorscheme torte

Vim的配置

sudo vim /etc/vim/vimrc

"注释用双引号

"显示行号
set nu

"将tab键自动转换成4个空格
set tabstop=4
set shiftwidth=4
set expandtab

"不生成备份文件
set nobackup

"设置语法高亮
set syn="python"

"不产生临时文件
setlocal noswapfile

"设置自己喜欢的颜色
color torte


p.s.
编码问题
可以在vimrc中默认设为GBK,读取UTF8编码的文件时临时再该回来,最好是习惯用UTF8,这样可以免去很多麻烦。
set encoding=cp936
set termencoding=cp936
set fileencoding=cp936

这里有个讨论。

取消自动缩进:
rename * *.bak
都改掉名字就ok了。
目录:C:\Program Files\Vim\vim72\indent
这里有篇介绍。

2008-07-24

体验Knol

一早听说Google的Knol正式上线了,赶快进去体验一下。

在首页看了看推荐的词条,应该算是范例吧,不像维基的百科全书式,Knol像是百事通,比如有一条 “Featured Knols” 就叫 “How to Backpack”。我想,我可以写一篇叫“怎样灌水”。:) 从这一点看,有点明白“A unit of knowledge”的概念了。

Knol是基于作者的,比如:维基里页面的路径 http://en.wikipedia.org/wiki/knol 指向了“knol ”这个词条,而Knol里则可能是 http://knol.google.com/k/老徐/做饭/ 指向了老徐写的“做饭”这篇文章。那么,老徐就叫google在knol的签约专栏作家。作者可以发布广告来获取收益,这样一来Knol的流程就是:作者写作/评论 -> 向读者展示 -> Adsense广告展示 -> 作者和Google获得收益。

作者具有词条的所有权,可以拒绝他人的修改,这一点比较特别,不知道会不会引起抢注的行为。比如,我就创建一个“俯卧撑”的文章,让你们谁都不能改。:D 不过,由于Knol目前只能“搜索词条”不能"进入词条",不像维基百科有“Go”和“Search”两个按钮。你占据了“PHP”这个词条,我可以写个“关于PHP”的文章,在读者搜索“PHP”时依然会看到我的文章。

随便写点东西发布了一下,然后在IE里用未登录身份搜索词条,结果却找不到。但是在FF里用发布者的身份却可以找到该词条。似乎Google在说:“只有我们审核通过的东西才可以发布,否则只能自己看。”

总的来说,Knol更像是百度知道或新浪博客,不过推动作者写作的不是等级或排名的提升,而是广告收益的刺激。再加上作者间的协作、作者和读者的互动、以及系统内部的激励机制,共同作用来促使优秀内容的产生。这些内容经由Google的推荐,将更容易展现在用户的浏览器窗口中。

2008-04-08

cURL is Power

取回一个页面:
D:\curl>curl http://www.baidu.com
默认为http,所以scheme可以省略
D:\curl>curl www.baidu.com

取回一个页面并把它保存到文件里:
D:\curl>curl www.baidu.com > baidu.htm

查看服务器返回的头信息:
D:\curl>curl -I www.baidu.com
HTTP/1.1 200 OK
Date: Tue, 08 Apr 2008 03:14:19 GMT
Server: BWS/1.0
Content-Length: 3063
Content-Type: text/html
Cache-Control: private
Expires: Tue, 08 Apr 2008 03:14:19 GMT
Set-Cookie: BAIDUID=20CBF716BC8119675579A25769CAF417:FG=1; expires=Tue,
08-Apr-38 03:14:19 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "

服务器的头信息可以获得很多数据,比如说这里我们可以得到:百度的服务器叫:BWS 估计是Baidu Web Server的意思吧。今天是08 Apr 2008,百度设置cookie在08-Apr-38过期,也就是说,如果不关闭浏览器,百度会记住你30年。

访问https
curl https://www.google.com

使用http代理
curl --proxy example.con:1111 www.baidu.com
curl -x example.con:1111 www.baidu.com

使用socket代理
D:\curl>curl --socks5 example.com:1111 www.baidu.com

把自己伪装成IE
D:\curl>curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" www.baidu.com

伪装成Baiduspider
D:\curl>curl -A ”Baiduspider+(+http://www.baidu.com/search/spider.htm)“ www.baidu.com

POST数据
curl -d "username=zhangshun&password=wabjtam" www.baidu.com

设置Cookie
curl -b "__utma=123123;__utde=456456" www.google.cn

2005-11-17

编译PHP手册

php.net下回来的PHP中文手册(.chm)有些问题。比如索引页显示的是乱码;经常有打不开的页面等问题。这个问题可以通过自己编译来解决:

具体步骤:

1、下载由多个html文件组成的php手册。地址: http://cn.php.net/get/php_manual_zh.tar.gz/from/a/mirror

2、使用TortoiseCVS下载所需的脚本文件。
具体配置见下图:
也就是cvs -d :pserver:cvsread@cvs.php.net:/repository checkout phpdoc-zh”。



3、下载Microsoft HTML Help Workshop V1.3,并按照默认路径安装,也就是说安装到C:\Program Files\HTML Help Workshop目录下。参考下载地址: http://www4.skycn.com/soft/20667.html

4、创建工作目录,这里是:E:\phpchm。

5、把从CVS取回来的chm和zh文件夹拷贝进来。

6、把刚才下载的多个html文件形式的php手册文件夹拷贝进来。

7、将make_chm.bat从
E:\phpchm\chm文件夹里拷贝到工作目录下,这个时候目录形式如下图:


8、配置make_chm.bat。
set PHP_PATH=C:\php\php.exe
if "%1" == "" set PHP_HELP_COMPILE_LANG=zh

9、打开cmd,输入:E:\phpchm>make_chm.bat 。如果没有问题的话,在E:\phpchm\chm目录下就会生成新的php_manual_zh.chm文件。

这样,一个没有乱码,没有错链的CHM格式的PHP帮助文档就生成了,你可以随时运行cvs和bat来更新到最近发布的文档。

2005-11-16

PHP的Adodb.dll的使用方法

PHP中,使用ADODB做数据库开发时,adodb.dll的使用方法

1、系统环境
System Windows NT EPEENLRCBBOOUNP 5.1 build 2600
Build Date Sep 5 2005 15:50:13
Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\WINDOWS\php.ini
PHP API 20031224
PHP Extension 20041030
Zend Extension 220040412
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams php, file, http, ftp, compress.zlib
Registered Stream Socket Transports tcp, udp

2、下载adodb.dll
http://adodb.sourceforge.net/
Speed Up Your PHP Code with the ADOdb extension
下载Adodb-ext-503.zip provides up to 100% speedup by replacing parts of ADOdb with C code. ADOdb will auto-detect if this extension is installed and use it automatically. This extension is compatible with ADOdb 3.32 or later, and PHP 4.3.*, 4.4.*, 5.0.* and 5.1.*. Source code for all platforms and and binaries for Windows included.

27 July 2005, released 4.4 and 5.1 compatible versions.

29 Nov 2004, released thread-safe PHP4 and PHP5 compatible version, with fewer dll dependancies. PHP 5: tested on RedHat8 on WinXP. PHP 4.3.3: tested on RedHat8, WinXP and Win2000.

也就是说:这只是一个进行加速的扩展,并不是全部,和一般的PHP扩展是不同的(如:php_mysql.dll)。主要功能还是通过PHP代码来实现的。它是用C替换了部分功能,然后ADOdb会自动检测是否安装了这个扩展,并且自动地使用它。


3、加载adodb.dll
拷贝:下载解压后,拷贝D:/adodb-ext-503/adodb-503/php-win-5.0.3-5.0.4/adodb.dll 到 C:/php/ext
配置:extension=adodb.dll
重启:Apache 重启
查看:phpinfo()显示:
ADOdb
Info Extension requires ADOdb classes
Download http://adodb.sourceforge.net/
API Version 5.01
结论:加载成功!


4、查看模块方法
print_r(get_extension_funcs("adodb"));
显示:
Array
(
[0] => adodb_movenext
[1] => adodb_getall
)
该模块只有两个方法。如果没有包含adodb.inc.php就调用ADONewConnection方法,就会有 Call to undefined function: adonewconnection() 的错误报告。