新一代的博客系统——Aluminum Blog System的开发史

发表于 2010-06-11 21:27:26

从前,很就很久以前,我觉得是时候在网上记录我的生活了,因此我选择做一个博客。鉴于我比较喜欢不自量力,就买了一个cn域名,zhangdifan.com.cn,一个100M的万网ASP空间,花了1元域名+120元空间钱。因此,我必须要开始写程序了——开始重复造轮子。

ASP嘛,没钱买数据库,当然要用Access数据库。因此,我就弄了个Access,想了想,抽象了一下数据结构,于是写出了下面这个数据库,一直沿用到现在:

CREATE TABLE `AccessLog` (
  `UserID` int(11) NOT NULL,
  `UserIP` text collate utf8_unicode_ci NOT NULL,
  `Time` text collate utf8_unicode_ci NOT NULL,
  `UserAgent` mediumtext collate utf8_unicode_ci NOT NULL,
  `Target` text collate utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='What did the user do?';



CREATE TABLE `Blog` (
  `ID` int(4) NOT NULL auto_increment,
  `Title` mediumtext collate utf8_bin NOT NULL,
  `Content` longtext collate utf8_bin NOT NULL,
  `Posttime` text collate utf8_bin NOT NULL,
  `Visible` tinyint(1) NOT NULL,
  `AccessControl` int(8) NOT NULL,
  PRIMARY KEY  (`ID`),
  FULLTEXT KEY `Title` (`Title`,`Content`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;



CREATE TABLE `Comments` (
  `CommentID` int(11) NOT NULL auto_increment,
  `PublisherName` text collate utf8_unicode_ci NOT NULL,
  `PublisherEMail` text collate utf8_unicode_ci NOT NULL,
  `PublisherSite` mediumtext collate utf8_unicode_ci NOT NULL,
  `PublisherIP` text collate utf8_unicode_ci NOT NULL,
  `PublisherUA` mediumtext collate utf8_unicode_ci NOT NULL,
  `CommentBlogID` int(11) NOT NULL,
  `CommentTime` text collate utf8_unicode_ci NOT NULL,
  `CommentTitle` mediumtext collate utf8_unicode_ci NOT NULL,
  `CommentContent` longtext collate utf8_unicode_ci NOT NULL,
  `CommentVisibility` int(11) NOT NULL,
  PRIMARY KEY  (`CommentID`),
  FULLTEXT KEY `CommentContent` (`CommentContent`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



CREATE TABLE `Users` (
  `UserID` int(11) NOT NULL auto_increment,
  `UserName` text collate utf8_unicode_ci NOT NULL,
  `Passphrase` text collate utf8_unicode_ci NOT NULL,
  `AccessControl` int(11) NOT NULL,
  PRIMARY KEY  (`UserID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

幸亏当年用的是utf8,否则现在该会多痛苦呢?

由于有好多年的VB开发历史,因此,写这个东西并不很困难,大概花了一周的时间,我就写出了第一个版本。由于我是手机党,因此顺便就开发出来了手机版的编写界面。当时,叫做mpost.asp,后来,叫mpost.php,现在,没了。当年有一个致命问题,第一版的时候我还做个用户鉴权,后来就懒了,被人插进去了两篇文章。幸而后台有记录……我知道是谁。

终于,一年到头了。我饱受了ASP的折磨,最终决定转向PHP。居然找到了asp2php,二话不说,转了,重新写了数据库部分,用了mysql。然后,Aluminum Blog,当时还没有这个名字,就成了PHP版本。ASP版本,我记得还有最后一个的备份,那时候大概是r20左右,域名也更改到了difan.org.cn

后来,网页重新设计了几次,最后终于成了这个样子。用了不少css3,导致IE看YTHY。

有几次,评论被spam给爆掉了,我就开启了recaptcha,当时大概是第一次使用外来代码吧。上编辑器比这个要晚一些。编辑器,我选择了开源的FCK Editor,后来同步了一下,升级到了CKEditor,感觉很好的一个编辑器。smiley

将这个系统开源掉,其实是因为我觉得这个东西开源不开源都差不多,我不怕我写的代码不好,而且需要个subversion来管理,因此就从Google Code上开了这个项目。开源了,更加可以鞭策自己,也可以出去自豪的说,我有一个开源项目,一个博客系统!

记得当时为了少写代码,开始的时候,我用了iframe,后来,因为google搜到的结果实在没法看,就重构了代码。用了BlogMain.html/index.php这个奇怪的东西,因此很长一段时间看到的URL都是BlogMain.html/?a=c&bid=99这样子的。后来,重构代码,用上了Template,代码立即清爽了很多。后来,用了Netbeans格式化了代码,代码更好看了,更重要的是,我更容易掌握项目的情况了。

后来,随着知识的不断增加,也随着不断的阅读php项目,我重构了很多次项目。为了SEO,我开始研究rewrite,开始写各种各样的奇怪规则,甚至,最后,写了一个后台,到现在,开放了一个demo平台,专门让大家测试着玩玩。

现在,Aluminum Blog System已不是一个个人维护的单纯为写博客而使用的博客系统了,它已经初具规模。该有的,不太少。Tag等功能,我真的不明白,所以……没有实现。

Aluminum Blog的以后呢?以后还很远很远,谁知道呢?最近,我加入了Draft功能,加入了修改文章功能,修复了好多好多的bug……一个适合懒人使用的博客系统已经将要真正的成形了。同时,在这个项目的维护过程中,我也学到了很多软件工程的知识……总之,我还是受益匪浅的。

写在Aluminum Blog将推出0.60 stable, r88时。

评论
留言