perf patch related –每每看到xiao桑的代码都惊为天人

+typedef int (*key_cmp_fun)(struct kvm_event*, struct kvm_event*, int);
+struct kvm_event_key {
+	const char *name;
+	key_cmp_fun key;
+};
+
+static int trace_vcpu = -1;
+#define GET_EVENT_KEY(func, field)					\
+static u64 get_event_ ##func(struct kvm_event *event, int vcpu)		\
+{									\
+	if (vcpu == -1)							\
+		return event->total.field;				\
+									\
+	if (vcpu >= event->max_vcpu)					\
+		return 0;						\
+									\
+	return event->vcpu[vcpu].field;					\
+}
+
+#define COMPARE_EVENT_KEY(func, field)					\
+GET_EVENT_KEY(func, field)						\
+static int compare_kvm_event_ ## func(struct kvm_event *one,		\
+					struct kvm_event *two, int vcpu)\
+{									\
+	return get_event_ ##func(one, vcpu) >				\
+				get_event_ ##func(two, vcpu);		\
+}
+
+GET_EVENT_KEY(time, time);
+COMPARE_EVENT_KEY(count, stats.n);
+COMPARE_EVENT_KEY(mean, stats.mean);
+
+#define DEF_SORT_NAME_KEY(name, compare_key)				\
+	{ #name, compare_kvm_event_ ## compare_key }
+
+static struct kvm_event_key keys[] = {
+	DEF_SORT_NAME_KEY(sample, count),
+	DEF_SORT_NAME_KEY(time, mean),
+	{ NULL, NULL }
+};

回头分析

Goagent get “global name ‘SSLContext’ is not defined”

The thing is I updated my goagent from github with my ubuntu, however after that, every url begins with https through goagent is unaccessable.
Tracked log says: NameError: global name ‘SSLContext’ is not defined.
Check python installation package:
sudo apt-get install python-dev python-greenlet python-gevent python-vte python openssl python-crypto python-appindicator python-setuptools
Then: sudo easy_install -U gevent
Done!

Why is that?
gevent.ssl.SSLSocket.__init__()  tries to reference SSLContext which doesn’t exist in Python 2.7.8 yet, but it’s introduced in Python 2.7.9.
Bug fixed in the newest version of Python-gevent.
See here for more details.

怀北滑雪记

周末,翘课玩魔兽同学有幸去了怀柔滑雪场,分享下.

由于是第一次滑雪,去之前翘课做了大量的准备工作:带足了巧克力,红牛,黑卡一类功能性食物和饮料,并多带了一双袜子(网上教的,不知道为什么,带上先).上午九点半准时入场,拿兑换券领到一卡通,开始换取租赁的滑雪服,滑雪鞋和双板滑雪板.换好以后,一切收拾妥当,冲进雪里. 准备尝试第一个赛道: 儿童道! 长200米,坡度为6度.
被升降机带到坡顶, 我小心翼翼的握紧滑雪杖,回想起google告知的片段:下蹲,降低重心,握住金属杖用力向后撑,一下,两下,动了!加速了! 欣喜之余继续重复着新学的动作,随着速度越来越快,我突然想到一个问题: “怎么减速呢?!没学?!” 卧槽!这下囧了, 就在我思考的几秒钟内,速度越来愈快, 大脑一片空白,最后选择了一个比较帅的姿势跳起来向后转身,然后趴在雪坡上向前滑行三米的刹车方式,一时间有个工作人员冲过来,帮我捡起被KO后掉落的物品: 登山杖. 看见我一副很犀(chuo)利(bi)的样子,语重心长的对我说:”下次你要倒的时候记得提前跟被撞的人说一声.”
我默:”OK, 没问题!但是我应该怎么减速呢?”
“内八字就行”
“好,谢谢!” 我拿起手杖重新排队进入升降机.
第二次进入儿童道, 告诉自己:感受一下,雪. 下蹲,走你! 这次比第一次更加小心, 加速,内八字, 速度果然没起来, 而不幸的是,一个妹子似乎重走了我第一次的覆辙, 更不幸的是,她笔直的冲向我. 于是我再次紧张的无法用言语形容, 然后身体僵硬的倒了下去….

又经过两轮的练习, 初步掌握了几点要领:另外,内八字的减速滑法只有在初级道才管用, 因为速度快到一定程度的话唯一的减速方法是走”S”型路线. 继续在儿童道实验了下,加速,向左转弯,减速,再加速,再向右转弯,再减速. 成功了! 正当我欣喜的时候,旁边缓缓的冲下去一个妹子,全身红色衣服,另加一个红色头盔,这分明是电影里的恐龙特急克塞号的人间大炮啊! 不过你这前仰后合双手撑雪的机器舞姿势实在让我接受不能啊,对不起,我没忍住, 于是我又以一个自认为比较帅的姿势,跳起来,转身, 趴下…..原谅我笑点太低.

几次的下坡经历让我获得了一些自信,我深深赶脚已经不能再沉沦与儿童赛道了!于是颠颠地跑去挑战中级赛道,11度的坡度,长300米左右,赛道跟儿童级赛道是相连的,也就是说中级赛道的底端是儿童赛道的最高点.
再来!我又一次冲下雪道,可是我万万没想到,加速快的让人难以想象,我在两秒钟内达到了极快的速度,然后努力的转弯试图减速.然后我发现转不动,是的,转不动,大脑再次空白了,身体僵硬,还在加速,怎么办? 老子摔! 于是我这再次…. 算了不说了, 这次的滑行距离大约有10米. 不过摔的很爽!穿着滑雪服,在有意识的摔倒的情况下一般是不会痛的. 这在我接下来下坡的几次摔倒经历中得到了论证, 而最后一次我终于以S型走位终于刹住车了,再次欣喜若狂,但是左看右看,发现我已经滑到儿童道上去了….

至此整个上午我仅仅说过三句话:
1. 让一下让一下!
2. 啊……
3. 对不起!

扯淡结束, 如果你想去滑雪的话, 只需要额外带一双厚袜子就可以了,因为滑完鞋子会湿到里面.其他没有.对了,可以带一只杯子,滑雪场一般有热水.

番外:极品的是又一次我在悠然自得的S型路线上驰骋,然后直通通的装上了一个原地休息的兄弟,放眼望去,整条道上就我们俩.holy shit! 我真是奇葩….

写在前面的

Greetings, guys:

开通博客的想法由来已久,不过一直拖到现在才算正式上线。一来想记录一些工作和生活中遇到的技术问题和解决方案,二来打算写一些游记和旅行攻略。受到水平所限,不能保证每篇博文都是干货,所以亲们feel free to blame。