好吧, 这么说吧, 我的这一年…

12月 31st, 2008 | Gossip | 15 comments

好吧, 这么说吧, 我的这一年:
和3位大户一起购入了一台二手的1U服务器, 然后很白痴的对着文档乱七八糟的配置了服务器;

终止了一个因为缺乏文档而不了了之的奖学金评估系统, 虽然这个系统让我学会了php;

想基于.net CF 2.0完成一个手机上的数独游戏, 在完成了数独的生成, 光标的移动后, 就不了了之了(后面这样的句式会重复无数次-_-!);

完成了一个混乱不堪的flatGrid, 包括一个蹩脚的从学校图书馆同步借阅图书和通过机器人提醒还书的系统, 一个想用标签结果不怎么成功的实际上没什么人混的讨论区, 一个支持同步到其他twitter-like服务的twitter-like服务, 一个类似豆瓣小组的小组, 一个就是相册的相册…;

完成了一个半成品就因为种种原因停止更新的Stage2, 虽然这个系统是我第一次用Python写一个实际的项目(FTP爬虫), 也是我第一次用Xapian实现一个较为完整的全文搜索引擎, 也是我第一次尝试用MVC结构用PHP来搭建前台;

完成了一个一堆bug而且不怎么好用的DormID系统;

把51ditu(灵图)的API去掉了调用的限制, 在本地实现了地图系统(包括需要的图片文件), 修改了灵图导航和公交API的调用, 使得用户在Intranet里也可以通过服务器做Proxy获得数据. 做这些是想做一个由用户产生内容并分享城市生活的地图标记系统, 然后这个项目由于种种原因又半路荒废了;

一段时间对P2P似乎很有兴趣, 于是用C#写了一个P2P传文件的软件的雏形, 大部分的时间浪费在了如何用C#操作非托管内存的处理上, 以及字节对齐的一堆问题. 继而系统重装, 这堆效率极低实际没啥功能的代码也就消失了-_-!;

改了一点NUT的代码, 试图加上一些东西和自己的一个iq扩展, 结果不了了之, 虽然基本已经完成了大半;

用了一个通宵给WPMU加上了文章推荐功能, 然后几乎被人民群众所忽略;

给自己的域名搞了一个乱七八糟的首页;

花了两三个通宵去搞五月天成都演唱会的抢票活动的网站, 然后被告知五月天来不了了, 我得承认这让我足足浪费了两周的时间来调整这种失落和乱七八糟的心态;

找了一堆协同过滤的垃圾论文, 基于MovieLens的数据库和MATLAB玩了下数据挖掘和协同过滤的小实验, 然后就不知道忙什么去了, 之所以使用MATLAB是因为那段时间的数学实验上得很high;

基于Python和自己的一些测试数据再次做了一些协同过滤的实验, 发现稀疏集下的结果很诡异, 后来.. 又不知道忙什么去了;

用Python和xmpppy写了一个基于XMPP的机器人, 以辅助flatGrid中类似Twitter服务的多元化, 为xmpppy频繁掉线和Python的一些编码问题头痛了N小时, 继而解决了这些该死的bug;

在纠结于内存越界和浮点数的一些小处理疏忽而导致诡异bug数小时后, 完成了第一个基于论文的细菌蛋白质编码基因识别程序, 同时接受了我C++很烂的事实;

试图用libfetion和C++完成一个飞信的机器人, 然后进度被打断;

学习了一点shell脚本和awk的使用, 后来切到Windows开始写基因识别的程序, Linux就快被我忘光了;

正在写一个基于Apache POI的把PPT转为在线可分享的Flash的课件平台;

从我无数的半途而废上可以看出:

我是一个不专一的人, 一个浮躁的人, 一个技术粗糙的人, 一个不实事求是, 脚踏实地的人, 一个对自我认识不到位的人, 一个有很多想法最后都不能实现的衰人.

—————————
看了又放弃追了: Cane, Chuck, The L Word, Dirty Sexy Money
继续追了: CSI:NY, House M.D.
开始追了: Fringe
倒回去追了: Skins, The Big Bang Theory
听了不少Folk, Indie, Jazz, 除了技术类书籍什么像样的书都没看-__-!

