처음에 개발창을 키면, IDE를 쓰던 사람들은(물론 vi 에디터를 쓰던 사람이라고 기본 개발창이 편할지는...먼산) 상당히 불편하죠.
그래서 이번에는 C++ 언어를 VC++을 통해서 쓰던 사람들을 위해서 plugin 설정 방법에 대해서 알아보려고 합니다
.

[
개발 환경
] visual.c++2005 + visual assist X + plugins(FileEdit, TZTester 1.01, CodeProcessor)
plugins
를 통해서 아레나 안의 문제와 예제를 컴퓨터 파일 안의 *.cpp 파일로 만들어서 VC++로 컴파일 및 테스트 하고 다시 아레나에 올려서 컴파일 해서 제출하는 방식을 취하게 됩니다
.

[
간단한 소개
]
아레나 : 탑코딩을 하기 위해서 들어가는 자바 어플릿

visual.c++2005 :
for(int i=0;;) for(int i=0;;) {} 같은 문법이 아레나에서는 컴파일 되고 vc++6.0에서는 컴파일 안되었지만, 2005에서는 컴파일 됩니다(원활한 코딩을 위해서 6.0보다 2005를 쓰는 게 좋겠죠) 설치 하실 때는 vc++만 깔면 1기가 정도로 깔려요- (쓰잘데 없는 다른 것들은 즐~ -_-)
visual assist X :
갠적으로 생각하는 최고의 VC++ plugin입니다. 쓰다보면 중독되서 비줠어시스트 없는 세상은 살기가 싫어진다는... _ㅠ 대표적인 기능으로는 자동완성, 문법 틀린 거 밑줄, 선언부 찾아가기, 파일내 함수 이동, .cpp .h 이동 등등이 있습니다

plugins(FileEdit, TZTester 1.01, CodeProcessor) : FileEdit
은 문제를 cpp파일로 만들어 주고, TZTester는 파일 안에 예제 테스트를 가능하게 해줍니다. CodeProcessor는 앞에 2개를 합쳐줍니다.

[
설치
]
일단 1.jar파일을 저장할 폴더, 2. 문제 cpp 파일들이 나올 폴더를 만들어 둡니다
.
참고로 저는 1. C:\topcoder\plugins  2. C:\topcoder 라는 폴더를 만들어 두었습니다
.
(
이후에 폴더의 디렉토리가 바뀌면 안되기 때문에 C드라이브의 폴더를 이용했습니다
)
이제 FileEdit, TZTester 1.01, CodeProcessor   jar파일을 받아서 1.jar파일을 저장할 폴더에 저장합시다
.
jar파일 받는 + plugin 설명: http://www.topcoder.com/tc?module=Static&d1=applet&d2=plugins

이제 아레나를 킵니다
.
0.arena.jpg친숙한 아레나 , 어둠깜장의 포스-

 

이제 Option – Editor 창을 클릭합니다 (무척 세심한 설명 ㅋㅋㅋ)

1.menu_editor.jpg방에 제가 좋아하는 간지 좔좔 Target “82년생” bmerry가 보이는 군요. MB__는 맨날 있는 친구, 대선도 끝났는데 이제 그만-

클릭 하면 아래와 같은 창이 뜹니다.
2.Editor_pref.jpg썰렁 하네요. Standard를 빼고 딴 건 지워 버리세요. Kawigiedit같은 거요(참고로 안 지워도 전혀 상관 없습니다) 좌측 하단에 Add 버튼을 클릭합니다(이것도 캡춰 뜰려다 참았습니다 ㅋㅋ
)
3.Plugin_info.jpg
보이는 것처럼 적어줍니다. ClassPath는 각자 jar파일이 있는 위치로 설정하면 됩니다
.
4.Fileedit.jpg
- 추가 되었네요

Configure를 눌러서 cpp파일이 나올 위치를 적어 줍니다(상단에 C:\topcoder라고 되어 있는 부분)
5.Fileedit_conf.jpg
코드 템플릿은 조금 있다가 건드려 보죠(부록A로 제 Template를 적어놨습니다)

이번에는 Code processor TZTester를 한꺼번에 추가할 차례입니다. 바로 전 화면(Editor Preference)에서 다시 Add 버튼을 클릭합니다.
그리고 아래와 같이 입력합니다
6.codeprocessor_info.jpg
!! 매우 주의할 점: ClassPath에는 fileedit, TZTester, codeprocessor 3개의 jar를 모두 넣어 줍니다. Browse버튼을 여러 번 클릭하면 됩니다(가끔 저처럼 어떻게 여러 개를 동시에 추가하는 지 모르는 한심한 사람들이 있습니다) OK버튼을 클릭하고, 잘 추가되었으면 다시 Configure버튼을 눌러서 설정을 합니다.

