Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

不错的网站设计

晚上闲逛的时候看到个2008年精选的50个最佳 CSS 设计,对其中的一个设计尤其中意:

YouLove.Us

点击查看。虽然只有一页,但是创意十足,尤其中间那层飘渺的云,页面滚动起来很有立体感

貌似这个设计,和原来看过的某个“很长”的图片很相似,找了半天终于找到,嗯,原版貌似是韩文的:

继续阅读

Javascript 相对时间

因为相对时间是随时变化的,所以如果在页面里面直接生成相对时间的文本,那么就没法缓存成静态文件,不过用 js 可以解决这个问题。

首先,在页面里面还是用 rails 生成一般的时间,这样即使关掉了 js,也可以显示正常的时间。并套个 span:

<span class="relative_time"><%= @post.created_at %></span>

然后就是 js 的事情了,找出这些 span,并且算出相对时间替换进去:

function show_relative_time(local){
    var times = $$('span.relative_time');
    var now = new Date();
    for(i=0;i<times.length;i++){
        var time = times[i];
        var t = new Date(time.innerHTML);
        var diff = now - t;
        time.innerHTML = relative_time_text(Math.floor(Math.abs(diff/1000/60)), local);
    }
}

其中的 relative_time_text 接收分钟为参数,返回相对时间的文本:

function relative_time_text(m, local){
    var text;
    if(!rtlang[local])
        local = 'en';

    if(m <= 1)
        text = rtlang[local]['less than a minute'];
    else if(m > 1 && m <= 45)
        text = m + rtlang[local][' minutes'];
    else if(m > 45 && m <= 90)
        text = rtlang[local]['about 1 hour'];
    else if(m > 90 && m <= 1440)
        text = Math.round(m/60) + rtlang[local][' hour'];
    else if(m > 1440 && m <= 2880)
        text = rtlang[local]['1 day'];
    else if(m > 2880 && m <= 43200)
        text = Math.round(m/1440)+ rtlang[local][' days'];
    else if(m > 43200 && m <= 86400)
        text = rtlang[local]['about 1 month'];
    else if(m > 86400 && m <= 525600)
        text = Math.round(m/43200) + rtlang[local][' months'];
    else if(m > 525600 && m <= 1051200)
        text = rtlang[local]['about 1 year'];
    else
        text = Math.round(m/525600) + rtlang[local][' years'];

    return text + rtlang[local][' ago'];
}

基本就是照着 rails 里那函数改的,rtlang 就是个 hash,保存多语言信息:

var rtlang = {'zh_CN':{}, 'en':{}};
rtlang['en']['less than a minute'] = 'less than a minute';
rtlang['en'][' minutes'] = ' minutes';
rtlang['en']['about 1 hour'] = 'about 1 hour';
rtlang['en'][' hour'] = ' hour';
rtlang['en']['1 day'] = '1 day';
rtlang['en'][' days'] = ' days';
rtlang['en']['about 1 month'] = 'about 1 month';
rtlang['en'][' months'] = ' months';
rtlang['en']['about 1 year'] = 'about 1 year';
rtlang['en'][' years'] = ' years';
rtlang['en'][' ago'] = ' ago';


rtlang['zh_CN']['less than a minute'] = '小于一分钟';
rtlang['zh_CN'][' minutes'] = ' 分钟';
rtlang['zh_CN']['about 1 hour'] = '大约 1 小时';
rtlang['zh_CN'][' hour'] = ' 小时';
rtlang['zh_CN']['1 day'] = '1 天';
rtlang['zh_CN'][' days'] = ' 天';
rtlang['zh_CN']['about 1 month'] = '大约 1 个月';
rtlang['zh_CN'][' months'] = ' 个月';
rtlang['zh_CN']['about 1 year'] = '大约 1 年';
rtlang['zh_CN'][' years'] = ' 年';
rtlang['zh_CN'][' ago'] = ' 前';

这样如果要显示中文的相对时间,那么只需在页面尾部加上:

<script type="text/javascript">
     show_relative_time("zh_CN");