————————-
这一年,
我21岁, 恋爱第四年.
溜达去了三亚,  泸沽湖, 丽江和青海.

我觉得很多事情都很好, 因为它们发生了,
有些事情不好, 因为我继续迷茫着未来,
而且这种状态会一直延续到2009年.

鬼知道它什么时候结束, 然而终究是新的一年了,
Happy new year!

教务系统太垃圾了…

12月 29th, 2008 | Gossip | 14 comments

还没到9点, 选定按钮是灰的,
就随便又试了下, 执行了: 
javascript:void( function() { document.getElementById("btnSelect").disabled=""; } )() 

嗯啊, 然后… 没想到, 提交就选好课了 -____-!
有人说不知道咋执行, 请在弹出选课窗口后, 按Ctrl + N, 然后在地址栏输入.

后来我就做了一个梦.

12月 21st, 2008 | Gossip | 11 comments

他们用墨水在稻田里画着一个一个的年轮,
直到夕阳西斜, 汗水滴在他们自己黝黑的影子里.
年轻的人儿拾起沾满墨汁的麦穗,
消失在金黄色熔解的大地里,
弯弯曲曲的小路延伸在他们脚印前边, 渐渐的涂抹成了黑夜的颜色.

他们想起一个很有趣的故事,
他们不说, 只是笑,
就像任何会心的微笑都可以传递在每个人的嘴角,
一直到整个世界都飘荡这种相同频率的笑声.

这个世界永不消亡,
永不消亡.
直到它破碎在某个清寒的早晨的瞬间,
说, 果然, 一切的梦境都是不真切的.

醒来了, 继续昏沉的睡去.

[我的2008]2008这一年.

12月 14th, 2008 | Gossip | 15 comments

我想之所以一年被以这样的方式所纪念,
是因为无论从历法上, 还是从习惯上, 还是从轮回感上, 都让人得到充实和饱满.

这一年的大半时间里, 我20岁,
此时, 我是21岁.
我想社会的进步会把人推向一种迟延成熟的状态,
一层层的缓冲壁垒像一年一年的年轮画成的界限, 把你和社会, 真实的社会隔绝开来.

我很乐于听到说, 大学是社会的微缩的景观,
事实是无论在清寒的清水河, 还是在逐渐萧条的沙河, 我都只看到许许多多强加粉饰的遮掩,
正是因为这, 我说大学全然不是社会.

有点意思, 辅导员们同是一张张未曾涉世的稚嫩的脸,
却仍然可以履行着baby-sit的职责把大学生宝贝们好好的圈养起来,
天条纪律一条条的紧箍着本应该充满了自由与思想的一群人.
所以这游戏就变得如同一帮哥哥姐姐带着弟弟妹妹在诺大的校园里扮着过家家般的幼稚.

这一年的风暴席卷着整个校园,
所有的辅导员和书记都更加坚定了口风, 把潮水般涌来的大学生源继续推向下一个闸,
只因为就业形式的恶化, 瞬间好像寻找几年规避风险的缓冲就成了最为明智的选择,
短视.
抛开这个世界是否二元不谈, 抛开就业背后的种种风险不谈, 就谈考研,
面对着新一轮潮水般涌来的研究生, 电子科大的导师队伍有明显壮大吗? 未闻.
面对着新一轮潮水般涌来的研究生, 电子科大的科研条件有明显提升吗? 未闻.
面对着新一轮潮水般涌来的研究生, 未来3年后的出路有良好预期吗? 谁也不知道.
那么这和当年的大学扩招有他妈的什么区别? 管它呢, 反正是进来了, 4年又3年.

尽管所有人都会成为自己历史的见证者和经历者, 然而其中的心酸还是只有自己体味.
我不说考研是evil, 然而只是盲从随着大流考研, 为了所谓3年缓冲去逃避最真实的社会的做法才是evil,
所以台下的看着台上的, 听着那些澎湃的鼓舞, 动员和号召, 总觉得似乎我们在误解着什么.
倘若是为了深造的, 不妨只静心于抛开喧闹和嘈杂的环境里深造,
倘若是为了规避的, 还不如直面事实和社会, 毕竟几年后的社会, 同样是惨淡的社会.
这般的摇旗呐喊, 锣鼓喧天是为了哪般?

