DonkeyCar总结

更新

这篇文章是我从简书上搬运的,图片都挂掉了。请直接访问原文https://www.jianshu.com/p/9cdbe3eabac9

考完试,终于有时间把这个学期初的坑填上了。还有几位朋友专门关注了我想知道最新的进展,很抱歉啊很久没有消息,也没有什么大进展,下面就说说目前做了的事情和效果。

硬件组装

  1. 由于3D打印比较贵,就让队友做了一个简易的车架,把必要的设备上去了,不够美观,但是够用了。

场地

由于没有比较好的地方,而且学校智能车的赛道这学期还没有开放。按照slack上Donkeycar网友给出的图纸,临时画了些线在纸上,可能是场地的原因,场地小不够开放,导致效果不好。基本都在转圈,不是按线行驶。

训练过程

很难操作,加上WIFI延迟波动,命令不能及时调整,导致一开始基本无法获得正确的数据。后来用网线直接连接勉强解决,(这个机器学习真费人力)
近一万张图片,在没有GPU加速的电脑上训练很慢,用了一个多小时。而在GPU的电脑上用十多分钟就解决了。

最终效果

  1. 油门没有输出,找不出原因,只有角度的输出。最后调成只有角度,手动控制油门。
  2. 在转弯的地方一直在转圈,不会左转出弯,应该是场地左边黑色的边界给识别进去了,加大了权重,到左转时不足?这里我还有视频,但是好像上传有点麻烦,等我处理后再上传。
  3. 训练用的一个方向,但是测试另一个方向时则完全没有效果,估计也是上一个原因吧。
  4. 树莓派只能利用CPU来计算,测试的时候CPU占用有75%,就是3个核已经占满了,性能不是很好。

树莓派构建wheels下载

树莓派是arm平台,用pip安装时,默认从源码构建,编译耗时过长,甚至编译失败
www.piwheels.org 提供树莓派预编译二进制包
操作步骤:

  1. 在 /etc/pip.conf 添加如下内容,启用源
1
2
[global]
extra-index-url=https://www.piwheels.org/simple

不过由于镜像在国外,国内有时访问过慢,下载失败。
解决:
上网站去手动下载 whl 文件到电脑后传给树莓派后执行 pip install $file_name.whl 安装。注意:文件名不能更改,否则会提示:
is not a supported wheel on this platform.
例如,浏览器给我加的括号1:
tensorflow-1.11.0-cp35-none-linux_armv7l (1).whl is not a supported wheel on this platform.

PS:
安装tensorflow时可先安装h5py的whl文件,不然又要编译h5py


读书及写书摘:写下来才是自己的

