博客首页|TW首页| 同事录|业界社区

屈伟

创业路上的程序猿

技术

快速开发的魅力:6小时完成一可用网站

开发xnapps(校内网应用程序排行)花了不到12小时,尔后只是简单的维护。但尽管如此,xnapps.com一直成为研究校内网应用程序有力工具。app开发者、产品人员、媒体,甚至VC,都通过我12小时内完成的作品了解应用程序。今天我再次花了6小时完成了爱微博(iWeiBo.Cn)的开发全过程。

本人记录我在今天下午花了6小时完成的爱微博网站开发过程。

1. 缘由。在用新浪微博时就一直在想新浪微博又为twitter用户制造了麻烦。虽然新浪微博技术很烂,但以新浪强大的运营能力,前途无量。而短期内新浪微博不可能提供api。不想放弃新浪微博平台的twitter用户将一句话在不同平台上唠叨好几遍。

2. 构思。下午3点开始,觉得此需求可以完成,而且一下午的时间问题不大。开始构思。 整体平台希望能将国内用户常用的流行的平台整合起来(包括新浪微博白社会校内网同事录、twitter、饭否等)。用户在一处发言,能同步到其他平台。如果都提供twitter形式api,可能很好解决。问题是白社会和新浪微博开通api的可能性较小。另外,可以提供msn、gtalk等im机器人,方便用户快速发布信息 和 新消息即使提醒。

3. 找切入点。花15分钟。全部完成2的构思可能需要较长时间,而且还不确定用户需求程度。但有将twitter同步到新浪微博可能是twitter用户需要的。所以第一步从此入口。花5分钟考虑,10分钟研究登录和发文新浪微博http请求过程 和 twitter的api。

4. 设计流程:

1) 简化用户注册。没必要再注册一次。直接以新浪微博用户名和密码身份判断。(后期换成任意平台的)

2) 先验证新浪微博帐号,没问题了再绑定twitter。

5. 写新浪微博模拟登录和发布程序。使用httpwatch观察登录页面跳转过程,用curl做模拟客户端。写代码和测试过程,费时1小时。

6. 设计数据库结构。新浪微博用户名、密码、验证状态,就能满足新浪微博部分了。对twitter部分,需要twitter域名、最新同步过的一条记录标识,防止重复同步。 另外再加一些辅助字段,比如最后更新时间等。

7. 网站名称 和 域名。动手做页面以前得把网站名称定了。随便查了几个,17twitter,iWeiBo两个被我看中了。就iweibo.cn 吧。名字就定为“爱微博”。沾点新浪微博的名气,好记! 查询加注册,30分钟搞定。顺便先把域名解析做了,好让快点生效。

8. 设计界面。本来想找个css框架的。google出了好几个,发现css框架本身文档都很长,如果采用我一下午可能连文档都看不过来,肯定完不成网站,干脆自己动手。先用fireworks做了个简单logo。 然后随便找了个网站把css开头几行对body、a、input的定义复制过来了。懒得写。在纸上画了一个最简单页面结构图,最上面logo,中间左右分栏。简单的内容中间通栏就行。写了几行最简单的css,不到4层div,静态首页搞定!另存为将其他几个页面做出来了。随便将一些描述性的东西,比如爱微博是干什么的,FAQ、ToDo List写上了。 费时1个半小时。

9. 开始正式编码。把一起用的db类拿过来了。其他没什么可以用的,决定全部自己写。将了config.php配置,再建了sina.php类,来处理向新浪发微博(将5写好的php文件拿过来封装成类)。login 和 post两个方法即可。再建user.php类,get、getlist、update3个方法来处理对用户的数据库操作。 为了避免多次登录被sina封ip,这里将登录成功后的cookies保存在user表里。下次直接把cookies读出来用就可以了。花了2个小时。

10. 测试,调整页面。晚上9点时已经完成所有工作了。

11. 开通空间。在国内hostmonter空间里建一个站点,上传文件。然后去新浪微博、搜狐白社会发点广告,搞定!

看时间,晚上10点。去掉7点-8点吃饭一个小时,6小时完成网站全过程!

喝点水,休息下。

无意间看到了37signals的Getting Real印证了此开发开发理论。Getting Real是一个适合创业者采纳的更小规模、更快速、更高质量的软件构建方法。Getting Real理论强调构建现实,抛弃各种繁琐的步骤,最求精益。用迭代开发开发思路快速推出产品,抛弃不常用的功能。“做得比竟争对手少”。

我的实践和Getting Real的理论,快速开发的魅力感觉到了吗?

最后来点ad,爱微博:iWeiBo.cn 欢迎测试!

星期日, 09月 6th, 2009 技术 10条评论

Firefox 3.5.1下使用Google Notebook扩展的方法

自从firefox静悄悄的升级到3.5以后,我就无法继续使用Google notebook扩展了。本来想等待google升级扩展,发现Google已经宣布停止对Google notebook继续开发,连firefox扩展下载地址都隐藏了。看来等待Google升级是不可能了。

无奈之下只好自己动手,让Firefox 3.5.1下能使用Google Notebook扩展。方法如下:

1.  从 http://dl.google.com/firefox/google-notebook.xpi 下载Google Notebook扩展到本地(在链接上点右键,选择目标另存为)

2.  下载 7-zip 并安装。如果已经有就不用了。

