Author Archive for 木炎

又是一年终了时

不知不觉,又是一年。今年元旦的博文尚在首页,2011却已经走到了尽头。正如凌晨在微博上说,一年间,似乎一切都未改变,又似乎一切都已改变。过去的终不会再回来,时光之箭不停歇地向前飞逝,蓦然回首,物非人亦非。似乎又回到数年前上班时的心境,冷漠淡然,随遇而安。

细想来,一年里还是发生了许多事。从心怀侥幸到满怀憧憬最后到失落漠然,春节恍若南柯一梦,是这一年。在实验室项目里从战战兢兢到游刃有余,早九晚十一,同样是这一年。灾难和真相不断刷新着对这个神奇国度的容忍度下限,还是这一年。常去的论坛随着游戏发售和各人的忙碌,众人作鸟兽散,仍是这一年。得失之间,寸心难知,也不必多做计较。

研究生生涯已过去一半,新的一年,将面临再次找工作。留帝都与回川渝仍不定,春节回家又会是一场辩论。若留帝都,为了顶级公司的offer, 年后便该开始准备;若回去,唔,尚未考虑。新的一年,仍是需多看书,多写代码。除此之外,还需扩大自己的人际圈。同学们都很优秀,也会是未来的IT精英。便如入学时一位长辈所言,来这儿读书最大的收获应是人脉而不是课本知识。似乎体重再没有回到65以下的可能,肚腩已生,每周的羽毛球与不定时的骑行仍需坚持,向往许久的青海湖之旅在暑假也应成行。

新的一年,愿亲人朋友及自己都身体健康,远离烦恼;愿自己学业有成,有好的前程;愿某人幸福;愿世间多一些公平和正义……

再见,2011;你好,2012

斐波那契数列

前几天碰到一道题求斐波那契数列的非递归算法,用最简单的逐项累加,O(n)复杂度,然后被某搞过ACM的同学bs,说有O(logn)的算法。去poj上搜,果然有这个题。去wikipedia上查了下,除了Fn/Fn+1接近黄金分割比外,斐波那契数列还有一些有趣的特性,而算法便是基于这一等式:

利用二进制快速乘方(a11 = a8.a2.a =1 . a23. 0 . a22. 1. a21. 1 . a20)的方法,时间复杂度可成功降为O(logn)

poj3070,给定n(0<=n<= 1,000,000,000), 输出Fn模10000的值

代码如下:

//poj 3070
//Triton

#include <stdio.h>

//mod 10000 以减小数值范围
int matrixMultiply(long *a, long *b, long *answer)
{
    long tmp[4];
    tmp[0] = (a[0] * b[0] + a[1] * b[2])%10000;
    tmp[1] = (a[0] * b[1] + a[1] * b[3])%10000;
    tmp[2] = (a[2] * b[0] + a[3] * b[2])%10000;
    tmp[3] = (a[2] * b[1] + a[3] * b[3])%10000;
    int i;
    for(i = 0; i < 4; ++i){
        answer[i] = tmp[i];
    }
    return 0;
}

int matrixPower(long n, long *answer)
{
    int i;
    if(n < 0){
        for(i = 0; i < 4; ++i)  answer[i] = 0;
    }
    else{
        long pre[4];
        long cur[4] = {1,1,1,0};
        long res = n;
        long rem = res % 2;
        answer[0] = 1;
        answer[1] = 0;
        answer[2] = 0;
        answer[3] = 1; //初始化为单位矩阵
        //利用二进制快速乘方
        while(res != 0){
            if(rem == 1)    matrixMultiply(cur,answer,answer);
            i = 0;
            for(i = 0; i < 4; ++i){
                pre[i] = cur[i];
            }
            matrixMultiply(pre, pre, cur);
            res >>= 1;
            rem = res % 2;
        }
    }
    return 0;
}

int main()
{
    long num;
    long answer[4];
    while(1){
        scanf("%ld",&num);
        if(num != -1){
            matrixPower(num,answer);
            printf("%d\n", answer[1]%10000);
        }
        else break;
    }
    return 0;
}

同学看我做这个题,给了另一个模板编程的代码(汗,从来没用过),好处是运行很快,据说游戏中经常用类似的模板编程

