归档 2010

最后更新于 .

最近心情不错,所以就卖力的为Vim多更新几篇吧~
写在前面:

    最近渐渐发现对Vim的强大有了更新的认识,以前Vim无非只是为了满足打字如飞的需求,然后是方便的写程序,最后是干什么都想在Vim里面。
    其实到了最后一步,Vim本身的概念已经被淡化了,他开始代表一个终端,或者叫做平台,一个你和外界交互的平台--不管是用来看《糗事百科》(参看本博插件),还是用来写twitter,或是用来收发邮件,Vim本身一直在履行一个平台的职责,而它与各种脚本语言的完美集成帮助他能够更好的完成与外界的交互。
    但是话说回来,这是有一个渐进的过程的。
    其实我并不推荐初学Vim就想把Vim打造的跟VS一样,那样你还不如去用VS。Vim最核心的理念是,你要用键盘,而不是鼠标。它让你打字如飞,让你效率成几倍的提高,这才是他最初始的功能。
    而之后的功能,实际上是Vimer们对Vim不断的要求而制作的。
    为什么需要那些功能呢?因为对Vim的依赖,最终你会依赖上这个编辑器,因为他几乎能做一切你想做的事情,是的,你可以写插件在Vim里面看邮件,可以写插件用Vim写twitter,甚至我看过Vim的像素播放器!
    OK,随便说几句,可能不一定对,但是只是基于我自己用Vim的经验而已。


好啦,进入正题,介绍一下这个用来写twitter的Vim插件-TwitVim
http ...

最后更新于 .

今天在进行CGI外网部署的时候,出现一个很奇怪的问题。
先说明一下背景:
在webserver上的一个CGI-A会通过libcurl来访问另一个webserver上的CGI-B,并将调用的结果返回给前台。
问题的表现:
前台看到是CGI-A超时,抓包发现在调用CGI-B的时候,http请求正常返回,但是时延达到1s左右。
但是当在浏览器直接输入CGI-B的链接的时候,就在40ms之内即可返回。

具体抓包如下:
命令:

sudo tcpdump -s 0 -nX host [ip] -i eth1 -w data

libcurl调用CGI-B:

http://www.vimer.cn/wp-content/uploads/2010/09/data_err

浏览器直接访问CGI-B:

http://www.vimer.cn/wp-content/uploads/2010/09/data_suc

在wireshark中仔细的对比了请求包,发现只有两个地方不同:

libcurl调用CGI-B:

1

浏览器直接访问CGI-B:

2

但是当时怎么也没有想到居然真的就出在了gzip的问题上。

后来总监过来看了一眼,注意,就一眼!(果然姜还是老的辣啊),就说 ...

最后更新于 .

好吧,我承认我又无聊了---说白了就是在终端Vim中列出所有的256颜色,用来供配色方案选择。
废话不多说,先上截图如下:

1

哈哈,感觉还是不错吧,这样就可以慢慢选择啦。
下载链接:http://www.vim.org/scripts/script.php?script_id=3235
安装要求:

1.vim编译了python支持
2.机器上安装了python

调用方式:
把showcolor.vim放到plugin目录下,执行:

:call ShowColorTerm()

当然,上面这个命令是只准在终端下执行的,在gui下执行会报如下错误:

2

另外,插件也实现了gui下的颜色显示,截图如下:

3

调用方式:

:call ShowColor(0x00,0xFF,15)

三个参数分别是:起始颜色,终止颜色,每行颜色个数。
有3个参数的原因是,因为全部列出所有的配色是不可能的(即使用python,vim也会卡死),所以必须指定范围。

列出代码如下:

