微信号:bit_tiger

介绍:“有趣,有用,有效”.刷项目,做实战,捅破技术的那层纸.

实战训练营|PokemonGo地图设计与实现

2016-09-21 00:22 BitTiger
Pokemon Go手游在一个月前强势登陆以后,迅速成为一款现象级游戏,风靡全球。

而作为一位Hacker, 你又怎么会只满足于低头沉浸于屏幕,享受抓到小精灵和攻克擂台的快感。

想知道每个小精灵的实时地理位置,还有多久消失,以及补给站,道馆的位置吗?


太阁推出的新项目将带你从头建立一个实时 Pokemon Go地图,用技术高端地“作弊”。




Pokemon Go 地图设计与实现项目将带你理论加实战一步一步设计出PokemonGo的地图并且实现从数据采集,服务器部署,服务器运维,数据展示到系统优化的全过程。项目所用到的包括反向工程,分布式网络爬虫,缓存服务器 (Redis),关系型数据库 (PostgreSQL),网页托管服务 (Github pages),后端服务器开发 (Django),服务器部署 (Docker),分布式系统监控与预警 (AWS Cloudwatch),REST API,网页地图插件以及CDN 网页加速。




我们的每节课涵盖详细的知识理论讲解和代码实战环节。理论知识讲解旨在帮助每位学员建立起牢固的知识基础,从而能够举一反三,运用自如。代码实战环节可以加深对知识的理解,提升能力,将知识更好地应用到具体实例中去。



课程目标

通过太阁PokemonGo地图设计与实现项目你将会


  1. 理解基础网络通信模型,懂得如何分析网页 / app 并提取所需的信息
  2. 理解网页制作与托管的几种不同方法,优化,运营网页的常用方法
  3. 理解并使用 Proxy 来隐藏爬虫 IP以及多账号爬虫的实现
  4. 配置 Pokemon Go API 使用环境,使用 Bing Map API 插件
  5. 云服务上的分布式系统设计原则
  6. 使用并理解 Django 作为分布式爬虫的基础部件,使用 并理解Docker 部署服务
  7. 关系型数据库 PostgreSQL 的设置使用,熟悉分布式消息队列的原理及使用 AWS Container Service / SQS / Elastic Beanstalk / RDS 的使用,AWS Lambda 无服务器架构
  8. 理解并应用 REST API 解耦前端与后端开发
  9. 集群压力测试,集群性能优化,集群容量计划
  10. Redis 缓存的常用模式


讲师介绍:


陈迪

物理竞赛本科保送上海交通大学,并获得密西根大学安娜堡分校的 Computer Science 双学位。大学期间曾在 Blackrock 基础架构组实习,毕业之后加入 Bloomberg Trading System 基础架构组。
大学期间曾参与自然语言处理研究,主要专注于多语言文字预习相似度比较。工作后主要专注在数据采集,机器学习,分布式系统的 Project 上。曾经采集全网中文新闻,全网中文小说等语料信息,并且实现了基于深度学习的中文字词向量自动生成。

喜欢尝试新技术,做一些有趣的 Project。



名师问答

  • 整个Project的架构设计是怎样的?分哪几个部分?

整个 Project 的架构主要分为 3 个部分,每个部分都可以单独拿出来做或者随时更换成不同的实现方案。
第一部分是前端网页,主要用简单的 html 和 js 来实现一个地图显示的功能,与后端的交互用 REST API 来解耦。
第二部分是数据查询层,用 Django 跟数据库通信,并且提取所需信息。

第三部分是数据采集层,类似网络爬虫的结构,向 Pokemon Go 服务器采集数据并且存放到数据库。





  • 项目主要的编程语言是什么?用到的核心技术是哪些?

主要编程语言是 Python。技术栈主要专注在后端,包括了服务器的搭建,服务器间的通信,数据库的设计与使用,分布式缓存的使用,REST API 的使用。为了更好地呈现 Project 的结果,还会用到一些前端的设计,部署与优化。


  • 上完这门理论加实战的课程之后,学员可以收获哪些知识技能?

