最近被各种琐事缠身,也没怎么学习新东东填充自己。本文为阶段性总结,扯一扯最近遇到的以及接下来打算做的事儿吧。
1. 工作和生活是两码事
最近一次出差,和老大在车站候车室等车时聊天,他告诉我:“要重视工作效率,所学到的东西大多都在一天八小时的上班时间里”。说心里话,当时没怎么赞同这个观点,因为在此之前,我最充实的时间是在下班后回到家里:上网络培训课,看书,写博客。
然而,不久我就改变了这个想法。上上个礼拜回老家参加一好哥们婚礼,顺便把媳妇也接到了上海。本以为可以好好过二人世界,谁料原先一个人的生活规律完全被打乱了。下班回来后总有各种各样的琐事缠身,做饭洗碗,洗澡拖地,和媳妇说说话...... 总之,当忙完一切发现时间已经 22:00 左右了,完全没心思再开机倒腾。
当然,这并不是抱怨什么,生活本该如此。工作是为了更好的生活,回到家里就该多陪陪家人,相信那些结过婚有了孩子的兄弟们更能体会。直到此时此刻,我才发自内心的赞同老大在车站对我说的话。写这篇博文也是在公司午休时间码出来的。
2. 开发之外的事儿
最新关注两个词:
测试
、持续集成
,下面内容为我对于它们的初认识,层次不深,纯属扯淡,如表达有误,望不吝指教。
2.1 测试
我在看一些开源项目时发现他们都会使用一些测试框架,刚好我的项目最近不那么忙,我也想选择一种测试框架集成到我的项目里。
在此之前,我只接触过 java 里的单元测试,就是那种给定参数,测试某个方法的返回值与想要的值是否一致。对于前端测试,我一直处于意识模糊状态,到底测啥子??我理解的前端测试就是人工点击页面的某个按钮,出来某个页面。这也能用代码测吗??
可别说,测试里竟然还真有这东东,叫 e2e (端对端)测试。(突然感觉好神奇,只是还不会玩)
这里有篇介绍 e2e 的文章,我推荐感兴趣的阅读:[从入门到不放弃]多浏览器的自动化测试(1)-本地测试
除此之外,还有 单元测试 和 接口测试。对于接口测试,我暂时的理解是发出某个 http 请求,判断响应是否成功,以及响应的数据格式与我们想要的是否一致(不知道是不是这样子)。至于单元测试,我还不知道在前端里它测的啥。
关于前端测试框架,网上有很多种,我也阅读了其中一些文档,但是具体实践还是无从下笔,希望有经验的朋友可以指导一二。关于测试框架的选择与适用场景,我觉得也得花时间系统的学习一下。
前端测试框架2.2 持续集成
前面说了测试,我也只是认为有必要在有时间的时候学习一下,直到我发现了 持续集成 这个东东,我有必要更改一下我的措辞:测试是项目进程中必不可少的一个东东。
我是在 《持续集成是什么?》 这篇文章中知道 持续集成 这个词的。
我的理解是项目开发有个流程:
- 开发代码
- 测试代码
- 打包代码(前端里如 npm run build)
- 发布到服务器(将打包的 dist 目录扔到 tomcat 或者 nginx 里)
最初,上面四个步骤都需要我们手动去操作。想一想,如果我们只是改了一个小功能,就得重复上述四个步骤,这得多恶心人呀。
持续集成 帮助我们完成后面三个步骤:当我们开发完把代码上传到代码仓库中时,持续集成就开始自动的做后面三个步骤了。倘若测试阶段发现问题,整个过程就会停止,这也方便我们快速发现问题,解决问题。如果没有 测试 这个守门员,即便代码打包成功,发布到服务器上,逢年过节也会心里发虚的。
持续集成 怎么自动做后面三个步骤呢?就我目前的理解:需要先搭建持续集成环境,可以参考:持续集成服务 Travis CI 教程。具体做什么事应该是使用脚本完成的。这部分后面也会花时间系统学习一下。
3. 初探移动端
一直以来,都在做 Web 端的开发,有时有个好点子,就想用 app 怼出来,毕竟在手机上查看比打开电脑在网页上查看方便的多得多。
我了解到使用 react-native 可以做移动端开发,但我不理解为什么 js 代码就能在手机上运行成 app 呢?js 在 Web 端浏览器中能运行那是因为浏览器内置 js 引擎;计算机系统是用 c 写的,所以各种应用程序基本也是 c 写的;安卓系统不是用 java 写的吗,所以之前手机上的 app 不都是用 java 开发的吗?关于这种种关系我还很迷惑,在知乎上提问 app在移动端的运行原理是什么? 也没人搭理。
搞不清楚原理,先开发者也成。于是乎一鼓作气将 react-native 的文档读完了,但安装 Anstroid Studio 时却遇到各种奇葩问题。下载 sdk 包总是卡死,本机上明明已经翻墙了,开发工具上还要配置代理。于是乎,我的移动端初探又提前夭折了。在此,对广大人民群众“招聘”移动端师傅带我这个小白入门。
4. 虚拟机的进化
关注阮一峰的朋友应该知道,他最近几周更新的博文经常提到一个词 Docker
,刚开始我不以为然,因为技术更新太快了。但是他连续四周都更新相关的文章不禁引起了我的兴趣,经过一段时间学习,我觉得 Docker 也是时代发展的产物。
4.1 笨重的虚拟机
我回忆我第一次安装虚拟机的时候,下载 VMware 安装包,先安装虚拟机程序,再下载系统镜像文件 iso,这些文件往往很大,4G、5G等等,接着经过漫长的安装过程,才能使用虚拟机上的虚拟系统。
docker 类似虚机的 "包管理器",想象 npm 的用法,使用 docker install centos_xxx 就可以安装一个最简版的 centos 系统,这不是很方便吗?
4.2 开发人员:这不是我的问题,是你环境的问题
测试找开发,经常会听到开发人员这样的回复:“这不是我的问题,是你环境的问题”。诚然,由于开发环境和测试环境的不同引起的误解不在少数。
docker 可以打包环境。如在开发环境,安装了 jdk1.8,maven3.0,tomcat 等,docker 可以将这个环境打成一个包,测试人员直接在本机安装这个环境(就像 npm 包发布安装一样),再从开发哪里拿到代码测试,此时就不会再有测试环境差异性造成的问题了。
关于 docker 的实践使用,后续学习补充。
5. 关于吐槽
最近发现一本书《程序员的呐喊》,谷歌员工写的,可谓是吐槽界的精髓,不吐槽不痛快,越吐槽越进步。想要呐喊心里郁闷的可以下载看看。
6. 总结
- 合理安排好工作时间与生活时间
- 跳入测试这个大熔炉
- 蹑手蹑脚得探究持续集成
- docker 玩起来
- 鼓舞士气,准备二次向移动端进军
网友评论