写了个 web app

之前就想写个 web app 玩,但是由于可选的语言(Java,PHP,Python,Ruby,Scala 等等)、框架(Python 下就有 Django,Pylons,web2py,Flask 等)、数据库(主流还是 MySQL,但也有其它模型如 PostgreSQL 或 mongoDB)太多,于是一直没动手(The Dilemma of Choice 的典型表现)。然后决定与其分析完所有这些技术,还不如动手先写个简单的试试。于是从熟悉和喜好的角度选了 Python,从流行的角度选了 Django,从从众的角度选了 MySQL,Apache + mod_wsgi 作服务器,网页端 HTML 和 JavaScript 则是必备的。就写个最简单的,也就不考虑可测试性、可维护性和可扩展性的方面了。

需求是自发的,经常需要在 Linux,Windows,Mac 之间传些东西。文件的话一般用 Windows Share,有点麻烦,但用的机会也不多;文本(网址、程序片断、文献等)却是相当经常的。于是就写了个叫 web_clipboard 的 web app,一方把文本粘贴到网页上,另一方复制下来(当然网上有现成且强大的高端品,比如 pastebin,不过我需要的只是最简洁的)。用了 Django 的框架,加起来总共只用了百行左右的 Python,HTML template,JavaScript。实现的功能也极其简单,没有用户和登录,没有语法高亮,黑白灰3色界面,只显示最近10条文本,最简单的粘贴和复制功能(引入了 ZeroClipboard 工程,系统剪贴板操作需要 Flash 实现),够小型团队之间的即时共享文本。

Django 用对象化的模型层抽象了数据库层,程序员一般不需要知道数据库和查询的具体实现。这是其优点也是缺点。优点是上手快,基本上只要理解基本的 HTTP 协议,看着教程就能写 web app,而且之后数据模型发生改变(会引起数据库结构的变化)的话也可以用 South 之类的自动工具进行数据库迁移。缺点则是因为对于 web app 来说,数据库和其结构往往是整体性能和可扩展性的关键,如果没有一定程序的理解的话很可能会写出缺乏扩展性的程序。

成果本体放在 github 上了。虽然有说明,但部署方面还是稍微有些麻烦,虽然工程里为此放入了 Fabric 自动部署工具,但还没有集成完全。

Advertisements
This entry was posted in Computer and Internet, Web and tagged , . Bookmark the permalink.

2 Responses to 写了个 web app

  1. Anonymous says:

    这个应用的关键是访问系统剪切板吧?CS还是BS到是次要的。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s