一次采用DJANGO开发应用的悲剧

2012-09-01 17:02:18 +08:00
 zyyzj
典型的把“锤子当成榔头“的案例。决定这个过程记录下来,希望给同行”如何更正确的使用DJANGO"带来一些参考价值。如果使用“AAA如何用BBB来实现,遇到CCC问题”这个记述体,显得太干巴巴太无趣,因此我使用“自传小说体”的手法来记述,其中更夹加了自己的行业经验的一些私货在里面。


## 背景:
我:十多年的程序开发,从事过的领域跨度非常大,正处于再次创业阶段;

死党(除了女人外什么都可以共享的好友):风电行业设备提供商,天生的销售,自称为:技术员中最懂业务,业务员中最懂技术,最熟练的软件技能是QQ,TAOBAO。1年前因功高震主被原老板排挤出门,忿而自定门户,经1年折腾,頗有成就,业务隐然赶超原公司。

我们一起租了一层楼,除了各自工作和晚上各回各家外,平是都是泡在一起。


## 缘起

事情缘起于二周前的某天。

晚上7点多,死党突然跑过来问了一堆关于EXCEL的高级使用技术,甚至包括宏如何定义和使用的问题,记得当时我正专心写产品规划,虽然奇怪得要命,也就随口应付几句了事。

晚上10点多,回家前去他办公室溜达时,发现其正在与一堆EXCEL表以及N个EXCE汇总小软件较劲。这种诡异的现象我当然不能放过,立马凑了上去:“你在干什么呢?”

接下来,我在听了20分钟他想要通过EXCEL实现的一些古怪的功能后,总结了一句:你不就是需要一个销售汇总系统嘛。

“对对对,就是销售汇总系统“,听到这个名词,死党黝黑的脸膛兴奋得发出了红光,如同喝高了一般。

”这事你不行,我来“。我拍拍他的肩头,示意他从老板椅中起身。

展现在我的是一个手工管理的销售系统:3-5层的目录结构,平均每层有7-10多个下级目录,分布其中,加起来约有数以百计的EXCEL文件。

死党站在我背后,估计是一脸牛B地描述着他所建立的EXCEL模板有多么多么完善,我的内心,却是为他当年没有好好去上数据库基础课程悲哀不已。因为我需要在N个不同层次的目录来回切换打开N几个不同的表,组合在一起,才能理解他描述的业务流程。

等我咬牙切齿地把关键表的字段和内容都过了一遍后(其间充斥着我对他设计表结构能力的吐嘈),已是接近晚上12点。

”交给我吧,明天我帮你搞定“。

听到这句话,死党那原本被我的吐嘈打击得黯淡的脸瞬间再次发出了红光。手舞足蹈地出了门,手舞足蹈地进了电梯,手舞足蹈地坐进了大奔的驾驶位。更大的房子,更好的车子,更多的妹子,仿佛一切即将实现。以至于一路上,我不断提醒他注意前方,不要总侧着头对着我描述他伟大的商业计划。
20030 次点击
所在节点    Django
75 条回复
aisk
2012-09-02 11:11:23 +08:00
等下文
sillyousu
2012-09-02 12:43:39 +08:00
张哥还不粗现!
linsk
2012-09-02 12:55:47 +08:00
真心需要您这么一位基友。...
chrisyue
2012-09-02 13:07:04 +08:00
围观,虽然不是最得意的成就感,但是我也真心希望身边有可以托付身家性命攸关的难题的好基友LOL
ssword
2012-09-02 13:41:07 +08:00
0day的描述有bug
dianso
2012-09-02 13:42:25 +08:00
可以控制在100字左右
iloveayu
2012-09-02 14:03:32 +08:00
养肥了看~
lovebirdegg
2012-09-02 14:31:26 +08:00
应该加上只看楼主的功能
lgn21st
2012-09-02 14:36:27 +08:00
写的真好,很有一种现场带入感~
Fikhtengol
2012-09-02 20:10:31 +08:00
mark
cydamn
2012-09-02 21:48:08 +08:00
mark 好有趣楼主别太监~~
xlaok
2012-09-02 21:57:49 +08:00
第三天呢?
yys
2012-09-02 22:11:55 +08:00
楼主字里行间聊聊数句就把人带回了那段美好回忆的岁月,turbo c 2, turbo pascal 7, foxbase, foxpro, visual basic 3, delphi 1, borland c++ 4.5 ... ...
rainchen
2012-09-02 23:06:08 +08:00
文笔不错 很有带入感
lxkaka
2012-09-02 23:37:54 +08:00
好带感啊 楼主!
zyyzj
2012-09-03 03:29:22 +08:00
# 第五天

宽敞的办公室,凉爽的空调,护眼的显示器,顺手的ML系统,舒适的椅子,在“一切都好的环境”中,开始了我最喜欢的工作。心情想不好都难。

选定的架构为:PYTHON,DJANGO,SQLITE3.

之喜欢PYTHON,最主要的原因,在于:丰富的数据结构以及灵活不受限制的组合表达方式。现在的新一代程序员和我那个年代过来的程序员,有个很明显的区别:对于数据的理解不同。也许这也是桌面程序与WEB程序的不同。

“蠢货,要好好思考数据是怎么存储的,所有的计算都是为数据服务的,数据,数据才是重点”。我忘了是哪本书上看的这句话,大意如此,不是原话。

