WakiBlog 2.1上线测试

昨天中秋节大家过得好么~收到月饼了么~送大家一张照片,昨天晚上拍到的:

除了裁了一下之外,没有任何PS哦~拍的时候,哈尔滨上空有些薄云,以往拍的都是清晰的月亮,那么今年索性拍一个朦胧一些的吧,呵呵。

话说,今天早晨早早起来,更新数据库,把最近一直在写的Waki-Blog 2.1传上来了。目前只是一个概念性的预览,更多功能其实还在制作中。
2.1版本是WakiBlog进入2.0版本以来,变动最大的一个版本,也是开发周期最长的一个版本,重新写了模板引擎,以便兼容更高版本的PHP,也因此重新制作了前后台所有的模板。
等2.1的功能尚未全部完成,所以更新列表、重大改动等等的,要等2.1基本完成之后才写上来。
目前,因为众所周知的原因,我不得不暂时关闭游客的留言和评论功能,WakiAAS的全部过滤也已经打开了。大家想要给我留言或者进行评论,请先注册一下(跟简单,只要5秒钟哦!),之后就能发出来了。最近经常受到一些骚扰性的Trackback,总发些没意义的随机字符过来,所以针对Trackback的过滤处理也已经都打开了,希望能有些改观吧。

Waki-Blog v2.1顺利进行中

开学一周了,都没写Blog。实际上这周基本上都在偷懒中度过的,看看动画、玩玩游戏、聊聊天。连预定翻译的小说和动画都翘了,一直到周五觉得心里实在是过意不去才把「ぼくらの」第20话翻译出来。
从昨天开始重新振作起来开始继续写上个月开的新坑Waki-Blog v2.1,到今天上午为止进度还不错。现在的主要工作就是把之前的模板移植到新的模板系统。前台已经移植完了,后台的模板本来就是计划利用这个机会重新做的,所以现在正在全部推倒(推倒……)重来。
发一张后台首页的预览图,猛击可放大到100%:
Image
新版本WakiBlog的后台全部功能都将重新安排,打破原有的框架,更加人性化、更加便利。
新版本的开发计划暂时如下:
【系统】
+新的模板系统zTPL
*模板解析替换方式改为数组
*当分页只有一页的时候,自动隐藏分页栏
*重新定义Tags概念——话题
*修改反SPAM系统,对应融入用户注册后的评论系统。加入新规则,成功发布过n篇回应的用户可以跳过反SPAM系统直接发布
*友情链接独立列出

【前台】
+前台留言与评论加入用户系统(Ajax)
+允许注册用户发布回应后编辑自己的回应
+内建搜索功能
-移除最近状态跑马灯展示功能

【后台】
+后台允许按照TAGS列出Blog
+留言、TB管理合并,添加查看选项,可以根据条件(关键字、回应种类、状态)列出指定条件的回应
+修改设置方式,变为数组形式
*自由Tags
*重新设计操作界面

开始写新的模板引擎

因为一直没有办法解决SuperTPL在新版本PHP下的兼容性问题,所以尽管不愿意,只好开始写新的模板引擎了。新的模板引擎将包含SuperTPL的一些特性,包括:

  • 编译型模板,生成编译文件
  • 变量调节器
  • 支持循环
  • if判断

新的模板引擎将具有以下特性:

  • 不采用面向对象编程的方式,使用比SuperTPL更加简单的处理方式,速度更快
  • 对Javascript更好的支持

因为是为了Waki-Blog量身定做的模板引擎,所以功能简单,执行高效。新版本的模板引擎将使用在Waki-Blog的下一个版本,也就是2.1版本中。同时还将重新制作前后台的模板。请期待。

supertpl终于与PHP 5.2.2不兼容了(已更新)

更新:鉴于这篇文章在google上有很高的排名,因此我觉得有必要在这里更正一下。本文中提到的问题源于PHP5.2.2的一个字符串bug,现在新版本PHP中该bug已经修正,可以正常运行龙卫国大大的模板引擎了。

前几天终于腾出时间在笔记本上装好了apache、php、mysql,都是现下载的最新版本。把以前的数据从以前的硬盘上转移过来之后,发现wakiblog运行起来是白屏。把error_reporting(0);注释掉之后,发现错误提示:

Parse error: syntax error, unexpected T_LNUMBER, expecting ']' in D:webzblogdata       plcompileSimpleBlog_index.htmleacf7d3b.php on line 25

SimpleBlog_index.htmleacf7d3b.php是supertpl编译的模板文件,按理说除非模板里写错了,编译文件是不会出错的,而放假回家之后我一直忙着装NAS,压根就没动模板文件,怎么这就出错了呢……打开那个出错的文件之后吃了一惊:

$$tpl->all[''blog'']->num = 0 ;
$$tpl->all[''blog'']->key = NULL;
$$tpl->all[''blog'']->val = NULL;
$$tpl->all[''blog'']->first = true;
$$tpl->all[''blog'']->last = false;
$$tpl->all[''blog'']->notnull = true;
$$tpl->all[''blog'']_rownum = 1 ;

这种东西不必看就知道一定是错的,什么乱七八糟的变量符号和单引号。从虚拟主机上下载来了正常的编译文件一看,果然有问题。

$blog->num = 0 ;
$blog->key = NULL;
$blog->val = NULL;
$blog->first = true;
$blog->last = false;
$blog->notnull = true;
$blog_rownum = 1 ;

仔细想想,程序回家之后连碰都没碰过,自然不可能放着放着它自个就出错了。apache和php都装过多少次了,每次安装httpd.conf和php.ini该改哪些地方背都背下来了,也不像是会出错的地方,唯一剩下值得怀疑的地方就是兼容了。我在学校的时候PHP用的是5.2.0,这次下载的版本是5.2.3,换回5.2.0,删除错误的编译文件,重新编译果然没问题了。我不甘心,又下来了5.2.1和5.2.2两个版本,前者没有问题,后者出现同样的错误。到这里就能证实了,supertpl和php5.2.2及以后的版本都不兼容。

现WakiBlog中使用的supertpl是经过我自己精简的版本,除了留下核心解析部分一行没动以外,外围的功能都是我自己改的(被我删得只剩下102行了,里面还加了不少自己的代码),为了寻找问题根源,我在5.2.3环境下运行了一下supertpl包里面自带的演示程序,出错依旧。

supertpl是我很爱用的一个模板引擎,以前做Zarticle的时候,开始用的smarty,自从接触到supertpl之后,立刻被它的简洁、高效所吸引,因此更换了Zarticle的模板引擎。后来写的zDoc和WakiBlog也全都用了supertpl。Supertpl是PHP4时代的程序,这也是PHP发展到5.0之后很长一段时间我还在使用PHP4写东西的原因。后来转换到PHP5之后,supertpl依然工作良好,但这种局面到了5.2.2似乎也终于要结束了。

Waki-Blog 2.0.3 a7更新

今天早晨网站Blog系统升级倒了2.0.3 a7,新版本对以下方面进行了修改。

  • 将程序的一些配置参数改成文本缓存+数据库存储方式,因此程序也增加了一个数据表用于存储设置的项目与值。这么做主要是为了增强程序未来的扩展性。目前,表情、关键字黑名单、程序主配置项目、WakiAAS反 SPAM系统的配置参数等,已经全部存储于数据库。每次更改设置之后,程序会将数据库中的参数更新,并生成缓存。因此以前的四个配置文件被合并为一个主配置缓存文件,减少了三次include,而且前台没有增加新的query。这次配置文件存储方式的更改对前台是完全透明的,程序生成的配置缓存与原来的配置文件格式完全相同。
  • 统一了缓存文件的格式。
  • 修正了后台BBCode编辑器部分参数不能正确传递,导致前台BBCode解析失效的问题。
  • 因为TinyMCE与后台的自动保存系统配合问题,取消了针对TinyMCE的自动保存支持。
  • 改善了对部分低版本PHP的兼容性。
  • 使用新的安全过滤方法,不再单独依赖PHP的MagicQuoteGPC。
  • 进一步改进函数库文件的结构,尽量做到include数和函数库文件大小的平衡。
  • 对前台UI进行了微调。
  • 完全拒绝搜索引擎对移动版的访问,发现搜索引擎试图访问移动版的时候直接输出HTTP 403头。
  • 修正了自动删除未审核回应时会出现数据库链接错误的Bug。
  • 微调了后台部分数据库查询,使之更加高效。
  • 调整了后台编辑Blog时的权限。就算拥有编辑他人Blog的权限,也无法编辑他人加密的日志,只能将其删除,以此加强内容保护。

Waki-Blog更新至2.0.3 a6

升级例行通知-w-

