Category

uncategorized(12)love(114)english(17)life(233)code(174)music(51)design(46)dede(59)yaya(23)

WordPress插件post-to-qzone-v0.42009-06-01 22:39:35comments ( 14 )

支持在使用xmlrpc发布blog的同时将文章同步发布到Qzone空间以及支持邮箱发布的BSP。
需要保存设置你的邮箱帐号和密码.
下载地址:http://qzone.googlecode.com/files/wp-qzone.0.4.php

@vimac修改的版本
http://vifix.cn/blog/wp-content/uploads/2009/06/wp-qzone04-mod.zip

WordPress插件post-to-qzone-v0.32009-05-30 22:43:22comments ( 5 )

1:可以发布到别邮箱,或者是支持邮箱发布的BSP,比如微软的Live Space。
2:增加是否发布成功标记。

Post2Qzone Screensnap

下载地址:http://qzone.googlecode.com/files/wp-qzone.php

相关介绍:http://liguangming.com/view/725
相关阅读:xiaoding的文章:Wordpress 与 Qzone 和 Live Space 同步

php通过curl多线程抓取网站内容2009-05-25 17:10:58comments ( 4 )

自php5.0开始,增加了如下是curl支持多线程的函数
curl_multi_init - initialize a new cURL multi handle. 
             It will return the cURL handle on success and FALSE on error.
curl_multi_add_handle — Add a cURL handle to a cURL multi handle.
curl_multi_exec — Runs all the curl handle in the cURL multi handle in parallel.
curl_multi_remove_handle — Removes a cURL handle from a cURL multi handle.
curl_multi_close — close the cURL multi handle.
弄了个简单的例子
class MultiHttpRequest{
	public $urls = array();
	public $curlopt_header = 1;
	public $method = "GET";

	function __construct($urls = false)
	{
		$this->urls = $urls;
	}

	function set_urls($urls)
	{
		$this->urls = $urls;
		return $this;
	}

	function is_return_header($b)
	{
		$this->curlopt_header = $b;
		return $this;
	}

	function set_method($m)
	{
		$this->medthod = strtoupper($m);
		return $this;
	}

	function start()
	{
		if(!is_array($this->urls) or count($this->urls) == 0){
			return false;
		}

		$curl = $text = array();

		$handle = curl_multi_init();

		foreach($this->urls as $k=>$v){
			$curl[$k] = $this->add_handle($handle, $v);
		}

		$this->exec_handle($handle);

		foreach($this->urls as $k=>$v){
			$text[$k] =  curl_multi_getcontent ($curl[$k]);
			echo $text[$k], "\n\n";
			curl_multi_remove_handle($handle, $curl[$k]);
		}

		curl_multi_close($handle);
	}


	private function add_handle(&$handle, $url)
	{
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_HEADER, $this->curlopt_header);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		curl_multi_add_handle($handle, $curl);
		return $curl;
	}

	private function exec_handle(&$handle)
	{
		$flag = null;
		do {
			curl_multi_exec($handle, $flag);
		} while ($flag > 0);
	}
}

$urls = array("http://baidu.com", "http://dzone.com", "http://www.g.cn");
$mp = new MultiHttpRequest($urls);
$mp->start();

Python2.5的SMTPAuthenticationError(334, 'UGFzc3dvcmQ6')2009-05-20 22:22:44comments ( 0 )

前段时间突然发现blog的post to qzone的插件不能使用了,返回的异常如下:
File "C:\Python25\lib\smtplib.py", line 591, in login
    raise SMTPAuthenticationError(code, resp)
