Step1. 配置 java 环境
Step1. 上 Oracle 下载 Linux 下的 JDK 压缩包,我下载的是 jdk-7u25-linux-x64.tar.gz
Step2. 解压,并将解压后文件复制到 /usr/lib/jvm 中
tar -zxvf jdk-7u25-linux-x64.tar.gz
sudo cp -r ~/Downloads/jdk1.7.0_25/ /usr/lib/jvm/
Step3. 配置环境变量
sudo gedit ~/.profile
往文件的最后一行末尾添加:“export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25”,保存并关闭
在 terminal 中输入 source ~/.profile 更新
使用 env 命令查看 JAVA_HOME 的值是否为:“/usr/lib/jvm/jdk1.7.0_25” 如果是的话,说明配置成功
Step4. 修改系统默认的 jdk
系统默认的 jdk 是 open jdk,这里我们把它改成 sun 公司的 jdk
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_25/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_25/bin/javac 300
sudo update-alternatives --config java
sudo update-alternatives --config javac
在上面的步骤中,如果遇见系统要求你选择,选择 jdk1.7.0_25 前对应的选项即可
最后查看以下 java 的信息:java -version,我的如下:
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
出现上面的信息,表明已经安装成功了
Step2. 下载 java 客户端
Step3. 启动 ContestAppletProd.jnlp 文件
javaws ContestAppletProd.jnlp
在这句命令之后,如果提示你说 javaws 没有安装,就按照提示的来安装就行了,不出意外的话,应该会提示你如下的命令:
sudo apt-get install icedtea-netx
Step4. 做一个 TopCoder 的桌面启动器
如果每次做 TC 的时候都开着一个 terminal,那将是一件非常痛苦的事情,我们可以给它做一个桌面启动器,先看一个图片吧:
这些 Applications,他们都对应了一个 .desktop 的配置文件,有了一个合法的 .desktop 配置文件,他对应的东西就会在桌面或者菜单中出现,也能创建快捷方式,那么,也就是说,我们完全可以给 TopCoder 的客户端也搞一个 .desktop 的配置文件,那么这些配置文件在哪呢,我们应该怎么设置呢?
推荐看看这篇文章,写的非常详细:Linux Desktop Entry 文件深入分析
下面我仅说明怎么创建 TopCoder 客户端的的 .desktop 配置文件和怎么安装 TopCoder 的插件,有了 .desktop 配置文件后,在上图中的 Applications 中就能搜到 TopCoder 客户端的启动选项,不用每次都去开一个 terminal 那么麻烦了,有了插件,就能提高我们做比赛的效率了
先去 google 或者 百度 或者随便哪里,找一个你喜欢的图片作为你的 TopCoder 的启动图标,比如我的图标:
再去 这里 找到以下三个插件:
1. TZTester
2. CodeProcessor
3. FileEdit
把他们和在 Step2 中下载的 ContestAppletProd.jnlp 放在一起,可以建一个文件夹,我是把它门放在 ~/Applications/TopCoder 中的,也就是说,这个文件夹中要有 5 个东西:
(1). TopCoderIcon.png
(2). TZTester.jar
(3). CodeProcessor.jar
(4). FileEdit.jar
(5). ContestAppletProd.jnlp
现在,打开 terminal,输入以下命令,进入 /usr/share/applications/ 中,设置 TopCoder.desktop 配置文件
cd /usr/share/applications/ (这里需要注意不是存放插件的地方而是usr下的文件夹)
sudo gedit TopCoder.desktop
在弹出来的空文件中,把下面的东西搞进去:
[Desktop Entry]
Version=1.0
Name=TopCoder
Exec=javaws /home/sakura/Applications/TopCoder/ContestAppletProd.jnlp
Terminal=false
Icon=/home/sakura/Applications/TopCoder/TopCoderIcon.png
Type=Application
Categories=Development
上面的东西中,被我黑色加粗了部分,需要根据你存放后面两个东西的具体地址填写,值得注意的是,他们必须是绝对地址
如果你所有的东西都操作正确的话,这时候,在 Applications 中搜索,就能找到你添加的启动器了,比如我的:
点击它,看看能不能弹出登录如下的登录界面:
如果出现了,那么恭喜,已经搞定了,如果没有,别慌,仔细检查检查是不是哪里搞错了
Step4. 给客户端装插件
1、使用你的账号登陆 Arena。选择:"Options" → "Editors",调出了新的窗口,按 "Add" ,然后在 "name" 栏填 "FileEdit" ,"EntryPoint" 栏填 "fileedit.EntryPoint",路径的话,直接浏览 "FileEdit.jar" 所在的位置即可。完成之后按 "OK"
2、继续 "options" → "Editors"。调出了新的窗口,按 "Add"(PS:这次要添加以上全部三个文件包括 "FileEdit.jar" )。这一次 "name" 栏填 "CodeProcessor" ,"EntryPoint" 栏填 "codeprocessor.EntryPoint",路径栏:直接浏览三个文件就可以。完成之后按 "OK"
3、选择 "CodeProcessor" 做你的 "Default Editor"(PS:就是在前面的两个白色的括号中的第一个打勾), 按 "Save" 键
4、选定 "CodeProcessor" (PS:是高亮显示,不是在前面的两个白色的方括号里打勾哦!),按 "Configure"。在 "Editor EntryPoint" 栏,键入 "fileedit.EntryPoint",在 "Processor Class" 栏键入 "tangentz.TZTester",按 "Verify",弹出窗口看是否全部 "found",是的话按 "OK" 键返回,不是的话看前面的操作是否有误。然后再按后面的 "configure",勾上 "Write the problem description using HTML",把 "File Extension" 那里改成 "html" ,这样题目描述就会被生成一个 html 文件,方便看题。把 "Backup existing file when overwrite" 前面的勾去掉,那东西几乎没用。在 "Enter directory read/write problems to:" 这里填上你放程序文件的绝对路径。最后按一下 "code template",把 "language" 改成 "C++",用下面的模版替换里面原来的模板
模板
$BEGINCUT$
$PROBLEMDESC$
$ENDCUT$
#line $NEXTLINENUMBER$ "$FILENAME$"
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std;
#define PB push_back
#define MP make_pair
#define REP(i,n) for(i=0;i<(n);++i)
#define FOR(i,l,h) for(i=(l);i<=(h);++i)
#define FORD(i,h,l) for(i=(h);i>=(l);--i)
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<double> VD;
typedef long long LL;
typedef pair<int,int> PII;
class $CLASSNAME$
{
public:
$RC$ $METHODNAME$($METHODPARMS$)
{
$CARETPOSITION$
}
$TESTCODE$
};
// BEGIN CUT HERE
int main()
{
$CLASSNAME$ ___test;
___test.run_test(-1);
return 0;
}
// END CUT HERE
最后一起保存,就 OK 了。现在随便进一个 "
Practice Rooms
" 开一道题目,看看是否在你自己指定的文件夹目录里生成了题目和代码。如果没有,再检查检查上面的操作是否做对了