MoinMoin Wiki 转换 Text 脚本

我使用 MoinMoin 作为我的 KMS,具体使用方式可以参考 [使用MoinMoin作为个人KMS][moin-kms]。另外,我将 MoinMoin 的 data 目录链接到 Dropbox 同步目录下面,从而可以备份并查看我的知识库。 我想同步阅读 KMS 数据 想在移动设备阅读 KMS 数据时,我遇到一个麻烦,MoinMoin 使用文件来保存 wiki 数据, 比如「28个Unix.Linux的命令行神器」这篇 wiki 目录在 data/28(e4b8aa)Unix(2e)Linux(e79a84e591bde4bba4e8a18ce7a59ee599a8) 中, 结构如下: |---revisions | |---00000002 | |---00000001 |---edit-log |---current |---attachments | |---http___coolshell.cn_wp-content_uploads_2012_07_xargs_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_sl.jpg | |---http___coolshell.cn_wp-content_uploads_2012_07_mtr_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_lftp_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_htop_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_calcurse_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_multitail_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_ack_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_tpp_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_powertop_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_newsbeuter_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_socat_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_siege_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_duplicity_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_ipbt_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_iftop_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_curl_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_iptraf-tcpudp.gif | |---http___coolshell.cn_wp-content_uploads_2012_07_vim_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_earthquake.jpg | |---http___coolshell.cn_wp-content_uploads_2012_07_tmux3.png | |---http___coolshell.cn_wp-content_uploads_2012_07_cowsay_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_TaskWarrior2.0.png | |---http___coolshell.cn_wp-content_uploads_2012_07_vifm_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_taskwarrior_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_linuxlogo.jpg | |---http___coolshell.cn_wp-content_uploads_2012_07_ranger.png | |---http___coolshell.cn_wp-content_uploads_2012_07_nethack_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_rtorrent_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_dtach+dvtm.png | |---http___coolshell.cn_wp-content_uploads_2012_07_gnu_screen_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_ledger_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_rsync_screenshot.png | |---http___coolshell.cn_wp-content_uploads_2012_07_byobu-tmux.jpg | |---http___coolshell.cn_wp-content_uploads_2012_07_ttytter_screenshot.png |---cache | |---text_html | |---pagelinks 可以看到,中文名称的 wiki 在存储时候,MoinMoin 会将中文保存为 utf-8 码, 不能直接阅读。并且我需要将目录下面有多级目录,阅读麻烦。 ...

2012-07-27 · alswl

学车记

经过两个月的学习,今天下午终于把驾照拿到手了。期间各种苦逼各种悲催顿感消失, 终于打赢了这场难度仅次于装修的战争。 博客也因学车而荒废了1个月,今天就顺便写点针对南京的驾校考试的东西。 南京驾照考试有4部分: 理论考试,网上好好做题,2小时就可以考95分以上了,90分合格 桩考,就是考倒桩。80分合格,当场有一次补考机会。 电子路,2+1(侧方位停车、坡道定点停车和起步、起伏路、直角转弯、S 弯、 百米加减档、限宽门、单边桥和连续障碍),其中「侧方位停车」和 「坡道定点停车和起步」是必考,其他再抽一项。和桩考共享一次现场补考机会,80分合格。 人工路:上车在实际道路开一会。没有现场补考,80分合格。 如果现场补考不合格,或者压根没有现场补考机会,那么不合格的话需要等22天补考。 ...

2012-07-26 · alswl

Flotr2 - 我最喜欢的 Javascript 图形库[译文]

Thumbnail

原文地址:Flotr2 - my favorite javascript graph library 译者:alswl 我研究了很久,得到的终极数据可视化方案是 javascript + html ,这是唯一像样又好用的。 Gnuplot 虽然看上去不错,但是不太漂亮。 一些基于 Python 的图形化工具也有同样的问题。 Mathematica 在我看来则太正式了,所以我不怎么用它。 基于 javascript 的图形化工具其中一个巨大优势是易于共享。 通过设置 Github Page、分享链接等方法,我们都可以很方便的获取最新图表数据, 甚至可以进行交互。 那些基于 javascript 的图形化工具 有很多 javascript 图形化库,从极简到复杂绚丽的风格,都极为丰富。 ...

2012-06-19 · alswl

想和做

一年前,我在草稿箱里面写了这篇文章的开头,那时的我正在为工作而烦闷,却一筹莫展。 最近在读《人人都是产品设计师》,其中提到了「产品经理」和「项目经理」的区别, 又引发了我一些思考,我决定把这篇文章重新写完。 这篇文章准备讨论普通程序员在工作中容易滋生的错误,以及解决的方法。 传统意义上,大家会提倡「不能光想,还要去做」,即强调行动力的重要性。 而在实际工作中,大部分人都不缺乏这个行动力,反而缺少对自己工作的思考。 比如我为什么要这么做?有没有更优美的办法?能不能通过自动化减少工作强度? 流程是否可以改善? ...

2012-06-15 · alswl

Vundle 和 Submodule