7.codeprocessor_conf.jpgEditor Processor class의 시작 위치를 적어줍니다(그냥 똑같이 적어주시면 됩니다. Verify 버튼 한 번 눌러 주시구요. Save Close 눌렀을 때 에러 메시지 뜨면, ClassPath에서 포함을 안 시켜줬을 확률이 높아요.

아래와 같은 화면이 보이면 됩니다.

8.setting_end.jpg- 드디어 기나긴 여정의 중간 까지는 왔습니다.

Save하고, 닫은 담에 문제를 하나 열어보아요- ( SRM 146 Div 2 – 1000 문제 )

평소랑 다릅니다.

8-2.arena.jpg코딩 Area에 코딩을 할 수가 없네요 ㅡ.; 당황하지 말고, C:\topcoder로 갑니다.

더블 클릭해서 파일을 열면, 컴파일이 안됩니다(이거 방법 아시는 분 있으면 알려주세요 굽신굽신)

그래서 그냥 빈 프로젝트를 하나 만들어서 cpp 파일을 추가합니다. 저 같은 경우는 topcoder 디렉토리에 빈 프로젝트 만들어 놓고 필요한 cpp파일만 추가해서 쓰고 있습니다(좌측 solution 창에서 파일을 add합니다)

9.vc++.jpgVisual assist는 그냥 까시면 됩니다. 가격은 15만원 정도 합니다(돈 없는 저 같은 분들은 인터넷을 잘 뒤져봅시다 참고로 전 visual assist X 10.4.1619 버전을 사용했습니다;;;)

코딩하고 컴파일 하고, 실행 하면 아래와 같이 테스트 까지 됩니다.

10.vc++_console.jpg잘 되었네요 (당연히 이미 짜놨던 코드니까 ㅋㅋㅋ) 테스트까지 한 번에 다 해주다니- _

게다가 이렇게 되면 VC++의 디버깅을 이용할 수 있기 때문에 나중에 좀 코드가 긴 문제에서 디버깅 할 때 편리하게 사용할 수 있겠네요  ^^

요기서 컴파일 하고, 서밋 합니다(IDE에서 컴파일하고 서밋까지 되면 얼마나 좋을까요 ㅋ)

11.submit.jpg잘 되었습니다. 이것으로 드디어 캡춰때문에 길었던 plugin 설정이 끝났습니다.

 

개인적으로는 VC++ + Visual assist 조합을 애용하다가 카위기 에딧으로는 뭔가 불편해서 장애인 느낌이 계속 났었는데 VC++에서 코딩 할 수 있어서 너무 좋습니다.

 

단점: 한번 저장했다가 열면, 저장되었던 코드를 가져와서 테스트 코드가 없어지네요

다른 설명: http://www.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins

 

덧1 : 혹시 "cannot instantiate tangentz.EntryPoint, java.lang.ClassNotFoundException: tangentz.EntryPoint" 요런  메시지가 보이면 다시 다운 받으면 된다고 합니다.

 

[ 부록 A ] : Editor Code Template

별 건 없고, 처음에 문제 설명이 같이 있는데, 문제 설명은 빼버리거나 /* */ 주석으로 잘 감싸주시면 될 껍니다.

 

$BEGINCUT$

/*

$PROBLEMDESC$

*/

$ENDCUT$

#line $NEXTLINENUMBER$ "$FILENAME$"

 

#include <vector>

#include <list>

#include <map>

#include <set>

#include <deque>

#include <stack>

#include <bitset>

#include <algorithm>

#include <functional>

#include <numeric>

#include <utility>

#include <sstream>

#include <iostream>

#include <iomanip>

#include <cstdio>

#include <cmath>

#include <cstdlib>

#include <ctime>

using namespace std;

 

#define pb push_back

#define mp make_pair

#define sz(v) ((int)(v).size())

#define f(i,a,b) for(int i=(a);i<(b);++i)

#define r(i,n) f(i,0,n)

#define fe(i,a,b) for(int i=(a);i<=(b);++i)

#define re(i,n) fe(i,0,n)

#define fsz(i,a,v) f(i,a,sz(v))

#define rsz(i,v) r(i,sz(v))

#define all(v) v.begin(),v.end()

#define set(x,with) memset(x,with,sizeof(x))

string itoa(int i) { stringstream ss; ss<<i; return ss.str(); }

#define same(a,b) (fabs((a)-(b))<0.0000001)

#define even(a) ((a)%2==0)

#define odd(a) ((a)%2==1)

 

class $CLASSNAME$ {

public:

             $RC$ $METHODNAME$($METHODPARMS$) {

                           $RC$ rr;

                           return rr;

             }

$TESTCODE$

};

 

    // BEGIN CUT HERE

    int main()

        {

        $CLASSNAME$ ___test;

        ___test.run_test(-1);

        }

    // END CUT HERE