SMTPAuthenticationError: (334, 'UGFzc3dvcmQ6')
通过抓包发现stmtp.qq.com
connect: ('smtp.qq.com', 25)
connect: ('58.251.150.237', 25)
reply: '220 Esmtp QQ Mail Server\r\n'
reply: retcode (220); Msg: Esmtp QQ Mail Server
connect: Esmtp QQ Mail Server
send: 'ehlo [192.168.1.177]\r\n'
reply: '250-esmtp.qq.com\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-SIZE 52428800\r\n'
reply: '250-AUTH LOGIN\r\n'
reply: '250-AUTH=LOGIN\r\n'
reply: '250 8BITMIME\r\n'
reply: retcode (250); Msg: esmtp.qq.com
PIPELINING
SIZE 52428800
AUTH LOGIN
AUTH=LOGIN
8BITMIME
send: 'AUTH LOGIN **********\r\n'
reply: '334 VXNlcm5hbWU6\r\n'
reply: retcode (334); Msg: VXNlcm5hbWU6
send: '*****\r\n'
reply: '334 UGFzc3dvcmQ6\r\n'
reply: retcode (334); Msg: UGFzc3dvcmQ6
发现邮件服务器返回的是 AUTH=LOGIN,多了一个'=',打开smtplib.py找到
elif authmethod == AUTH_LOGIN:
    (code, resp) = self.docmd("AUTH",
        "%s %s" % (AUTH_LOGIN, encode_base64(user, eol="")))
    if code != 334:
        raise SMTPAuthenticationError(code, resp)
    (code, resp) = self.docmd(encode_base64(password, eol=""))
修改为:
elif authmethod == AUTH_LOGIN:
    # Three stage: 1. sent "AUTH LOGIN"; 2. sent "user name"; 3. sent "password".
    (code, resp) = self.docmd("AUTH", AUTH_LOGIN)
    if code != 334:
        raise SMTPAuthenticationError(code, resp)
    (code, resp) = self.docmd(encode_base64(user, eol=""))
    if code != 334:
        raise SMTPAuthenticationError(code, resp)
    (code, resp) = self.docmd(encode_base64(password, eol=""))
找到
if method in authlist:
    authmethod = method
    break
修改为:
if method in authlist or ('=%s' % method) in authlist:
    authmethod = method
    break
最好是将此文件另存到你的项目文件里调用,这样就不需要换个环境就先要修改smtplib.py.

蛋糕2009-05-11 21:11:54comments ( 11 )

上周六赵处男生日,小白在好利来定的蛋糕:
生日蛋糕

四季之歌-花水木2009-05-08 16:52:01comments ( 2 )

花水木在日本是一种常见的行道树,花水木这是直接翻译的名字他的学名是Cornus florida,中文译名叫大花四照花,是一种落叶性的大型乔木,秋季开花,花型4个花办对生,有红色和白色二种花色。象征着人们不变的情谊。
来自Rain Book(レインブック)的专辑《花水木
花水木.jpg
包括12首歌曲,收录了在这张专辑发售前的四张以四季为主题的单曲:千本桜,空の华,秋桜~届かない手纸~,雪あかり。
封面清新,我是被专辑的封面吸引的,听过后音乐更漂亮,清新自然,婉转动听。
Rain Book(レインブック),是由山本容子和前泽ヒデノリ组成的日本二人组合。

Windows media player 80070057 错误2009-05-08 13:06:11comments ( 0 )

在网页中使用windows media player控件的时候,如果页面的location.href的长度大于1023,不能播放文件,会报如下错误:
Original Error Code :
	80070057	
Original Error Message:
	One or more arguments are invalid
在微软的错误信息帮助Windows Media Player Error Message Help里,并没有列出url长度引起的问题,微软说:"Maximum URL length is 2,083 characters in Internet Explorer"

附上各浏览器地址栏最大长度
1. Firefox 3.03 :最长字长4098
2. IE7.0: 2083
3. Opera 9.60: 4098 
4. google chrome 0.2.149.30: 4098, 与Firefox3.0.3,Opera 9.60相同

爬山2009-05-03 18:20:49comments ( 2 )

六点多起床,不知道怎么没睡好,昨天打算今天去爬山。洗脸刷牙,打开电脑,又核对了下资料,决定去凤凰岭了。昨天那谁谁谁说去百望山来着,结果临时有事,只好一个人去了。吃了早点,坐了两个小时的公交车,到了,似乎山上的龙泉寺在做什么法式,从进景区大门到龙泉寺,成群结队的善男信女们顶着烈日,三步一跪,在山路上慢慢挪动。似乎为释迦摩尼的庆生。旁边设置了警戒线,交通也管制了,有不少人在维持秩序,大概是为了防止发生意外。
照片_050309_001.jpg
看了下指示牌直接往上走,太阳已经很强烈了,没怕多少就开始汗流浃背。当下应该是枯水期,溪流都是光秃秃的石头。
照片_050309_004.jpg
刚开始整座山远看上去都是光秃秃的石头,心中难免失望,等到了山上,发现基本都是林荫小路,就是松树太小了,好像没种植几年吧,稀稀落落的。还有不少桃树,树枝上不少拇指大的绿色的桃子。
照片_050309_003.jpg
山中一直萦绕着一股香味,不知道什么那种花香,后来发现原来是槐花的香味,还能听到蜜蜂的嗡嗡声,只是看不到踪影。回来时又看到卖蜂蜜的。

不过印象最深的就是垃圾桶,因为我前面一个小孩子不停的在重复走过多少个垃圾桶了,原来每个上面都边上数字,等过了三百多个垃圾桶,懵然发现一条“欢迎你再来”的牌子。怎么这么点路,后来问下别人才知道跑到南线景区了,还有中线,和北线,快十二点了,肚子也饿了。看到在山脚下不少卖农家小吃的,野菜团子(像包子却没褶皱),野菜饺子。吃起来不错,也不贵。随后继续爬完了中线,北线。


鱼死 2009-05-02 00:40:31comments ( 0 )

早上起床的时候,发现我的金鱼死了一条,也可能是昨天死掉的,只是我今天才发现。

记忆2009-05-01 01:16:54comments ( 1 )

说吧,记忆
我开始看书,开始读纳博科夫这个老贵族的回忆录《说吧,记忆》,只是感觉自己不在状态,有点陌生却带点似曾相识的感觉。或许现在随便一本书对我来说都一样,打发时间。我反复想这对我来说意味着什么,我在拿过去让我心安理得的习惯来和现在这漫长的无聊的时间较量,就像一只秋风秋雨中的芦苇试图站稳脚步,那么无助。那情形仿佛让我想到小时候在野外迷了路,天已经黑了,远处是星星点点的灯火,却怎么也找不到回家的路,难过的快要哭出声来了。最后好像是月亮出来,我顺着铺满月光的小路终于回到了家。而现在呢,我一直处于迷路之中,似乎这么多年来一直在做梦,不是属于我的梦,那梦里的生活是别人的,我无助的看着他们走来走去,而自己难过的即便是呼吸也那么困难,似乎是在水里,或者是类似的流动的液体里,我挣扎的游啊游,却看不到岸。救救我,就是喊不出声音来。后来从一个空间瞬移到另一个空间,醒来了,在短暂且漫长的黑夜里等着黎明的到来,等着阳光从窗户的缝隙里挤进来,摆着一副胜利者的姿态傲慢的落在凌乱的桌面上。

昨晚从公司回来时下起了零星的小雨,这段时间不定期的在下雨,是的,夏天来了,裸露的皮肤,那些隔年的放在衣柜底部虽然熨烫却不能完全消除皱纹的裙摆,又出现在拥挤的地铁里,商场里,电梯里,街道两边的小径上,所有你的目光能触及到的地方,当然,如果你想象力丰富,你能看到的地方也会够远。然而最终的结果依旧是那么索然无味,并不能带来实质上的改变。就像小时候不小心把杯子打破了,在惊慌失措中努力试着让自己镇定下来,对自己说着一切都是幻觉,等睁开眼睛的时候被自己会自己动复原的,然而那杯子依旧是破碎的,一片一片的,那么伤心。现在不应该回忆这些琐事的时候了,是的,这是个需要狂欢的季节,写不下去了,还是睡觉吧......

1 2 3 4 5 6 7 8 9