问题背景 Vundle 是个好东西,可以用来管理 vim 配置和 vim 插件。Vundle 会将所有插件管理在 .vim/bundle/ 中,详情可看 使用 Vundle 管理 Vim 插件。 官方安装 Vundle 方法如下: $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 我的 Vundle 的版本是 59bff0c457f68c3d52bcebbf6068ea01ac8f5dac, git 版本是 git version 1.7.10.2 。 使用 BundleInstall 可以安装 .vimrc 中配置的插件, 我使用 git 控制 .vim 和 .vimrc 版本。在 BundleInstall 之后会导致 vundle 目录项目状态混乱,要么形成一个无法追踪的 submodule 比如 .vim/bundle/The-NERD-Commenter (untracked content) ,要么变成一个普通的文件夹 .vim/bundle/vim-markdown。 使用 Submodule 管理 插件 为了解决这个问题,我们需要先了解一点 Git 中 Submodule 的知识,详情可以查看 Git Book 中文版 - 子模块。 ...

2012-06-11 · alswl

服务器 Push 技术

服务器 Push 技术表示服务器可以主动推送消息给客户端浏览器。 实现方式 Comet Ajax 轮询 iframe / htmlfile script tag (不中断的连续请求) Flash 通讯 WebSocket Comet 本意是彗星,彗星尾巴痕迹很像长连接工作方式,所以 Comet 指代长连接。 在 Ajax 轮询的分类上,存在一些分歧,这里我把轮询认为一种 Comet 方式。 ps:「长连接」在一些场景下,是另外一种意义「HTTP: Keep alive」。不在本文讨论的范围中。 参考链接: Comet:基于 HTTP 长连接的「服务器推」技术 Socket.IO Supported transports 浏览器支持情况 WebSocket 属于 HTML5 规范,需要「先进」浏览器支持, Flash 通讯需要浏览器安装 Flash 插件,其他方式都可以适应常见浏览器。 ...

2012-05-30 · alswl

《开源和自由》幻灯片

周末回学校一趟,和几个老同学、老师聚会,然后给学弟学妹们做了一个分享。 我的主题是《开源与自由》。 为了让同学们不瞌睡,几乎是当一个故事讲的,没太多技术内容。

2012-05-27 · alswl

让 Octopress 支持 RSS2.0

土鳖人人网的 日志导入 功能仅支持 RSS2.0,而 Octopress 输出的订阅格式是 Atom1.0。 于是为了让人人网的同学能看见我那些技术宅,又或非技术宅的文章, 我只能昧着良心,给 Octopress 加上过时的 RSS2.0 输出。 在 source/ 下创建新文件 rss.xml ,内容如下: --- layout: nil --- <?xml version="1.0" encoding="UTF-8"?> <rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"> <channel> <description><![CDATA[{{ site.title }}]]></description> <title><![CDATA[{{ site.title }}]]></title> <link>{{ site.url }}/</link> <pubDate>{{ site.time | date_to_xmlschema }}</pubDate> {% for post in site.posts limit: 20 %} <item> <description> <![CDATA[ {{ post.content | expand_urls: site.url | cdata_escape }} {% include post/copyright.html %} ]]> </description> <title><![CDATA[{{ post.title | cdata_escape }}]]></title> <link>{{ site.url }}{{ post.url }}</link> <pubDate>{{ post.date | date_to_xmlschema }}</pubDate> <guid isPermaLink="false">{{ site.url }}{{ post.id }}</guid> <source url="{{ site.url }}/rss.xml"><![CDATA[{{ site.title }}]]></source> </item> {% endfor %} </channel> </rss> 然后,访问 http://site.url/rss.xml 即可。 我的 RSS2.0 地址是 http://log4d.com/rss.xml。 ...

2012-05-22 · alswl

给 Octopress 加上标签功能

上周,我将 Log4D 由 Wordpress 转换为 Octopress,略加打理,颇为顺手。 自动分类 / 评论转移 / 代码高亮 / 图床 的问题一一解决之后, 就只剩下 tag 的问题没有搞定了。 我当时使用了YORKXIN的修改版本来处理 Wordpress 的数据迁移,这个脚本很好用,数据没有遗失,甚至是让我担心的 category / tag 都给予了保留。具体使用方法可以参见从Wordpress迁移到Octopress。 只是虽然 tag 的数据保留了,但是 Octopress 仅支持 category 的分类,而完全忽略 tag。这是我不能容忍的:category 和 tag 分别代表 有序 / 无序 的知识点归纳方法。 一篇文章只能属于一个 category,但可以同时属于多个 tag。 Octopress 的设计方法显然和我长期养成的知识归纳体系冲突,我开始吭次吭次寻找插件。 ...

2012-05-21 · alswl

《写给大家看的设计书》读后感

Thumbnail

我读过两本关于视觉设计的书,一本是《写给程序员的Web设计书》, 这是第二本《写给大家看的设计书》。 我对前者的评价是「作者花了大约25%的篇幅来讲述设计理念和方法,这也是我真正想看的部分。 本来想从书中获取更多布局、色彩、字体的内容,发现还是太少了。图灵系的书翻译不错。」 相对应的,《写给大家看的设计书》是我真心想看的设计入门书。作者的文字功底好,经验丰富, 范例适合,取材广泛,总之,是不可多得的一本好书。 书中提到了设计四大原则:亲密性 / 对齐 / 重复 / 对比。依靠这四个原则, 就可以设计出效果不错的出版物(包括书籍、文档、幻灯片、网页等等) ...

2012-05-19 · alswl