开学的时候受公众号(stormzhang)影响在当当买了几本书,大佬推荐的一些理财书(《富爸爸穷爸爸》、《小狗钱钱》),还有一些运营的书(《启示录》、《增长黑客》)。和好友一起凑单买了几本,很快囫囵吞枣把一页页书吃掉,书上知识、理念很开眼界,但是现在博主已经全都忘记书上说过什么了,可能得再次翻开书才能找回看书时熟悉的感觉。今天写这篇水文,就当总结阅读来的感悟,还有不足之处吧。
以前的时候基本没怎么看书,天真地利用搜索引擎,以为有了搜索引擎就什么都可以找到。直到发现我遇到的问题开始在网上找不到了,不再是简单的是什么,怎么解决某个错误怎么处理,如何入门XX。可能这就是天花板了,简单的知识网上全都是,但是经过处理消化的知识不会遍地都是。很多“隐藏”内容都在书上写着、在文档里躺着,等着去阅读、去发掘。而且只利用网络上的只言片语、某些知道问答类型的网站,不会建立知识的网络,只是内容的搬运工,没有思考便得到答案,用进废退,早晚变笨蛋。一开始博主就是这么想的,有什么不会直接网上搜,肯定都有的,直接复制下来。经过一年两年发现自己的知识只是停留在片面,别人一说起某个名词,脑子里只知道好像在哪个网上博客里看到过,并不清楚到底是什么。网络真是把双刃剑,多少人没有利用好它,白白浪费自己的生命(当然这也让一些营销号、公司赚到了钱,甚至上了市),本来用来交换信息的好方式,不过这也不能怪工具,还是得从自己出发,发挥主观能性
这学年课很水,也不喜欢上课了,上课就打开手机看书或是带本书过去看,如今一学期快考试了,却还啥都不会。

  1. 提醒自己该干嘛
    比如一开始小狗钱钱里钱钱让(女主什么来着,网上找找)吉娅开始每天写成功笔记,并让读者也天天写自己成功的事情,博主也坚持做了一周时间,都后来就没有再写过了,达不到持久效果,果然人还是有惰性的。
  2. 看了很多书,还是涨点知识
    今年在微信读书上看了不少的书,有各大厂的传记:
  • 《顺势而为:雷军传》雷军从武汉电子一条街到做 WPS 、做投资、到现在做价格公道感动人心的小米
  • 《腾讯传》一开始进这个App直接送的书籍(鹅厂也是够暗示了),不记得具体内容了,就是记录鹅厂的崛起故事,从寻呼机、OICQ,QQ、移动梦网到张小龙的微信
    一些理财知识书籍,成功学??:
  • 《小狗钱钱》以小说情节中穿插金钱、投资的概念和做法
  • 《富爸爸穷爸爸》直接上干货,对比自己的爸爸和好友的爸爸做法,引出穷人思维和富人思维。
  • 《牛奶可乐经济学》揭示日常生活的经济学。
    一些优点技术干货的书籍:
  • 《蚂蚁金服:科技金融独角兽的崛起》这本还记得比较清楚,一本讲述支付宝是如何从淘宝分出来一个独立的系统,如何称霸的,面对各银行的不理睬,只有一家工商银行杭州支行给了支付接口,支付宝才得以用所谓快捷支付撸走用户银行卡里的钱。到现在做余额宝、基金、保险等互联网金融业务。还是挺振奋人心的,一开始的内部不支持,外部没银行支持,然后这个项目直接完蛋(怎么和阿里云一样了,可能记混了)
  • 《淘宝技术这十年》外行人看热闹,内行人看门道。面对淘宝这样指数增长的业务流量,说了很多技术方面的事情,从买php源码,从Oracle,到自己开发数据库Oceanbase,开源项目能用到了都针对自己的业务量改过,并发行了自己的分支版本。其中几位码神多隆这样的人才,用神样的操作硬是让某些技术达到传说级别。
  • 《网络是怎么连接的》《程序是怎样跑起来的》日本人写的一个系列书籍某某是怎样的,比较浅显,不像一些专业书籍那么难理解
  • 《图解HTTP》也是一些入门书籍
  • 《白帽子讲Web安全》先讲解了一些安全的基本概念,人是不安全因素。还有XSS、CSRF、SQL注入一些Web漏洞的防护。
  • 《操作系统之哲学原理》强行哲学,有道理,看完也写不了操作系统
    还有一些是程序员修养、职业生涯这类的,会写书的程序员谈心路历程之类的。没有做记录,已经不知道说了什么了。
  • 《MacTalk》
  • 《程序员的自我修养》

本来是要摘录《软件随想录》里面的内容,但是写着就变成了这个读书总结了?哈哈哈。进入正题:
程序员部落酋长乔尔在给计算机系的学生的建议中有下面几点,本人觉得相见恨晚,没有早点在图书馆发现此书:

给计算机系学生的建议

  • 毕业前练好写作
  • 毕业前学好C语言
  • 毕业前学好微观经济学
  • 因为枯燥就不选修非计算机专业的课程
  • 选修有大量编码实践的课程
  • 担心所有的工作都被印度人抢走
  • 找一份好的暑期实习工作
  • 寻求专业人士的帮助,培养你的自信心