</script>

就搞定了~

继续学习硬件,外加更新 Chito

看硬件看到现在,和一个月前有了天壤之别,这种晚上看看理论知识,第二天白天就可以实践的方式,绝对是非常好的学习模式。

除此之外,还大概看了看 Labview。除了对那种连线式的编程方式有点不习惯之外( 经常被我连成一团乱麻 ),感觉这个仪器仿真的东西实在是太方便了~ 项目开始的时候,我就在想,以后要怎么来查看芯片处理的数据,怎么画数据图像,还想到了一些 Linux 下的画图软件,没想到 Labview 一个东西全搞定了,连滤波函数和拟合曲线都可以即时生成,省大事了~

目前还在快速的熟悉 Protel 中,争取能够接手当前的 PCB 绘制工作,这样从软件到硬件都可以自己搞定了。

不过硬件大牛之间的对话,还有一些部分听不太懂。记住关键词,然后回来查资料来解决,下个月的这个时候和现在比,应该又是天壤之别了

--------------

Chito 早就说要升级 1.0.8 了,结果大部分精力都被吸引到硬件上去了,自觉这样不行,于是每天安排一点时间升级下 Chito,但是发现心情转换不过来,从硬件到 ruby 的跨度好大汗…… 现在每周专门拿出一两个晚上来折腾 Chito,效果不错~

这次主要升级一些留言中提到的功能,比如批量修改文章分类、Trackback、文章阅读计数、可以查看发表过评论的文章等等。另外,要把边栏项目基本缓存起来,文章和评论部分因为有相对时间可能有点麻烦,所以再说。之后把域名绑定完善下。

正好赶上 Rails 2.2 的发布,前两天看了看那新加进来的 I18n 模块,感觉很好用~ 既然 Rails 有内置的国际化模块了,我也争取把那 Gettext 丢掉,转到这个上面来。这貌似是个体力活,还好有自动转换脚本~

--------------

硬件和软件真是两种乐趣啊~

又犯了个愚蠢的错误

昨天给 Chito 加入了 Trackback 的功能,之后用他给本地的另一片文章发送 Trackback 做测试。

结果每次发送 Trackback 之后都是超时错误,但是 Trackback 又确实成功的发送了过去,比较奇怪

折腾了一个晚上,未果……最后到了锻炼的时间,出去活动的时候忽然顿悟,回来打开 lighttpd 的配置文件,果然发现:

...
"min-procs" => 1,
"max-procs" => 1,
...

囧,只开了一个服务器进程,自己把自己卡住了……

我的一个晚上啊……

初窥硬件的世界

前阵子学习了不少嵌入式 Linux 的知识,不过可惜目前的项目完全用不到。

只用到一块 Luminary 的小处理器,最大 50MHz 的速度,64KB 的 RAM,来驱动 CCD 和计算数据,一下子变成单片机的活了~

原来见都没见过的示波器、万用表、烙铁,这次竟然全都摸了一遍~

对于专业人士来讲,这个项目是个非常简单的工作,不过对我这个硬件白痴来说,基本上都是新鲜的东西,庆幸当初最先把那本《数字电路》的书啃完,让我没有多少理论上的障碍。

一个星期下来,除了自己焊制电路板,其他的都玩熟练了,收获相当的大。

当初买了本《嵌入式硬件设计》,第一次看的时候,大部分内容不知所云。现在再看,里面的内容简直就像为我设计的~

目前还缺乏一些电子学的知识,除了欧姆定律之外就不知道了,继续啃书~


一直都有一种局限感,不管是拿 Rails 做网站,还是写桌面应用程序,乃至学习 Linux 驱动的时候,心里一直在嘀咕:写这些东西就是我今后所期望的生活吗。

这次初窥了下硬件的世界,这种感觉终于消失了……

原来局限感是来自于没有联系。

希望有一天,我能够自己制作一个有趣的硬件,再为他写一个 Linux 驱动程序,然后再通过 GUI 前端跑在桌面上~