归档 2010年9月

最后更新于 .

今天在测试的时候发现一个很诡异的问题,语言描述不清楚,直接看代码吧。为了测试各种可能性,我写了两种类继承的代码如下:

#!/usr/bin/python
#-*- coding: UTF-8 -*-

import re
import sys
import os
import json
import simplejson

class Foo(object):
    _data = 1

    def __init__(self,data):
        self._data = data
    def ShowFoo(self):
        print 'Foo',self._data

class Bar(Foo):
    def __init__(self,data):
        super(Bar,self).__init__(data)
    def ShowBar(self):
        #会报错 ...

最后更新于 .

今天在翻unix网络编程的时候,无意中看到了使用匿名定义结构体/类定义数组的一段代码。

于是写了测试代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;

struct st
{
    int a;
    int b;
    char *p;
    int c;
}sts[]={
    {1,1,"hh",1},
    {2,2,"ff",2}
};

class CObj
{
    public:
        int a;
        string s;
        int b;

}objs[]={
    {1,"x",11},
    {2,"y",22}
};

int main(int argc, const ...

最后更新于 .

最近不少朋友反馈博客中的代码格式不适于阅读,非等宽字符等等问题,为此今晚特意试用了几款wordpress的代码高亮插件,包括SyHi,coolcode,wp-syntax,无奈发现SyHi根本用不了,coolcode不支持vim语法,只有wp-syntax能够满足要求。

因此以后的文章中出现代码均会以如下格式展示:

function! SetBaiKeBuffer()
let bkbuffloaded=bufloaded("baike")
if !bkbuffloaded
    execute "sp baike"
    execute "normal \Z"
else
    while 1
        execute "normal \<c-w>w"
        let currBuff=bufname("%")
        if currBuff == "baike"
            execute "normal \Z"
            break
        endif
    endwhile

endif
endfunction

另外,我也重新修正了几篇访问量比较高的博文,将里面的代码用这种最新方式来高亮,效果会比原来好很多。如果有朋友觉得之前的哪篇文章格式需要修正,也可以直接在这里留言,我将尽快处理。

-------------------------------------------分割线------------------------------------------

列表如下:

VIM-一键编译单个源文件

把VIM打造成一个真正的IDE ...

最后更新于 .

声明:
    本文谨代表本博作者个人观点,与腾讯公司官方无任何关系。

今天(2010年9月16日),腾讯社区开放平台正式上线,域名是:opensns.qq.com

主页

从页面上看,主要分了分享组件、喜欢组件、认证空间、应用接入等模块.
其中分享组件、喜欢组件、认证空间主要针对第三方网站合作;应用接入主要针对应用开发商。

我们主要看一下应用的接入流程。
首先点击导航栏的应用接入:

应用接入
点击创建应用后,进入开发者注册页,区分了公司和个人两种方式:

创建应用-公司2创建应用-个人  

公司和个人分别要求上传营业执照或身份证照片。

注册成功后,进入页面:

保存

我们来尝试创建一个应用:

创建

成功后,进入如下页面:

创建成功

我们来点击一下预览(apptest.qq.com是我自己开发的一个简单应用):

preview

可以看出,应用中列出了包括本人/机器人好友的相关信息。

之后,我们来看一下开放平台提供的调试工具,点击调试工具进入调试页面:

调试1

OpenAPI列出了开发者能够调用的API列表,包括:

user/info   主人信息
user/multi_info 批量获取好友信息
user/is_setuped 主人是否安装了应用
user/emotion ...

最后更新于 .

上一篇文章说道在用python的suds库的时候,发的中文总是乱码(windows下还总是encode失败,真是杯具),无奈产品经理又死活都要求是中文,今天研究了一天,总算是搞定了。 说一下定位的过程。

1.先拿一段php的soap代码来看:

<?php 
$client = new SoapClient("http://ws.sb.com/messageservice.asmx?wsdl",Array('trace'=>True)); 
// 参数转为数组形式传递 
$aryPara = array('sender' => 'dantezhu', 
    'receiver' => 'dantezhu', 
    'title' => 'OZ评论消息提醒', 
    'msgInfo' => 'sss', 
    'messageType'=>0); 
// 调用远程函数 
$ret = $client->SendRTX($aryPara); 
var_dump($ret); 
echo $client->__getLastRequest(); 
?>

这段代码是能够正确的发送请求的,通过__getLastRequest打出发送包,如下:

< ...

最后更新于 .

一.美化你的bash
每次在进入一个很长的目录的时候,光标都会变得很靠右,很丑陋:

1

今天同事给了一段配置:

export PS1="\[\e[36;1m\]\u\[\e[0m\]@\[\e[33;1m\]\h\[\e[0m\]:\[\e[31;1m\]\w\[\e[0m\]\n\$ "

写入.profile后,会变成如下的样子,效果不错,哈哈:

2

二.在python中使用soap -- suds
今天需要通过soap来给RTX的其他用户发消息,于是研究了一下python中的soap包。
先是发现了SOAPpy,包括Dive into Python都推荐了这个包,不过经过我的试用之后,发现打死都显示不了任何数据,于是我搜啊。。终于在某个不起眼的角落看到了这样一段话:

Unfortunately, at the moment, I don't think there is ...

最后更新于 .

因为下周要用php写项目,所以周末在家里重新看php的语法,看到三元描述符,突然想起来python是没有三元描述符的,印象中依稀记得有模拟的实现,于是上网上搜了一下。
(对应C语言的 X ? V1:V2)
找到一篇文章:http://blog.csdn.net/xiaoyin992/archive/2008/12/29/3635015.aspx
其中一种是:

(X and V1) or V2

正常情况下是不会有错误的,但是文章中也提到了,当V1=""时,就会有问题
比如

print (True and '') or 'V'
print (False and '') or 'V'

输出永远都是: V

完美的解决方案是在《python核心编程中提到的》:

V1 if X else V2

原文如下:

如果你来自 ...

最后更新于 .

出于种种原因,最近感觉还是在自己机器上装个linux写程序靠谱些,毕竟总是VPN到公司内网速度也太慢了。
本文最终实现了:

1.在windows下用virtualbox安装了ubuntu7.04命令行版
2.ubuntu能够与主机(即windows)共享网络
3.在windows下可以直接ssh到ubuntu上

遗留问题(详见文末):

1.ubuntu与主机共享文件夹失败
2.rz/sz命令安装失败

先截图如下(putty中的截图):

putty

OK,我们一步步来说:
一.VirtualBox安装
    1.到http://www.virtualbox.org/wiki/Downloads下载windows版本
    2.一路点击next,出现不兼容提示框,直接继续即可。
二.Ubuntu安装
    1.选择安装命令行的版本,安装即可
    2.设置root密码。ubuntu的root默认居然是不启用的,需要在启动的时候,按ESC进入recovery模式,会自动以root权限登录 ...

最后更新于 .

最近心情不错,所以就卖力的为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的问题上。

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

每日归档

上个月

2010年8月

下个月

2010年10月

归档