[openlecture] plugins 사용하기

  • nocut98
    nocut98

    처음에 개발창을 키면, 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
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    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

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]


    16년 전
11개의 댓글이 있습니다.
  • soyoja
    soyoja

    설명 감사합니다... 오늘 집에가서 해봐야 겠네요.. ㅋ
    그런데 bmerry 가 82 년생?? 72 년생쯤 되는줄 알았는데... ( 사실은 62년생이라고 해도 믿겠다는... )


    16년 전 link
  • nocut98
    nocut98

    강력한 사생활검색기 구글님을 이용하여 bmerry resume라고 치시면 첫줄에 이런 url이 뜹니다
    http://people.cs.uct.ac.za/~bmerry/cv.pdf
    수상 내역을 보시면 후덜덜 이라는...그치만 제일 놀라운 건 나이...에욤....


    16년 전 link
  • JongMan
    JongMan

    우와아아아아아아 이런 성실한 에디토리얼 JPG 파일 11개가 붙어있어요 감동적입니다 ㅠ.ㅠ ㅠ.ㅠ ㅠ.ㅠ
    멋지세요~ >_< 만세! ㅋㅋ 감사합니다 :)


    16년 전 link
  • nocut98
    nocut98

    갑자기 새로 어플을 다운 받는다고 하더니 이후로는 예제 코드가 생성 되지 않는데요.
    이게 왜 그런 걸까요 ㅡ.ㅡ?


    16년 전 link
  • nocut98
    nocut98

    아레나가 업그레이드 되면서 TZTester가 쓰던 api 를 안 쓰고 뭐 이런저런 일이 있었나 봅니다.
    http://forums.topcoder.com/?module=Thread&threadID=597840&start=0
    여기에 관련내용이 있구요.
    http://forums.topcoder.com/?module=Thread&threadID=597885&start=0
    여기에 새 버전의 jar가 있습니다
    http://tc.bzium.org/TopCoder/TZTester.jar
    다운은 여기서 받으시면 됩니다.


    16년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    저는 왜 test code가 안 생길까요..?? 새 버전으로 받았는데.. 설마 제가 VC를 안 쓰고, gVim을 써서 그런 건 아니겠죠..??


    16년 전 link
  • nocut98
    nocut98

    test code나 라이브러리 소스는 안 생기시면 복사해서 붙여넣기 하심이... (자세한 이유는 몰라요 ㅎㅎ)


    15년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    test code는 어디서 복사하죠..? 안 생기는데요ㅠ 그저 TESTCODE 이렇게만 뜨고..


    15년 전 link
  • JongMan
    JongMan

    에디터가 codeprocessor 가 아니라 fileedit 로 설정되어 있지는 않은지 ..?


    15년 전 link
  • nocut98
    nocut98

    제가 봐도 종만님과 같은 이유로 추측되는 군요그건 그렇고 어디 자동완성되는 좋은 에디터 없을까요? 요새 라이센스 문제 때문에 vc++ express 버전을 썼더니 자동 완성이나 단축키가 구려서 좀 안 좋네요


    15년 전 link
  • hyunhwan
    hyunhwan

    vim은 익숙하지 않으신가요? 지금까지 입력했던 문자열에 대해서 자동완성( ctrl+n, ctrl+p )를 지원합니다 :)


    15년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.