菜鸟成长记:一次失败的语言选择案例(由C/C++到python)

来源:互联网 发布:家居室内设计软件 编辑:程序博客网 时间:2024/04/30 15:22

最近换了工作,创业团队,新的环境,新的业务。拿到一个需求,一个部署在windows2003服务器的程序定时更新写入DBF文件,我需要实现读取DBF文件,解析数据并写入redis。惯性思维,我是搞C++起家的,那就用自己最熟悉的语言,啊哈,so easy!

研究 DBF文件格式,头部结构,字段结构,数据结构,数据类型,excel查看,二进制查看,懂了! (0.5 day)

redis是神马,如何操作?查查资料先。(0.2 day)

嗯,这个程序需要是windows的,配置环境,不熟啊!终于配好了,谢天谢地! (0.3 day)

编写解析代码,调试。什么?DBF里面的数据格式乱七八糟!明明就是一个数字,前后竟然还有空格和'-',那么转吧!还有浮点数字符串,嗯,自己转换。 (0.5 day)

没有log类可用啊,打屏幕了!编译,各种链接错误;调试,各种异常退出。终于能解析并写入指定文件了。(0.5 day)

下一步写入redis,木有现成api可用,各种搜索,github,stack overflow,终于找到了C/C++实现的库,hiredis,口碑最好,尼玛竟然是linux版本,不支持windows,修改的代价太大!换一个轻量级的windows实现版本,拿下来测试,啊哈,可用。 (0.3 day)

文件需要定时检测是否发生了变动,如果发生了变动,才需要重新解析并记录,用md5吧,再次搜索,找一个开源的md5算法,测试可用。 (0.2 day)

redis部署在内网,只能通过内网ip访问,尼玛办公电脑都不能访问,测试连接不上,那么自己搭建一个代理吧,nginx最适合了。服务器已安装了nginx,开工,只能支持7层代理,搜了一下,四层代理需要特定模块的支撑,叫什么XX_TCP_XX的,安装失败,需要 xml2以上,装!失败!放弃了。  (0.5 day)

修改程序,拖到windows服务器上面运行测试,redis写入失败,反复测试,抓包对比,少了字段,看来前面找到的redis库有问题。 (1.5 day)

团队有服务器用php提供接口给web调用,那么通过php接口来中转一次吧,WinHttp可以发送http包,直接调用php接口,数据量太大,用POST请求,php接口收到了数据,但是没有能够识别,抓包分析也正常。wget调用一遍并抓包,对比分析,程序发送的包少了头部字段,accept 和另外一个,这尼玛貌似不是必须的字段呀!! (0.5 day)

------------------------------------------------------------------

一周结束,一个小需求没搞定!深受打击!

下班了,直接闪人,老子不干了不干了!!!

------------------------------------------------------------------

回家,吃饭,带崽,洗澡睡觉,深思,为什么会失败。

听说python跨平台,使用方便,简单粗暴易上手,还不用编译,写完立即执行!学习学习,看看能否解决我的问题,先调研一下。

md5算法,python 自带了

dbf读取,有类库,https://github.com/olemb/dbfread

redis操作,有类库, https://github.com/andymccurdy/redis-py

这比C的开源库多多了,开工,看网页教程,开始写代码。

上午睡觉到中午起床,继续学习,写代码,调试,晚上熬夜到 2:00,中途对这两个开源库做了一些修改。

。。。。。。

打完收工! 2 days, 150行代码

除去吃饭睡觉带孩子的时间,一共也就2个工作日的正常时间 16 hour吧!

如果我不需要学习python,编码调试,算上修改开源库的时间,那么应该也只需要8 hour

-----------------------------------------------------------------

搞C/C++太多了,把自己局限在这个架子里,总是会优先选择这门语言,而忽略其他,无形之中减少了了解其他语言的机会。

艺多不压身!不懂的太多,作为码农,不应该只会这一门语言!

总是习惯研究深入的东西,比如DBF文件的详细格式,尼玛二进制都搬出来看了,用python dbf库,啥都不用管,看这么多有鸟用啊!

-----------------------------------------------------------------

晚安,睡个好觉!明天,太阳照样升起,而我,继续写代码!

啊,不对,是今天了!

0 0