2017小结
文章目录
今天写完年度工作总结之后,才想起快有两个多月没有更新博客了,主要是因为从十月末开始,我的生活和工作环境都有比较大的变动,索性来一篇所谓的年度小结来概括一下2017这一整年值得纪念的点点滴滴。
python相关
其实说来也巧,在学校的时候,从来没想过以后会用python来作为主要的开发语言,但是在接触python之后,就逐渐明白了人生苦短,我用python
这句话的含义。在我看来,python之所以优秀,很大程度上还是整个python社区环境相对来说比较优秀。从科学计算、网络爬虫、web开发、界面开发再到2017年炒的火热的机器学习,哪里都有python身影的出现。而在这些背后,那些默默为整个社区无私奉献的开发者们的功劳不可磨灭。
2017年,python相关的内容,我又有哪些成长呢?
夯实python web技术栈
在实际工作中,我主要的开发任务是做web开发。而python的web框架,我比较擅长的是flask。常用的技术如下图所示:
- 我会选择使用mongodb作为数据存储,因为通常情况下使用mongodb就可以满足我的需求,并且在开发过程中会有比较流畅的感觉。
- redis可以作为数据缓存,而我更多的是使用它作为消息队列的一环,利用它的pub/sub来广播和接收消息,结合celery可以完成很多需要异步执行的任务。
- 在流行前端后端分离的今天,直接通过flask写jinja模版渲染已经是越来越少。更多的情况是后端提供数据接口,前后端直接通过ajax进行数据交互。所以,flask-restful就可以用来完成基于flask的rest api编写。
- 在前端需要后端主动推送消息的时候,基于http协议
请求/响应
模式无法满足需求,所以引入flask-socketio就是为了完成类似这样的任务。 - 前后端分离,数据接口访问权限问题如何解决?我常用的方法是使用JWT来进行用户身份识别。
Django尝鲜
在django2.0发布之后,我还是尝试了一番。 尝试Django的主要原因有几个:
- 深受正则表达式毒害的我很开心看到django路由语法简化:
|
|
- 以往通过flask进行web开发,底层数据库多是使用非关系行数据库(有一次需要使用oracle就体验了一把sqlalchemy,感觉还行),如果是关系型数据库如mysql或者postgresql可能直接拿django会更方便一些。
django-admin
还是很不错的,能省下不少力。- django自身的开发文档很不错(当然flask的也不错)。
flask vs django
结合这篇文章,感觉flask和django在实际应用中适用的场景是有所不同的:
- 数据库方面:如果系统采用的都是关系型数据库,直接使用django可能开发效率会高一点,因为自带的orm比较好用;如果使用nosql,那么就没有必要使用django,flask+nosql扩展会更加灵活好用,同样,如果项目结构不是很大,完全可以通过flask+SQLAlchemy进行数据库操作;
- 业务需求:如果业务需求仅仅是restful api,那么使用flask可能会是个更好的选择,如果项目需要一个比较完善的后台管理模块,django自带的admin模块应该能够满足需求。
python爬虫
和很多人一样,最开始接触python是从爬虫开始,由于我都是比较小型的爬取数据,所以requests+bs4+mongodb
就可以满足需求:
目前爬取的时候可能会遇到两种情况:
- 网站后端渲染好html:这种情况可以使用requests爬取网页,交由bs4提取目标内容;
- 前后端分离:这种情况需要仔细分析该网站的ajax请求,找出并分析其中规则,通过requests模拟ajax请求,获取目标数据。
反防爬措施:
- 伪造请求头
- 使用ip proxy
- 使用像Selenium这样的浏览器工具模拟人为操作。
机器学习
其实很早之前就有这方面的兴趣,无奈数学基础不好,一只没付诸行动。在年底,我们这样的一个公司居然都准备采用机器学习进行视频检测,我觉得是时候补一补数据基础,把这个技能点上了。 初步打算:
- 复习《线性代数》和《统计学习方法》
- 机器学习相关python基础库numpy、matplotlib
- 学习tensorflow相关demo
前端相关
还是那句话,前后端分离的开发方式,让以往只会用bootstrap、jQuery的我都不好意思说我是做python web的。
初识vue
上半年接触了目前比较火的前端框架vue。一开始我是拒绝的,因为用惯了jQuery,在开发思路上一时半会儿转变不过来。在初步理解了它的数据驱动页面
的思想之后,发现原来前端开发也可以这么爽。
使用vue,不可避免的会接触es6:箭头函数、迭代器、生成器、模块、promise,我只能说“学习使我快乐”。另外,webpack、npm、yarn这些工具加速了前端工程化的进程。其实差不多可以完全改变了我之前对于前端开发的认识。
浅尝react
年末,女朋友也来武汉工作,公司前端主要使用react,她也一直怂恿我一起来学react(其实vue学了半吊子的我一开始也是拒绝的)。相比来说,react上手要比vue慢很多,我也是断断续续用了两周时间看react相关的文档。在真正用来做点东西的时候,才发现仅仅会用react是根本不够的:你会遇到管理前端路由的react-router,管理组件状态的redux。在初步理解了redux的store、action和reducer之后,你又会发现redux-thunk
、redux-orm
等等相关的一系列轮子都可能会用到,这真的是在做前端开发吗?
2017年,也可以说是恰好赶上了前端迅速发展的一年,加入前端开发,才会真正发现前端开发很可能已经不是你印象中的样子。2018年,我猜我会投入更多的时间在前端。
其他技术栈展望
语言方面
- go语言,想要在2018用go做一个web应用
- java,之前用springboot做过开发,比较有好感,可以尝试在一些快速开发的项目中使用
- node,尝试使用koa做一些事情
数据库
- postgresql,使用postgresql作为数据存储开发项目,结合postgregis完成一些gis应用
- mysql,毕竟目前使用很广泛,学习一下也是很不错的
- neo4j,之前只是尝试,希望可以和机器学习相结合,做一些有趣的事情
总之,作为技术人,我希望在2018年投入更多的时间来夯实现有技术栈,多读书、读好书,拓阔视野,多与人交流分享想法。
相对于技术方面的成长,2017年我在其他方面的成长可能更大。
西安之旅
2017年是在西安开始的。我和三哥相约来西安开始了吃吃吃之旅。看看我们都去过哪就知道啦: 那几天可以说是非常开心啦。一起去去大雁塔,上明城墙骑行,看钟楼夜景。假期很短,相见有点难。
南下求职
在完成出差任务后,一天从承德来到武汉找工作: 面试过程比较顺利,顺便和之前的同学、师弟师妹聚餐,感叹时光匆匆。
好友结婚
从之前的单位辞职之后,回家参加从小到大的好朋友婚礼。 第一次当伴郎,衷心祝愿他们能够幸福。
领养二狗
在微博上领养的二狗: 这个名字没白起,二狗真的是像狗一样的猫。
见家长
幸亏可爱的女朋友的渗透工作,这次见家长可以用“大吉大利,今晚吃鸡”来总结啦:
来我家
哈哈哈 用一句话总结“王叁很优秀,我们很满意“ 由于恰好是十一假期,还跑洛阳玩了一趟。
王炸
盼星星盼月亮,三哥也来武汉工作了,一起度过了艰难的找工作阶段、辛苦的学习阶段,现在算是相对稳定了,我们还一起布置了我们所谓的”工作间“(游戏厅?): 希望可以在里面读更多的书,学更多的知识,看更多的好片儿还有玩更多的游戏。
文章作者 rgozi
上次更新 2018-01-09