虽然书籍写的是十年前的博客摘录,博客上面提到的很多公司没听过,上面的Windows还停留在XP时代,巨硬开发Office,IE,制定一些魔鬼标准,Joel 还谈论他创建的软件,宣传一些开发理念,给开发人员最好的工作环境。现今博客还在更新 https://www.joelonsoftware.com/
就先到这里,写的文字没有逻辑性,还是得多写,不能埋头苦干,别人都不知道你在干什么。


Spring Boot 中流操作使用

Java 8里面的流对象真好用,函数式编程让编码不一样,并且还能并发执行。这里给出一个业务中实际遇到的数据查询映射成一个奇特的Map映射

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
table1: [
{
name1: "",
name2: ""
},
{
name1: "",
name2: ""
}
],
table2: [
{
name3: "1",
name4: "2"
},
{
name3: "3",
name4: "4"
}
]
}

如果使用普通的操作分别查询出table内的数据行得到List<table1Entity> lists 然后Map.put("table1",lists)就完成了,但是这对于表多的话重复代码就变多了,不符合代码重用的思想。这里给出一个解决方法:

使用 Java8 的stream API可以较为高效的并发操作,不过理解起来有点难度,(调试也需要一点技巧?)

首先新建一个key的列表List<String> names, 由其生成一个stream放入查询接口进行查询,得到另一个流,使用一个map进行映射出Javabean,利用filter删除为空的结果,最后Collectors.toList() 收集流。此时得到的是table1、table2的键值对数组([{"name1":"","name2":""}])。下面给他们按类别扔进对应的Key(由于没有统一基类故使用反射API调用其类型函数,返回类别),Collectors.toMap(s->{s.get(0).getClass().getMethod("getItemType").invoke(s)},s->s)。附一张图参考,可能还需要进一步优化,不过肯定比线性查询出来后一行一行来的快(见灰色注释掉的代码)
流操作消除重复代码


一个大创项目中期检查说几句

0

暑假项目组一起开发了一个 Spring Boot 项目,内容很多很复杂,代码有好看的也有不好看的,从设计到开发,谁也没有经验(辅导员敢这么相信我们,很感动😂)。没有经过系统测试,草草便上线了,效果还意外不错?!😂

1

自己是用户才能设计出好产品,知道痛点是什么,而不是设计某某系统,写文档介绍说很牛叉,真正用起来就是另一回事。

  • 可能开发人员不清楚真正核心的需求是什么,没有考虑用户体验,直接上手堆砌代码,以代码行数取胜。
  • 过度需求,加上无用的功能,分散用户注意力。不论怎样,加上再说,提需求的人自己搞不清楚到底要什么。
  • 线下流程过于繁重,想要在线上重现也麻烦。

2

现在处于摸索阶段,期望不要太高,毕竟不是专业开发。不过能开发出数百人同时使用的网站也感觉很好了,主要是现在工具好用,能力没多高(但是人就是会用工具提升自己的生产力,没有工具就回到原始时代)

3

  • 除了第二天凌晨被刷网站目录,好像也没遇到什么安全问题。(可能只是没发现)互联网这么开放,安全问题首要考虑啊。
  • 一个展示的地方设计得不对,用户看不到图片,紧急新写了一个接口展示数据。(设计和开发都有责任)
  • 辅导员过期后,要求重新审核数据。看了很久代码,才知道改一改数据库就完事了。(可以说是文档不完善)

4

没收到多少反馈,可能是发了操作指南吧😂(跟学校系统一样需要指南)这也反应出不足吧,不能一眼就知道如何操作?

5

没有搜集用户数据(也没啥可搜集的),没有搜集业务接口访问量(可能访问量上来才有用吧)


附:统计数据

