给MoinMoin写插件

1. 使用 MoinMoin

前些日子,我写了一篇使用MoinMoin作为个人KMS 大赞MoinMoin的各种好处。MoinMoin的其中一个好处是基于GPL的开源, 我们可以方便的给MoinMoin撰写自己的插件(当然也可以去官方的wiki上获取大量现成插件)。

我在使用MoinMoin过程中,有一个急迫需要的功能:

保存一篇网页时候,要将里面的图片保存到本地,而不是使用外链接方式保存, 因为由于各种不可预测的原因,原始图片数据很有可能丢失或者无法连接。

这个功能对于将Wiki产品转化为KMS应用非常需要,可惜MoinMoin官方并没有提供, 我也没在MoinMoin的开发者插件库中找到类似功能,就自己写了一个插件image2attach。

现在我分享一下如何写MoinMoin插件,技术大牛可以直接移步官方开发文档, 我这里只是写一些简单的内容,帮助像我一样的同学。

以下内容需要Python编程基础~

2. MoinMoin 系统结构

MoinMoin的UML图:

MoinMoin

3. MoinMoin 常用对象

3.1. request

这个request和普通jsp/asp中request很类似(实际上这个request就是继承 werkzeug的Request)。

除了正常的web request功能,Moin的request还带了Wiki自身的信息 ...

more ...

再读《重构》

Martin Fowler 的「重构-改善既有代码的设计」这本书,是我大学老师推荐给我的。 当时我在撰写代码过程中,发现当代码量到某个数量级时候(1000+行), 就会逐渐失去对代码的控制能力。 昆哥推荐了两本书「UML 和模式应用」和「重构」这本书。

Refactory

这本书是2年前购买的,可惜以我当时的代码感知和撰写能力,看起来颇为吃力。 半途就看得云里雾里而中断了。最近我又重新拾起这本书, 将书中所写的境况与我这两年多来遇到的问题相互印证,才感受到这本经典的力量。

Martin 其人:

ThoughtWorks 的首席科学家,当今世界软件开发领域最具影响力的五位大师之一。 他在 UML 推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被称为软件开发的教父。

大学时候有段时间我对 Martin 的敏捷非常痴迷。现在对技术的选择没以前那么冲动了, 但是毫不妨碍我对 Martin 的敬仰之情。

1. 重构原则

1.1. 重构的定义

对软件内部结构的一种调整,目的是在不改变"软件之可察行为 ...

more ...

baidu ting下载音乐脚本

度娘终于干了一件好事,Baidu Ting上线了, 正版音乐免费下载,类似于谷歌音乐。 关于音乐版权和免费的问题, 有很多问题需要取讨论, 比如说这种商业模式是否对传统唱片业产生冲击又或是有积极影响? 作为普通消费者,暂时不用考虑这些问题,先享受这些服务好了。

Baidu Ting的音乐质量是128KBps,音质算好,里面的idv3信息也勉强可以,有:

  • 歌名
  • 歌手
  • 部分专辑名(偶尔也出现"201-8月新歌快递"这种比较山寨的字)
  • 部分唱片封面图片

虽然比不上谷歌音乐连歌曲风格都准备好了,但是比杂乱无章的那些音乐mp3要好太多了。

自动下载脚本tingdownload

早上下了几首音乐,就顺手写了一个脚本,用来批量从Badu Ting下载音乐。

代码在github-tingdownload

需要

  • Python 2 (仅在Python2.7下测试)
  • BeautifulSoup(已包含在目录下)
  • simplejson(已包含在目录下)
  • 一点点Python基础
  • Linux/Windows(我在Linux没问题,Windows应该也可以)

使用方法

在Shell ...

more ...

MoinMoin plugin: image2attach

MoinMoin

What's this

Image2Attach is a extension for MoinMoin. It can create a page action to save images from web to page's attachments.

Requirment

  • MoinMoin 1.9 (I only test in this version.)

Install

  • copy action/Image2Attach.py to data/plugin/action/
  • restart python server

Usage

Go into a ...

more ...

更换VPS

Log4D挂了整整一天,原因是因为VPS扩容导致系统无法启动。

我使用的VPS是PhotonVPS的WARP.25 套餐。买时候套餐里面硬盘空间是2个G,前几天朋友告诉我新套餐变成了10G。我就发了ticket给客服,他们很快答应帮我升级VPS。我就将数据备份出来,静候升 级。

等了半天没反应,又咨询过后才知道新加入的硬盘空间需要重装系统才能启用。好吧,正好我想将CentOS 6换成Arch(Arch用的太顺手了)。

吭次吭次一阵捣鼓(其实重装系统就按一个按钮而已 ^_^),Arch装好了,然后发现系统无法启动了,悲剧鸟。

