日光时间

Mar 14, 2011 | No Comments

又换时间了,iPhone不给力啊!时间又错了!

长草了,来除草

Jan 30, 2011 | One Comment

无数个spam。

美景

May 29, 2010 | No Comments

岸边

[flickr pid="4633565871" size="medium"]

夜幕低垂

[flickr pid="4633563329" size="medium"]

斗艳

[flickr pid="4613757479" size="medium"]

insanely great, snow

Dec 26, 2009 | 2 Comments

加拿大的冬天,一向被大雪覆盖。地面早在十一月已被大雪覆盖。夏洛特敦的冬天与加拿大的他处并无不同,阴冷多云,白雪纷飞。但大约是因为暖流在旁掠过,气温并不低于内陆省份阿尔伯特、安大略或魁北克。在王子岛上,冬雪一直到四月才结束。

两年在岛上,过着退休般的日子。今天学分已足、工作也告一段落,是时候离开这个地方了。

Charlottetown Sunset

Jul 9, 2009 | One Comment

[flashvideo file=wp-content/uploads/2009/07/Sunset-900kbps.mp4 /]

brackley beach

Jun 28, 2009 | No Comments

[flashvideo file=wp-content/uploads/2009/06/Brackley-Beach-2009-06-28.flv /]

Michael Jackson死了

Jun 27, 2009 | No Comments

一个时代的终结。

Jun 16, 2009 | No Comments

生活变得很规律,忙得很。

春天的花

Mar 1, 2009 | One Comment

春天的确还没来,可脚步近了:雪少了,雨多了,温度升了。

冬天很漫长,但春天快来了。

Ragel状态机生成器

Dec 4, 2008 | One Comment

Ragel可以把正则表达式翻译成有限状态机(FA)的各种语言表示,包括C、C++、Objective-C、D、Java和Ruby。Regular Expression和FA的用途很广,可以用于协议分析、数据解析、词法分析、用户数据校验等。在Ragel的帮助下,写一个atoi的函数非常容易,而且比标准库提供的atoi函数性能要高。

/*
 * Convert a string to an integer.
 */

#include 
#include 
#include 

%%{
	machine atoi;
	write data;
}%%

long long atoi( char *str )
{
	char *p = str, *pe = str + strlen( str );
	int cs;
	long long val = 0;
	bool neg = false;

	%%{
		action see_neg {
			neg = true;
		}

		action add_digit {
			val = val * 10 + (fc - '0');
		}

		main :=
			( '-'@see_neg | '+' )? ( digit @add_digit )+
			'n';

		# Initialize and execute.
		write init;
		write exec;
	}%%

	if ( neg )
		val = -1 * val;

	if ( cs < atoi_first_final )
		fprintf( stderr, "atoi: there was an errorn" );

	return val;
};

#define BUFSIZE 1024

int main()
{
	char buf[BUFSIZE];
	while ( fgets( buf, sizeof(buf), stdin ) != 0 ) {
		long long value = atoi( buf );
		printf( "%lldn", value );
	}
	return 0;
}

Supported by Webinit Consulting