目前已上线的综测系统,顺利完成了今年16级信息院综测相关业务。包括学生填报加分项并上传证明图片、班长进行审核该班级的证明、辅导员最终确认有效加分项。下文统计数据时间段为:9月11日 9:00 到 9月16日 0:00
流量数据

  • 前端页面资源使用CDN进行分发,使用回源策略更新文件,减少业务服务器的压力。综测期间使用了8.9GB流量,同时在线达到300 ,资源命中率达90%。实际到达服务器的流量不到500MB,网页加载速度提升,有效提升了用户体验。由于使用的打包工具可计算文件的MD5指纹,在我们更新代码时生成唯一的文件名,避免用户从CDN缓存中获取到旧版本的代码文件。首页入口文件不进行缓存,保证每次访问页面总是询问源服务器是否为最新版本的首页。其他文件缓存30天,代码没有更新时能够快速从本地客户端缓存中获取,同时也减小对CDN的压力和流量。

图片CDN使用流量

  • 证明图片使用对象存储和CDN分发,有效保障了此次审核证明业务。综测期间共上传了 2.9GB 的图片资源,图片访问总流量75.26GB,日均流量12.54GB,峰值带宽21.10Mbps,该时间节点为学生停止申报前。图片资源访问次数总量90,611次,日均15,102次。图片资源的存储以及分发,极其占用磁盘空间、网络带宽。若放在业务服务器上必定对其他基础业务有影响,降低了并发数,用户一多就不能正常服务,出现一到高峰就宕机的情况,但是本项目使用使用对象存储服务,CDN进行资源分发。业务服务器在接受到客户端图片资源的请求时,只需要返回一个带授权凭证的URL,客户端便可以向CDN请求数据,流量转移到CDN而不会直接到业务服务器,减少其对其他基础业务的影响。
    同学们对该系统反应良好,反应其网络响应速度比一般网站都要快速。

实现一个自己的无人车:Donkey Car 一个小型汽车开源DIY自动驾驶平台

self driving car

An opensource DIY self driving platform for small scale cars.
RC CAR Raspberry Pi Python (tornado, keras, tensorflow, opencv, …)
https://github.com/wroscoe/donkey

donkeycar: a python self driving library

Donkeycar is minimalist and modular self driving library for Python. It is developed for hobbyists and students with a focus on allowing fast experimentation and easy community contributions.
http://www.donkeycar.com/

  • 基于python的极简、模块化的自动驾驶库
  • 开源社区驱动项目

设计理念

  • 快速
  • 模块化
  • 可扩展
  • Keep It Simple, Stupid (KISS)

把复杂的事情变简单,这是一件复杂的事情


使用的技术

Keras

Keras :基于 Python 的深度学习库

https://github.com/keras-team/keras

  • Deep Learning for humans
  • 可以以TensorFlow, CNTK, 或者Theano 作为后端运行
  • 支持快速实验,最小时延
    • 允许简单而快速的原型设计(由于用户友好,高度模块化,可扩展性)
    • 支持卷积神经网络和循环神经网络,以及两者的组合。
    • 在 CPU 和 GPU 上无缝运行。
  • 开源

Tornado

Tornado

https://github.com/tornadoweb/tornado

  • 高性能 web 框架和异步网络库(非阻塞网络 I/O)
  • 开源
    TensorFlow

Tensorflow:深度学习工具

https://github.com/tensorflow/tensorflow

  • Tensor 张量即N维数组,Flow 流即基于数据流图的计算,合起来即张量从图一端到另一端
  • Google 开源

OpenCV

Opencv:机器视觉库

https://github.com/opencv/opencv

  • 实时图像处理、计算机视觉以及模式识别
  • Intel 开源

硬件 DIY

Raspberry Pi 俯视图
Raspberry Pi 外设连接图

树莓派

The Raspberry Pi Foundation is a UK-based charity that works to put the power of digital making into the hands of people all over the world, so they are capable of understanding and shaping our increasingly digital world, able to solve the problems that matter to them, and equipped for the jobs of the future.

  • 为学生计算机编程教育设计的卡片式电脑
  • 开源硬件、软件
  • ARM Debian8.0 系统,定制硬件驱动与软件程序

普通遥控车改装