最重要的两个技能: 当自己有一个 idea 之后,知道怎样入手设计一个 project,并且快速做出一个验证想法的原型 (Proof of concept)。 证明了想法的原型之后,怎样讲这个原型扩展成一个可伸缩的弹性分布式系统。


课程时间:
以美西时间为例 

00 课程试讲: 9/17周六: 7 pm- 8:30 pm

(试听课报名方式见下方)

01 理论梳理: 9/23周五: 7pm - 9pm
02 项目实战: 9/24周六: 7pm - 9pm
03 串讲回顾: 9/27周二: 7:30pm - 9pm
04 理论梳理: 10/7周五: 7pm - 9pm
05 项目实战: 10/8周六: 7pm - 9pm
06 串讲回顾: 10/1周二:7:30pm - 9pm
07 理论梳理: 10/14周五:7pm - 9pm
08 项目实战: 10/15周六:7pm - 9pm
09 串讲回顾:10/18周二:7:30pm - 9pm
10 理论梳理: 10/21周五:7pm - 9pm
11 项目实战: 10/22周六:7pm - 9pm
12 串讲回顾: 10/25周二:7:30pm - 9pm

课程大纲


0
试听课
1. 职场经历分享
2.  back end开发需求与趋势
3.  Pokemon Go 项目展示
4.  课程大纲
5.  系统架构简介
6.  技术栈简介

1
第一周
学习目标
1. 理解基础网络通信模型
2. 懂得如何分析网页 / app 并提取所需的信息
3. 理解并使用 Proxy 来隐藏爬虫 IP
4. 配置 Pokemon Go API 使用环境
5. 扫描部分地理区域并且获得小精灵的经纬度坐标

具体理论课程安排
1. 反向工程解构 Pokemon Go
          a. 网络流量监听
               i. HTTP 是什么?
               ii. 如何监听 HTTP 流量
               iii. HTTPS 是什么?
               iv. 如何监听 HTTPS 流量
               v. Certificate Pinning 是什么?
               vi. 如何破解 Certificate Pinning?
          b. 网络流量分析
               i. 序列化与反序列化
               ii. Protocol Buffers 的工作原理 
               iii. Pokemon Go 通信模式
               iv. 消息签名
               v. 破解消息签名
2. Pokemon Go API 使用
          a. 本地电脑使用
               i. Git 基础使用 
               ii. Shared Library
               iii. Python Ctype
          b. 在云服务虚拟机使用
               i. IP 封禁
               ii. OSI 模型
               iii. 匿名网络 Tor
               iv. Proxy 转发

项目课程安排
1. 反向工程示范
          a. 监听 / 解构 Pokemon Go App
          b. 分析 Pokemon Go 流量
2. Pokemon Go API 使用示范
          a. 配置本地运行环境
          b. 配置云端服务器环境
          c. 简易 Pokemon 扫描脚本

TA课程安排
1. 理论知识巩固与框架总结
2. 项目总结示范与提升
3. QA环节

2
第二周
学习目标
1.  云服务上的分布式系统设计原则
2.  使用 Django 作为分布式爬虫的基础部件
3.  使用 Docker 部署服务
4.  关系型数据库 PostgreSQL 的设置使用
5.  分布式消息队列的原理及使用
6.  AWS Container Service / SQS / Elastic Beanstalk / RDS 的使用

具体理论课程安排
1.  分布式系统设计思路
2.  网络服务器
          a.  网络服务器原理
          b.  Django 
3.  分布式消息队列
4.  关系型数据库
          a.  关系型数据库表设计
          b.  PostgreSQL
5.  服务器部署
          a.  Docker 原理
          b.  Docker 本地使用
          c.  Docker 部署方式
