当前任务: 任务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
- StudentName
目标项目架构:
- student-camp-2019
- 你的文件夹
- Notes
- git.md
- markdown.md
- lexer.md
- Tasks
- task1
- ...
- Notes
- 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 |
实验室软件推荐列表/未来由你们更新 |
Build software better, together
推荐时长:1~3
天
- 创建并拥有一个 github 账号
- 了解并掌握 git 基本操作
- Fork 并 Clone
student-camp-2019
仓库 - 要求把过程中学到的新知识写入
你的文件夹/Notes
,包括后续任务进程中也是如此
- 创建
你的文件夹/Notes/git.md
文件,在其中写入以下内容- git 指令:
列出命令行中常用的git
指令, 至少5个 - 回答问题: 什么是 Pull Request?
自己的理解写在这里,10-50个字即可
- 把自己
fork
的文件夹内内容修改完毕后提交 Pull Request 到主目录.不要动别人的文件
事实上,对 fork 和 Pull Request 使用到位的情况下, 你的本地文件夹中根本就不会出现别人的文件
- git 指令:
你的文件夹/Notes
注:这步涉及到后面内容的代码控制,请一定完成好哦!以下所有涉及此仓库的代码记得当日 push
关键词:git、github
- 经验值
10 Exp
- 能愉快的对代码进行版本控制与管理了!
本实验室发布的 Git 使用简明教程 熟练使用后可以大胆参与完善该文档
推荐时长:1~3
天
- 阅读并了解 markdown 语法规范
- 熟练使用基本的 markdown 操作
- (可选)开通自己的Markdown博客
未来求职简历可附上技术博客,推荐 简书 或者 Github Pages + Hexo
- 创建
你的文件夹/Notes/markdown.md
文件,在其中写入以下内容- markdown 常用字符:
列出文本中最常用的markdown
风格标签, 至少5个 - 修改任务1中你的
git.md
或git.md.txt
文件, 运用刚学到的 markdown 规则来美化排版 - 在上一步自己
fork
的文件夹内把内容修改完毕后提交 Pull Request 到主目录. - 了解什么是 Issue
- markdown 常用字符:
关键词:markdown、typora、简书、插件
- 经验值
10 Exp
- 能够基本写出一手不难看的文档
你看百度的工程师都用在用 google,所以要什么百度自行车!
推荐时长:自由
- 成功翻越 GFW
- 能够正常访问 Google、Stackoverflow等国外网站 , 注: 因为华科校园网的关系,大家都能访问 google.com.hk 所以这个任务我都算你们完成. 但校园网不稳定,有时还经常断连, 所以最好有自己的访问外网的工具
- (选做)成功申请并使用上 gmail(申请后可以配置 Chrome 账户登录后同步书签和插件)
在心中修改常用搜索引擎为 Google
无
关键词:Google、Shadowsocks、Virtual Private Network
- 经验值
10 Exp
- 完成目标 3 额外获取
5 Exp
- 瞬间提升的逼格
- lantern 比较贵,不推荐
- shadowsocks 可以几个人合买一个服务器来配置代理
工欲善其事,必先利其器
推荐时长:1
天
- 任选其一:(千万不要浪费太多时间在这个地方,只需安装一个即可)
- 世界级宝具:
Visual Studio Code
- Windows 限定:
VS2013
(过渡期可以使用,但不能依赖 IDE 的环境) - 轻便&零配置 :
Brackets
- 世界级宝具:
- 了解并安装适当的插件(自动格式化/代码高亮等等,以及自定义主题和配色),牢记常用快捷键,窗口切换/命令行开关/快捷操作等等,减少对鼠标的依赖.
尽量做到不会在工作一年后被同事问:"你是第一次使用 xx 编辑器吗?洁白的像是从官网刚下载的似的" - 了解什么是
.editorConfig
,思考为什么要用空格代替tab
,以及在.md .cpp .y .l Makefile
文件中分别应该设置几个空格大小呢? - 简单了解什么是"utf-8"编码和"GBK"编码,有趣的故事有"锟斤拷"这个梗.
无. 专心准备你们的考试和报告, 这个任务了解一下相关资料即可,对团队协作时使用的代码风格有帮助
关键词:coding
- 经验值
5 Exp
- 高颜值的编辑器
推荐时长:1 - 2
天
- 复习 git 相关操作, 完善自己的
Notes/git.md
,指令内容按照自己实际用过的来写,优先写使用频率高的.- 思考这样一个问题, 如果github被墙了或者校园网访问网速特别慢,怎么办?例如,clone我们的COStream到服务器时,明明是约
40M
B的文件包却只有不到100Kb/s
的速度. - 了解
git push -u origin master
中的origin
指的是什么. 可通过git remote -v
来列出信息. 如果能体验一下code.aliyun.com
或gitee.com
或GitLab
相信你会有更清楚的理解.
- 思考这样一个问题, 如果github被墙了或者校园网访问网速特别慢,怎么办?例如,clone我们的COStream到服务器时,明明是约
- 在
cn.costream.org
和costream.org
的dev 分支
中提交Pull Request
来修改自己的个人名片- 很高兴看到你们已经练习了多次PR的使用, 考虑到这次只需修改一个文件,在网页上操作即可,无需clone到本地)
关键词:多人协作
你的文件夹/Notes
- 经验值
15 Exp
推荐时长:14
天, 任务7是长期任务需要持续维护,而任务6是短期任务.
-
了解 词法分析 & 正则表达式,
flex
工具的使用 -
了解语法分析 & 移入-规约 规则 ,
bison
工具的使用 -
可参考
DML308/COStreamPP
中的src/config
中的词法分析和语法分析文件 -
关于这个任务的讨论和代码分享, 我们集中在Issue #16中讨论.
代码中禁止直接复制/粘贴的抄袭,也没必要做愚蠢的变量名替换.抄袭与否的判断标准以 commits 时间纪录为准. 如果摸鱼半个月然后一天提交500行代码, 鬼才会相信是你自己写的.
- 功能涵盖:
- 加减乘除运算
- 与或非运算
(
)
的优先级控制
- 可选功能:
- 支持
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/
- 经验值
100 Exp
- √阅读项目源码时一个不错的入口
- 后期有能力快速开展毕设工作
- 对命令行操作 & 编译系统 更熟悉
这个任务要动真格的了,越早着手准备越好,后期可能视老师要求,强制指定每人4~5个测试文件.
推荐时长:每个测试文件7
天
-
了解 COStream 语法
-
负责DML308/COStream项目
dev
分支的tests
测试文件维护- 计划是逐步将原有无文档测试文件详细测试后添加至主目录
- 原则上不追求复杂的算法,也不追求产出速度
- 但要求对每个一眼看不出结果的函数标记详尽的注释
- 最差最差也要留下你参考的博客链接
- 并对函数运行结果的正确性进行校验,给出测试时用的数据和预期结果(和网上标准结果进行比对时要附上链接)
- 文法覆盖面尽量大
- 首先尽量覆盖网站文档中已有的文法结构
- 能找出越多的 BUG 越好. 后期考虑专门开一个页面,纪录找到的BUG列表和修复BUG的工作, 签名制
注: 测试对于软件开发是一项很重要的工作, 目前市面上测试开发的岗位也能开到20k/月,而且很缺专业人才. "单元测试" 这四个字在任何开源软件中都能频繁的见到, 甚至不少项目都有着"测试驱动开发"这样的编程思想
目前我已经将
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/
- 经验值
15 Exp
- 有价值的任务量,可以留着放进 PPT 里汇报.做的好的话可以依靠自己维护的测试用例及其带来的相关调研工作,在3~5个月的时间内使自己 PPT 内容不空洞.
- 在写例子发觉不便的过程中找到自己的毕设题目思路