大脚车示例

  1. 电机速度控制器
    • PWM控制
  2. 转向伺服系统
    9g 舵机
    • PWM控制
  3. 有刷电机驱动
  4. 传感器
    广角相机
    • 广角相机

最终效果图

donkey car


连接到极品飞车世界 CN 服务器

本篇文章主要讲如何连接服务器。关于如何自己搭建服务器看我的博客这篇文章或者 简书


提供一个我最近搭建的服务器,连接方法在下面。
地址:http://q.whllhw.xyz:1337


前言

看到了敖厂长出的视频,居然还有这样的游戏能开私服。目前网上能搜到的就这篇文章【极品飞车世界】私服连接教程
游戏画面当然不能跟现在的游戏比较,硬核玩家才不会在意这些。【敖厂长】死掉的极品飞车游戏
当然是去卡收费站的bug啦

不过连接国外的服务器有问题,ping 值 200 ,还登录不了。最近 zesty 开的CN 服务器也莫名其妙不见了,可能是关掉了吧。😂
SoapboxRaceWorld.world也打不开
我于是就花了一个星期去找资料(其中用到 docker 也算是学习的过程)现在基本搭建好了,而且还对 soapbox world 的启动器进行了适配(强行适配)
在搭建的文章中我写了如何搭建服务器,由于缺少支持,soapbox world 官方文档简陋,缺少数据表,无法用其提供的软件进行搭建。我找到了 michelinus/nfsw-server 使用 maven 进行构建,打包出一个 jar 包,部署简单多了。

正文

  1. 去到上面提到的 bilibili 网页,打开网盘下载
    打开网盘
    选中这两项,一个是游戏本体,一个是启动器。下载即可
  2. 下载完了,解压出来,分别我这里解压到了两个文件夹
  3. 打开启动器(可能会提示更新,先更新即可)稍等界面出来,这时应该会自动开始下载游戏文件没关系,右上角有设置按钮点进去,选择游戏文件路径(有 nfsw.exe 的文件夹)其他的选项跟我一样即可,点击 SAVE 会提示重启启动器。
    选择刚才解压的文件夹,注意要有 nfsw.exe 的文件夹
  4. 重启完了之后,如果游戏路径选择正确就出现 DOWNLOAD COMPLETED.否则还会自动下载游戏文件
    成功后的就不会再下载文件了

5.添加服务器(点右上角的加号)输入名称(随意输入),输入服务器地址:http://q.whllhw.xyz:1337 选择OK,提示已经添加成功

6.添加完了之后要自行重启启动器,然后在服务器列表就能看到了,选中刚才添加的一项

  1. 最后,点击绿色按钮注册一个账号,注册完了就能登录了 PLAY NOW !
  2. enjoy!

Ps:若出现无法添加服务器,检查输入是否有问题(建议服务器地址从上面复制进去),也可能服务器正在维护,可以在下面留言询问。其他任何问题也可以给我留言。
添加服务器时出现Please check better...


极品飞车世界 NFS World 服务器搭建教程

本篇文章主要讲搭建过程,以及出现问题的解决方法。难度较高,我已经搭建好了服务器供玩耍,如何连接服务器看这篇文章或者 简书

不推荐的方法

我先找到 github SoapboxRaceWorld上面的开源服务器,尝试了很久,最后搭建好了之后发现游戏中购车的界面进不去,在后台数据库发现少数据,但是我已经全部导入了的😂
缺少表
在代码里面搜索,能在代码里找到,给的SQL文件里面没有。

既然已经不推荐用这种方法了,可以跳过这里。