继续咨询客服,恩,这里插播一下,PhotonVPS的客服回复都是英文,但是可以发送中文过去,貌似有翻译助阵(不过英文文档看多了,简单的也能来两句,hiahi a)。客服很快确认,Arch在目前VPS无法正常使用,坑爹阿。

我继续捣鼓,尝试Ubunt/Cent OS,发现都无法启动vps(症状是启动一下下之后立马又变成离线状态)。

继续找客服,最后客服给我重新分配了vps和ip,问题解决。

然我我又开始吭次吭次的装软件,最近系统装多了 ...

more ...

Arch Linux装机软件

重要通知:Log4D的域名由 http://dddspace.com 迁移到 http://log4d.com

订阅地址现在改为 http://log4d.com/feedhttp://feeds.feedburner.com/dddspace 。(FeedBurner的地址未发生变化)

http://feed.dddspace.com 弃用

请订阅我博客的朋友更新一下订阅地址。

前天将arch32位换成64位的系统,想充分利用4G内存。 在mountpoint时候,我mount了 /root/home 盘,然后arch问需要 (re)create 分区么。 选项有 YesNo ,看上去不选 No 就进行不下去,我就点了一下。

结果就悲剧了有没有!!!!!!!!!

home 盘有150G左右有木有 ...

more ...

《卓有成效的程序员》读后感

卓有成效的程序员

《卓有成效的程序员》,上次在京东半价买了这本书,一直没来得及看, 前几周在地铁上把这本书看完了。

说实话,书里面的观点我很赞同,但是没有觉得惊艳, 因为我本身已经在尝试实践这些观点。

书中的这些观点有如下:

  • 加速法则:减少输入次数,用快捷键/方法启用常用操作
  • 专注法则:集中注意力处理工作,避免额外的信息干扰
  • 自动化法则:贯彻"懒"的原则,减少重复劳动
  • 规范性法则:DRY
  • 书中第二部分是撰写代码时候的一些意识,这些我就不复述了, 是比较常见的软件工程思想。这些思想由ThoughWorks的咨询师娓娓道来也是值得一看的。

我觉得这本书在学完第一门语言/数据结构/操作系统之后就可以开始阅读。 也就是学生在大三-大四阶段阅读,会对代码撰写规范和风格形成大有帮助。

more ...

dbevent2gc v0.1发布

重要通知:Log4D的域名由 http://dddspace.com 迁移到 http://log4d.com

订阅地址现在改为 http://log4d.com/feedhttp://feeds.feedburner.com/dddspace 。(FeedBurner的地址未发生变化)

http://feed.dddspace.com 弃用

请订阅我博客的朋友更新一下订阅地址。

dbevent2gc

关于dbevent2gc

A application to sync douban.com events to Google Calendar.

dbevent2gc是一个GAE应用,它将豆瓣同城的活动同步到Google Calendar的日历, 允许用户订阅活动而知道最近几周周边将发生活动。

dbevent2gc是基于Python/web.py/mako/iCalendar的,源代码地址在 https://github ...

more ...

Arch Linux下小红点中键

重要通知:Log4D的域名由 http://dddspace.com 迁移到 http://log4d.com 。 订阅地址现在改为 http://log4d.com/feedhttp://feeds.feedburner.com/dddspace 。(FeedBurner的地址未发生变化) 请订阅我博客的朋友更新一下订阅地址。

关于Arch

Arch是一款优秀的Linux发行版,使用它可以快速的学习Linux操作技巧。 Arch崇尚的原则是"保持简单,且一目了然",这也是我崇尚的风格。

保持简单的同时也会给我带来一些小小的困扰,比如配置一下Thinkpad上面的小红帽 中键都需要设定Xorg。Arch直接向我们展示了Linux美妙的侗体,没有任何遮掩。

好在Arch有最完善的官方Wiki, Thinkpad爱好者也组建了一个专门的 ThinkWiki来为大家答疑解惑。 特别是官方Wiki,中文化做的非常好,是我见过最完善的中文linux wiki之一。

小红帽的中键

罗嗦完了,进入正题,我的环境是

  • arch(Linux version ...
more ...

jQuery.html()在IE下面错误解决办法

今天遇到一个jQuery的.html()设定错误问题,FF和Chrome下面都能够正常工作,而IE下面却失败。

检查之后,我把问题定性到jQuery.html(html)设定在IE下有问题。当设定html文本中含有空行、空格、Tab时候,会出现异常中断,导致html ()设定失败,但是又不会引发js错误。

狗日的IE!

下文是Google来的参考文章:使用 jQuery .html() 得到的string时, 在IE中出现错误的解决方法


使用 jQuery 的 .html() 函数( 使用 .text() 也类似 )得到元素内的值使用时,在IE6中出错,FireFox 中正常。

基本代码如下:

<ul class="demo">
    <li>easeInQuad</li>
    <li>easeOutQuad</li>
    <li>easeInOutQuad</li ...
more ...