-
Notifications
You must be signed in to change notification settings - Fork 31
Lesson 0 环境搭建
Ryannnnnnn edited this page Sep 26, 2014
·
11 revisions
- 实体机装一个Ubuntu(推荐), Ubuntu虚拟机 or Wubi Ubuntu镜像 (建议)(wubi就是个逗,不建议)。注:需要使用虚拟机可以在Fudan mvls平台下载VMWare
- 建议Editor:Vim, 请
预安装 (建议) -
Git中文简单手册 请
预安装Git (必须) - 建议调试方法: 不要用调试器 通过输出信息来调试 (建议)
- 建议编译方法:
gcc HelloWord.c
org++ HelloWord.cpp
(建议)
你要是大神的话,可以无视上面建议,请随意使用任何方法配置自己的环境,只要你可以把作业最终提交到这个仓库,只要你能Getting Things Done.
- TA可能会写评分脚本,或者给你们写测试工具,在Linux上使用自然,而Windows上使用不那么方便(可能需要借助msys、cygwin、GnuWin、Batsh等工具)
- Ubuntu是Linux比较流行的一个分支,较稳定
- Windows不是很好的学习环境,其他课程(比如Operating System)也会用到Ubuntu(严格说是Linux Kernel)的;到了具体的生产环境,或多或少也都需要接触到Linux。
- 如果你想学习Linux的话,建议尝试Archlinux、Gentoo,甚至LFS。但是么,这是神坑,非学有余力且有兴趣者,就算了吧。
- Git是目前业界最流行的VCS(版本控制系统)之一,具有去中心化,blabla,blabla等优点,
并且还是Linus Torvalds为了管理Linux Kernel代码开发的,作为脑残粉。。(大雾 - Github是非常一个非常流行的使用Git作为版本管理系统的代码托管网站,提供了非常多方便的功能,托管了非常多非常流行的开源软件
- 代码提交方便
- Peer Accessment. 需要用它的代码评论功能,大家互相Review代码,互相学习
- Wiki信息发布平台+ Issues一个小型论坛了。 课程问题可以在上面提
- 每个同学在codebase根目录下,以自己学号创建目录(例:
mkdir 11300240057
),只允许操作该目录,否则TA将不会把它Merge到主干 - 在每个同学自己的根目录(
113000240057/
)下按照题目布置时的标题创建目录,如mkdir assignment0
- 在
assignment*
目录下包含src/
和testcase/
两个目录,分别包含你的源码和你自己构造的测试数据 - 测试数据的文件名最好能够体现出数据特征,如:测试边界条件的数据可以使用
boundary_0.txt
作为文件名
这么约定的目的有两个:
- 目录结构清晰,不会造成冲突
- 方便评分脚本,测试工具脚本的使用
- https://github.com/ 登录注册一个账号
- 到我们课程仓库https://github.com/ds-sww/codebase 去fork一份到你的仓库。(戳一下右上角的Fork按钮即可)
- 把仓库拉到本地,编写代码,并把改动Push到你Fork的仓库。(代码见下)
- 接下来需要创建一个pull-requests,让管理员来Merge(请戳 右边导航 -> Pull Request -> Create Pull Request)
- 等待管理员Code Review及Merge. 可以到这里去查看其他人对你的pull request的评论;同时查看其他人提交的代码,若对代码有疑问或修改建议的,请戳那行代码,并留言!
- Create Issue. 在课程仓库的右边导航 -> Issues,这里相当于一个论坛,大家可以在这上面提问题,讨论 etc.
下面是步骤3的示例:
# Step 3's Code Snippet
cd ~
mkdir DataStructure # Some place for your repo
cd DataStructure
git clone https://github.com/{your username}/codebase.git # Clone your repo to local
mkdir -p 11300240057/assignment0 # Make your own project directory
cd 11300240057/assignment0
vim HelloWorld.cpp # Edit HellWorld.cpp
git status # Make sure your changes are correct
git add . # Add all changes to snapshot
git commit -am "assignment0 commit by 11300240057" # Commit it
git push origin master # Push to your own repository
为了使用ssh递归下载子模块(而不需要一直输入账号密码),我们必须:
- 生成SSH KEY 为了能够顺利执行以下命令。
- 可以参见 https://github.com/Ryannnnnnn/.vim ,来配置自己的vim
- 我们需要理解IDE为我们做了什么。IDE为我们屏蔽了具体的细节,而我们需要了解细节。所以要用editor 不用 IDE.
- IDE适用大型项目,有很多不需要的功能。为什么要忍受IDE(如Visual Studio)带来的电脑性能压力。
- Vim 小而快,而且够用。
- 和Ubuntu一样, Vim大家最终都是要会用的
- Vim 比其他Editor 好用(个人观点) Emacs党表示不服
路人甲:不要说得这么恐怖嘛,在Linux里面还可以选择ed, nano, Gedit, Sublime(配置起来比较蛋疼?)等
- TA发布题目到Wiki
- 题目通常会给出TA的baseline测试数据,通常会要求大家写出solution,同时构造测试数据。
- 根据题目复杂度1~2周内,同学们提交pull-request. 这期间互相code review. TA会尽量Review大家代码。
- 在deadline之后,TA Merge大家pull-request, baseline数据+同学们构造的测试数据,对大家的代码进行评测。 评分
- 在Wiki上公布结果,推荐分享优秀代码
- Review其他人构造的优秀数据和代码
- 构造测试数据正确性和fail掉的其他人的程序数
- 代码的正确性和美观程度 (待议)
功能: 运行TA准备的测试数据和自己的测试数据
example
Chenweidongs-MacBook-Pro:tools whimsy$ runTest 11300240057 assignment0 Add
./11300240057/assignment0/testcase/Add_large.in [AC]
./11300240057/assignment0/testcase/Add_small.in [AC]
./11300240057/assignment0/testcase/Add_wrongCase.in [WA]
./TA/assignment0/testcase/Add_normal.in [AC]
How to :
Step One: TA/tools/runTesth.sh 修改根路径Root
Step Two: alias runTest='${ROOT}/TA/tools/runTest.sh' ( need to replace ROOT with actual value)