function! ShowColor(beginColor,endColor ...

最后更新于 .

最近因为python升级到了2.7导致mod_python不能用,所以自己电脑上的apache一直启动不起来,趁着周末有时间,抓紧搞一下。 在网上搜了一下,发现mod_python已经停止维护了,而替代他的是mod_wsgi,下载路径如下: http://code.google.com/p/modwsgi/downloads/list 挑选For 2.7的版本下载,改名成mod_wsgi.so,然后扔到apache的modules目录就可以了。 在apache的conf文件中加入:

LoadModule wsgi_module modules/mod_wsgi.so

OK,但是我们真正的安装才刚刚开始。 刚才说过由于python升级到2.7,之前所有的库都删掉了,所以不得不重新安装,需要准备好如下库。

最后更新于 .

相信沉迷于Vim(gVim)的朋友,都或多或少纠结于Vim(gVim)的配色,别人配置的永远感觉不完美,像我之前就用过desertex,wombat,等等配色,不过终究还是感觉不满意,总想自己修改一下,但自己配置起来又麻烦。。
之前在博客中有介绍过将gVim配色转化成终端配色的插件:
强烈推荐–将GUI配色转化为终端配色的VIM插件–gui2term.py

解决了gvim和vim配色一致的问题,这次介绍的插件colorsel.vim则是解决了可视化的选择配色,让调整配色变得更简单。
下载链接:http://www.vim.org/scripts/script.php?script_id=927

先上截图如下:

1

简单看一下介绍应该就能明白:
RGBHSV的数值是可配的,通过j、k实现选择,通过h、l、w、b来实现数值调整。
x可以将背景色分成上下两屏,进行对比,如图:

2

X可以切换调整前景色、背景色,
/可以输入自己定义的前景字符串,
f可以调整字符串的格式(正常、斜体、粗体、粗斜体)
如图:

3

y可以copy调整好的RGB值,
p可以粘贴从别处copy的RGB值 ...

最后更新于 .

最近在修改一个代理机server,增加url rewrite的功能,由于其单机的访问量很高,20000/s左右,对性能要求很高,所以在做url映射的时候,纠结在用map还是hashmap存储映射的问题上。

于是做了一个简单的测试,对与map和hashmap(我们用unordered_map),循环10000*24次,map大小是12(因为目前预估会配置的url个数是12左右)。
部分代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include "markupstl.h"
#include <tr1/unordered_map>
#include <sys/time.h>
using namespace std;
#define hashmap std::tr1::unordered_map
#define CONFIG_FILE_PATH "./urlconfig.xml"
map<string,string> g_mapUrl;
hashmap<string,string> g_hashmapUrl;
struct timeval ...

最后更新于 .

记得刚入职的时候,那时候什么都不懂,组长让我跑个迁移程序,还没跑完就关终端走人了,结果可想而知,那是第一次知道守护进程的概念。
当时后来是加了nohup参数解决的,

nohup ./program &


但是总是强迫别人用nohup来启动自己的程序毕竟不是办法,所以还是要把自己的进程变成守护进程才行。

C/C++的版本就不说了,这里有篇文章写的很清楚。
http://colding.bokee.com/5277082.html

这里主要介绍一下在网上无意发现的一个国外哥们的写的python版本:
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
顺便吐个槽,这哥们用的Vim配色明显是Wombat~~
代码如下(对私有函数名加了_前缀,便于理解,并加了一定的注释):

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os, time, atexit
from signal import SIGTERM
class Daemon:
    """
    A generic ...

最后更新于 .

很久没上vim官网,今天上去一看Vim7.3居然发布啦,看日期是8月16日发布的,看来还是晚了两天呀~~
马上下载下来尝鲜啦,担心有些朋友找不到,故放出下载链接如下:

ftp://ftp.vim.org/pub/vim/pc/gvim73.exe

界面没什么变化(都是自己配的色,肯定没变化嘛。。),看一下这个默认的编译支持如何:

1

看到了吗,看到了吗,Vim居然默认将python语言支持编译进去了,而且最兴奋的居然还支持python3!
不过兴奋之余,我发现了一个很严重的问题。。。那就是我的pyflakes和qiushibaike.vim都不能用了。。。Vim7.3默认要求的python版本居然是2.7,太潮了吧!
好吧,卸掉我心爱的python 2.6,去下载个python 2.7,结果再次感慨到gfw的伟大,官网的download页面居然被和谐了。。所幸找到ftp的下载地址:

http://www.python.org/ftp/python/2.7/python-2.7.msi

如果直接在浏览器下载不了 ...

最后更新于 .

经常在linux下工作的朋友一定经常需要用tcpdump抓包分析,不过有时候肉眼看起来实在是太累,不经意居然发现了这样一个好工具:
wireshark,下载页:http://www.wireshark.org/download.html

简单用他来演示一下tcp协议的整个过程:
先在开发机上开始抓包:

tcpdump -ieth1 host 172.27.193.234 -w tcpbao

调用一个发送tcp请求的小程序,可以抓到包---tcpbao.

用wireshark载入之后,会看到如下界面:

1

可见,整个过程完整的展现了TCP协议中,建立链接->发送数据->断掉链接的过程。
读者可以对照本博的:
TCP协议状态详解

http://bigwhite.blogbus.com/logs/11582229.html
来看。

简单说一下:

1~3个报文是tcp三次握手建立链接的过程
4~7个报文是客户端发送实体数据的过程
8~10个报文是客户端主动断掉链接的过程(这里和标准的关闭链接貌似有点出入,标准TCP协议貌似还要多返回一个ACK报文)

其实这个软件还支持直接抓包来查看报文的,详细可以看一下如下的在线文档,在此不再赘述。
http://man ...

最后更新于 .

这篇文章的东西可能比较杂,因为每个特性都不那么大,所以就揉在一起,倒是显得庞大了许多。

一.svn命令行在windows下面的安装使用
一直以来都使用svn管理源码,但是在windows下一直使用TortoiseSVN的界面进行管理,但是对于我这种键盘控(vim后遗症)来说,简直是无法忍受的!
搜啊搜啊搜啊,终于发现了-----CollabNetSubversion
下载页面:http://www.collab.net/downloads/subversion/
如果象我一样只需要命令行的话,下载CollabNet Subversion Command-Line Client v1.6.12 (for Windows)即可,网站需要先注册一下。
基本上安装完了,svn up、svn add就可以用了,但是svn ci的时候,你会发现如下提示:

svn: Commit failed (details follow):
svn: Could not use external editor to fetch log ...

每月存档

去年

2009

明年

2011