[学习笔记]Open edX

open edx 是一个开源的集合多种机器学习资源、分布式、负载均衡等最新技术的一个开源平台

一. 简介

  • 可以使用studio X 创建课程
  • blendedX 进行混合学习
  • videoX 创建视频

安装,配置和运行open edx 平台:https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/

EDX-plateform Github: https://github.com/edx/edx-platform

学习者指南: https://edx.readthedocs.io/projects/open-edx-learner-guide/en/latest/

浏览器支持:

  • Chrome
  • Safari
  • Firefox
  • Microsoft Edge & Microsoft Internet Explorer 11

二、Open edX 架构:

This service is supported by a collection of other autonomous web services called independently deployed applications (IDAs)

架构

Open edX项目中的几乎所有服务器端代码都是PythonDjango作为Web应用程序框架。

关键组件

2.1 LMS: Learning Management System

LMS使用许多数据存储。课程存储在MongoDB中,视频由YouTube或Amazon S3提供。每个学习者数据存储在MySQL中。

MS和其他地方的Django服务器端代码使用 Mako 进行前端模板生成。客户端代码的一部分使用 Backbone.js 框架(迁移)。Open edX项目使用 SassBourbon 框架来编写 CSS 代码。

Open edX课程由XBlocks的单元组成,可扩展课程的方法:课程作者可以嵌入LTI工具,将其他学习工具集成到Open edX课程中。可以使用JS Input集成JavaScript组件。可以使用OLX(open learning XML)导出和导入课程,这是一种基于XML的课程格式。

2.2 Studio

Studio是课程创作环境,课程团队使用它来创建和更新课程。Studio将其课程写入LMS使用的同一Mongo数据库。

2.3 Comments

comments (or called forums)。comments组建是使用 Sinatra框架用Ruby编写的为数不多的非Python组件之一。

2.4 APP

Open edX项目包括一个适用于iOS和Android的移动应用程序,允许学员观看课程视频等。

2.5 Analytics

open edx的分析管道捕获学习者的行为事件,这些事件在S3中存储为JSON,使用Hadoop进行处理,然后将消化后的聚合结果发布到MySQL。结果通过REST API提供给Insights,这是一个IDA,教师和管理员用它来探索数据,让他们知道他们的学习者正在做什么以及他们的课程如何被使用。

分析模块

2.6 后台程序

A number of tasks are large enough that they are performed by separate background workers, rather than in the web applications themselves. This work is queued and distributed using Celery and RabbitMQ. Examples of queued work include:

  • Grading entire courses
  • Sending bulk emails (with Amazon SES)
  • Generating answer distribution reports
  • Producing end-of-course certificates

The Open edX project includes an IDA called XQueue that can run custom graders. These are separate processes that run compute-intensive assessments of learners’ work.

Open edX项目包含一个名为XQueue的IDA,可以运行自定义分级器。这些是单独的过程,对学习者的工作进行计算密集型评估。

Elasticsearch 课程 & 评论


三、扩展平台

3.1 可将xblocks与edx集成

xblocks扩展的功能有 LMS studio test 部署xblock

*还可以使用XBlock URL在HTML中呈现单个XBlock

要为同一视频组件构建XBlock URL,请获取它 usage_id,然后使用以下URL格式。

https://courses.edx.org/xblock/block-v1:edX+VideoX+1T2016+type@video+block@47faf3a03c4f4023b187528c25932e0a


3.2 定制JavaScript应用程序

在课程中包含自定义JavaScript应用程序

在创建JavaScript应用程序时,Studio会将问题嵌入到内联框架(HTML iframe标记)中,以便学习者可以在LMS中与其进行交互。

  1. 在edX Studio中,上传包含您要向学员展示的JavaScript的HTML文件。
  2. 复制文件的嵌入URL。
  3. 创建自定义JavaScript显示和评分 问题。该问题的模板包含示例JavaScript应用程序的定义,该应用程序需要并对学习者交互进行评分。
  4. 编辑组件的XML以删除评分信息并参考您上传的HTML文件:
<customresponse>
    <jsinput
     width = "显示应用程序所需的宽度"
     height = "显示应用程序所需的高度"
     html_file = "嵌入HTML文件的URL"
     sop = "false" />
</ customresponse>

exp:

<customresponse>
    <jsinput
     width = "400"
     height = "400"
     html_file ="/static/electrol_demo.html" 
     sop = "false" />
</ customresponse>

要使用JavaScript应用程序进行总结性评估并通过edX评分系统计算学习者结果,您必须:

JavaScript应用程序中包含这些必需的函数:

  • getState() 函数
  • setState() 函数
  • getGrade() 函数

问题XML中的引用函数。
使用Python对学生响应进行评分。

Python代码会解析应用程序getGrade()函数返回的JSON字符串, 并确定学习者的提交是否正确。

Studio中定义的用于为学习者提供JavaScript应用程序的问题组件XML具有以下结构:

<problem>
    <!-- Optional script tag for summative assessments -->
    <script type="loncapa/python">
        import json
        def vglcfn(e, ans):
            """
            Code that parses ans and returns True or False
            """
    </script>
    <customresponse cfn="vglcfn">
        <jsinput
            gradefn="JSObject.getGrade"
            get_statefn="JSObject.getState"
            set_statefn="JSObject.setState"
            width="100%"
            height="360"
            html_file="/static/file-name.html"
            sop="false"/>
    </customresponse>
</problem>

Reference: https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/extending_platform/javascript.html


3.3 自定义显示评分示例模版


四、 edX Modulestores

edX平台使用多个不同的模块存储来存储课程数据。这些模块商店中的每一个都在edx.org上使用


4.1 概述

XMLModuleStore是第一个用于edX平台的模块库。

XMLModuleStore使用存储基于XML的课程的文件系统。当LMS服务器启动时,XMLModuleStore将每个进程的每个块加载到内存中。

XMLModuleStore是只读的,不允许用户在不重新启动服务器的情况下更改课程。


DraftModuleStore是下一代模块存储,它允许随机访问课程块并在请求上加载块,从而提供更高的可扩展性。

DraftModuleStore允许在不重新启动服务器的情况下编辑课程。

此外,DraftModuleStore存储某些类型块的草稿版本。


Split Mongo是最新的模块库

https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/modulestores/split-mongo.html#split-mongo-modulestore


4.2 MixedModuleStore

MixedModuleStore为所有模块存储功能提供通用API。

此外,MixedModuleStore允许您选择存储特定课程的模块库(XMLModuleStore,DraftModuleStore,Split Mongo),并将该课程的请求路由到正确的模块库。

MixedModuleStore还可以处理从一个模块库到另一个模块库的一些转换。


4.3 Split Mongo Modulestore

Split Mongo中的“分裂”指的是课程如何分为三类信息

  • 课程标识,简称课程索引
  • 课程结构
  • 课程内容,简称XBlock定义。

五、Testing

发表评论 / Comment

用心评论~

金玉良言 / Appraise
笔筒虫LV 1
2019-03-06 23:02
您好,我想请问一下博文中的架构图片是从哪儿获取的呢?
头像
DYBOY站长已认证
2019-03-09 21:57
@笔筒虫:官方文档中,貌似有

Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/blog.dyboy.cn/content/templates/dyblog/footer.php:56) in /www/wwwroot/blog.dyboy.cn/include/lib/view.php on line 23