more >>All problems in computer science can be solved by another level of indirection.
— by David Wheeler
道阻且长,行则将至
关键词:CS4挑战 MIT-6.087
今年过年没有回家,留在了上海。趁着这还有三四天的假期,把遗留的MIT-6.087的Pratical Programming in C的部分看完,并把之前看过的部分复习巩固一遍,也算是给新版CS4挑战起个头。看了一下这个Repo最早的commit的记录是2018年12月份,可以说是历史遗留问题了。借着再巩固一下C语言基本知识、数据结构以及Unix相关概念的想法,以本文作为契机对MIT-6.087课程进行回顾和总结。
MIT 6.087 Practical Programming in C是MIT 2010年的IAP(Independent Activities Period)课程。MIT的IAP课程总长四周,有点类似于上海大学的夏季小学期。但是MIT-6.087的内容还是很丰富的,感觉四周时间学习完所有的内容还是非常有挑战性的。直接摘录课程主页的课程介绍来看看这门课的内容。
This course provides a thorough introduction to the C programming language, the workhorse of the UNIX operating system and lingua franca of embedded processors and micro-controllers.
The first two weeks will cover basic syntax and grammer, and expose students to practical programming techniques. The remaining lectures will focus on more advanced concepts, such as dynamic memory allocation, concurrency and synchronization, UNIX signals and process control, library development and usage. Daily programming assignments and weekly laboratory exercises are required. Knowledge of C is highly marketable for summer internships, UROPs, and full-time positions in software and embedded systems development.
正如课程介绍所说,这门课程在我看来很不错的地方在于不仅仅介绍了C语言的基础用法和一些基本的数据结构,而且还在后面的章节涉及到了很多Unix的高级概念。而这些概念很多是计算机体系或者是操作系统的内容,这也是当初为什么我看完前面的C基础就没法继续推进下去的原因😂,自己当时对计算机体系和操作系统一无所知。
more >>关键词: MIT挑战 自我学习 CS4挑战
又看了一遍以前写的My CS4 Challenge,才觉得当初制定的目标是多么的不切实际。当然也要考虑到当时的境遇,那种急迫地想要通过做事情来证明自己还行的想法,潜意识里高估了自己执行计划的能力。当发现事情的发展完全不是预期的那样,自己就会变得很佛系,就会安慰自己:做人嘛,不要给自己太大压力:)。
原始版的My CS4 Challenge的一个不足之处在于,计划的拟定完全参照MIT 挑战和自己在研究生阶段的学习兴趣。但是在工作了大半年之后才发现,只有把工作的内容和学习的计划结合起来,自己才会有更有动力去执行这些计划。否则按照原始计划去学习CS139P Developing Apps for IOS,我不相信自己真的有时间有精力去完成这门课程。
认真思考了一下,以前的我是想通过这些美帝高校的公开课资源来搭建自己的计算机基础框架,方便自己秋招春招找工作。现在的需求是想要搭建自己的技能树,让自己的职业道路走得更顺一些。目前来看(至少五年内)自己的技术领域方向还是在网络、数据中心、云计算、虚拟化、Arm架构、Linux内核等等。所以做个简单的排除法,之前的课程列表里诸如CS231n Convolutional Neural Networks for Visual Recognition之类的课就可以剔除了,毕竟自己从事的方向基本与AI不相关了。而且课程列表里的有些课程的内容是重叠的,如果真的能够把握一门课的精髓,诸如老老实实地把CMU的15-213 Introduction to Computer Systems过一遍,我认为是没有必要再去看MIT的6.004 Computer Structure了。当初课程列表里放这么多课程可能是让自己有个心理满足感,但新一版的课程列表必须更加精简,更加符合我学习的实际情况。
其实再回头一想,当初毕业后来Arm做OSS也是机缘巧合,冥冥之中感觉这是自己喜欢的方向。但是自己确实基础薄弱,开始工作的前几个月不说是以泪洗面,也感到特别强烈的挫折感。这版新的CS4挑战,给自己一个3~5年的时间,配合着工作中的积累,我相信还是基本满足工作上的需求的。
more >>关键字: 单元测试 Python unittest模块
最近在看关于VPP项目中的CSIT的部分,VPP的Path test里主要就是应用了Python的unittest框架,正好在毕业论文项目中也使用到了unittest完成相应单元测试,这篇博客对unittest框架的使用作了全面的介绍,故翻译之作为学习的存档,也算是一个小小的总结。
Python的unittest框架是基于Kent Beck(TDD测试驱动开发发明人)和Erich Gamma的XUnit框架开发完成的,这种模式在C、Perl、Java和Smalltalk等语言中也被重复利用。unittest框架中有三个基本概念,分别是test fixtures,test suites以及test runner,这三个概念的组合使用可以实现Python的自动化测试。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true