那时,不管是用C,C++,还是PASCAL,或是其他什么,建立一个符合需求的数据结构都不容易。你需要用最基本的几个数据类型,创造整个世界。指针,数组,内存分配,每个都需要百分之一百的小心谨慎。那天杀的中文字符串,单字节双字节,多少兄弟在这点上被折腾的死去活来。

对了,在Window 95之前,还必需懂得“显卡图形模式“,从字符模式切换到图形模式,才能画出点像样的界面来。真的是按像素点计算一个线框一个线框画出来的。下拉菜单,那是高级货。你要是能做出那种效果,绝对被帖上牛人的标签。

PYTHON是至今为止唯一一种能让我感受到“行云流水”般编程快感的语言。

PYTHON的创造人在介绍PYTHON时有这么一句话:如果它看起来像鸭子,听起来像鸭子,那它就是鸭子。一开始不明白,终于有一天,突然悟通这句话,差点喜极而泣。

一个没有形成自己的“常用工具集”的程序员是称不上专业的,除了安装外,更是要把它们配置得如同自己的手指一样灵活调用。

tmux, virtualenv, ipython这三个对于python开发是必备的。

嗯,环境搭建开始。

1. virtualenv django
2. 在.bash_profile中定义别名:py_django="source ~/python/virtualenv/django/bin/activate
3. py_django
4. easy_install django
5. easy_install south

django环境安装完成。

接着,是文档部分。

打开www.djangoproject.com。“哟,都到1.4版本了,上次频繁访问这个网站还是0.96版本呢,时间真的很快”,我一边感叹一边打开最近两个最近版本的release notes,仔细地浏览。

然后是Documentation页面,查查有没有新出现的条目,再研究了下网站的搜索页面的URL的生成规则。

“嘿,各种细节增强还真不少,但这次的开发需求很简单,没必要再去深入了解那些新特性,整体架构看起来没什么变化,下午再花点看看Field和URL相关的文档温习一下,就行了“。

打开alfred的配置界面,增加两条自定义搜索:
Search URL: http://stackoverflow.com/search?q=[django]+{query}
key: so_dj

Search URL: http://docs.djangoproject.com/search/?q={query}&release=6
key: dj

在任何时候,只需两步:

Ctrl+Space,so_dj 搜索关键词
或者
Ctrl+Space,dj 搜索关键词

就能在网上最靠谱的两个有关django的地方(stackoverflow的django区或django的1.4版本的官方文档)搜索问题的答案,在95%的情况下,就算找不到答案,也会给出一些线索。如果连有用的线索都没有,那么就是这问题本身的提出就不正确,需要再一上层重新思考。这是我的经验。

嗯,文档搜索也配置好了。

接着,就是编辑器部分。VIM,当然是VIM了。

1. 下载django-1.4的源码
2. ctags -R .生成tags
3. 在vimrc中增加函数:

function Django()
set path+=~/program/Django-1.4.1/django/
map <F3> :CtrlP ~/program/Django-1.4.1/django<CR>
set tags+=~/Program/Django-1.4.1/django/.tags
endfunc

启动MACVIM,输入:Django(),瞬间,完整的DJANGO世界的入口就在前面,
CTRL+P,CTRL+],CTRL+T,如同庖丁解牛,游刃有余。

我已经忘了第一次是怎么遇到GVIM,为什么要下载安装,我只记得大概是22岁那一年,有整整一个月时间,每天上班唯一做的事就是阅读VIM文档,研究用法,全然不顾项目进度。

至于与EMACS的缘分,则记得很清楚,微软的NET平台核心的开发者,就是写<<net本质论>>那个大胡子,在某次技术展示上现场编写示例代码,用的是EMACS,淡黄背景黑色文字,只见大段代码如同有生命的精灵般此起彼落,编辑窗口下面居然带了个SHELL窗口。那时,年少见识短,看得我当场眼睛发了直。视频一结束,就满世界搜那个编辑器。

VIM是一个能让你体会到“境界”的编辑器:帆随湘转,望衡九面,及输入之极意。

呃,编辑器是我的又一个敏感点,又扯远了,回神,回神。

有了框架,有了文档,有了编辑器,最后再来一个git init,齐活了,完整的一个DJANGO开发环境构建完成。

死党今天不在,带着司机出门,一定又有酒局。

也好,乐得清静。于是我就在更欢快的心情中度过了下午,完成了4个表的MODELS类。

git push。美好的一天结束了。

“嗯,明天让他看看模型,调整一下就可以输入数据了。这速度,会让他吓一下跳的,让他看看啥叫实力“。我把椅子推开半米,向后一靠,双脚放在桌面上,惬意的想着。

明天,一个令人充满美好和希望的字眼。但,我不知道的是,当时的”明天“却意味着所有的麻烦真正开始。
elvba
2012-09-03 03:47:19 +08:00
LZ是文艺的普通2B青年。
mani
2012-09-03 09:07:57 +08:00
等重点
tokki
2012-09-03 09:18:21 +08:00
直播是很无聊的好吧。。。我非常方案这种行为,这里是为了解决问题的 麻烦去豆瓣
tokki
2012-09-03 09:18:41 +08:00
反感这种行为

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/46657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX