Skip to content

Lesson 0 环境搭建

Ryannnnnnn edited this page Sep 22, 2014 · 11 revisions

一、基本环境搭建

1.1 建议环境:
  • Ubuntu虚拟机 or Wubi Ubuntu镜像 (建议)。注:需要使用虚拟机可以在Fudan mvls平台下载VMWare
  • 建议IDE:Vim, 请预装 (建议)
  • Git中文简单手册 请预装Git (必须)
  • 建议调试方法: 不要用调试器 通过输出信息来调试 (建议)
  • 建议编译方法: gcc HelloWord.cpp (建议)
1.2 其他环境:

你要是大神的话,可以无视上面建议,请随意使用任何方法配置自己的环境,只要你可以把作业最终提交到这个仓库,只要你能Getting Things Done.

1.3 Why not Windows? Why Ubuntu?

二、如何使用Github (必须)

2.1 Why Github?
  1. 主流VCS,你们以后会有用的 Git是VCS,Github不是
  2. 代码提交方便
  3. Peer Accessment. 需要用它的代码评论功能,大家互相Review代码,互相学习
  4. Wiki信息发布平台+ Issues一个小型论坛了。 课程问题可以在上面提
2.2 约定(操作示例可见2.3,Git的使用参见2.4中所列资源)
  • 每个同学在codebase根目录下,以自己学号创建目录(例:mkdir 11300240057),只允许操作该目录,否则TA将不会把它Merge到主干
  • 在每个同学自己的根目录(113000240057/)下按照题目布置时的标题创建目录,如mkdir assignment0
  • assignment*目录下包含src/testcase/两个目录,分别包含你的源码和你自己构造的测试数据
  • 测试数据的文件名最好能够体现出数据特征,如:测试边界条件的数据可以使用boundary_0.txt作为文件名

这么约定的目的有两个:

  1. 目录结构清晰,不会造成冲突
  2. 方便评分脚本,测试工具脚本的使用
2.3 本课程中的使用
  1. https://github.com/ 登录注册一个账号
  2. 到我们课程仓库https://github.com/ds-sww/codebase 去fork一份到你的仓库。(戳一下右上角的Fork按钮即可)
  3. 把仓库拉到本地,编写代码,并把改动Push到你Fork的仓库。(代码见下)
  4. 接下来需要创建一个pull-requests,让管理员来Merge(请戳 右边导航 -> Pull Request -> Create Pull Request)
  5. 等待管理员Code Review及Merge. 可以到这里去查看其他人对你的pull request的评论;同时查看其他人提交的代码,若对代码有疑问或修改建议的,请戳那行代码,并留言!
  6. 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/whimsycwd/codebase.git (replace by your repository address)
git remote add ds-sww https://github.com/ds-sww/codebase.git

mkdir -p 11300240057/assignment0                      # Make your own project directory
cd 11300240057/assignment0

vim HelloWorld.cpp 
# 编写HellWorld.cpp文件

cd ~/DataStructure/codebase
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
2.4 Git的一些学习资源

三、Advanced:配置你的vim环境 (Optional)

3.1 把Vim配置成简单IDE(建议)

为了使用ssh递归下载子模块(而不需要一直输入账号密码),我们必须:

  1. 生成SSH KEY 为了能够顺利执行以下命令。
  2. 可以参见 https://github.com/Ryannnnnnn/.vim ,来配置自己的vim
3.2 Why Vim or Why not other editor?
  • 我们需要理解IDE为我们做了什么。IDE为我们屏蔽了具体的细节,而我们需要了解细节。所以要用editor 不用 IDE.
  • IDE适用大型项目,有很多不需要的功能。为什么要忍受IDE(如Visual Studio)带来的电脑性能压力。
  • Vim 小而快,而且够用。
  • 和Ubuntu一样, Vim大家最终都是要会用的
  • Vim 比其他Editor 好用(个人观点) Emacs党表示不服

四、评分说明

4.1 发布Assignment可能的形式
  1. TA发布题目到Wiki
  2. 题目通常会给出TA的baseline测试数据,通常会要求大家写出solution,同时构造测试数据。
  3. 根据题目复杂度1~2周内,同学们提交pull-request. 这期间互相code review. TA会尽量Review大家代码。
  4. 在deadline之后,TA Merge大家pull-request, baseline数据+同学们构造的测试数据,对大家的代码进行评测。 评分
  5. 在Wiki上公布结果,推荐分享优秀代码
  6. Review其他人构造的优秀数据和代码
4.2 评分规则
  1. 构造测试数据正确性和fail掉的其他人的程序数
  2. 代码的正确性和美观程度 (待议)

五、工具 Tools (待完善)

5.1 runTest.sh(待完善)

功能: 运行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)
Clone this wiki locally