blog mail me! feed

Archive for July, 2008

207, 208, 209互通.

感谢happydog的帮助, 在设置静态路由无效后, 改为手动设定ARP, 将对应IP绑定为网关MAC, 终于能ping通彼此了.
telnet 80端口, 一切正常.

P.S. 这次发烧这么一折腾, 体重又烧脱1kg.

淅沥.

夜雨落得总是很哀怨, 听着很遥远的沉闷, 把金属都敲打得噼噼啪啪的作响.
然后看着一点灯光照着小方块里的我, 对着风扇死命的吹, 尽管也许整个世界都凉下来了.

嗓子很痛, 喝着纯净的液体,
散漫的发现最近的几个晚上都只是愿意闲聊, 遐想和乱逛,
最后裹着淡紫色的床单, 迷迷糊糊的睡到天亮, 继续不清醒的做梦.

淅淅沥沥的雨夜, 满地散落的饮料瓶子, 和杂乱的书桌.

云端, 云岸.

今天午后的云很漂亮.
就是这样.

从小区楼顶眺望天空.


两个柱子, 言语匮乏中.


楼顶的一藤胖冬瓜.

最轻量的模板实现, Here Document

今天去Google了下Smarty, 发现对其批评甚多.
比如认为其太不轻量, 有100k+的核心库, 而其编译生成的缓存又过于臃肿.
很多人拿Smarty和PHPLIB对比, 后者是一个只有一个类的10+k的模板引擎, 不过貌似在PHP4时代就停止开发了.

后来看到人说phpwind是用的heredoc实现的模板,
就去搜了下heredoc, 其实在php manual里也有:

print <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;

这里的END是结束符, 当然你可以用其他的来代替, 比如phpwind使用的是EOT.
以上代码就实现了代码与变量的准分离, 而且没有用到破坏布局和显示效果的引号.

无疑这样的方式来实现”模板”比使用Smarty更轻量,
也比在HTML里嵌入大量的<? echo $variable ?>更直观简洁.

更多的一些细节可以看这里: http://www.tsingfeng.com/show-667-1.html

莫非树状结构回复只能通过递归实现?

很早前的众多论坛都是树状的, 比如古老的DS, 老旧的新浪论坛,
到现在树状结构更多的被用于评论的再评论/回复中, 比如slashdot, digg.

以前一直没想明白树状到底是怎么展开的,
我的脑子里大概就两种方法:

  1. 每个reply都赋予同样的root_id, 但可能有不同的father_id. 读取所有特定root_id的reply, 再依照father_id来建立树状结构. 好处是可以一次性的从数据库中取出结果, 坏处是树状结构复杂时, 对树状结构的重建需要消耗不少时间. 当然, 一个好的缓存结构可以避免对已经重建的结构多次重建.
  2. 仅保留father_id, father_id=0的可以认为是主贴, 压入栈中, 然后再根据reply_id递归逐级展开帖子. 好处是逻辑和实现非常简单, 坏处是数次的数据库查询, 有连接池时固然可以减少一定的数据库负担, 但大量频繁的数据对数据库还是考验.

无论哪种看来, 树状结构和平板结构比起来, 为了更多的逻辑归属和指向性, 要付出更多的资源消耗.
除非, 还有更好的算法?

瓢泼序章.

最近的几次, 每每我一回华阳,
总会天色骤变, 应验了数次, 屡试不爽.

今天在摇晃的504上摇晃到了目的地,
竟然就在车拐弯进站的时候, 开始飘雨了.

(于是这让我哀伤的想起每次出门, 大抵到达一处, 便见得一出天色渐渐阴沉下来, 最后不免瓢泼作雨)

当然这天气实在是闷热的太难受, 哪怕是倾盆如柱, 加上狂风几个时辰我也不会说半个不字.

车上还在想 类Rapidshare应用的问题, 回到家顺便搜了搜nginx防盗链的东西,
就找到了这个好东西: NginxHttpAccessKeyModule, 对于某文件, 必须根据请求的用户IP生成特定的signature才能正常下载.

files 目录下有一 foo.zip, 则必须请求 http://domain/files/foo.zip?key=09093abeac094 才能正常下载文件, 而key值由salt和用户的remote_addr的hash值决定(SHA1或MD5).

P.S. 据说这玩意儿现在也可以防迅雷的盗链了,
由此看来, 用nginx来做 类rapidshare 的文件服务器也不是不可以的.

闷热, 却无从逃离.

从梦里醒来, 推开房门, 发现还是融在这个闷热的世界里,
夏天应该有的样子, 以及附和着的乱七八糟的头发.

和着音乐的节奏, 感觉着汗珠的滚落,
天空却还是低沉沉的压着,
实际上昨天洒过几点细雨, 地面还来不及沾湿就匆匆褪去, 又显出阳光漫射的影子.

难得, 闷热的天气, 感觉自己比前几个假期更平静,
走在路上, 终于满脑子都塞满了代码,
这总让我觉得有很多事情可以做, lovely feeling.

P.S. 最近栋力博客的评论提交变得异常的缓慢, 几乎每次都需要~1min(甚至更长);
到底是2.6RC的内核移植到wpmu的问题, 还是打开了Akismet ?

* EDIT *
调试确认是默认给新blog用户打开了新评论邮件通知引起的问题,
暂时屏蔽了邮件通知的代码.

如此有形的U盘

null

嗯, 看起来真像暴力摧残的垃圾传输线, 实际上是一个2GB的U盘;
适合装13人士随身携带.

最大的缺陷是容易被清洁大妈, 或者任何无法容忍电子垃圾的路过人士处理掉.
或者某天自己不清醒也就扔垃圾桶了.

当然对应的好处是如果不慎遗失, 估计也没几个人会把它当U盘看.

P.S. 下面的购买链接的那家 Fred & Friends 家的东西都是非常有型的玩意儿.

[ 来源 - 有购买欲望请猛击这里 ]

Project Babel还有这么雷的设计…

不经意看了看apache目录下的.htaccess文件, 居然有16k, 大概接近300条RewriteRule,
感觉是完全没有利用好正则.

nexus的重写规则被写在了最后, 可怜的nexus, 为了处理URL重写, 已经执行了300次正则匹配了,
其实很多的规则都可以合并和简化, 感觉现在这样, 靠缓存优化出来的性能, 被重写就吞噬了不少.

P.S.  Babel也是用echo控制的所有html的输出而不是用模板引擎或者类似ipb那样的模板.
想了下, 不用Smarty, 用稍微优化下的分离view, 用echo来控制变量输出还是不错.

漂泊.

把该打包的东西打包了再解包, SQL导出了再导入, 升级最近的wordpress2.6, 终于完成了又一次搬迁工作.
在此之前总不免发生点很蠢的事情, 比如因为PayPal帐号的一点问题, 一直没法在GoDaddy顺利完成付款, 于是鬼迷心窍跑回Dreamhost看看, 发现域名注册居然正好可以送一个, 就立马注册了.

注册了才发现该死的域名没法管理, 最多改改WHOIS信息, 只好再到PayPal把帐号整顿完毕, 到GoDaddy搬离了域名迁移, 付款完毕, 无数的推荐广告自动忽略后, 终于看到完成界面了.

还没来得及设置A记录, 一封邮件到来: 您的域名太新, 60天后才能办理迁移手续.
得, 之前的2个月就只好看着这只战栗的蛤蟆自个儿战栗了.

anyway, 又是一次乔迁了, 外边的阳光和云朵都很好.

P.S. 60天后才会生效的域名是 www.tremblefrog.org