——————————-

2008于我, 充满了变化和新意,
纵然我回望这逝去的一年, 似乎我更多的只是安于自己最容易伸手便能企及的事,
然而我还是心怀着感激去看待着短暂的一个时间里程碑上所能写下的一切.

我不想去记下它于我都发生了什么,
因为那些零碎的发生都出现在过堆成的文字里,
或许有些隐藏得深的, 印记在心里某个脆弱的角落,
然而我终究是记下了, 倘若忘却的, 只怕是不愿记住的.
我想, 每当人回望的时候, 总是可以吞吞吐吐的感叹许多,
感叹总是稍纵即逝, 因为即使教训惨痛, 过去的过往始终肤浅.

所以我站在年关上,
短暂的思考,
然后把它们全都记录下来.
无论它们幼稚, 短视, 矛盾与否,
都是这一刻最真实的写照.

2009于我, 是这大学4年里最关键的一年,
充满了转机与未知,
只盼的明年的这一刻, 少几分遗憾, 多几分从容和欣慰,
或许未来的路, 就已经弯弯曲曲的铺好在了脚下.

我从不介意前路是否坎坷,
只要能走, 都是自己的路.

贴点无意义的玩意儿.

12月 12th, 2008 | Coding | 1 comment
    void Fisher(unsigned long nA, unsigned long nB,
 
    double xA[][FISHER_COEFFICIENT_NUMBER], double xB[][FISHER_COEFFICIENT_NUMBER],
 
    unsigned int paraNumber, double coefficient[])
 
    // the Fisher discrimination function which is used to calculate the Fisher coefficient.
 
    {
 
    unsigned int i = 0, j = 0, k = 0;
 
    double *xxA = new double[paraNumber];
 
    double *xxB = new double[paraNumber];
 
    double sumOne = 0.0, sumTwo = 0.0;
 
    double *d = new double[paraNumber];
 
    double *c = new double[paraNumber];
 
    double (*s)[FISHER_COEFFICIENT_NUMBER];
 
    s = new double[paraNumber][FISHER_COEFFICIENT_NUMBER];
 
    double c0 = 0.0;
 
    double ss = 0.0;
 
    int Agaus(double a[], double b[], int n);
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    xxA[i] = xxB[i] = 0.0;
 
    d[i] = c[i] = 0.0;
 
    }
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    for(j = 0; j < paraNumber; j++)
 
    {
 
    s[i][j] = 0.0;
 
    }
 
    }
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    sumOne = 0.0;
 
    sumTwo = 0.0;
 
    for (j = 0; j < nA; j++)
 
    {
 
    sumOne += xA[j][i];
 
    xxA[i] = sumOne / nA;
 
    }
 
    for (j = 0; j < nB; j++)
 
    {
 
    sumTwo += xB[j][i];
 
    xxB[i] = sumTwo / nB;
 
    }
 
    }
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    for (j = 0; j < paraNumber; j++)
 
    {
 
    sumOne = sumTwo = 0.0;
 
    for (k = 0; k < nA; k++)
 
    {
 
    sumOne += ((xA[k][i] - xxA[i]) * (xA[k][j] - xxA[j]));
 
    }
 
    for (k = 0; k < nB; k++)
 
    {
 
    sumTwo += ((xB[k][i] - xxB[i]) * (xB[k][j] - xxB[j]));
 
    }
 
    s[i][j] = sumOne + sumTwo;
 
    }
 
    }
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    d[i] = xxA[i] - xxB[i];
 
    }
 
    double *sNew = new double[paraNumber * paraNumber];
 
    k = 0;
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    for (j = 0; j < paraNumber; j++)
 
    {
 
    sNew[k++] = s[i][j];
 
    }
 
    }
 
    if (Agaus(sNew, d, paraNumber) != 0) // solve a real general system of linear equations.
 
    {
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    c[i] = d[i];
 
    }
 
    }
 
    delete []sNew;
 
    c0 = 0.0;
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    c0 += c[i] * (xxA[i] + xxB[i]);
 
    }
 
    c0 = -0.5 * c0;
 
    ss = c0 * c0;
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    ss += c[i] * c[i];
 
    }
 
    ss = sqrt(ss);
 
    c0 = c0/ss;
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    c[i] = c[i]/ss;
 
    }
 
    for (i = 0; i < paraNumber; i++)
 
    {
 
    coefficient[i] = c[i];
 
    }
 
    coefficient[paraNumber] = c0;
 
    delete []xxA;
 
    delete []xxB;
 
    delete []d;
 
    delete []c;
 
    delete []s;
 
    }
 
    int Agaus(double a[], double b[], int n)
 
    // solve a real general system of linear equations.
 
    {
 
    int *js, l, k, i, j, is, p, q;
 
    double d, t;
 
    js = (int*)malloc(n * sizeof(int));
 
    l = 1;
 
    for (k = 0; k <= n - 2; k++)
 
    {
 
    d = 0.0;
 
    for (i = k; i <= n - 1; i++)
 
    for (j = k; j  d )
 
    {
 
    d = t;
 
    js[k] = j;
 
    is = i;
 
    }
 
    }
 
    if (d + 1.0 == 1.0)
 
    l = 0;
 
    else
 
    { if (js[k] != k)
 
    for (i = 0; i <= n - 1; i++)
 
    {
 
    p = i * n + k;
 
    q = i * n + js[k];
 
    t = a[p];
 
    a[p] = a[q];
 
    a[q] = t;
 
    }
 
    if (is != k)
 
    {
 
    for (j = k; j <= n - 1; j++)
 
    {
 
    p = k * n + j;
 
    q = is * n + j;
 
    t = a[p];
 
    a[p] = a[q];
 
    a[q] = t;
 
    }
 
    t = b[k];
 
    b[k] = b[is];
 
    b[is] = t;
 
    }
 
    }
 
    if (l == 0)
 
    {
 
    free(js);
 
    cout << "fail" << endl;
 
    return(0);
 
    }
 
    d = a[k * n + k];
 
    for (j = k + 1; j <= n - 1; j++)
 
    {
 
    p = k * n + j;
 
    a[p] = a[p]/d;
 
    }
 
    b[k] = b[k]/d;
 
    for (i = k + 1; i <= n - 1; i++)
 
    {
 
    for (j = k + 1; j <= n - 1; j++)
 
    {
 
    p = i * n + j;
 
    a[p] = a[p] - a[i * n + k] * a[k * n + j];
 
    }
 
    b[i] = b[i] - a[i * n + k] * b[k];
 
    }
 
    }
 
    d = a[(n - 1) * n + n - 1];
 
    if (fabs(d) + 1.0 == 1.0)
 
    {
 
    free(js);
 
    cout << "fail" <= 0; i--)
 
    {
 
    t = 0.0;
 
    for (j = i +  1; j = 0 ; k--)
 
    if (js[k] != k)
 
    { t = b[k]; b[k] = b[js[k]]; b[js[k]] = t;}
 
    free(js);
 
    return(1);
 
    }

为啥我的模式识别书上木有讲Fisher判别捏?
算了, 我自己把这段代码啃懂好了…

> <

进化的力量.

12月 2nd, 2008 | Gossip | 8 comments

最近在看细菌基因预测的paper,
看到一句话, 觉得讲得很好:

一般来说,一个编码序列是生物体经过亿万年进化的产物。在进化早期的DNA序列被认为是由四个碱基组成的随机序列。和可能的蛋白质编码序列相比,随机序列的数量是巨大的。粗略地说,它们之间的数目应该是1:∞。选择压力如此强大以至于只有少数的DNA序列幸运地被选择作为了编码蛋白质的基因。

我总以为进化是让人生畏的东西, 这些细微精巧的设计让人有时候不得不去想所谓的”智慧设计论“啊. -_-!
基因预测就是试图用各种指标来描述这种序列的特征,  最后进行分类判别, 不过说来这些指标的建立, 还是基于ATGC序列本身来的.

也许还有些深层次的秘密隐藏在这该死的遗传密码里?