Logo
☆☆☆☆☆
0.0
Intermediate
55h

使用 OTP 设计 Elixir 系统

开放电信平台(OTP)是一种面向进程的设计环境,Elixir 从其运行的 Erlang 虚拟机中继承了这一特性。这种以进程为核心的架构和通信机制,使得 Elixir 编程具有独特的挑战性。 在本课程中,你将学习构建和设计 Elixir 项目所需的关键设计考量。你将深入了解 Erlang 虚拟机以及项目各组成部分。你将回顾 Elixir 的数据类型,以确定适合项目的数据层结构。随后,你将构建一个核心程序,实现数据转换,并通过独立的进程扩展项目功能。最后,你将把各个组件整合为一个完整的 OTP 进程,并对应用程序进行测试。 完成本课程后,你将对 OTP 环境以及 Elixir 项目的各项数据组件有深入理解。你将能够将项目集成到其他 Elixir 框架中,并使用 PostgreSQL 数据库进行数据管理。

10 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
使用 OTP 设计 Elixir 系统
开放电信平台(OTP)是一种面向进程的设计环境,Elixir 从其运行的 Erlang 虚拟机中继承了这一特性。这种以进程为核心的架构和通信机制,使得 Elixir 编程具有独特的挑战性。 在本课程中,你将学习构建和设计 Elixir 项目所需的关键设计考量。你将深入了解 Erlang 虚拟机以及...

WHAT YOU'LL LEARN

对开放电信平台(OTP)设计环境有深入理解

Content

10 Lessons • 0 Quizzes • 0 Challenges

按层次构建我们的项目
  1. 1

    学习目标与课程内容

  2. 2

    项目构建入门

  3. 3

    重新思考设计选择

  4. 4

    选择我们的层

  5. 5

    开始之前先思考

  6. 6

    从正确的数据类型开始

  7. 7

    创建一个 Mix 项目

  8. 8

    构建我们的功能核心

  9. 9

    设定我们的界限

  10. 10

    OTP、状态与函数式核心

  11. 11

    测试我们的代码

  12. 12

    规划我们的生命周期

  13. 13

    调用我们的工作进程

  14. 14

    总结:分层构建我们的项目

  15. 15

    测验:在 Elixir 中设计应用程序的分层系统

了解我们的 Elixir 数据类型
  1. 1

    数据类型简介

  2. 2

    基本类型

  3. 3

    列表

  4. 4

    流

  5. 5

    映射和结构体

  6. 6

    Map 的用途

  7. 7

    映射的陷阱

  8. 8

    字符串

  9. 9

    Elixir 中的字符串表示

  10. 10

    元组

  11. 11

    函数作为数据

  12. 12

    何时离开 Elixir

  13. 13

    总结:了解我们的 Elixir 数据类型

  14. 14

    测验:支撑 Elixir 的数据类型

从正确的数据层开始
  1. 1

    数据层简介

  2. 2

    访问模式决定数据结构的选择

  3. 3

    一种不同的方法

  4. 4

    不可变性驱动一切

  5. 5

    函数式数据结构

  6. 6

    创建我们的精通项目

  7. 7

    确定项目的数据

  8. 8

    确定项目的数据——继续

  9. 9

    总结:从正确的数据层开始

  10. 10

    测验:Elixir 中的数据层

构建我们的功能核心
  1. 1

    我们的函数式核心简介

  2. 2

    按功能目的组织核心函数

  3. 3

    开始我们的测验

  4. 4

    函数即数据

  5. 5

    使用函数命名概念

  6. 6

    从函数构建测验

  7. 7

    构建单一职责函数

  8. 8

    在单一抽象层次上构建

  9. 9

    将我们的标记通过变换移动

  10. 10

    保持左侧边距窄小

  11. 11

    尝试核心功能

  12. 12

    总结:构建我们的功能核心

  13. 13

    测验:构建功能核心

测试我们的核心
  1. 1

    测试编写入门

  2. 2

    通过通用设置函数简化测试

  3. 3

    改进 ExUnit 测试框架

  4. 4

    使用夹具提供测试数据

  5. 5

    构建我们的测验

  6. 6

    直接使用夹具函数

  7. 7

    用 describe 块组织命名设置

  8. 8

    将命名的设置函数应用于我们的测试

  9. 9

    使测试可重复

  10. 10

    使测试可重复——继续

  11. 11

    测试中的组合

  12. 12

    测试我们的测验

  13. 13

    超越 Elixir 基础的测试

  14. 14

    总结:测试我们的核心

  15. 15

    测验:函数核心的测试

