Pages

Wednesday, March 23, 2011

Hello World

由于怕折腾,决定搬迁到 Blogger 这个不需要折腾的平台上,原来的文章将选择性导入,差不多就是这样吧

Sunday, August 1, 2010

Anybody Notice This?



这是 09年10月7号在上海科技馆拍的一张照片,当时我就不理解,目前我还是不理解。

Monday, July 5, 2010

自解压不神奇

小时候总以为自解压文件肯定用到了某种诡异的 PE 格式上的 trick,要不然 Linux 下为什么没怎么见过自解压的东东呢。

然而昨天翻 7-zip 代码的时候惊讶的发现了真相——
你应该已经注意到了,7-zip 可以打开自解压文件。


——所以?

Friday, June 25, 2010

iPod 更新过程中的悲剧

iOS 4.0 的确有些很激动人心的新功能,而且又免费——所以我想决定升级到 iOS 4.0 应该不算是个非主流的想法吧。
下载,备份,升级,这些都还算顺利,然而悲剧的是,软件安装完了、固件刷新好了,最后重启,固定在了一个连接 iTunes 的图像上面,连接 iTunes 则会出现某编号 –9812 的错误信息,像极了传说中会以小概率出现的死机状况;俺于是按对付那种情况的方法以强制恢复的方式重装系统,还是一样的结果。
回忆装机的过程,想起似乎有哪里提到过程是这样的:备份,安装系统,与 Apple 进行验证。
看样子问题可能出在与 Apple 验证这一步上面了。

想到这里——第一反应便是——被 q1ang 了?

fan q1ang,结果还是不行!

最后讨教万能的 Google,才发现有个地方说得算是比较靠谱: http://bbs.weiphone.com/read-htm-tid-632015.html
原来是缺少 iTunes 和 Apple 安全连接用的根证书,囧,那以前从 3.1.2 到 3.1.3 为啥可以直接升级呢,为什么查看 iTunes 帐号信息的时候它也安慰一句正在使用安全连接呢,我就纠结了。
把这个问题解决掉、成功升级之后,还是挺不爽,本以为 iTouch 是我的,其实原来是乔帮主的,他一个意念之间就可以把它废了,妈的。


最后,希望装 iOS 4.0 并且遇到同样问题的生物们,可以直接在这里下载根证书的更新包:http://is.gd/dcaLs

Sunday, June 13, 2010

Mosaic

以前看Matrix67大牛介绍过用Mathematica制作马赛克拼贴图像的东东,然后自己也试了一下下
我的故事是,今天灵光一闪,我想到其实每个小图片包含的信息是很多的,只取一个平均值真是太委屈它了,用“高级一点的”图像近似度计算方法肯定可以得到不错的效果,于是我自己瞎掰了一个匹配算法:取缩略图;高斯模糊;比较方差——发现效果果真(相对)还行:







Friday, May 28, 2010

一个烂尾工程:JavaScript 的 BrainFK 解释器

前几天看到Matrix67大牛推荐的名曰Manufactoria的编程游戏,非常之喜欢,玩得快要通关的时候,转念一想,诶,玩这个还不如玩BF呢。

嗯,要么我自己写个类似的BF的网页游戏?

这么一冲动,就刷刷刷写了下面的东西——剩下来的工作主要就是界面了,结果我又发现我没有时间做那工作,还得复习啊。
所以……这个烂尾工程就这么捐出来算了罢,下面的代码属于公有领域

Friday, May 14, 2010

WildCard 通配符的粗糙实现

话说今年学校又举行 ACM 程序设计竞赛了,这次我有机会出题目吓一吓那些小孩子们,心里很得瑟呢。
本意是想要出一道模拟题判断一个五子棋棋局的胜负状况;但是很神奇的是,一念之间,我就产生了一个新的想法,考 '*' 和 '?' 通配符吧。
WildCard 说起来是匹配,实际上更像是查找:比如说用 ab*??ab*ab 匹配 abababababab ,不是从头到尾比对一遍就能完成的事情,所以让他们做这道题肯定会很有乐趣。

Monday, May 10, 2010

life.cpp

#include "exceptions.hpp"
#include "human.hpp"
#include "school.hpp"
#include "food.hpp"
#include "life.hpp"

void life::eat(food &f) {
    if(!f.tasty())
        throw(error("WTF is it?!"));
    else {
        this->money -= f.price();
        f = excrement;
        this->grow();
    }
}

void life::sleep() {
    int sheep;
    for(sheep = 0; !asleep(); ++sheep)
        if(sheep<0)
            throw(astonishment("OMG!"));
    this->grow();
}

void life::work( thing& t ) {
    t = nothing;
    error up("Okay, I messed it up");
    throw up;
}

void life::haveFun() {
    throw(error("How is it possible?"));
}

void life::live() {
    while(this->alife_) {
        eat();
        work();
        haveFun();
        eat();
        sleep();
        work();
        haveFun();
        eat();
        work();
        haveFun();
        sleep();
    }
}