Skip to content

DML308/student-camp-2019

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2019 DML308多核组新生学习

📖 总进度表

当前任务: 任务6

Deadline:8月31日 24:00:00

学 员 1 2 3 4 5 6 7
杨璐珲
钟承希
上官剑斌

欢迎你在2019年来到多核组!

在开始之前,你需要知道的是:

在成为C++/Java/后台/游戏/前端/测试开发工程师之前,你首先得是个工程师!

📁 仓库结构与规范:

初始项目架构:

  • student-camp-2019
    • StudentName
      • Notes(空)
      • Tasks(空)
      • README.md(进度表)
    • README.md
    • .gitignore

目标项目架构:

  • student-camp-2019
    • 你的文件夹
      • Notes
        • git.md
        • markdown.md
        • lexer.md
      • Tasks
        • task1
        • ...
    • README.md(进度表)
    • .gitignore

新手大礼包

工具 说明
Chrome https://www.google.com/chrome/
学生大礼包 https://github.com/ivmm/Student-resources
Github Education Pack https://education.github.com/pack
任意输入法 要求项目内全部使用utf-8编码
标点符号使用英文标点(半角)
wox / bitwise / cmder 实验室软件推荐列表/未来由你们更新

接下来让我们开始紧张刺激的 7 层关卡挑战吧 ~~ Link Start !!

1. 代码托管 / 版本控制

Build software better, together

推荐时长:1~3

任务目标

  1. 创建并拥有一个 github 账号
  2. 了解并掌握 git 基本操作
  3. Fork 并 Clone student-camp-2019 仓库
  4. 要求把过程中学到的新知识写入你的文件夹/Notes,包括后续任务进程中也是如此

考核指标

  • 创建你的文件夹/Notes/git.md文件,在其中写入以下内容
    • git 指令:
      列出命令行中常用的git指令, 至少5个
    • 回答问题: 什么是 Pull Request?
      自己的理解写在这里,10-50个字即可
    • 把自己fork的文件夹内内容修改完毕后提交 Pull Request 到主目录.不要动别人的文件

    事实上,对 fork 和 Pull Request 使用到位的情况下, 你的本地文件夹中根本就不会出现别人的文件

任务位置

你的文件夹/Notes

注:这步涉及到后面内容的代码控制,请一定完成好哦!以下所有涉及此仓库的代码记得当日 push

关键词:git、github

任务奖励

  1. 经验值 10 Exp
  2. 能愉快的对代码进行版本控制与管理了!

参考资料

本实验室发布的 Git 使用简明教程 熟练使用后可以大胆参与完善该文档

廖雪峰的 Git 教程

利用 SSH 连接 Github

2. Markdown

推荐时长:1~3

任务目标

  1. 阅读并了解 markdown 语法规范
  2. 熟练使用基本的 markdown 操作
  3. (可选)开通自己的Markdown博客 未来求职简历可附上技术博客 ,推荐 简书 或者 Github Pages + Hexo

考核指标

  • 创建你的文件夹/Notes/markdown.md文件,在其中写入以下内容
    • markdown 常用字符:
      列出文本中最常用的markdown风格标签, 至少5个
    • 修改任务1中你的git.mdgit.md.txt文件, 运用刚学到的 markdown 规则来美化排版
    • 在上一步自己fork的文件夹内把内容修改完毕后提交 Pull Request 到主目录.
    • 了解什么是 Issue

关键词:markdown、typora、简书、插件

任务奖励

  1. 经验值 10 Exp
  2. 能够基本写出一手不难看的文档

参考资料

原味文档

中文文档

3. 正确获取知识的姿势

你看百度的工程师都用在用 google,所以要什么百度自行车!

推荐时长:自由

任务目标

  1. 成功翻越 GFW
  2. 能够正常访问 Google、Stackoverflow等国外网站 , 注: 因为华科校园网的关系,大家都能访问 google.com.hk 所以这个任务我都算你们完成. 但校园网不稳定,有时还经常断连, 所以最好有自己的访问外网的工具
  3. (选做)成功申请并使用上 gmail(申请后可以配置 Chrome 账户登录后同步书签和插件)
  4. 在心中修改常用搜索引擎为 Google

考核指标

关键词:Google、Shadowsocks、Virtual Private Network

任务奖励

  1. 经验值 10 Exp
  2. 完成目标 3 额外获取 5 Exp
  3. 瞬间提升的逼格

参考资料

  • lantern 比较贵,不推荐
  • shadowsocks 可以几个人合买一个服务器来配置代理

4. 挑选一个适合自己的编辑器

工欲善其事,必先利其器

推荐时长:1

任务目标

  1. 任选其一:(千万不要浪费太多时间在这个地方,只需安装一个即可)
    • 世界级宝具:Visual Studio Code
    • Windows 限定: VS2013(过渡期可以使用,但不能依赖 IDE 的环境)
    • 轻便&零配置 : Brackets
  2. 了解并安装适当的插件(自动格式化/代码高亮等等,以及自定义主题和配色),牢记常用快捷键,窗口切换/命令行开关/快捷操作等等,减少对鼠标的依赖. 尽量做到不会在工作一年后被同事问:"你是第一次使用 xx 编辑器吗?洁白的像是从官网刚下载的似的"
  3. 了解什么是.editorConfig,思考为什么要用空格代替tab,以及在.md .cpp .y .l Makefile文件中分别应该设置几个空格大小呢?
  4. 简单了解什么是"utf-8"编码和"GBK"编码,有趣的故事有"锟斤拷"这个梗.