#define Fib(N) FibT<N>::Val
template<int n> struct FibT
{
	enum
	{
		Val = FibT<n-1>::Val + FibT<n-2>::Val
	};
};

template<> struct FibT<0>
{
	enum
	{
		Val = 0
	};
};

template<> struct FibT<1>
{
	enum
	{
		Val = 1
	};
};

即使是看起来很简单的斐波那契数列,也有许多值得探究的地方。路漫漫其修远兮,吾将上下而求索

十三陵水库骑行记

第一次骑行,选择了东方红所谓入门级难度的十三陵水库。

八点起床,八点半出公寓,发现前拨失灵,于是去车店调整。等到九点才开门,中途吃了一屉小笼包和一杯豆浆作为早饭。很简单的问题,不到一分钟就被搞定,让我很是羞愧,不过我也因而学到了类似问题的解决办法。一路2-7,时速20km上下地踩到健翔桥,然后转八达岭高速(现京藏高速,G6)辅路一路往北,速度提升到22km/h。接近十点时,久未运动的弊端显示出来,腿酸,甚至有点头晕。过回龙观后,在一报亭买了一瓶脉动补水,停车时有种大脑当机的感觉。略作休息,继续前行。到十点半,南沙河桥时再次休息,此时齿比已变成2-6和2-5互换,速度也降到18km/h左右。在阳光的照射下,远看河水颇为清澈,在桥上才发现,水真脏。没心情呆太久,继续前行,经过某个繁杂的市集,人多车堵,自行车道几乎没啥空隙,数次借用人行道才通过。之后是某个桥,一个很短的缓坡,居然逼我使用了1-1,然后掉链,装上后切不到更大的齿,就这么1-1可耻地踩到了顶端。此时似乎已经快到体力极限,又有点怀疑路走错了。路边歇息片刻并反复确认后,继续前行。离昌平还有5km左右时,终于想起我包里还有吃的,于是再次歇息,吃了一些牛肉粒和一块巧克力,喝水,歇了十多分钟,上路。没有多少好转,速度降低到13km/h左右。这五公里很是漫长,还差点撞上逆向停在自行车道上的某汽车。当然,撞了应该也是他的责任。十一点半左右,终于到达那个有李自成像的环岛。本想找地方吃饭,没想到路边啥都没有。在不知道路的情况下,我也懒得去昌平城区找,于是继续前行。似乎之前吃的东西开始发挥作用,体力略有恢复。经过十三陵的大宫门,石牌坊,沿神道一路前行,路边竟然都是农家乐之类的,连个正经吃饭的地方都没有。有点不知路,于是随便找了家农家乐,准备吃午饭顺便问下路。

进门,院子里多个笼子,一群狗叫,想来都是用来食用的。点了一盘酱牛肉和一份蛋花汤,前者尚可,后者则十分坑爹,怀疑不到一个鸡蛋和一个番茄,一只手可以数过来的黄瓜片,居然还能跟前者一个价,够狠。这也是单人出行的弊端了,再加上我又不熟悉这边状况的缘故。此时的码表数据如下:骑行距离: 42.64km;骑行时间:2:44h;平均速度:15.54km/h(好杯具的速度);最大速度:27.74km/h(在城里时过某个需下钻的桥时放出来的)

略作休息,再次上路。很快到达老板所说的路口,右拐,拐完才发现变成了逆时针绕行水库,而不是我原计划的顺时针。不过影响不大,2-6,2-5交替,路面略有起伏,时速浮动在15km至25之间。一点多,终于到达水库大坝南侧,没想到竟然封闭,没做停留,继续前行。一段令人愉悦的下坡,然后绕到大坝底部,再爬上北侧。刚才下坡的爽快都还回去了,200m左右的中坡,从2-5到2-3再到1-3最后还是1-1才蹬上去。北侧仍是封闭,隔着护栏眺望半是绿水,半是白冰的水面,心中颇有遗憾。买一瓶脉动,再次前行。到达山坳的某个桥,可以俯瞰整个水库,驻车观赏。水库不外如是,还不如另一边光秃秃的山和蓝天漂亮(主要是蓝天)。没带相机,用手机随便咔了两张,回来发现画质基本不可接受。

 