已经一年没更新了
打包出来的是 war ,需要 wildfly 才能部署,需要做的事情如下:

  1. 下载 releases 打包好的 war,以及 wiki 里提供的 wildfly (google drive 要梯子)
  2. 放入 war 到 wildfly 目录下的 standalone/deployments
    war 包放入这个文件夹
  3. 配置 openfire 服务 (配置文件 wildfly/standalone/configuration/standalone.xml)
    配置 xmppIp 为公网地址(必须检查)
    Udp freeroam、race 都是未完成的功能(私服官方到现在都没搞定😂我也不知道是什么功能)
    配置 openfire restful api 地址
    配置 openfire token
    standalone.xml 中系统属性示例
    也可以登录wildfly 后台修改http://localhost:9990/console/App.html#profile/properties(需要创建账户,运行 add-user.sh 按提示即可)。
    系统属性配置
  4. 配置数据库,同样可以编辑 xml 也可以登录后台数据源配置
    默认用户密码 soapbox soapbox
    5.(可选)配置绑定的后台管理地址
    默认绑定127.0.0.1,docker镜像我改成0.0.0.0了
  5. 可在后台重启服务
    重新加载服务

正文

wiki 给出需要用到服务 openfire 、mysql 、wildfly(后面我找到了 nfsw-server.jar替换掉)都需要用到数据库,所以先从数据库开始吧。
来源 https://github.com/SoapboxRaceWorld/soapbox-race-core/wiki/How-does-it-work?

搭建前提

有 1G 以上的内存,公网IP(如果只是要本地,直接下一个模拟器就好了,不用这么麻烦。),最好 Linux 主机,windows 没试过,不过应该也行。

1. MySQL 数据库

  1. 导入OPENFIRE.sqlsoapbox.sql(修改后从数据库导出的,原来的 db.sql 有点问题,soapbox 数据库大小写没对上😂)
    默认openfire用户名:openfire 密码 openfire
    默认soapbox用户名:soapbox 密码soapbox
    PS:不用来试我数据库了,没开放3306端口,我是用SSH通道用密钥连接的。
  2. 保持数据运行就好了

2.openfire 配置

如 wiki 写的一样OpenFire从 google drive下载。
1.配置数据库连接
登录后台,admin 密码 admin
访问 localhost:9090/plugins/restapi/rest-api.jsp 启用 restful api 把 openfire token 保存下来配置nfsw-server需要用到
登录后台 localhost:9090/server-properties.jsp
Xmpp.domain 改为与后面的nfsw-server.cfg中xmppIp一样的地址
2.配置Xmpp.domain 一般为内网 ip (使用外网ip的话云服务一般都要去配置安全组,openfire 只要能访问就行了)
配置Xmpp.domain错误导致连接的时候会检验 Host 字段,不相同则无法建立连接,无法使用聊天服务
运行 openfire/bin/openfire start让其在后台运行即可。
日志文件在 openfire/logs/目录下,有问题时可以使用tailf openfire/logs/all.log持续查看输出,方便找配置错误,当没有报数据库连不上,没有打印出一些堆栈时就可配置nfsw-server了,否则检查配置是否有误。

3.nfsw-server 配置

