作者已经说明外部的评分系统很适合程序设计实践类课程,OpenEdx的LMS可以让学院提交作业的代码,外部评分系统可以测试并返回学生提交的代码的得分。
分类:故纸堆
关于NSX和软件定义网络
由于工作的原因,一直负责一个小型网络的维护,这个小型的网络有8台服务器,20多台交换机,4台防火墙和6台路由器,甚至还有一些无线控制器和无线接入点,平均算下来用户有500个。前几年自学了vSphere相关的技术,在实验室内部搭建了一个小型的虚拟化平台,并逐步扩展到了分布式交换机。通过这些技术的使用和相关经验的积累,这个网络的可靠性还是比较高的,也一直对这一块比较满意。对于SDN(软件定义网络)也一直只是听说,并没有实际应用。
找到了本不错的书,有空读读
看了阮一峰的人生经历,感觉似曾相识,但却望其项背。无意搜到两本他的书《如何变得有思想》《软件随想录》,回头有空一定看看。
对wordpress主页功能区的修改
WordPress站点有一个功能区,用于登录、文章RSS、评论RSS等功能。这个功能区域的显示调用了wordpress目录中“wp-includes/widgets/class-wp-widget-meta.php”的代码。屏蔽和修改该区域即可控制功能区显示的内容。
CSS的伪类before和after
CSS中的before和after可以很容易在原有的html元素加上附加的效果,这几年很多网页已经开始使用这种方法,例如在wordpress的最新模板中。在网上找到了一篇还不错的文章描述的比较清楚,网址在下面。
OpenEdx证书功能的启用
在OpenEdx(Ginkgo)的CMS界面中,课程管理的URL为/course/course-v1:edX+DemoX+Demo_Course,开始查找对应的URL文件。在urls.py文件中找了
url(r’^course/{}?$’.format(settings.COURSE_KEY_PATTERN), ‘course_handler’, name=’course_handler’),顺便看下COURSE_KEY_PATTERN的内容,在lms/envs/common.py文件中找到如下定义
COURSE_KEY_PATTERN = r'(?P<course_key_string>[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+)’
OpenEdx的购物车分析(ginkgo.1)
1、OpenEdx的购物车代码在lms/djangoapps/models.py文件中,首先分析模型:
class Order #订单(含有一批物品)
class OrderItem #订单中的一个物品,有一个外键 order指向Order类。
其中Order是用户的订单,其中Order.status为用户订单的状态。如果status==’cart’,则意味着该订单还未结算,物品仍在购物车。如果status==’paying’ 则意味着进入支付状态,此时相关信息不可修改。
2、两个和优惠码有关的类
class Coupon
class CouponRedemption #优惠码赎回,因该是用户使用过的优惠码存储的地方。
在安装多个python的环境中用制定的版本的解释器运行程序
由于Python的相关库版本众多,且库之间还有较大的差异。因此一个经常遇到的场景是在一台机器上使用”virtualenv”安装多个python环境,并用指定的python来执行某些程序。在人机交互的时候可以通过命令”source ./v1en/bin/active”进入相应的环境并执行程序,但有时需要用系统的定时任务crontab和supervisor来做这些事情。如下是对应的解决办法:
在执行程序时直接写上带有绝对路径的python名称和对应的程序名称,例如
/home/abc/v1env/bin/python /app/hello/abc.py
如果程序所在的目录需要加入PYTHONPATH中则需要先进入这个目录,例如
cd /app/hello/ && /home/abc/v1env/bin/python /app/hello/abc.py
关于React和DRF的整合(修改分页后返回的内容)
对于前端的表格数据,需要返回数据本身的序号,不是这个记录的ID。如果直接使用DRF的序列化功能则不能产生这个序号,因此要对DRF内置的ListModelMixin类进行修改。
DRF的视图编写
在DRF中APIView属于比较底层的视图类,虽然灵活但使用其进行开发时代码量会较大。使用更高级的接口类会减少代码量,例如generics.GenericAPIView。使用这个父类要同时使用mixins.ListModelMixin,来能实现类似的list、create等功能。