6.  AWS 云服务
          a.  AWS Elastic Beanstalk
          b.  AWS SQS
          c.  AWS RDS
          d.  AWS Container Service

项目课程安排
1.  用 Django 与 Pokemon API 实现 Pokemon Go 数据采集服务器
2.  设计,设置 PostgreSQL 数据库
3.  连接数据采集服务器与数据库
4.  使用 Docker 打包数据采集服务器
5.  部署数据采集服务器至 AWS Elastic Beanstalk

TA课程安排
1. 理论知识巩固与框架总结
2. 项目总结示范与提升
3. QA环节

3
第三周
学习目标
1.  理解网页制作与托管的几种不同方法
2.  理解并应用 REST API 解耦前端与后端开发
3.  使用 Bing Map API 插件
4.  优化,运营网页的常用方法

具体理论课程安排
1.  网页是如何呈现到用户前的?
          a.  DNS 设置
          b.  负载均衡
          c.  Web 服务器
          d.  CDN 优化
          e.  SSL 加密
2.  REST API
          a.  REST 是什么?
          b.  REST API 常用模式
3.  地理位置可视化
          a.  Bing Map API
4.  网页优化与运维
          a.  响应式网页设计
          b.  网页加载测速
          c.  网页流量监控
          d.  网页限流
          e.  集群扩容
          f.  集群预警设置

项目课程安排
1.  使用 Bing Map API 实现前端地图模块
2.  使用 Github pages 部署前端
3.  使用 AWS API Gateway 连接前端与后端模块
4.  使用 Django 实现后端数据查询
5.  集群扩容,预警配置
6.  私人域名配置,优化

TA课程安排
1. 理论知识巩固与框架总结
2. 项目总结示范与提升
3. QA环节

4
第四周
学习目标
1.  集群压力测试 (Stress testing)
2.  集群性能优化 (Performance Optimization)
3.  集群容量计划 (Capacity Planning)
4.  Redis 缓存的常用模式
5.  多账号爬虫的实现
6.  AWS Lambda 无服务器架构

具体理论课程安排
1.  集群运维常用方法
          a.  集群监测
          b.  集群预警
          c.  集群压力测试
          d.  集群优化
          e.  集群容量计划
2.  内存式数据库 Redis
          a.  Redis 是什么?
          b.  Redis 的常用模式
3.  多账号爬虫
          a.  账号注册
          b.  账号管理
4.  无服务器架构
          a.  AWS Lambda 是什么
          b.  AWS Lambda 的原理
          c.  无服务器架构的应用

项目课程安排
1.  压力测试前端与后端的架构
2.  分析架构的性能瓶颈
3.  针对性能瓶颈进行优化
4.  用 Redis 实现去冗余优化
5.  账户登录过程优化

TA课程安排
1. 理论知识巩固与框架总结
2. 项目总结示范与提升
3. QA环节

完整试听课视频及相关更多信息请点击左下方“阅读原文”,跳转课程页面。







太阁实验室
有趣,有用,有效;
刷项目,做实战,捅破技术那层纸
论码农的自我修养
WeChat ID: bit_tiger
长按二维码,关注我哟~
点击下方“阅读原文”查看更多
↓↓↓ 
 
论码农的自我修养 更多文章 【太阁微讲堂】聊一聊在创业公司工作的那些事儿 【今日直播】一起聊聊函数式编程(Functional Programming) 你真的了解“遍地是黄金”的硅谷嘛? 【总结】侃侃Uber,滴滴快的,Lyft与神州专车那些事儿 关爱程序猿 | 白色情人节不要再送我奇怪的礼物好吗?
猜您喜欢 Java 中的中文编码问题深入分析 【武汉本周招聘】——公司招聘信息 实录分享 | 一切皆可模块化——Mesos架构探索之路 致运维同仁:您想换个新工作?我们来帮忙!| 运维内推 秒杀系统架构解密与防刷设计 - 高可用架构系列