因为公司工作的原因,需要研究一下新浪微薄的开放平台。与其做一个孤没芳还自赏的闷葫芦,不如把整个的过程记录下来分享给大家。
小弟自以为还会写点程序,故恬不知耻的把整个的思考过程、代码、遇到的一些问题及解决过程一一记录下来,希望能够对广大在IT这个道上混的朋友有些许的作用,我也就算没祸害人类。
在项目什么都还没有的时候,我先感谢一下我亲爱的女朋友萌萌,是她一直支持我,才让我在程序这条倒了霉的不归路上继续傻了吧唧的走下去。
从现在开始,我会记录下这个的整个过程,当然今天当我有这个想法的时候,我并没有一行代码,也没有明确的产品想法。所以这个过程不但各位读者不知道会怎么样,就连我也不知道。而产品的形态,则很可能是根据各位用户(也许悲催的一个用户也咩有)的需求、要求不断的变化和进化。就让我们在程序开发上也体验一次美剧编导的感觉吧。
me@yinwm.com:~$ 如何开始?
一切的一切都需要从一个新注册的新浪微薄应用开始,你可以去 http://open.t.sina.com.cn 转一圈,不管是文档什么的,还是怎么注册,那有比较清楚的介绍,我就不费口舌了。
me@yinwm.com:~$ 选择一门开发语言
我们在开发一个东西的时候,很现实的问题就是选择(一门)开发语言。
相信有一类程序员是不会为此犯难的,那就是锤子党(我编的这个词)。锤子党的一个特点就是会了一种语言,然后看到任何需要开发的应用都是钉子,然后这个语言就可以大而全的搞定它。比如认为Java无所不能(虽然我身为一个Javaer,但是这样的Java程序员我见过不少);或者觉得什么都要用先进的RoR来开发。
在这里我不想勾起无畏的超过我智商的语言论战,我只是想说一下我的看法。语言,只是一个工具,目的应该是满足我们的需求,而不是为了某种莫名的原因去选择什么。那么我选择语言的准则是两个字:合适。尺有所短寸有所长,不同的需求和场景需要不同的语言。
我从这几个方面考虑为什么选用一门语言:
- 开发者对语言掌握的熟练程度
- 现有的开发者
- 如果是团队作战则也需要考虑可招聘的人才市场的供给,比如相对PHP程序员,Python程序员的可选择范围会小很多。
- 产品需求的侧重点
- 是要求大规模计算的还是尽快的产品迭代的,等
- 需要运行的平台
- 是Web应用还是桌面应用
- 操作系统,Windows/Linux/Mac 一个还是多个
- 设备,比如 Android 或者 iPhone 就别想了,直接用 Java 跟 Object-C 就好了
- 已有的资源
- 是否有现成的(开源)库,如做搜索类的东西,那么 Lucene 就是天然的选择
- 是否有活跃的社区
当然在这里我可能无法全部的罗列出我思考的元素,但是总而言之,我认为语言应该是工具。技术应该为需求服务。当然,如果你只会一种语言,那么可能就没有办法了,但是我对你的建议就是再去学习一门语言吧,不同语言的不同思考方式,会让你对编程有更多的理解。
好了,该说我选择的语言了。我选择的是 Python 。原因是Python便于快速迭代;社区提供的资源足够多;国内Python社区发展良好;暂时定位在桌面应用,但是如果迁移到Web应用Python也可以应付的来。暂时妥协的是,Python很难迁移到 Android/iPhone 平台(也许我并不知道),但是暂时就不管了(会有一些其他的考虑,后续的篇章会提到)。
me@yinwm.com:~$ 给自己的应用起一个名字
一个好的名字是非常重要的,不过有时候信手捏来的也是不错的。在晚上回家坐公交车的时候,我想到其实这个项目就是某种意义上的 Twitter 客户端。
Twitter表示的就是小鸟的 JiZha (叽叽喳喳)-> JiZa 会不会更好 -> Jiz 呢 -> Jiz 什么意思?会不会读起来在英语里面并不好? -> Jazz 爵士随心的演绎很能表示这种随波的讯息 -> Jazz太短,就 JazzNews 吧,随意的讯息和信息 -> Google 一下 JazzNews 有 1.4m 个结果,很容易重复 -> JazzMeme,嗯这个不错,随意的小信息块,Google 只有 8k 个结果,就他了。
就这样项目定名 JazzMeme
me@yinwm.com:~$ 找一个地方托管自己的代码、License
这是一个开源的项目,那么肯定是找一个地方托管自己的代码,这样大家也可以第一时间看到各种进展。我考虑的地方有 github/bitbucket/google-code。因为我一直在使用hg,并且想熟练的使用下去,那么首先排除github(虽然我很不舍)。然后考虑到 google-code 的 Wiki/Download/Issues 等周边服务比 bitbucket 好,所以选择 google-code,代码使用 hg 管理。
License,我并没有选择GPL,感觉太粗暴,花两秒钟在 MIT 和 BSD 中间犹豫了一下,鉴于更熟悉BSD,那么选择BSD。
其实在考虑从托管的时候,我还想到了 SourceForge ,但是无奈,这个老牌的东西已经没有以前那么有影响力了,所以在我都搞定之后才想起来。
项目的地址是 http://code.google.com/p/jazzmeme/ 。还没有半毛钱的东西,希望我不会让这个坑一直荒废着。
