从0到1搭建个人网站 一-我关于技术栈选择的一点建议
聊聊工程
如今,数据科学家已经逐渐取代现在的“软件工程师”成为IT行业的主流职业,和“全民都在聊人工智能”一样,可能全部IT工作者都要天天研究算法、琢磨模型、跑数据、调参数、跑数据、调参数,那些被淘汰的“软件工程师”会真的成为民工一样的行业,但是我觉得任何算法都离不开工程实现,再好的模型没有底层架构的支撑和上层产品应用的展现也无法发挥作用,所以对于一个技术人士,不擅长工程终难把能力发挥到极致。随着中国和国外前沿科技的接轨,将来一定是小创业团队成为主流,一个小创业团队更喜欢算法+工程的全能型人才,跟着我一起学习进步,你将来也许就会是其中一个。
聊聊重构
说起重构,很多人都有感慨,因为只有当遇到比较大的问题的时候才会考虑重构,比如技术人员流动大导致代码中风格百出,百花齐放,无用代码一大堆不敢删,奇葩逻辑遍地皆是却没有一行注释、一篇文档。在这种无奈情况下,我们不得已选择了重构,寄希望于解决所有问题,但往往代价比收益高出一个数量级,很多人因为重构被迫出局。但重构这件事情是一件必经之路,任何一个产品从诞生到成熟都会经历几次重构,因为没有人能在最初的时候就预示到最终的逻辑(如果能预示那何必有最初呢),就算像BAT这样成熟的公司,他们内部的系统也是平均两年做一次重构。回过头来说一下我的网站重构的初衷:1)我也是不断成长的,作为一个想做全栈的工程师来说,新思路总想去尝试;2)很多关注我的网友觉得我之前写的教程总有意犹未尽的感觉,希望能深入写一点;3)php终究不是世界上最好的语言(此处可能引发战争),用来用去觉得还是迁移python为好,也和我们的机器学习知识做个融合;
技术栈选择
首先说语言。我曾经说过,语言只是工具,每门语言都有它存在的理由,它擅长用在什么地方就用在什么地方,不擅长的不要勉强,不歧视、不在一棵树上吊死、哪个行就上哪个。后端语言我选择python,因为python是社区最活跃的语种之一且呈上升趋势,另外也是大数据与人工智能方向的主流语言。web框架我选择django,因为它更专业更强大,扩展性强,社区也更活跃。前端框架我选择直接用django模板渲染,没有选择angular等前端框架,因为seo不友好
服务端容器选择
在tomcat、apache httpd、nginx等web服务器下游,需要部署python的应用服务器容器,我选择uwsgi,它类似于nginx,通过一个守护进程把不同的http请求转交给子进程并发处理,并且支持多线程的方式,性能较高,更重要的,django会自动帮我们生成wsgi的配置,天然对uwsgi友好
总结
开篇就讲这么多,主要还是得看后面我的重构过程,咳咳!出发!