在github下载nfsw-server.jar、nfsw-server.cfg也可以自己编译,下载 jdk、maven执行 mvn clean compile assembly:single

  1. 配置数据库连接(src/main/resources/META-INF/persistence.xml)使用打包的话可以先替换掉压缩包里的 xml
    如果不改用户名密码的话配置好url即可,或者添加 host 解析nfsw-server 到ip地址127.0.0.1 也可以

  2. 在nfsw-server.cfg中配置xmppIp(在openfire配置的xmpp.domain 一定要一样,否则报错 Unable to authenticate: Fail to create new session.

  3. openfireToken(在openfire配置的openfireToken)

  4. httpPort是游戏开放端口,我用的是1337(外网开放1337端口)
    其他没提到的就和上图一样就好了

  5. nfsw-server.cfg,nfsw-server.jar 放在同一目录下执行java -jar nfsw-server.jar
    注意看输出,先连接 openfire restful api 返回 201说明 openfire 连接成功
    201才表示连接成功
    然后连接数据库,当没有报数据库连不上,没有打印出一些堆栈时就可应该可以了,否则检查配置是否有误。

enjoy!

nfsw 服务搭建已经完成,在开头的文章下载 nfsw 以及启动器就可以登录了!等会再写一篇客户端登录的教程
PS:我准备把这个服务做成 docker 镜像,这样部署的时候就不用这么配来配去(自己捣鼓了差不多一个星期才搞定,先是 wildfly 搭建的数据库缺数据,无法购买车辆,后是 openfire 中 xmpp.domain 配置错误,进入游戏就提示与服务器断开连接,其实是跨域的问题,nfsw-server的xmppIp要与其相同。)
上面项目都是基本已经停止维护的,使用的 openfire 是4.0.2 的,我fork的老哥michelinus/**nfsw-server**也停止更新一年了。
有问题可以在下面留言哦,欢迎一起交流(虽然极大可能零回复)


Visual Studio 2017 无法登陆提示脚本错误

打开 VS 发现许可证过期,需要登陆后重新获取,但是登陆时提示:https://auth.gfx.ms/16.000.27887.2/OldConvergedLogin_PCore.js Script error 无法执行脚本。
浏览器打开发现脚本没问题。重启多试几次,还是不行,就直接搜这个网址,还真有:VS2017登陆不了,TFS无法连接成功的问题
果然,我的 win7 是 ie8,不过都是用 chrome 上网的(巨硬都是用系统自带的东西,也是服了),马上更新
ie 11 更新包
下载运行提示缺少必要的更新,弹出网页,下载所有安装即可,再重启电脑安装ie 11
安装 ie 11
更新完了之后,我发现 Office 也能登录了,可以愉快的用 OneNote 了。😄


暑假有感

以前回家总是没事情做,天天无所事事,每次放假回来都充满内疚感,什么都没有做,高三老师曾说,假期是超越别人的最好时期。那这样说来,我都不知道被超越了多少了。但是这个假期,可以说是有收获的。时间匆匆,近两个月的时间很快就结束了,时间总是过得很快,让人来不及记得发生过的事。这段时间,是很开心的,可以说是令人激动的。认识这么多优秀的同学,还有老司机学长。每次交流总能有新的笑点,分享经验,分享遇到各种的坑。我不善于交际、很少交流、表达困难,在外人眼前很少暴露自己狂热的内心想法。但是在这个团队里却觉得很舒适,不会觉得很压抑,也是很感谢各个同学和学长一起营造的友好氛围。

第一次见面时候,紧张,慌乱,害怕融入不了这个集体,过了一个暑假到现在却不舍离开。早上一过去,盯了一会屏幕,就该吃午饭了,然后又到了晚上了。很快一个暑假就过去了,仿佛就是昨天。

很多时候,我觉得我都做的不足,其实我是可以解决得更多的事情,可以分担一下队友的锅,或者是重构一些代码,而不是袖手旁观。学习积累不足,很多东西直接就用起来了。有时间还是要多读文档,了解相关知识,不然到时候用起来就容易 GG。

  • 顺便就加上 CDN ,对象存储等云服务。直接把静态页面放在了七牛上面,但是资源的刷新在更新代码后看不到效果,即便强制刷新也不能出来(在七牛上刷新也无效)。后面还是用 CDN 回源,把前端资源放在腾讯云服务器上。
  • 在多人协作方面真是要多学习,比如代码合并问题,还有沟通上存在的问题,效率受影响。真实的项目要做好确实不容易,很多东西缺乏统一,缺乏规范,缺乏测试代码,导致后面问题很多。(只能慢慢修补了)
  • 代码模块之间的耦合度还是比较高,有的地方直接用 repository ,有的地方调用 service
  • 数据库的建模也需要一定的规划,统一字段名,数据类型,索引建立,唯一性约束,(外键还是有待商榷)
  • 缺少 DBA ,测试人员,(现在都是人肉测试,出了问题就直接改)不过毕竟也是小型项目,大家都是边学边做,也没有有经验人员指导,只是在网上翻,在一些书里面翻,缺少实践,也就找不到最佳实践。
    (其他的待更新)