此时已是两点过,再次前行,速度还是不稳定。路边很多农家乐,突然有一种身在成都的感觉。回到绕行起点,沿神道往南,大概是午饭开始发挥出作用,再加上神道略有向下的坡度和顺风,速度终于回到20+km/h.被一男二女的三人骑行队超越,于是跟骑了一段,速度一直保持在24km/h左右,甚至能达到28km/h,跟骑果然好处多多。很快到达昌平的环岛,他们停下,我也休息。不过转眼他们已不见,等到三点时我出发,一开始还走错了路,通过一条非常规道路后,终于回到了正路。一路2-7,22km上下的时速,很快再次到达南沙河桥,路上见到两起补胎的,还被某骑二八大杠的哥们儿超越。觅地休息,顺便吃点东西。刚才路边补胎的车友路过,非常友好地问我是不是车出问题了。再次出发,经过某地时发现一大群骑行者,刚才问我的哥们儿也在。本来准备挥挥手继续前行的,结果却被叫住,原来他们以为我是跟他们一起的。聊了一会儿,原来他们是北大车协的,去黄花城露营,昨天去,今天返回。问了下他们的线路,决定跟随返回。等他们人到齐,继续出发。浩浩荡荡的三四十人,一路往城区骑去。人多了速度反而降了下来,只有16km/h左右,不过一个好处就是力量大,那些占用自行车道的机动车也只能在后慢慢地走着而没法突然从身边呼啸而过。一路无话,五点半时返回公寓,人还颇为精神。洗完澡,反而颇困,睡到十点,起床。

码表数据如下:骑行距离:101.01km;骑行时间:6:07:40h;平均速度:16.48km/h;最大速度:34.05km/h

除去出公寓,到车店等的距离,刚好100km,同理时间算作6小时,这个平均速度明显不能让人满意,尤其是在这一路基本无坡的情况下。不过考虑到是第一次骑行,应该还有不少可以提升的空间。

经验教训:补充能量时应该有提前量,等饿了或者骑不动了再吃东西就晚了;活用变速,踏频保持得不理想,就是变速太少的缘故;安全至上,骑不动就休息;体力还是不行,需要多锻炼;不要太相信Google Earth,但要相信rp(GE上距离貌似只有80+km,一路都不荒凉,所以只带了补胎工具而没带打气筒,不过rp好就是没爆胎)……

后遗症:屁股痛,虽然穿了骑行内裤,但还是痛,貌似是姿势不太对,分给坐垫的体重比例大了点;右螺丝骨有点痛,怀疑某个时候撞在车上了,不过我完全没印象;右肩痛,应该还是姿势的问题,手臂太直了点,左肩都没事……

无论如何,能够单人平安完整地完成这次骑行,是一件很值得高兴的事,再骑两次平路就该爬坡了。

最后是这次的路线图,红色的是返回时的另一条路

2010,2011

转眼,已是2010的尾声,回顾过去的一年,并憧憬一下新的一年。

2010

回首今年,似乎过得特别快,甚至比去年那日复一日的单调日子还要快。经历了失落,焦急,沮丧,认命,惊喜,忐忑,释然之后,终于还是考入了ICT,此时,已是四月。

四月,帝都的春风尚寒,我已只身前来,带着我的梦想与期望。五六七八,开学前的四个月,有空闲也有忙碌,学了一些东西,为项目贡献了一份力,也结识了不少老师师兄和同学。

九月开学,课程虽多却颇充实,虽然最后的考试成绩不理想,却受益良多。很多以前不明白或是不了解的地方,随着老师或书本的讲解而豁然开朗,且启发我想到更多。十一月底考试基本结束,边看书边休息至今,终于还是被召唤进了实验室,春节假期也被压缩到了两周多,不亦悲哉。

今年的日子却是太宅了,帝都很多著名的地方都未踏足。相机的快门数,增长不到500. 买了一大堆影印版的教材,可真正看完的,寥寥数本而已,或许研究生阶段,专业方面的读书计划,把这些吃掉,再加上N多篇论文即可?

十年之识,六载之误,蓦然回首,灯火阑珊,春回大地,斗柄北指。感谢上苍,尚有重来的机会。

2011

新年新气象,多看书,多写代码,努力充实自己,如此方不负自己的年华和家人的期许。感情同样需要努力,金诚所至,尾生抱柱,加油,Triton

记得春节时去张飞庙,里面有一个许愿池。当时有个五毛硬币,于是许了五个愿望。如今看来似乎颇灵。手边没有许愿池,且凭空许三个愿望好了:

祝家人,朋友和自己都身体健康,天天快乐

祝自己学业有成,双丰收

祝Luna工作顺利,心想事成

再见,2010;你好,2011

一个简单的flex箭头图表

项目需求,要做一个箭头图表,还要有滑动动画。参考Flex 3 SDK和Google上一位老外的代码,做了个简单的出来,基本满足需求了,以后有兴趣再扩充吧。

箭头图表类似于Flex内置的各种图表,不过简单多了(本想从ChartBase之类的继承,但看到那几个包和众多的类,我无力了),从UIComponent继承而来的,只实现了series,dataProvider,xField,yField等属性,还有showDataEffect用来配合动画。(没有hideDataEffect – -)

滑动动画主要用了scrollRect这个属性,已知有两个bug:有时候箭头的滑动会有跳动的感觉,动画开始时如果前一个动画没运行完,会报错。暂时没找到原因,先不管了。

演示如下,可右键看源代码。

最后,吐一下Firefox的槽,感觉3.6.4增加的插件隔离机制没什么用,插件奔溃fx照样奔溃,而且,更频繁了。类似空对象引用,数组越界(我羞愧),找不到url之类的错误都能引起奔溃。当然,更可能是debug player的缘故。HTML5快点来吧,让flash player见鬼去。

杯具啊

世界杯果然是世界上最大号的杯具,在这里,各种政客,黑手,影帝出没,于是乎,只要不出现某球员抱着球一路狂奔,对手围追堵截的场景,其它任何事我都不会感到惊讶。

巴西居然真输了,虽然我口头支持荷兰,却一直认为巴西是32强里最有冠军相的,毕竟带队的是保守的邓加。看看鸟叔,就知道要夺冠的不二法门就是防守。回溯一下,原来是因为贝利大神已经预测巴西会赢,我了个去。而且,Nike竟然还推出了罗比尼奥版的踢出传奇,真给力,双重乌鸦下,巴西怎能不败?根据这两大乌鸦推断,剩余的赛事走向是这样的:首先,贝利看好德国队,于是德国被阿根廷杯具;然后,贝利预言巴西与阿根廷将会会师决赛,四强也就是阿根廷的尽头了,假设他被西班牙淘汰吧,毕竟不能期望巴拉圭能连灭西班牙和阿根廷;最后,西班牙会继08年捧起德劳内杯后再次捧起大力神杯么?No,还有Nike的传奇呢。不要以为只派出三个摔报纸的酱油男就能躲过必杀了,怎么可能,沃尔科特只不过露了一下面,结果都没能来到南非,三个酱油男可是出现了好几秒。所以,恭喜荷兰,乌拉圭,加纳,巴拉圭,你们都有机会。不过这都是基于贝神不再发表新的预测,要是明天他再抛出荷兰将第一次夺得世界杯之类的话语,尼德兰人你们就自求多福吧,把克鲁伊夫范巴斯滕博格坎普都拉过来看能不能辟邪……

正经地说一下这场比赛,两队都踢得挺难看的。巴西至少还有不少流畅的小配合,荷兰呢,什么都没看到,裸奔男想玩个国足似的角球战术还没看穿了- – 除此之外,两队就是不停地小动作,摔倒,纠扯…… 关于乌龙,关于红牌,不发表意见,赌球也好,心态失衡也好,反正都已过去,希望桑巴军团能吸取教训,四年后在家门口为胸前绣上第六颗金星(可能这次是因为巴西觉得就这么抛弃国足,独自加冕六星不厚道)写了这里才发现,我是对这只没有罗尼没有小罗大部分球员仅面识的巴西还是太过在意了。

最后,强势围观此楼主

flex中的括号

初学flex时,被里面四处乱飞的括号弄得有点头晕,尤其是一些不同于C,Java中用法的地方。碰到

var ac:ArrayCollection = new ArrayCollection([{name:"foo",no:0},{name:"bar",no:1}]);

这种兄弟仨一起出场的时候更是无措。