a6版本没有新增加的功能,代码版本更新更新了两次,0526和0530,共进行了如下改动:

  1. 修正了显示”(以上为摘要,请阅读全文)”这句话的时候,字数统计的Bug,即字数不到自动分割,却显示提示阅读全文。
  2. 修正了通过XMLRPC发布文章时英文引号显示加斜线的Bug。
  3. 修正了编辑Blog时,删除全部Tag是会出现SQL查询错误的Bug。
  4. 网摘服务操作超时或不可用时的,错误信息改为更为友好的中文提示。
  5. 修正了后台修改Tag名称时没有选确认复选框会提示404的Bug。
  6. 后台Tags显示方式全部改为汉字,与通过XMLRPC提交的数据格式统一。
  7. 前台界面进行若干修正,包括将”阅读”链接改为”阅读全文”等细节调整。
  8. 修正了若干Javascript的错误。

此外,现在XMLRPC还存在对部分PHP(或MySQL)版本的兼容性问题(主要是PHP4+MySQL3组合的情况下),体现为在部分情况下会出现SQL查询错误(在PHP5+MySQL5组合下没有问题),现在正在进行调整,将争取在下个版本中修正。

网摘功能上线测试

今天新添加了一个功能——简易网摘。虽然不如Zhuaxia等等的聚合器来的好,但是这样分享自己订阅的网站无疑是非常方便快捷有效率的。

至 于原理,就是利用Google Reader的Tags的Public Page功能,可以将最新的Feed输出,我又通过Feedburner烧制了一遍,通过PHP的XML解析,获得要取得的链接、题目、来源、日期等信 息,呈现给用户。昨天晚上设计的时候,本来打算通过Feedsky来烧制的,但是奇怪的是Feedsky却一直没有更新,怀疑是不是在抓取Google Reader那边的Feed的时候撞墙了,暂时只好用Feedburner了。现在设计的网摘功能还只支持Google Reader的Feed,其他提供商的Feed还没有提供支持。不过暂时来说,支持Google Reader应该够了。

事实上,这个功能是昨天晚上突发奇想开始写的。刚开始写的时候,被设计成了读取OPML,自动抓取OPML中列出来的Feed。开始简单测试的时候还好,但是后来一看,将近30个Feed,各不相同、五花八门,兼容性成了大问题,如果挨个考虑支持所有的Feed那不是没完没了了么。而且每次更新缓存的时候,要花好几分钟来挨个抓取每个Feed,估计没人等的了这么长的时间。如果要想获得更新效率和等待时间的兼顾,那就要设计复杂的用户访问驱动分批更新系统,如果这样的话还需要增加至少一个数据库表,工程量太大,又不是专门的聚合器,用不着这么大阵仗。

所以……抓取的重任便光荣地交给了Google- -||今天中午上课回来之后,稍微改动了一下程序,改成Google聚合->Feedburner再烧制->抓取的流程。这也就是这个功能昨天就写好了,等到今天才发布的原因。

新功能开发中!

现在前台有新功能正在开发中!实际上昨天晚上已经写好了第一个测试版本,现在新版本已经上线了,不过到目前为止还有一些问题,入口还没有公开。等新功能彻底完成之后,入口马上就会公开哦!

新增加的功能是合烧分享。会列出我感兴趣的一系列Feeds,到时候访问这里的人就能看到我正在阅读哪些人的Blog、这些Blog最近的更新了。

Waki-Blog 2.0.3 a2上线

今天中午把服务器上的Waki-Blog升级到了2.0.3 a2。

a2的改动主要在:

  1. 在后台集成HTML编辑器(TintMCE),可以编辑通过XMLRPC发布的HTML文章。后台可以指定默认的编辑器,在撰写Blog页面也可以手动临时切换编辑器。
  2. 调整了Tag云的排序依据及颜色、字体算法,现在的排列方法是按照Tag下文章数的多少来决定字体和颜色,文章数越多的Tag(即热门的Tag)的字体越大、颜色越深,文章数越少的Tag字体越小、颜色越淡。并且解决了IE下浏览的兼容性问题。
  3. 调整前台的Javascript和CSS,更好地兼容HTML格式的文章。
  4. 调整留言部分的Ajax和服务器端代码,实现HTML和PHP的彻底分离。PHP只负责以XML格式送出原始数据,全部HTML都由Javascript进行生成。
  5. 因为同时对bbcode和HTML进行支持,通过数据库记录文章使用HTML还是bbcode。只对使用bbcode的文章进行bbcode解析,可以说是提高了效率吧。同时在后台进行编辑的时候,程序将自动选择对应的编辑器。
  6. 改善了撰写和编辑Blog页面的操作性。
  7. 修正了后台调整数据库后若干个Bug,及若干细节上的调整,不一一罗列。

最近精力集中在调整程序的表现上,全面整理模板里面的代码。此外,一个好消息是2.0.3将会是一个放出源代码的版本。