将进程机制隔离在边界中
  1. 1

    边界层简介

  2. 2

    通过不确定性保持组合性

  3. 3

    将错误视为数据

  4. 4

    报告成功与错误

  5. 5

    使用 with 语句组合不确定结构

  6. 6

    构建我们的可选服务器

  7. 7

    我们的边界层架构

  8. 8

    使用进程实现 QuizManager

  9. 9

    为 QuizManager 添加更多功能

  10. 10

    尝试使用测验管理器

  11. 11

    QuizSession 实现的基础准备

  12. 12

    实现测验会话

  13. 13

    测试驱动测验会话

  14. 14

    将服务器封装为 API

  15. 15

    验证我们的测验

  16. 16

    验证我们的模板

  17. 17

    构建 API 层

  18. 18

    测试驱动 API

  19. 19

    为什么用 call 而不用 cast

  20. 20

    配置选项

  21. 21

    安全地扩展我们的 API

  22. 22

    总结:将进程机制隔离在边界中

  23. 23

    测验:边界与 GenServer

自定义我们的生命周期
  1. 1

    生命周期层简介

  2. 2

    理解生命周期的构建模块

  3. 3

    Elixir 中用于管理进程的函数

  4. 4

    通过链接启动进程

  5. 5

    配置应用程序以启动监督者

  6. 6

    创建 start_link

  7. 7

    配置应用程序

  8. 8

    操纵监督者(Supervisors)的其他选项

  9. 9

    使用动态监督者启动每个用户的进程

  10. 10

    添加开始链接

  11. 11

    使用名称查找服务

  12. 12

    将注册表和动态监督者添加到 application.ex

  13. 13

    建立监督策略

  14. 14

    观察它

  15. 15

    使用多个用户运行

  16. 16

    总结:自定义我们的生命周期

  17. 17

    测验:监督者与生命周期层

调用我们的工作进程
  1. 1

    工作层简介

  2. 2

    了解我们的动机

  3. 3

    利用依赖项中的工作线程

  4. 4

    使用任务实现串行代码的并发

  5. 5

    使用 Poolboy 构建公共资源池

  6. 6

    添加监考人员以运行限时测验

  7. 7

    编写 Proctor 边界服务器

  8. 8

    为监考边界服务器奠定基础

  9. 9

    完成监考边界服务器的实现

  10. 10

    将监考员集成到边界 — QuizManager

  11. 11

    让监考者发挥作用

  12. 12

    摘要:调用我们的工作者

  13. 13

    测验:使用并发的工作者与服务

组装我们的组件
  1. 1

    引入持久化

  2. 2

    添加持久化作为边界服务

  3. 3

    使用回调管理持久化

  4. 4

    构建一个 Poncho 项目

  5. 5

    保存响应

  6. 6

    建立一个 API

  7. 7

    构建我们的 Postgres 表

  8. 8

    将 MasteryPersistence 集成到 Mastery 中

  9. 9

    集成一个函数以持久化记录

  10. 10

    将我们的 OTP 依赖项集成到 Phoenix 中

  11. 11

    将我们的 OTP 依赖项集成到 Phoenix 中——继续

  12. 12

    为OTP抽象结构组织代码

  13. 13

    为 Phoenix Channels 添加层

  14. 14

    向 LiveView 添加层

  15. 15

    向 Scenic 添加层

  16. 16

    总结:组装我们的组件

  17. 17

    测验:让不同的依赖项协同工作

测试边界
  1. 1

    测试我们的边界简介

  2. 2

    测试:以用户的方式调用 API——设置

  3. 3

    测试:以用户的方式调用 API——辅助函数

  4. 4

    运行我们的 API 测试

  5. 5

    直接测试 Poncho 项目

  6. 6

    隔离监考人员的边界顾虑

  7. 7

    修改 Mastery 项目的边界

  8. 8

    为 Mastery 和边界添加通知

  9. 9

    使用新的通知功能

  10. 10

    我们测验的最终测试

  11. 11

    总结:边界测试

  12. 12

    测验:在边界层编写测试

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)