我是个懒人,记性还差。写了两篇博客后,隔了一天再写,就忘了新建博文的命令,是 rake new_post
还是 rake new_posts
来着?另外,每次写完之余,都要敲 rake gen_deploy
部署也总让我抓狂。平心而论,我还是非常喜欢octopress这个产品,简洁的设计,独特的思想,优雅的撰写方式和美妙的历史记录,这些都让我沉浸在其中,乐不思WP,但如果再能好那么一点点,再让我少干些重复性的劳动,一切就完美了。
同事见了我的博客也想搭一个,我说这不适合你,octopress只适合程序猿。回过头来我想,为什么自己的视界这么狭小?程序猿是干什么的?不就是把复杂繁重的工作交给计算机,让计算机前的人能够悠然自得么?
说不的程序猿不是好的产品经理。octopress已经为程序猿提供了一套 rake
的自动化工具。在这个基础之上,再提供一套简洁的工具让用户摆脱繁杂的设置和命令不就可以了么?是谁规定一定要搭建 ruby
环境才能搭建octopress博客?又是谁规定一定要会基本的 git
语法和 shell
命令才能使用octopress?
于是就有了接下来的思考:一个Octopress客户端。 为了行文方便,我暂且将这个产品称之为 Atanasoff [1]。我喜欢命名,因为一旦一个产品有了名字,它就有了血肉,有了生命。
Atanasoff可以让octopress的用户focus在博文的撰写,而把博客系统的搭建和维护这样tedious的任务交给Atanasoff去做。Atanasoff的用户需要有如下技能来正常使用:
下面就来看看我假想中的Atanasoff如何解放用户的双手。
Atanasoff的用户须以github第三方登录,且创建了username.github.com.git,并将其授权给Atanasoff的github账号atanasoffr(将其添加为collaborator)。(补记:也许可以向用户要repo access的授权,这样可以直接帮用户创建repo和修改代码)
用户第一次注册后,服务端检查并帮用户设置为博客使用的repo,使用配置好的octopress替用户搭建博客。
用户可以对自己的octopress博客进行简单的设置:
客户端提供 markdown
编辑器 [2],让用户可以轻松编辑博客。服务器和客户端保持同步,客户端的修改或者新文章的撰写都会在有网络的情况下定期同步到服务器,再由服务器push到github。
为方便起见,markdown编辑器提供wysiwyg功能,让用户能够随时预览撰写的内容。编辑器尽可能美丽一些,sublime text 2带的MarkdownEditor插件就是一个很好的参考对象。
另外,提供图片上传和文件上传功能,上传的文件按类型放在repo相应的目录下,客户端同时生成对应的markdown语句插入到文章中合适的位置,方便用户展示图片或提供下载链接。
用户也可以脱离atanasoff撰写博客。提交的时候,让github trigger一个webhook,由atanasoff的api处理并自动generate和push博客。
用户可以一键将写好的博文部署到github pages上。为性能计,部署的频率以5分钟为单位,不允许用户太频繁的部署。(因为 rake gen_deploy
是个相对较重的操作)。
Atanasoff能够支持多种客户端,并随时在这些客户端间保持同步。可以考虑先出一个对xpad [3] 友好的支持响应式设计的web版本,然后进一步用phonegap提供对xpad的支持。xphone的支持似乎意义不大,因为小屏幕似乎不太适合撰写。
支持中英文的界面
python / django对我而言是最佳的选择,但我会考虑尝试nodejs。
rake
命令。rake
命令使用background task完成。既然是随想,就注定它不一定能够问世。我也许会继续完善这篇文章,找到一个合适的时间去尝试做点什么。也许2013元旦假期是个不错的选择,前提是我家那混世小魔王能乖巧一些。
接下来我至少会做这些事情:
[1] 本博中假想的产品均冠以计算机科学家的名字,从A-Z依次排列。Atanasoff 是第一台自动电子数字计算机的发明者。
[2] JS的markdown wysiwyg编辑器有很多,比如说:EpicEditor。另外,dillinger 绝对是让Atanasoff惊喜的project。
[3] 考虑xpad主要是因为本文实际上是在搭地铁的一个多小时里用ipad上的evernote完成。
[4] xfork系作者创造出来的词,即clone一个atanasoffr下配置好的repo,然后将 .git/config
中的内容改为用户repo的配置,再 push
。这样能最快速地搭建出来一个博客。
[5] 随便google了下,似乎有 JsonDiffPatch 可以尝试
[6] 协同工作软件的思想基石。 参见wikipedia下的介绍:operational transformation
昨日小宝洗完澡,躺着就睡着了。
如果您对本站的文章感兴趣,欢迎订阅我的微博公共账号:程序人生。每次博文发表时,您都能获得通知。此外,公共账号还会不定期推送一些短文,技术心得,供您参考。