3.  在 google-notebook.xpi 上右键,选择 7-zip,然后选择Open archive打开。在install.rdf上右键选择编辑打开。将里面3.0.* 改成3.5.*, 保存。 在出现的提示是否在压缩文件中更新选择“是”。

4. 在firefox中文件->打开文件,选择刚才的xpi文件。安装,重启,搞定了。哈哈。

终于能用回firefox下的Google notebook扩展了。配合iphone里的gNotes离线使用Google notebook,太方便了。

Tags:

星期日, 08月 2nd, 2009 技术 2条评论

转换mysql低版本数据到mysql5

最近要给discuz论坛升级, 数据库是mysql4.0,mysql4.0以前的低版本不支持编码,数据都是Latin1编码的。新版论坛计划采用mysql5.1,gbk编码。

因为mysql版本相差太大,直接复制数据库文件的方法肯定不行,只能采用mysqldump。

步骤:

1. 将mysql4.0中数据导出成sql文件

mysqldump –skip-extended-insert –default-character-set=latin1 dbname -q -uroot -ppassword > dbname.sql

加 –skip-extended-insert参数是为了将每条记录写成独立的insert into,以降低可能存在的导入时sql出错造成的损失

2. 在 dbname.sql 最前面加一句  set names gbk

如果文件较小,直接vi dbname.sql后加;如果文件太大,可以 先建一个文件names.txt,里面写set names gbk; 然后用

cat names.txt dbname.sql > dbname_gbk.sql

3. 将sql文件导入到mysql5中:

mysql -uroot -ppassword -f dbname < dbname.sql

低版本中个别乱码造成可能造成sql报错而中断,加 -f 参数意思是如果出错,继续。 因为前面已经采用一条记录一个独立sql的方式,就算出错偶尔也就丢几条记录。

测试成功,一百万记录,中间就丢了2条。能接受。

Tags: ,

星期五, 04月 10th, 2009 技术 2条评论

mysql手册中文翻译binlog-ignore-db的错误

下载了一个mysql手册中文翻译CHM版本,一直用。按中文手册对binlog-ignore-db的解释发现了一个错误。 中文手册对binlog-ignore-db的解释如下:

–binlog-ignore-db=db_name

告诉主服务器,如果当前的数据库(USE选定的数据库)db_name,不应将更新保存到二进制日志中。如果你使用该选项,你应确保只对当前的数据库进行更新。

一个不能按照你期望的执行的例子:如果服务器用binlog-ignore-db=sales启动,并且执行USE prices; UPDATE sales.january SET amount=amount+1000,该语句不写入二进制日志

英文手册的解释是:

An example of what does not work as you might expect: If the server is started with binlog-ignore-db=sales, and you run USE prices; UPDATE sales.january SET amount = amount + 1000;, this statement is written into the binary log.

中文手册说不写入日志,我说怎么按中文手册的说法测试了几次都还是写入了。本来以为是我mysql版本的问题。还好我查了下英文版本的手册。翻译人员够粗心的,意思都翻译反了。看来关键性描述的还是得看英文原版手册。

Tags:

星期六, 03月 14th, 2009 技术 3条评论

程序开发的效率:思路最重要

程序开发的效率,其实不是写代码的速度。经验相当的人,写代码的速度其实差不了多少。至少会是同一个数量级的。但思路和实现方法却不是差一点数量级的问题。

实现同样的功能和效果,按某些方法(虽然可能是常规方法),如果需要一周的工作量的话, 用变通的方法不仅能实现同样的功能(或许更好的),可能一天,甚至几个小时就搞定了。

最近深有体会。现在开始明白为什么微软这样的大公司在笔试的时候,程序要要做的智力类型的题目的比例会比实际考编程的还多。 明白为什么很多大公司招聘的笔试题里会有智力测试的部分。

举个例子。同事录里写日志有个功能,给所有好友发通知。接着问题来了,有些人觉得通知太多太烦了。现在要开发让用户屏蔽好友通知的功能。实现方法有很多,比如:

解决方案1、在我自己的用户表里,设置个字段,记录我屏蔽了哪些人。 下次遇到通知的时候,如果发送人是我记录的id的,就不显示。

程序需要处理:1)、屏蔽操作。将要屏蔽的人加到我的个人资料字段里。 2)、修改读通知的机制。每次读出以前判断。
存在的问题:读通知的地方太多了。需要修改的地方非常多。工作时间可能需要好几天,还可能出错。

解决方案2、当我屏蔽对方时,到对方记录里去记录。当对方写博客时,发现我屏蔽他了,就不发给我了。 不需要修改通知机制。几个小时就能完成。
问题又来了。我没办法知道我屏蔽了哪些人。总不能把我所有好友都读出来,判断一遍吧。 还可以在我的信息里也记录一下。

解决方案3、单独建一个数据表。用户需要屏蔽谁,直接在这个表里加一条记录,记录谁屏蔽了谁。我 和 被屏蔽的对方,都能很方便的从这个表知道, 我屏蔽了谁,谁屏蔽了我。 取消屏蔽很容易处理,直接删除一条记录就可以了。

发通知以前,查询下谁屏蔽我了,屏蔽了就不发。

最佳方案,几个小时就能完成编码工作。

(原文发布于同事录:http://tongshilu.com/2 )

星期日, 11月 9th, 2008 技术 1条评论