新版本的 tublog 差不多完工了,原本我还想平稳过渡,不过刚刚一看一共才11篇文章和两条评论,所以……所以我就偷懒一点,直接删了没用的东西升级就好了……
这个暑假有点儿长~打算着重研究一下 web 开发相关的技术,目前已锁定了几个重点关注对象: Python 的 django, zope 和 PHP 的 babel, xoops。Python 方面是要学习如何用主流框架进行开发,而 PHP 方面则是研究某个具体项目的源码,看看这些开发者怎么处理相关问题。
同时要熟悉的技术还有 javascript(主要是 jQuery),mysql(学会操作及常见的SQL),CSS(我对页面设计很不在行),这些我就不打算深入了,知道怎么用就行。
貌似两个月也不长,不知道能否在一个月内把 django 整个拿下,而 zope,路漫漫其修远兮啊……
BTW: CSDN 的外包看起来是个赚外快的好地方。
首先是新的 sidebar。原先的 sidebar 几乎是硬编码进去的,扩展起来不方便——我在打算增加分类显示才发现这一点——要同时改动几个地方,违背了 DRY 的原则。新的 sidebar 采用动态加载模块的方式,先读取数据库中的 EnabledWidget,根据模块名和类名在 widgets 目录查找相应的类,传入配置信息创建类实例。Widget 必须继承 WidgetBase 这个基类并实现 render() 方法和 configure() 方法,配置信息以文本的形式存入数据库,widget 编写者可以根据自己的喜好使用不同的文本格式(用 JSON 会很不错,用 limodou 的 dict4ini 也可以)来存储配置。
然后是自定义主题的支持。当初图省事直接从 wordpress 找了个现成的模板来用,结果现在想换主题很麻烦。实现起来应该不难,设置一个全局的 current_theme,view 函数在指定模板时用 response.view = 'themes/%s/abc.html' 即可,所有的主题都必须提供指定的模板文件,可以使用指定的变量(在 view 中以 dict 返回)。
if your_status in [感到无聊, 排队, 坐车, etc]:
玩玩游戏固然是不错的选择,但如果有点东西可以读的话就更好了,打发时间之余还能有所收获。今晚我整理了一堆文章,大部分来自于技术牛人的 Blog,由于是英文的,读完一篇至少要半小时吧,just enjoy it.
- A programmer's view of the Universe, part 2
- The Universal Design Pattern
- Programming's Dirtiest Little Secret
- Done, and Gets Things Smart
- Dynamic Languages Strike Back
- Code's Worst Enemy
- Rich Programmer Food
- The Next Big Language
- Software Needs Philosophers
- Math For Programmers
- Structure and Interpretation of Computer Programs
- Lisp Envy
- Why I am a Python Advocate
- Logic Matters
- Where Zope Leads, Python Follows
- Dreaming In Code
- RegExpInPython
- MetaClassInPython
- Using Mix-ins with Python
- Why Haskell matters
- Paul Graham: Essays
BTW: 我心血来潮想找个FP语言来学学,初步考察认为 Haskell 会是个不错的选择 (虽然我没能第一眼看懂那两行据说没学过也能看懂的代码,反而觉得同时列出的 C 代码很亲切 -______-)。
BTW Again: 原来不是所有语言都像 Python 那样有个标准实现的……
Updated:剩下的可能要等到6月之后才继续了,刚才发现 sidebar 的代码相当的 dirty,清理起来会比较费时间……这段时间要读一读其他 GAE Blog 的代码,还有就是要熟悉 Python 的各种语言特性的使用。笔记会整理在这里。
最新的 r37 增加了 metaWeblog API 的支持,不过尚未完成,只是把骨架代码写好了……XMLRPC 的实现参考了 pyweblog 的代码(dispatcher 的写法特别精巧,处理请求时基本上只要一行 response = dispatcher._marshaled_dispatch(request.body),剩下的就和写 URL 映射一样轻松)。
接下来只要慢慢实现各个API就可以了。BTW:我一直在犹豫到底用 tag 还是传统的分类好……