考核指标

无. 专心准备你们的考试和报告, 这个任务了解一下相关资料即可,对团队协作时使用的代码风格有帮助

关键词:coding

任务奖励

  1. 经验值 5 Exp
  2. 高颜值的编辑器

参考资料

Visual Studio Code

Brackets

5. Github 多人协作

推荐时长:1 - 2

任务目标

  1. 复习 git 相关操作, 完善自己的Notes/git.md,指令内容按照自己实际用过的来写,优先写使用频率高的.
    • 思考这样一个问题, 如果github被墙了或者校园网访问网速特别慢,怎么办?例如,clone我们的COStream到服务器时,明明是约40MB的文件包却只有不到100Kb/s的速度.
    • 了解git push -u origin master中的origin指的是什么. 可通过git remote -v来列出信息. 如果能体验一下code.aliyun.comgitee.comGitLab相信你会有更清楚的理解.
  2. cn.costream.orgcostream.orgdev 分支中提交Pull Request来修改自己的个人名片
    • 很高兴看到你们已经练习了多次PR的使用, 考虑到这次只需修改一个文件,在网页上操作即可,无需clone到本地)

关键词:多人协作

任务位置

你的文件夹/Notes

任务奖励

  1. 经验值 15 Exp

6. Bison & Lex 编译器工具使用

推荐时长:14 天, 任务7是长期任务需要持续维护,而任务6是短期任务.

任务目标

  1. 了解 词法分析 & 正则表达式, flex工具的使用

  2. 了解语法分析 & 移入-规约 规则 , bison工具的使用

  3. 可参考DML308/COStreamPP中的src/config中的词法分析和语法分析文件

  4. 关于这个任务的讨论和代码分享, 我们集中在Issue #16中讨论.

代码中禁止直接复制/粘贴的抄袭,也没必要做愚蠢的变量名替换.抄袭与否的判断标准以 commits 时间纪录为准. 如果摸鱼半个月然后一天提交500行代码, 鬼才会相信是你自己写的.

考核指标: 使用 flex 和 bison 完成一个自己的计算器,输入一个复杂表达式1 + 2 * 3 ,输出计算结果7

  • 功能涵盖:
    • 加减乘除运算
    • 与或非运算
    • ( )的优先级控制
  • 可选功能:
    • 支持a=10; b=a+1这样的赋值语句
    • 支持int a;这样的声明语句
    • 支持从文件输入
    • 支持注释
  • 可参考的文件目录你的文件夹/Tasks/:
    • lexer.l flex 词法分析文件
    • parser.y bison 语法分析文件
    • main.cpp 程序入口
    • Makefile 能将手动编译流程自动化的 Makefile 文件

关键词:flex / Bison / 编译原理

任务位置

https://github.com/DML308/student-camp-2019/你的文件夹/Tasks/

任务奖励

  1. 经验值 100 Exp
  2. 阅读项目源码时一个不错的入口
  3. 后期有能力快速开展毕设工作
  4. 对命令行操作 & 编译系统 更熟悉

7. COStream 语法熟悉 & 编写测试文件

这个任务要动真格的了,越早着手准备越好,后期可能视老师要求,强制指定每人4~5个测试文件.

推荐时长:每个测试文件7

任务目标

  1. 了解 COStream 语法

  2. 负责DML308/COStream项目dev分支的tests测试文件维护

    • 计划是逐步将原有无文档测试文件详细测试后添加至主目录
    • 原则上不追求复杂的算法,也不追求产出速度
      • 但要求对每个一眼看不出结果的函数标记详尽的注释
      • 最差最差也要留下你参考的博客链接
      • 并对函数运行结果的正确性进行校验,给出测试时用的数据和预期结果(和网上标准结果进行比对时要附上链接)
    • 文法覆盖面尽量大
      • 首先尽量覆盖网站文档中已有的文法结构
      • 能找出越多的 BUG 越好. 后期考虑专门开一个页面,纪录找到的BUG列表和修复BUG的工作, 签名制

注: 测试对于软件开发是一项很重要的工作, 目前市面上测试开发的岗位也能开到20k/月,而且很缺专业人才. "单元测试" 这四个字在任何开源软件中都能频繁的见到, 甚至不少项目都有着"测试驱动开发"这样的编程思想

考核指标: 在DML308/COStreamdev分支的tests目录中维护测试文件

目前我已经将 dev分支的tests目录中的原测试文件删除,新生们可以从master分支的tests/SPLtest/Benchmark中挑有用的例子来加入进去.选材重复时保留文档写的更好的那一份.

要求的文件夹目录格式:

  • tests
    • 00-basic
      • basic.cos 源码文件(详细的注释写在 composite 头前即可)
      • README.md 说明文件(要求有截图+加速比测试的表格),图片链接可使用sm.ms 作为图床
    • 01-XXXX
    • 02-XXXX

目前保留了一个00-basic作为例子.可点击查看效果https://github.com/DML308/COStream/tree/dev/tests/00-basic

关键词: tests 单元测试

任务位置

https://github.com/DML308/COStream/tree/dev/

任务奖励

  1. 经验值 15 Exp
  2. 有价值的任务量,可以留着放进 PPT 里汇报.做的好的话可以依靠自己维护的测试用例及其带来的相关调研工作,在3~5个月的时间内使自己 PPT 内容不空洞.
  3. 在写例子发觉不便的过程中找到自己的毕设题目思路