libevent的timer定时器的用法

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <signal.h>
#include <event2/event.h>
#include <event2/event_struct.h>

struct self_tv{
struct event* timeout;
struct timeval tv;
int order;
};
void sigroute(int fd, short event, void* arg) {
struct self_tv* st = (struct self_tv*)arg;
printf(“%d wake up\n”, st->order);
st->tv.tv_sec = st->tv.tv_sec + 1;
evtimer_add(st->timeout, &(st->tv));
}

int main()
{
struct event_base* eb;
struct self_tv* st;
int i=1;
eb = event_base_new();
for(i=0;i<=1000;i++) {
st = (struct self_tv*)malloc(sizeof(struct self_tv));
st->tv.tv_sec = 5;
st->tv.tv_usec = 0;
st->order = i;
st->timeout = evtimer_new(eb, sigroute, st);
evtimer_add(st->timeout, &st->tv);
}
event_base_dispatch(eb);
return 0;
}

 

libevent的timer定时器在没有指定EV_PERSIST时是一次性事件。。。在回调里都需要再次evtimer_add一次。

ajax化页面

在写php页面的时候。尽量考虑到以后要用到ajax页面的情况。。比如默认是整个页面。多传一个参数。就给页面的部分内容。。这一点是很重要的。在前期如果考虑到的话。后期进行ajax改造的时候会轻松。且能保持url一致性。

这一周把微博的页面进行了ajax改造。。几点心得体会:

1. 写一个通用的ajax请求。传参数标识当前页面。需要拿到的页面。以及page

2. 对不同页面进行分组。。不在同一组的话。就需要返回更多的内容。

3. 页面改造成ajax了。。但是前进。后退。刷新也不能少。。通常有两点解决方法。一种是改变url hash。或一种是使用html5的pushState。不过目前主流的就是url hash了。。当然。我也用了这一种。用了jquery的history插件jquery-hashchange-plugin。兼容主流的浏览器了。。

 

如果要实现twitter的单页面应用。那就需要把所有页面改造成ajax了。。。

map_reduce

用php语言描述map_reduce如下:

<?php
function array_reduce($array, $callback, $initial=null)
{
$acc = $initial;
foreach($array as $a)
$acc = $callback($acc, $a);
return $acc;
}
?>

 

压力山大。。

眼瞅着就要结婚了。压力山大。话说为什么。怎一个钱字了得。。话说以我现在的年龄和收入。应该是那种随便玩。无忧无虑的才对。也许是老天爷的安排。每天都觉得对不起父母。。。心里的委屈谁又能明白。游戏已经开始。没有退场。没有退缩。希望这是一次正确的选择。。祝父母身体健康。。

新的开始

老婆要把工作辞了。。再找一家。。上家公司太扯了。。。还是早点离开的好。。老婆说。要调整一下心态。然后休息两个星期。找一家新的好的。周末不加班的公司去上班。。。希望老婆心情调整好。。快快好起来。。重新开始新的生活。。老公顶你个肺。。祝老婆好运。