您的位置:首页 > Web前端 > Node.js

谈谈这一年来做项目的经历(1)

2016-08-11 15:43 183 查看
15年考上武汉大学的研究生,暑假就在实验室开始做项目。本人所在的是图像处理实验室,主要研究的是各种图像算法,比如小波变化,SAR图像处理等。由于大多数研究图像处理的各种算法,在应用这方面所做的研究就非常少。在此情况下,我开始建立水质监测平台网站。

水质监测平台的主要作用是用来展示各种遥感影像,其中的算法部分由实验室的其他同学研究。图像处理一般需要用到ENVI软件,这是一个处理图像非常好的图像处理软件。将处理过的图片展示在平台上,首先需要将此图片发布。用到的是arcgis service软件。使用arcgis service软件发布的图片会生成唯一的一个url。网页平台引用arcgis api for javascript接口,然后通过加载需要的url,即可显示需要的影像图片。用下面这张流程图来说明整个项目,一目了然。



关于项目的详细介绍请参看我的博文基于WebGIS的水质 遥感监测平台 在此就不再赘述。这里主要还是讲讲我的项目经历吧,以此文记录曾经的点滴。
我记得15年刚进实验室那会儿,从来没有接触过网页制作这方面的技术。本科的专业是通信工程,对电子电路,各种编码,通信原理了解比较多。网页这块,可以说从未涉猎。所以说,是从一张白纸开始学习的。要说我的启蒙老师,估计就是w3school这个网址了,很多基本的知识点都是从这上面学习到的。于是一边学习,一边开始修改网页(为什么说修改呢,因为上届师兄搭建了一个纯静态的显示网站,用来显示处理过的遥感影像图片)。
记得当初看着那密密麻麻的代码,头都大了,因为好多现在看来特别容易的代码,当初看来就是天书。所以啊,凡事都有个有个积累的过程。现在回想起来,15年的整个暑假都是在摸索,学习中度过的。那时候,虽然热情很高,但学习路线的确出了点问题。有句话叫做:带着问题去学习,效率会高很多;实践才是掌握知识的正确道路。但我们不要忘了,还有一句话叫做,磨刀不误砍柴功。我当初就是急于去项目上实践,导致很多基础知识都不清楚。这样急急忙忙去做项目,导致效率非常低。
记得那时候不会的就去问度娘,但是正因为知道的很少,所以搜索效率灰常低。我们知道当我们搜索一个问题时,常常出来一大堆答案,有时这种五花八门的答案比问题本身更可怕。所以,当我们接触一些新东西的时候,哪怕走马观花,也要将整个知识体系过一遍,知道个大概。这样解决细节问题的时候,我们才能做到心中有数。
比如,学习网页制作,仅仅在w3school上这个网站上学习,是远远不够的。我们应该通读一些好的网页制作的书籍,类似于xx从入门到精通。本人觉得李东博著作的《HTML5+CSS3从入门到精通》这本书就灰常不错,它不仅介绍了HTML5和CSS3的一些新特性,还解释了这种新特性产生的原因。(主要是根据开发人员的一些常用习惯,而增了某些新特性。比如,我们知道很多开发人员使用<div
id="header">来标记页眉区域,而div本身只是一个容器,浏览器处理这样一个无任何位置标记的容器时,解析速度是比较慢的,为了加快解析速度,HTML5直接添加了一个<header>标签,这样有助于浏览器定位,解析速度相对加快了)这是非常重要的,知其然,知其所以然。
在这里推荐下谢希仁主编的《计算机网路第五版》。这本书在讲解ip/tcp协议时,非常详细,到位。比如在介绍tcp协议的三次握手时,具体分析了为建立连接时何要三次握手,而释放连接时为何要四次握手。这样我们理解起来就更加深刻。相比之下,《ip/tcp协议卷二》就显得晦涩难懂多了。总之,适合自己的才是最好的。经过一段时间的静态网页学习,平台得扩展成动态网站了。我们知道,静态网页主要是三大块构成的,Html+css+javascript.
动态网页一般需要用到服务器,服务器端语言,数据库。
在选择服务端时,是导师提供了宝贵的意见。一般比较流行的后端语言是php.当时特意买了本php入门,打算好好研究一番的。还好当时导师推荐了以色列作家Amos Q.Haviv著作的《MEAN web开发》,从此在全栈开发的路上苦苦挣扎。在此,简单介绍下什么是MEAN开发吧。MEAN是MongoDB,Express框架,Angular前端框架,Node.js平台的缩写。
整个项目只使用一种脚本语言javascript实现。这样的好处,显而易见。那就是不用去学习多种开发语言,前后端只使用一种语言。这样也更利于前后端的融合和交互。当然,由于这种技术还没有得到广泛运用,所以相关的书籍少的可怜,得自己慢慢去学习。
互联网行业最大的特点就是技术推广的特别快。像如今,各种node社区异常火热,在GitHub(全球最大的同性交友平台^0^)也有大量关于node.js的开源项目。所以,学习一种新的语言或者新的知识,找到好的社区非常重要。这一点不分行业。比如,程序员经常关注的是stackoverflow 网站(在项目后期,我大多数问题都能从此网站找到解决的方案,以至于后来有什么疑问,直接使用谷歌搜索"xxxx"site:stackoverflow.com
这样相当于在stackoverflow站内搜索,大大提高了搜索的准确度),还有最大的开源网站GitHub
其他行业,比如金融,产品销售等等,肯定也有类似的社区,上面活跃着各行各业的精英。所以,找到一个相关的社区非常重要。同样也说明了一个问题,各个行业看似无关,其实有些地方还是相通的,那就是学习的方法和能力。一个长期活跃在stackoverflow网站上的资深程序员,转行去做产品销售。他第一反应就是也去找一个类似的社区,在上面虚心求教,慷慨的分享自己的经验,就像他当初分享自己的代码一样,从中能得到快乐和成就感,这将一直激励他前行。
当然,不同性格的人合适不同的职业,一个资深程序员也许最终不适合做产品销售,但是至少学习能力,学习方法上不会走弯路。再说了,谁说程序员就只善于敲代码呢。小米科技CEO雷军当初在武大读书期间,代码就编的特别厉害。别人不仅会编程,还懂运营。谷歌公司的产品经理都是从一线工程师直接提升上去的。所以说,只要把一件事情做的特别棒,再做其他的事情也差不到哪里去。
回到正题上来,Node.js平台最具有开发价值的一点是,它具有强大的高并发处理能力。关于这一点,可以去慕课网上搜索下相关视频。天猫从2014年9月份率先从PHP迁移到Node上,具体的介绍在慕课网上能找到相关介绍视频。
学习node,js开发是痛并快乐的过程,我记忆中尤其深刻的一点是,当初要链接mysql数据库的时候,完全懵逼了。我在网上搜索了各种mysql相关资料,并且对比了在Visual studio上是怎么链接数据库的,网上搜集的答案五花八门,甚至我打算好好研究下ODBC(ODBC是用一组基于C语言的API)~~,现在如果你问我怎么在node上链接mysql,我会对你说下载node-mysql模块即可。是的,就这么简单。由此观之,身边有一位把握大局的大神在,得省多少时间啊。
当然,首先你的机器上得安装mysql数据软件才行,说到底,node-mysql模块只是一个接口,你首先得装有实体。就好比先有物质,再有意识一样。意识只是驱动器,首先得存在被驱动的物质才行。项目中的自动发布程序是基于Arcpy模块的,原理跟node-mysql模块链接mysql数据库是一样的。使用Arcpy接口来驱动Arc
GIS for Desktop和Arcmap。显然要使用Arcpy模块就得先安装Arc GIS for Desktop和Arcmap软件,实际上Arcpy模块不能单独下载,它是伴随着Arc GIS for Desktop和Arcmap软件下载的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息