仔细翻了翻文档,总结一下,顺便测试下Easy Google Syntax Highlighter插件:

  • 小括号( ):nothing new,就两个作用:改变表达式运算顺序,小学生都会的东西;传递函数参数,传统用法
  • 大括号{ }:as3 中,两个作用:代码块,还是传统;实例化Object类的对象(实例),如
    var obj:Object = {id:0,label:"object",date:"2010.6.22"};

    MXML中,用于嵌入内联的as代码或数据绑定(其实数据绑定也可以看作as代码),如

    <!-- code block -->
    <mx:Button label="click to say hello" click="{mx.controls.Alert.show('hello world')}" />
    
    <!-- data binding -->
    <mx:TextInput id="input" x="10" y="10" width="100" />
    <mx:Text text="{input.text}" x="200" y="10" />
  • 中括号[ ]:as3中,两个作用:初始化数组,这点与C和Java用{ }不一样,很多误读就是这么产生的,如
    var arr:Array = ["foo","bar","foobar"];

    插入元数据标签(metadata tag)如Bindable,Embed,Effect等,最常见的就是用于绑定的Bindable,如

    [Bindable]
    private var arr:Array;

    又如以下代码在MyComponent组件上定义myClickEvent事件

    [Event(name="myClickEvent", type="flash.events.Event")]
    public class MyComponent extends UIComponent{
    //...
    }
    

    在MXML中部分元数据标签可使用<mx:Metadata>标签插入,(绑定用<mx:Binding>)作用与脚本相同,如以下代码定义textSelectedColor的样式

    <mx:Metadata>
    [Style(name="textSelectedColor",type="Number",format="Color")]
    </mx:Metadata>
    

    关于<![CDATA[ ]]>,这里的中括号与as3无关,是XML的标准语法,XML解析器会自动忽略CDATA里的内容,MXML同样遵守这一规则

  • 尖括号< >:姑且也算吧,没什么好说的,定义和关闭标签,标记语言(markup language)的身份标志

回头看第一个例子就很简单了,最外层的( )为ArrayCollection的构造函数传递参数,ArrayCollection构造函数的参数为Array数组,这就是[ ]的作用,而该参数数组则包含由{ }实例化的两个对象。

我靠,我靠,我靠

第一个我靠送给英格兰全队:一个黄油手门将,一个实力本来就一般的40岁老人;看起来华丽(Rio没伤退就更华丽了)的后防线,却跟纸糊的一样,德国是次进攻就能打出威胁来;再看看中场,除了浪射还会什么,双德两个出了名的浪射帝就不说了,你们什么时候能表现出在俱乐部时一半的水准?巴里不做好自己本职防守工作,又不会传球组织,竟然还跟着上去浪射,然后边路的那些人,难道整个英格兰除了小贝就没一个会传中的了么;锋线上,鲁尼继续没什么表现(估计他十分怀念在曼联时身后的那些人),迪福基本就没怎么看到;还有卡佩罗的用人失误,为什么不用联赛表现出众的哈特,为什么不用技术超过其他糙哥一大截的乔科尔,在俱乐部都踢不上球的赫斯基凭什么打主力(开始的两场)……华丽丽的预选赛成绩小组赛就被打回了原形,没带队打过世界杯的名帅看起来也不过如此。看看德国球员的年龄,再看看英格兰的这帮人,我都不知道下次世界杯或者欧洲杯英格兰能排出什么样的阵容,英超的盛名之下,却没有多少闪亮的本土新星。英超的几大豪门都以地面短传为主了,英格兰却还在几十年如一日地打着长传冲吊,而且,场上的是两个小个子前锋,而且,没有了小贝的圆月弯刀……欧洲中国队的称号真不算是诬蔑

第二个我靠送给近视的裁判,就算主裁看不清楚,边裁呢,是干什么吃的?屈指算来,已经好几次见到裁判的争议性判罚主宰比赛结果,没有那个误判,英格兰或许还是会输,但至少不会输成这样

第三个我靠送给我这儿一场比赛断了五次的破网络

英格兰已经回家,贝神的诅咒开始生效(贝大神最新的预测是巴西和阿根廷会师决赛),Nike的踢出传奇也继续地传奇伤rp,邪恶地坐等阿根廷,巴西,西班牙,葡萄牙杯具,支持一下荷兰好了,无冕之王那么多年了,也不容易

三个门将,一个黄油手,一个本来实力就一般的40岁老人,唯一一个本赛季表现还不错的哈特还不给上

Archives

Categories

Tag Cloud

Words