• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'전체 글'에 해당되는 글 1243건

  • 2009.08.10 8월12일 펜션에서 독서를 프로젝트
  • 2009.08.09 "위대한 자들의 탄생" 리뷰?
  • 2009.08.07 MBTI유형.
  • 2009.08.07 직관 수학 - 기초편. 2
  • 2009.08.06 무통증에 빠진 어떤 글쟁이 인지, 프로그래머 인지 하는 사람의 글을 보며.
  • 2009.08.06 고경오군의 책. - 위대한자들의 탄생.
  • 2009.08.04 CCNet 에서 MS Test 동작시키기 2
  • 2009.08.04 CCNet 구성하기

8월12일 펜션에서 독서를 프로젝트

잡글 2009. 8. 10. 17:55
친구들과 2박 3일 뒹굴 뒹굴 독서 겸 제멋대로 하기 휴가 계획을 짜봤다.
혼자가는게 아니다 보니 주섬 주섬 무언가 챙겨야 되는 입장이기에,
결국 계획레벨까지 올라왔다.
원체 즉흥적 레벨로 자주 놀아왔기에 이런 계획 짜는 것 자체가 거부감이 드는건 사실이지만,
가끔은 이런짓도 할만 한듯.

8월12일 ~ 8월 15일까지 갈 예정인데, 다른 휴가 즐기시는 분들은
맑은 하늘과 시원한 바람을 바라고 있겠지만,
난 그저 조용하고 책읽기 좋고, 담배핀다고 지랄하는 사람만 없으면 장땡인 것 같다.
그냥 조금 쉬고 싶다.


펜션 정보.

이름: 더펜션

주소 : 경기도 용인시 양지면 평창리 661-4 번지(기흥구)

전화 : 1544-0758. 010-2915-1441

객실명 평수 기준인원 최대인원
코지하우스 20평 6명 12명

TV, 식탁, 에어컨, 냉장고, DVD, 취사, 전자렌지, 욕실용품, 핫플레이트

방1, 거실1, 정수기


준비 물품

 고기 굽기 류

  • [구입] 고기 - 돼지, 소, 오리 상황에 따라 구매. 양도 즉흥적으로 ( 예상 2근?)
  • 고기 불판.
  • 휴대용 가스버너
  • [구입] 부탄가스 1줄
  • [구입] 마늘
  • [구입] 고추
  • [구입] 쌈장
  • [구입] 버섯
  • [구입] 알루미늄 호일

식사용품

  • [구입] 햇반
  • [구입] 라면
  • [구입] 김치
  • [구입] 냉동식품 ( 만두, 산적, 비엔나 소시지 등 )
  • [구입] 1회용 접시,  숟가락, 젓가락, 컵.

음료/주류

  • [구입] PET병 형 음료 7개 정도. 쥬스, 탄산계
  • [구입] 맥주, 소주 ( 술드시는 분들 취향대로 )

기타물품

  • [개인지참] 개인 세면도구
  • [개인지참] 갈아 입을 옷.
  • [KHJ] 모기향
  • [KHJ,KCW] 전기 모기향
  • [KHJ,KCW]커피메이커
  • [KHJ,KCW]커피원두
  • [KCW] 그라인더
  • [개인지참] 자기가 2박 동안 가지고 놀거.
  • [KHJ]랜선 15M, 1M짜리 4개
  • [KHJ]공유기

이 글은 스프링노트에서 작성되었습니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

"위대한 자들의 탄생" 리뷰?

잡글 2009. 8. 9. 10:10
흉기레벨은 아니지만, 나름대로 두께는 있는 편 - 400여 쪽 - 인 책이였다.
읽는데는 큰 부담은 없지만, 몇명 불편한 부분을 제외하고는
술술술 읽을만 했고 재미도 있었다.

이 책을 보고 있다보면, 여러 부분의 표현은 영화를 보듯 현란했다.
또, 각 등장인물의 독백들 역시 즐거웠다.
여러 대목들이 마음에 들었지만, 내 기억에 괴적을 남긴 부분이 두 군데 있었다.

하나는, 일행들이 도주 하기위해 지나치는 마포대교에서,
주인공이 문득 창밖의 광경을 바라보게 된다. 옛날 술한잔 걸치고 택시를 타고 가다 창밖에서
보이는 가로등의 괘적의 아름다움을 정말 미묘하게 표현했다.
도주중. 아무런 미래가 보이지 않는 상황 속에서 멍함 속에서 자신의 처지에 대한
만감 교차를 저렇게 재미있게 표현하는 모습은 공감과 함께, 글 속으로 깊게 들어가 주게해줬다.

그리고, 적측 분소에 쳐 들어가 무기나, 정보를 수집하기 위해 돌입했을 때다.
딱 한명의 리더이자 경험자를 제외한 초짜 친구들을 데리고 진짜 무기를 들고,
전투용 흥분제 하나 먹고 뛰어드는 무식한 그들의 처지를 명확하게 보여주는 결과물
역시 훌륭했다. 젊고 흥분제를 먹은 그들이지만, 결국 초짜들였고, 망설이고 두려워했다.
그리고 총알이 난무하고 누군가를 죽이고 다시 흥분되어 달려들고.
하지만, 계속 들뜬 상태의 영웅행각은 결국 미숙한 그들에게는 너무 큰짐.
상대는 이미 전문가들이기에 그들이 다시 재공격이 들어 가서는
모두 무력화에 빠졌다. 이 전형적인 흐름이 끊어지지 않게 술술술 풀어 버린 부분도
정말 마음에 들었다. 최대/최악의 의지력으로 무너진 팀을 홀로 끌고온
한 사람의 행동은 밴드오브브라더즈에서 본 것과 같은 감동 같은 느낌도
전해졌다.

그러나, 조금은 과하다고 생각한 부분이 있었다.
아, hysteric glamour 님이 불편하다고 한 내용은 그저 조금은 표현이 과격하다는 정도고
(그냥 성인물 영화 본 것 같아서, 그다지 불편하지는 않다.)
내가 말한 과한 부분은 작가의 풍부한 지식 때문인지, 그 지식을 쏟아 내지 않으면
터질 것 같은 느낌을 받은 점이다. 이야기가 3인칭이면서도 그 내면까지 모두 까발리는데
설명하는 글이 의외로 많다. 게다가 알 수없는 무기와 정황, 기술들을 소개하기 위해
적은 글도 만만치 않게 너무 많다. 이게 너무 불편했다.
마치 돈키호테가 풀플레이트 무장을 용병처럼 전혀 다른 제품들로 조립해서 입은 느낌?
그 전의 대화, 그 전의 상황, 그 전의 무언가를 표현하기 위해 공감을 얻기위한
설명이 너무 길었다.

그리고, 급하게 마무리를 지으려는 것 처럼, 다 보여주지 못한 실체를 전부 이야기하기 위해
강연이라는 이름으로 너무 많은 것을 쏟아 냈다. 아군이든 적군이든.....
음모론의 핵을 저렇게 요점 정리 해버리면, 즐거움이 너무 반감되는 것 아닌지....
책을 전편 후편으로 굳이 나누면 전편까지는 숨겨진 껍질을 깔듯 말듯 하다가,
후편에서는 아예 칼로 반토막 해버린 후 끝났지? 라고 말하는 것 같다.
허무.... 하단 느낌?

내가 잘 아는 사람 중 한명이 내는 책이여서 그런지 다시 보게 되었고, 읽었다.
이후에 만드는 책들도 대작이 되길 빈다.

PS. 고경오 군. 이 글을 볼리는 없지만, 이상한거 하나 적는데, 오기호가 훈련 받는 곳에서 뜬금없이
병남이 나타나드라. 엥??? 얘가 왜 갑자기 나타나지... 했어. ㅋㅋ 이거 오류지?




728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

MBTI유형.

잡글 2009. 8. 7. 14:22
흘러 흘러 예전에 보며 지냈던 노스모크까지 와버렸다.(오늘의 한가한 링크 클릭 중 하나다.)
그러다 Recent Changed를 보다가, 우연히 MBTI 유형이라는 글을 보았고,
대략적으로 내 성격을 기준으로 나눠 보았다.

E(외향성) / I (내향성)
 -> 회사내 동료들은 종종 나를 오해하는 것 중에 하나가 내가 외향성이 강하다고 생각하는 점이다.
 소심하다고 보면 소심하겠지만, 사실 외부에 나가거나 나서는 것을 별로 좋아는 편은 아니다.
 대개는 안전하고 조용한 장소에서 커피와 담배와 함께 사색을 하거나 책을 읽는 것을 좋아한다.
 또 음악 듣기를 좋아하는 편이기 때문에 나의 성향 자체는 굉장히 내향성이 강하다.
 오프 커뮤니티 보다 온라인 커뮤니티를 선호하는 것도 이런 성격이 미묘하게 발전한 형태라 생각된다.


S(감각) / N(직관)
-> 주변 회사 동료나, 친구들이 호소하는 기억력 문제라는 것 있다.
  세세한 것에 대해 거의 기억이 힘들다고 말한다.
  그런데 이런 증세를 조금 다시 살펴 보면 주변환경 문제인 경우가 많다.
  요즘 현대 생활 속에서 외부에 조금이라도 노출되었다면, 수많은 정보가 머리에 한번쯤 흘러지나가게 된다.
  (무슨 SF 영화같은 표현이지만, 출근 때 읽는 무료신문이나, TV, 그리고 웹페이지 클릭질만 봐도 그렇지 않은가 싶다. )
 흘러 넘치는 정보를 하나하나 살펴보려면 한도 끝도 없기에 대부분 기억을 잘 못한다. 아니 안한다.
 (기억력 언급하는 친구들에게 늘 하는 이야기. 당신의 머리가 하자가 있는게 아니고, 관심이 없기 때문에 기억을 못한다!!!!)
 그것은 명백한 차이가 있으니 분명히 한다. 난 분명 그런 유형으로 기억을 못하는 것은 아니다.
  세세히 기억을 할 수 있다. 그렇지만, 그 것에 대한 의미를 기억할 뿐이지, 그 자체를 잘 기억하는 편은 아니다.
  즉 이해되면 기억이고 못하면 그냥 신문에 적힌 검은색 그림(글자)읽는 수준으로 바라 볼 뿐이다.
  그래서 날카로운 논평은 그다지 잘 못한다. 그냥 좋다, 싫다지, 왜 좋은지, 왜 싫은지를 토씨 하나하나
  꺼내가며 밑줄 그어가며 그 단어를 기억하는 스타일은 아닌 것이다.
  (그런데 예제에서는 길 헤메는 것이 직관이라고하지만, 난 나름대로 머릿속 내에 지도를 그리면서
    찾는 편인데.... 어중간한 감각도 갖춘 걸까? )
  그러므로 직관 한표.

T(사고) / F(감정)
-> 직업이 프로그래머다 보니, 냉철한 판단을 하는 프로그래머가 무척 부러워하며 동경한다.
  예전 회사에서 같이 일했던 과장님 스타일이 냉정하게 잘라 판단하는 스타일이 확실히 명확하게
  일하는 느낌이 강해 내 스스로에 대한 변경 모델로 삼았다.
  그래서 나름대로 그 쪽으로 가려고 노력하는 편이다.
  그러나 이건 노력일 뿐이고, 실상은 완전 감정 기반의 프로그래밍을 한다. 아, 감정이라고 해서
  희노애락과 같은 형태라기 보다는 조금 억지성이 강하지만, 논리적이지 않게 시도하는 부분이 많다는 것이다.
  현대 수사관과 옛날 수사관간의 미묘한 마찰 - 관찰과 분석 그리고 과학적 증거와 함께 논리적으로 맞아야 됩니다.!!! / 아닐쎄, 이 사람이 범인인 것 같아. 증거는 찾아봐야 겠지만, 내생각에는 이사람을 조금더 검토해봐야 할 거 같아.... -을 벌이는 것을 종종 보듯이 난 옛날 수사관과 같은 좋게 말하면 직감, 나쁘게 말하면 찍기를
  잘하는 편이다. 프로그래밍도 그런 성격이 좀 강하다. 전체적으로 내 언어 표현 방법도 그렇고.....
  변해가고 있지만, 역시 내 근간은 감정인 것 같다.

P(판단) / J(인식)
-> 이 부분에서 내가 조금 막혔다. 과연 난 생각하고 행동할까? 행동한 뒤 생각할까? 그런데 성품이 게으르다
  보나 대개는 생각한 후 행동하는 편이긴 하지만, 단체 활동할 때는 행동후 생각이 잦은 편이다.
  왜 내가 혼자 있을 때와 함께 있을 때 이렇게 판이한 활동을 할까 라는 생각을 하다 보면,
  은근히 나도 주목 받아보고 싶은 명예욕에 가까운 놈이라 그런 것 같다.
  ( 의외로 주변에는 행동력이 부족하거나 조심스러운 사람이 많아서 그런짓을 자주 저지르는 것 같다. )
  하지만 본질적으로는 생각한 후 행동하는 편이다. 즉 행동력이 조금 낮다.
  머리로 생각만으로 그치는 경우가 많다. 생각한 내용을 바로 글로 옮기거나, 그에 맞춰 일하거나 하는 편은
  분명 아닌 것 같다. 조금은 아리까리한 부분이 있지만 난 일단 판단 쪽에 선을 긋는다.


내 나름대로 정리해본 결과 나의 MBTI 유형은
      INFP 형으로
서구형에서는 1%, 한국인들 중에서는 3.67% 정도 가진 성향이다.

이런 형태의 성격의 사람에 대한 설명은 이 링크를 따라가면 있다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

직관 수학 - 기초편.

잡글 2009. 8. 7. 13:54

(이미지 출처 강컴 : http://kangcom.com/sub/view.asp?sku=2009F0340264)

맨처음 이 책에 대한 이야기를 들은 곳은 애자일 이야기(http://agile.egloos.com/1686281)였다.
그래서 언제나 사서 봐야지 사서 봐야지 벼르다가, 근좌 무대기로 사대치고 있는 컴퓨터 관련 서적 중에
하나를 간신히 껴서 샀다. - 대개 강컴에서 사다 보니, 강컴에 없으면 잘 사지 않는 편이다. -
의외로 싼 가격 - 원체 컴퓨터 관련 서적이 1~2만원을 훌쩍 넘다 보니, 상대적인 느낌인 듯 싶다 -에
조금은 부담없이 질러 버렸다.

틈틈히 출퇴근 시간(평균 1시간에 걸친) 독서를 해서 전체 통독을 했다.
애석하게도 애자일 이야기에서 언급했던 직관 수학이 아닌 그 이후에 나온 기초 부분
(사칙 연산, 곱셈 나눗셈 등등 )을 이야기하여 생각보다는 조금 식상했다.
가장 기초적인 연산이기에, 이미 내 스스로가 어느정도는 수행할 수 있기에,
그렇게 많은 공감을 가지긴 어려웠다. 하지만, 그 자체의 결과 보다, 그 과정에 대한 집요한 고찰은
정말 높은 가치가 있는 행동 같았다. 물론 그런 통찰은 어느 정도 성숙한 경험 후에 나온 내용이겠지만,
보다 본질 적인 문제, 어릴 때 정말 이해가 안됐던, 아니 그냥 건너 뛰어버렸던 그런 의문 사항에 대해
보다 깊게 조금 더 다르게 긍정적으로 파고 든 점은 정말이지 박수에 박수를 쳤다.

특히 덧셈, 곱셈에서 큰 것 부터 처리한다는 정말이지 환상이였다.
예전에는 숫자 위에 조그만한 글씨로 1, 이렇게 적어 처리했던 것을 조금 종이를 많이 쓰더라도
저렇게 명확하게 할 수 있다는 것이 정말이지 마음에 들었다.
(왼손으로 공부하시는 분들은 대개 이렇게 하지 않을까 싶다.)
뺄셈의 보수 방법도, 예전 내가 뺄셈에서 고생했던 고민-이젠 거의 잊어 버리고 있었지만-을 명쾌하게 설명하고 있었다. 진짜 보수 방법은 최고였다고 내 스스로 생각한다.

조금은 일본-한국을 왔다갔다하는 번역에 조금은 헷갈렸지만, 번역을 대체도 아니고 전체적으로 훌륭하다.
흐름을 잃기 쉬운 부분도 역주를 통해 친절하게 설명한 점이 정말 마음에 들었다.
(하지만 아이들이 그대로 읽기는 조금 어려울 수도....)

아마도 이 책은 애들이 직접 보고 깨닫기 보다, 아이들(초등학생 정도?)을 가진 부모나 초등학교 교사라면 한번 읽고 생각해주었으면 좋겠다. 저 저자인 하타무라 요타로 교수님처럼 하는 것은 내가 봐도 무리라 본다. 하지만, 그가 언급했던 통찰과 회고 그리고 다시 생각하는 수학을 한다면 조금은 아이들 눈으로 설명할 수 있는 친절한 설명자가 될 수 있으리라 본다.
- 미련하게 책에 나온대로 고대로 따라 해봐야, 애들은 여전히 별 관심이 없을게 뻔하다. 스스로가 변해야 이야기가 성립되니깐....

컴퓨터 서적외의 책은 간만에 읽었는데 나름 유익했다.


728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

무통증에 빠진 어떤 글쟁이 인지, 프로그래머 인지 하는 사람의 글을 보며.

잡글 2009. 8. 6. 18:09
오늘의 잡생각 - 크런치 - from No Karma

나도 크런치타임 안좋아하고 별 이유없이 하고 싶은 생각은 없는데...
이렇게 광분하는 블로거들 잘 이해가 안간다...

애도 아니고...
이혼까지 가려면 그 중간에 거쳤던 과정이 있었을테고...
거기서 일할 정도면 그 정도 생각이나 결정을 지 스스로 못하는 바보도 아닐테고...
지가 결정해서 이혼한걸텐데...
왜 이 아줌마는 남의 사생활에 이렇게 광분을 하는 것일까???

본인이 아직까지는 남편하고 알콩달콩 산다고...
남들도 다 그럴거라고 볼 이유는 없다는것 정도는 알 것 같은데...

대략보니 같이 광분하는 애들 대부분은...
어차피 그런 팀에 들어가고 싶어도 못들어가서 그런 고생할 일 별로 없을것 같은 애들인것 같고...
능력되는데도 들어가기 싫으면 안가면 그만이고...

그렇게 일하기 싫은데 누가 머리에다 총 대고 회사 그만두지도 못하고 억지로 일하게 했다면 내가 이해한다...
What the hell is the problem???

업계 전체의 열악한 근무 환경을 개선하려면...
서비스 공급 머릿수를 줄여야 될 것이고...

그럼 어떤 애들을 줄여야되느냐???
저가로 치고 들어오는 로우테크애들을 줄여서...
하이테크애들이 굳이 무리한 일정에 저가 수주 안해도 되는 환경을 만들어야 될 것 아닌가...

저 글을 읽고 난 나의 생각은
좋게 말하면, "자신 나름대로 쿨하게 접근하여 쿨하게 이야기한다고 생각하는 것 같은 느낌" 같고
, 나쁘게 말하면 "지금 무통증(Analgesic)을 앓고 있는데 자기 앞에서 칼맞아 피흘리는 사람을 보면서, '뭐가 그렇게 아파?' 라고 말하는 느낌" 같다.

난 T사에서 일해본 경험은 없다. 그저 같이 협력사 정도로 같이 일해본 적이 있고, 지인 중에 그 속에서 뼈빠지게 일하는 것을 들어본적이 있는게 고작이다. 

그렇게 일하기 싫은데 누가 머리에다 총 대고 회사 그만두지도 못하고 억지로 일하게 했다면 내가 이해한다...


스스로 모든 일을 척척 풀어서 잘 살아왔나 보다. 개인적으로 책임질 일이 별로 없거나, 사생활이 그다지 중요하지 않거나, 아니면 별로 저런 경험이 없거나 하지 않을까 싶다.
과연 총을 들이 밀어 일을 시키지도 않는데, 그만 두지 못하는 것은 왜일까?
한번 진지하게 생각은 해봤을까?
그 또는 그녀가 미련한 곰이라 총도 안디밀었는데 이혼 당하고, 개인적인 병 얻어가며 일하는 걸까?

당장 그만 두었을때, 결혼했고, 아이가 둘인 사람이라면, 당장 부어야 되는 집 세(혹은 대출 이자)에 아이들 양육비에 이래저래 걸리는 것이 많을 수 있다. 또는 책임감 있게 이 작업을 완료해야 되는 성격이라면, 중도에 쉽게 때려칠 수 있을까? ( 아, 물론 그렇다 라고 자신있게 이야기할 수 있겠지만, 미안하게도 그런 성격의 사람은 T 사에서 1~2개월이면 나간다. 거기에다 스스로 변명을 많이 하면서 나간다고 한다. 그리고 의외로 그런 분들이 이직률도 은근 높다고 한다. 오해 금물. 꼭 그렇다고 전부 다는 아니니, 자신은 안그러는데.. 라고 반론하실 필요는 없다.)
애석하게 걸리는 부분이 너무 많다 보니, 스스로를 포기하고 끝까지 하다가, 결국 댐 무너지듯 와르르 무너지는 현상인 것이다. 그것을 단지 저렇게 아주 흑/백으로 단순하게 나누어 무조건 자신의 생각을 펼치는 모습이 참으로 안타까운 것이다.

당신이 돈 많거나 권력이 막강한 귀족이 아니라면, 조금 더 수양해 주셨으면 좋겠다.
(수양이라고 도 닦으라는 말씀은 아니고 더 사회에 대한 더 많은 고찰과 생각을 해줬으면 한다.)

아.... 나이는 대략 20대 후반에서 30대 초반같은데, 사춘기 틱(Tick)을 보여주는 글들을 보다가,
답답한 마음에 포스트를 하나 해본다.
728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

고경오군의 책. - 위대한자들의 탄생.

잡글 2009. 8. 6. 10:03

고등학교 때 부터 내내 글쓰기 위해 다양한 노력하던 친구가 드디어 책을 발간했다.

글을 읽고난 리뷰는 여기를 클릭



책 제목은 위대한 자들의 탄생이라는 책.

예전 하이텔, 나우누리, 데이콤 등이 있던 통신 시절. 하이텔의 환타지 동호회 때 부터,
단편, 장편들을 다양하게 연재 했다. 사실 그 당시 환타지 장르가 한창 붐이 일어났고,
그 때 수많은 환타지 작가들이 탄생했다. 그 중  한 명이 될 줄 알았는데,
계속 참고 있었던 것 같다.

이번에 인생 가름길로 생각하고 작정하여 글을 썼고, 결국은 책을 냈다.
수많은 책을 집필하고, 어느정도 글쓰는 자로 명성을 얻은 사람들이나, 다양한 사람들의 글을 읽는 독자라는
입장을 기준으로 별로 신기할 것도 없는 작은 내용이겠지만,
최소한 글쓰는 사람을 아는 사람이라는 입장에서 보면 참 신기한 느낌이 드는 건 당연할까?

사실 이 책이 대박날지는 모르겠다. - 게다가 책이 어제 도착했는데, 읽어보지도 못했다 -
최소한 내가 아는 소설가라는 점에 그가 잘되길 빌 뿐이다.

출 퇴근때 짬짬히 한번 읽어봐야 겠다.
728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

CCNet 에서 MS Test 동작시키기

기술자료/개발도구 2009. 8. 4. 17:44

MS Test 연동하기
요즘 TDD 학습에 피치를 올리고 있기 때문에, MS Visual Studio 안의 Test Unit을 사용중이다.

(NUnit이 .NET을 위한 Unit 테스트 프레임으로 다양한 기능을 제공한다고 한다. 또한 이 CCNet 안에서도 자체 지원되며 결정적으로 CCNet Config에서 간단하게 추가할 수 있다..

그러나 아직 NUnit을 한번도 사용해 본적이 없다. )

 

그런데 CCNet 에서는 MS Test를 적용하는 방법이 직접적으로 설정 할 수 없었다. (최소한 1.4.4 버전에선....)

대신 MS Test를 일종의 작업으로 돌려, 그 결과 값을 Report에 적용해줄 수 있었다.

그 중 googling을 통해 얻은 자료 중 하나가 바로 이것이다. (CCNet 에서 MS Test 결과를 적용하는 방법이 담긴 링크)

 

시작하기 전에

이 작업을 하려면 먼저 MS Test를 실행하는 방법을 어느정도 이해해야 한다.

IDE 도구에서야 Test의 Test 실행 버튼 한번이면 되지만, 여기서 작업이라는 형태로 만들려면, 외부에서 프로그램을 어떻게 띄워야 하는지 등을 알아야 한다.

  • 솔루션 전체를 한번 빌드 한다
  • 이전에 Test 결과 값이 있는 경우 삭제하는 배치 파일을 만든다. 그리고 그 배치를 실행할 수 있게 한다.
  • MSTest를 동작시키는 프로그램을 실행하며 동작시킨다.
  • 테스트 결과물을 CCNet에 연동한다.

이제 이런 방법으로 차근 차근 하나씩 적용하도록 한다.

 

준비 작업

맨 먼저 준비해야 될 작업은 작업의 기준이 되는 CCNet 설정파일이다.

이 설정 파일을 기준으로 하나씩 추가해야 하며 각 단계를 아래에서 계속 설명할 것이다.

이전 단계에서 설명한 내용을 기반으로 CCNetConfig를 이용해 구성했다면 다음과 같은 .config 파일을 열어볼 수 있다.

(.config 파일은 C:\Program Files\CruiseControl.NET\server\ccnet.config 를 의미한다. )

<!--<ccnetconfig><configurationVersion>1.4</configurationVersion></ccnetconfig>-->
<cruisecontrol>
  <project name="CQWorkflowViewer">
    <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
    <artifactDirectory>E:\Builds\CQWorkflowViewer</artifactDirectory>
    <sourcecontrol type="svn">
      <trunkUrl>file:///D:/Works/000.MySVN/CQWorkflowViewer</trunkUrl>
      <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
      <executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
    </sourcecontrol>
    <triggers />
  </project>
</cruisecontrol>

 

 

솔루션 전체 빌드하기.

맨처음에 난 이 내용을 이해하지 못했다. 그냥 MS Test를 동작시키면 되지 않을까 했다.

하지만, MS Test가 동작하려면, 테스트 코드가 컴파일되어 있는 DLL이 필요했는데, 이 DLL은 결국 솔루션 전체 Build가 되어야 생성될 수 있다.
(Unit 테스트 자체가 이곳 저곳의 클래스와 컴포넌트들을 거의 직접 연결하므로 어쩔 수 없는 것 같다.)

이 빌드 방법은 솔루션 파일(*.sln)을 직접 컴파일 해야 되기 때문에, Visual Studio의 힘을 빌릴 수 밖에 없다.

그래서 이 Task를 하나씩 조립해서 하나의 Task로 만들면 다음과 같다.

<devenv>
                <solutionfile>"E:\Builds\CQWorkflowViewer\Works\CQWorkflowViewer.sln"</solutionfile>
                <configuration>Debug</configuration>
                <buildtype>Build</buildtype>
                <executable>"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com"</executable>
                <buildTimeoutSeconds>90</buildTimeoutSeconds>
 </devenv>

뭔가 낯선 이상한 XML 엘리멘트들이 튀어 나왔다.

이 작업 devenv라는 컴파일 구성요소를 설정하는 내용으로 위의 내용은 특정 솔루션을 전체 빌드하기 위한 내용이다. 

각 부품들을 하나씩 살펴보자.

solutionfile 부분은 이 프로젝트의 솔루션 파일의 위치를 정해준다. 작업 디렉토리를 기준으로 해당 솔루션 파일이 어디 있는지 확인해서 해당 내용을 적용해주면 된다.

configuration 부분은 전체 빌드 형태를 결정해준다. Debug 모드인지 Release 모드인지 등을 결정하는 것이다.

excutable에는 이 빌드 작업을 수행할 프로그램을 선택한다. x64나 기타 다른 위치에 설치 하지 않았다면 위의 경로로 넣으면 된다. 만일 틀리다면 devenv.com이 있는 위치를 찾아

넣어주도록 한다.

나머지는 필자도 잘 모르지만 일단 테스트해 본 결과 저 정도로 마무리 지으면 일단 제정신으로 도는 것 같다.

 

위의 XML 부품을 구성하고 이해했다면, 이제 ccnet.config 안에 끼워 넣도록 한다.

이 부품은 다음의 경로에 추가해주면 된다.

//cruisecontrol/project/tasks

경로라고 말한 부분은 바로 엘리멘트 트리 순서이다.

XML로 표현하면 다음과 같은 구성이 되어줘야 한다는 것이다.

     <cruisecontrol>

        <project ...>

           <tasks>(여기를 의미하는 것)</tasks>

        </project>

     </cruisecontrol>

우리 원본 ccnet.config에 보면 tasks 라는 엘리멘트를 볼 수 없는데, 이 부분은 추가해줘야 한다.

자, 이렇게 해서 조립하면 다음과 같은 ccnet.config가 된다.

 

<!--<ccnetconfig><configurationVersion>1.4</configurationVersion></ccnetconfig>-->
<cruisecontrol>
  <project name="CQWorkflowViewer">
    <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
    <artifactDirectory>E:\Builds\CQWorkflowViewer</artifactDirectory>

    <tasks>

<devenv>
                <solutionfile>"E:\Builds\CQWorkflowViewer\Works\CQWorkflowViewer.sln"</solutionfile>
                <configuration>Debug</configuration>
                <buildtype>Build</buildtype>
                <executable>"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com"</executable>
                <buildTimeoutSeconds>90</buildTimeoutSeconds>
 </devenv>

    </tasks>
    <sourcecontrol type="svn">
      <trunkUrl>file:///D:/Works/000.MySVN/CQWorkflowViewer</trunkUrl>
      <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
      <executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
    </sourcecontrol>
    <triggers />

  </project>

</cruisecontrol>

 

테스트 결과 파일 삭제하기.

MS Test를 돌리게 되면 그 결과물을 XML 형태로 만들어 주게 되는데, 이 파일이 위치해 있으면 MS Test가 무조건 실패하게 된다.

그래서 MS Test를 동작 시키기 전에 반드시 해당 파일이 있으면 낼름 지워주는 기능을 하는 배치 파일(.Bat 또는 .Cmd)을 만들어 주도록 한다.

실제 이 결과물이 어디에 저장되는지는 다음에 정의할 MS Test 관련 설정을 할 때 결정되는데, 여기서는 그 결과물이 테스트 프로젝트가 있는

위치에 저장된다는 가정하에 설정하도록 하겠다.

먼저 적당한 위치에 .Bat 도는 .Cmd를 만든다. 여기서는 E:\Builds\CQWorkflowViwer 폴더에 deleteReport.bat라는 파일을 만들도록 하겠다.

그 내용은 다음과 같다.

IF EXIST E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer\testResults.trx DEL /f E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer\testResults.trx

원리는 간단하다. 파일이 있으면 지우고 없으면 지우지 않는다. 뭐 그정도?

그리고 난 뒤에 위에서 만든 작업 처럼 이번 것도 작업으로 만들어 준다.

이번에는 단순히 실행만 하면 되므로 devenv 엘리멘트가 아닌 exec 엘리멘트를 사용한다.

이 엘리멘트로 구성하면 다음과 같이 만들 수 있다.

<exec executable="deleteReport.bat">
   <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
   <buildArgs></buildArgs>
</exec>

특별한 설명은 필요 없지만, 일단 간단하게 각 엘리멘트 및 속성 값을 설명하면 아래와 같다.

exec는 이 작업이 단순 실행하는 작업을 의미하는 것이다. 실행할 내용은 executable 이라는  속성값에 값을 넣으면 된다.

baseDirectory는 이 실행이 진행되는 위치를 의미한다.

이 내용을 지금까지 만든 설정 파일이 추가해 보자. tasks는 앞서 만들었으니 이제 그 다음에 넣어주면 될 것이다.

<!--<ccnetconfig><configurationVersion>1.4</configurationVersion></ccnetconfig>-->
<cruisecontrol>
  <project name="CQWorkflowViewer">
    <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
    <artifactDirectory>E:\Builds\CQWorkflowViewer</artifactDirectory>

    <tasks>

<devenv>
                <solutionfile>"E:\Builds\CQWorkflowViewer\Works\CQWorkflowViewer.sln"</solutionfile>
                <configuration>Debug</configuration>
                <buildtype>Build</buildtype>
                <executable>"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com"</executable>
                <buildTimeoutSeconds>90</buildTimeoutSeconds>
 </devenv>   

      <exec executable="deleteReport.bat">
         <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
         <buildArgs></buildArgs>
      </exec>

</tasks>   

<sourcecontrol type="svn">
      <trunkUrl>file:///D:/Works/000.MySVN/CQWorkflowViewer</trunkUrl>
      <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
      <executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
</sourcecontrol>

      <triggers />

  </project>

</cruisecontrol>

 

MS Test 동작시키기.

모든 준비작업은 끝났다. 이제 실제적으로 동작해야하는 작업을 수행한다.

이번에는 MSTest를 동작시킨다. 이를 위해서 하는 방법은 위의 방법과 거의 동일하다.

단지, 몇가지 MSTest를 동작시키기 위한 파라미터 값만 조정하면 된다.

<exec executable="C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe">
   <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
   <buildArgs>/testcontainer:bin\debug\TestProjectCQWorkflowViewer.dll  /resultsfile:testResults.trx</buildArgs>
   <buildTimeoutSeconds>90</buildTimeoutSeconds>
</exec>  

 

앞서 테스트 결과 삭제 목록의 내용 중에서 특이 점은 buildArgs 부분에 파라미터 값들이 정의된다는 사실이다.

테스트를 동작시키기 위한 DLL 정보와 테스트 결과를 저장하기 위한 그 리포트 출력용 파일 이름 정도이다.

실행할 주체가 mstest.exe 인 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe 정도 뿐이다.

여기서 경로등을 주의해서 넣어주면 된다.

만일 mstest의 특별한 기능들이 더 필요한 경우 http://msdn.microsoft.com/en-us/library/ms182489%28VS.80%29.aspx 를 참고해서

파라미터 값들을 조정해주면 된다.

이를 추가하면 아래와 같이 된다.

<!--<ccnetconfig><configurationVersion>1.4</configurationVersion></ccnetconfig>-->
<cruisecontrol>
  <project name="CQWorkflowViewer">
    <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
    <artifactDirectory>E:\Builds\CQWorkflowViewer</artifactDirectory>

    <tasks>

<devenv>
                <solutionfile>"E:\Builds\CQWorkflowViewer\Works\CQWorkflowViewer.sln"</solutionfile>
                <configuration>Debug</configuration>
                <buildtype>Build</buildtype>
                <executable>"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com"</executable>
                <buildTimeoutSeconds>90</buildTimeoutSeconds>
 </devenv>   

      <exec executable="deleteReport.bat">
         <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
         <buildArgs></buildArgs>
      </exec>

<exec executable="C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe">
   <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
   <buildArgs>/testcontainer:bin\debug\TestProjectCQWorkflowViewer.dll  /resultsfile:testResults.trx</buildArgs>
   <buildTimeoutSeconds>90</buildTimeoutSeconds>
</exec>

</tasks>   

<sourcecontrol type="svn">
      <trunkUrl>file:///D:/Works/000.MySVN/CQWorkflowViewer</trunkUrl>
      <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
      <executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
</sourcecontrol>

      <triggers />

  </project>

</cruisecontrol>

 

 

리포트 결과를 CCNet에 보고하기.

이제 마지막 부분이다. 위의 내용 까지는 최종 테스트 결과물을 만드는 과정이다. 이제 그 테스트 결과물을 빌드 결과물로써 나타내게 해주면 된다.

지금까지는 tasks 안에 들어갔지만, 이번에는 tasks 밖에서 publishers 라는 엘리멘트 안에 작업을 해주어야 한다.

기본적인 작업들이 들어가는데, 그 중 추가적인 작업 결과물은 여기서 처리해주어야 한다.

결론적으로 해당 처리를 위한 XML은 아래와 같다.

<publishers>
   <merge>
      <files>
         <file>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer\testResults.trx</file>
       </files>
   </merge>
   <xmllogger />

</publishers>

 

publishers 나, merge, files은 XML 형식에 맞추기 위해 필요한 내용이고, xmllogger는 다른 기능을 위해 준비된 내용이다.

우리가 집중할 부분은 file 부분으로 이 안에 xml 형식으로 된 리포트 파일만 걸어주면 된다. 앞에서 예제로 설정한 내용을 기준으로 본다면,

테스트 작업 후, E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer\testResults.trx 라는 파일이 생기게 된다.

 

자 이것을 추가하면 아래와 같이 정리된다.

<!--<ccnetconfig><configurationVersion>1.4</configurationVersion></ccnetconfig>-->
<cruisecontrol>
  <project name="CQWorkflowViewer">
    <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
    <artifactDirectory>E:\Builds\CQWorkflowViewer</artifactDirectory>

    <tasks>

<devenv>
                <solutionfile>"E:\Builds\CQWorkflowViewer\Works\CQWorkflowViewer.sln"</solutionfile>
                <configuration>Debug</configuration>
                <buildtype>Build</buildtype>
                <executable>"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com"</executable>
                <buildTimeoutSeconds>90</buildTimeoutSeconds>
 </devenv>   

      <exec executable="deleteReport.bat">
         <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
         <buildArgs></buildArgs>
      </exec>

<exec executable="C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe">
   <baseDirectory>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer</baseDirectory>
   <buildArgs>/testcontainer:bin\debug\TestProjectCQWorkflowViewer.dll  /resultsfile:testResults.trx</buildArgs>
   <buildTimeoutSeconds>90</buildTimeoutSeconds>
</exec>

</tasks>   

<sourcecontrol type="svn">
      <trunkUrl>file:///D:/Works/000.MySVN/CQWorkflowViewer</trunkUrl>
      <workingDirectory>E:\Builds\CQWorkflowViewer\Works</workingDirectory>
      <executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
</sourcecontrol>

      <triggers />

<publishers>
   <merge>
      <files>
         <file>E:\Builds\CQWorkflowViewer\Works\TestProjectCQWorkflowViewer\testResults.trx</file>
       </files>
   </merge>
   <xmllogger />

</publishers>

 

  </project>

</cruisecontrol>

 

이제 실제로 서버를 실행해 보면, MSTest까지 수행하고 그 결과 값에 따라 Build 성공 실패가 보이기 시작할 것이다.

 

PS. 웹에서 이 결과 리포트를 보고 싶을때.

굳이 필요한 기능은 아니지만, 빌드 결과물을 보여주는 웹화면에서 이 Test 결과 내용도 보고 싶다면 추가적인 작업을 해야 한다.

CCNet의 웹을 띄우기 위해서는 http://<<서버이름>>/ccnet 이라고 치면 된다.(설치 중 Web Url을 변경하거나 조작한 경우 다른 이름이 될 수 있다.)

그래서 화면이 뜨면 각종 리포트를 위한 웹 화면을 볼 수 있는데, 그 중 이 Test 결과도 볼 수 있다.

그러나 MS Test는 기본 값이 아니기 때문에, 이 리포트용 웹사이트에 한가지 작업을 더 수행해주어야 한다.

 

작업을 하려면, 맨 먼저 해당 웹사이트가 있는 폴더로 이동한다.

CCNet이 설치된 폴더에서 webdashboard 라는 폴더이며, 그 안에 있는 dashboard.config 파일을 열도록 한다.

 

그리고 <xslReportBuildPlugin description="....... > .... </xslReportBuildPlugin> 항목들이 쭉 늘어선 곳에다 다음 줄을 추가한다.

    <xslReportBuildPlugin description="MSTest Report" actionName="MSTESTReport" xslFileName="xsl\MsTestSummary.xsl"/>

SNAG-0050.png

 

이제 다시 웹을 띄운 후 프로젝트를 클릭해서 들어간다.

SNAG-0053.png

오른편쪽에 항목들 중 자신이 실패한 빌드 번호를 클릭한다.

SNAG-0054.png

이번엔 왼편에 Report나 Log 목록들이 있는데 그 중 MsTest Report를 클릭한다.

SNAG-0055.png

 

오른편에 해당 오류가 발생한 내용이 표시된다.

SNAG-0056.png

 

이 글은 스프링노트에서 작성되었습니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

CCNet 구성하기

기술자료/개발도구 2009. 8. 4. 17:44

설치 및 구성하기.

설치 쪽은 최재훈 님께서 마이크로스프트웨어에 기고했던 글을 참고하면 된다.

http://kaistizen.net/EE/index.php/imaso/continuousintegration_2008_04/

 

일단 기본적으로 설치하면 각 사용할 파일들은 C:\Program Files 위치에 저장된다.(x64에서는 다른 위치에 저장될 수 있지만, 아직 테스트 해보지 않았음)

맨처음 CCNet 서버를 설치하면 설치 완료 후 별다른 반응을 보이지 않는다.

시작 -> 모든 프로그램 -> CruiseControl.NET -> CruiseControl.NET 을 실행하면 도스 창에 무언가 버글 버글 뜨고, 화면이 멈춰 있는 것을 볼 수 있다.

SNAG-0030.png
이게 콘솔 화면으로 띄우는 CCNet 인데, 설정 디버그나 결과들을 확인하고 싶을 때 이렇게 해서 확인하면 된다.

만일 설정 파일이나 설정 정보가 안정적으로 동작한다고 생각된다면, 이런 식의 도스 창 같은 것을 띄우지 않고 서비스로 동작하게 할 수 있다.

시작 -> 제어판 -> 관리 도구 -> 서비스 에 들어가서 CruiseControl.NET Server 서비스를 시작해 주면 된다.

SNAG-0031.png

만일 서버 리붓후에도 계속 켜지게 하고 싶은 경우에는 시작 유형을 수동에서 자동으로 변경해주면 된다.

 

주의 : 만일 서비스 상태로 띄우다가, 도스창(디버그용)을 띄우면 안된다. 만일 도스창용으로 띄우고 싶으면, 반드시 서비스로 동작 중인 CCNet을 죽이고수행해야 한다.

 

설정 파일 구성하기

CCNet 의 설정파일은 C:\Program Files\CruiseControl.NET\server 폴더 안에 있다. 파일 이름은 ccnet.config 라는 이름으로 되어 있으며, 이 안의 값을 어떻게 정의하냐에 따라, 빌드 서버가 어떻게 동작하는지를 결정하게 된다. 모든 내용은 XML 기반으로 구성되어 있어, 가독성에서 꿀리는 부분은 없다.

그.러.나. 이 안의 각 Element 들이 어떻게 들어가는지 값들이 어떻게 들어가는 지에 대한 설명은 모두 영어로 된 도움말의 도움을 받아야 한다.

http://confluence.public.thoughtworks.org/display/CCNET/Configuring+the+Server 를 보게 되면, 설정 파일 내에 설정할 수 있는 다양한 내용들이 있다.

간단하게 테스트 하는 수준이였다면, 내가 찾아들어간 방식대로 한번 시도 해보자.

 

  1. CCNetConfig 프로그램 실행하기.

    앞서 언급한 프로그램 중 하나이다. 설정 파일인 XML 파일을 설정하는데 Visual Studio의 속성값 편집하듯이 편하게 구성되어 있다.
    물론 전체적인 내용이 딱 한눈에 안들어오긴 하지만, 이 정도의 가이드가 있다면 큰 도움이 될 것이다.

    실행하면 아래와 같은 화면이 떨렁 나올 것이다.
    SNAG-0032.png
    당황하지 말고 File -> Open을 해서 C:\Program Files\CruiseControl.NET\server 폴더 안의 ccnet.config 파일을 선택한다.

    Open 할때, OpenFileDialog 에서 아래쪽에 있는 Version을 꼭 선택해주시기 바란다. 현재 CCNet이 설치된 버전을 확인해서,
    1.1인지, 1.2 인지..아니면 1.4 인지를 꼭 체크해서 그에 맞는 버전을 선택한다.
    SNAG-0033.png

    열리면 아래와 같이 왼쪽에 트리 형태의 내용이 뜨게 된다.
    SNAG-0034.png

  2. 새로운 프로젝트를 추가하기.
    자 이제 실제 Build 작업을 수행할 프로젝트를 선택한다. File 이라는 메뉴 아래에 있는 아이콘을 선택하거나 CruiseControl 이라는 항목에서 오른쪽 버튼을 눌러 컨텍스트 메뉴에서 프로젝트 추가를 하던 어떤 식이든 Add Project를 하도록 한다.
    SNAG-0035.png
    프로젝트 이름을 입력하는 창에 이번에 Build 할 솔루션 이름을 넣는다. (달라도 되는지는 테스트 해본적이 없어서 -_-;;)
    SNAG-0036.png
  3. 프로젝트 기본 속성값 넣기.
    이제 프로젝트에 대한 기본 속성값을 넣도록 한다. 왼쪽 트리에서 입력한 프로젝트 명을 클릭하면 오른쪽에 속성 창이 뜬다.
    SNAG-0038.png  
    언어적 장벽이 큰 문제가 없다면 아래쪽 간단한 설명을 도움받아 값을 넣어주면 된다. 
    이 중 최소 컴파일이 되기 위한 내용들을 채워보자면 다음과 같다.
    여러가지 내용들이 들어갈 수 있지만 최소 다음 내용 정도를 채우면 된다.

    • (Name) : 이름. 제일 중요하기도 하지만, 프로젝트 만들때 결정되니까 가급적 손대지 말았으면 좋겠다.
    • ArtifactDirectory : 프로젝트에 대한 산출물 디렉토리. 상대 경로로 설정되어 있다면 CruiseControl.NET 서버가 설치되어 있는 디렉토리에 프로젝트 이름을 기준으로 구성된다. 산출물 디렉토리는 빌드 로그, 배포물 등등 빌드의 결과물로 저장될 내용들이 저장되는 장소이다. 가급적 이 폴더는 프로젝트 별로 틀리게 설정해주어야 빌드에 대한 각종 결과물들이 정상적으로 보이게 된다. 단 경로를 입력할 때 중간에 공백이 들어가 있더라도 쌍따옴표 표시(")는 필요없다.
    • SourceControl : 소스 버전 관리 도구에 대한 설정을 한다. 이 CCNet에서 자동으로 최신버전을 받아서 빌드를 수행할 때 소스를 받게되는 위치를 의미한다.
    • WorkingDirectory : 프로젝트에 대한 작업 디렉토리. The Working Directory for the project (this is used by other blocks). 상대 경로로 설정되어 있다면 CruiseControl.NET 서버가 설치되어 있는 디렉토리에 프로젝트 이름을 기준으로 구성된다. 작업 디렉토리는 통합 수행을 하는 프로젝트에서 체크아웃된 버전을 포함한다. 이 경로는 프로젝트 별로 틀리게 설정해주어야 빌드시 오류가 발생되지 않는다.  단 경로를 입력할 때 중간에 공백이 들어가 있더라도 쌍따옴표 표시(")는 필요없다.    
  4. 채운 내용을 예제로 캡처한 내용이 다음과 같다.
    (각 값은 필자 프로젝트를 기준으로 맞춘 내용이므로 적절히 자신의 환경에 맞게 구성해 주어야 한다. )
    프로젝트 명 : CQWorkflowViewer

    산출물 디렉토리 : E:\Builds\CQWorkflowViewer
    작업 디렉토리 : E:\Builds\CQWorkflowViewer\Works
    소스버전관리 : SubVersion,
        - 서브 버전 프로그램 위치(소스버전관리 형태에 따라 다름) : C:\Program Files\VisualSVN\bn\svn.exe
        - 서브버전 URL : file:///D:/Workfs/000.MySVN/CQWorkflowViewer
        - 소스 처리 경로 : E:\Builds\CQWorkflowViewer\Works
    SNAG-0039.png

  5. 저장 버튼을 눌러 저장한다.

 

동작 확인

구성이 완료되었으면 이 빌드가 정상적으로 동작하는지 꼭 확인하도록 한다.

서버를 무작정 동작시키진 말고, 콘솔 모드로 동작하게 끔 한다.

    시작 -> 모든 프로그램 -> CruiseControl.NET -> CruiseControl.NET

을 클릭해서 실행한다. 

일단 서버는 레디상태. 자 이제 실제 빌드를 강제 동작시켜 본다.

 

이 때 간단하게 시도해 볼 수 있게 해주는 도구가 바로 CCTray 이다.

CCTray를 일단 설치해 놓고 무조건 실행해보자. 그러면 화면 오른쪽 아래에 CC 라는 아이콘이 보인다.

SNAG-0040.png

거기서 오른쪽 버튼을 클릭해서 열어 보면 메뉴가 나오는데 그 중 Settings에 들어간다.

SNAG-0041.png

설정 화면이 뜨면 거기서 Add 버튼을 클릭해서 들어간다.

SNAG-0042.png

 

빌드 서버가 몇개든, 프로젝트가 몇개든, 여기서 Add를 통해 계속 추가해주면 된다.

이제 설정 화면이 뜨는데, 그 안에 서버를 추가해주면 된다. Add Server 버튼을 클릭한다.

SNAG-0043.png

Add Server 버튼을 클릭하면 총 3가지 유형의 서버를 선택할 수 있다. 원격에서 CCNet 서버를 접근하는 방법을 넣는 방법들인데,

IIS를 이용하여 접속하여 CCNet에서 제공하는 Dashboard 사이트를 통해서 접근하는 방법.

.NET Remote 기법을 이용하여 직접 연결하는 방법(이 때는 포트를 21234를 사용한다.)

CCNet 이 아닌 CC for Java 같은 솔루션  접근을 위해 HTTP GET 메소드를 사용하는 특별한 페이지들을 이용하여 접근하는 방법이 있다.

대개의 경우는 2번째 방법을 통해 접근하는게 좋다. (첫번째 방법으로 해보지는 못했다.)

SNAG-0045.png

자 그럼 서버 목록에 서버가 하나 추가되었고, 그 서버에서 Build 처리가 가능한 프로젝트가 하나 뜨게 된다.

즉 CCTrary에서 제어할 프로젝트(빌드 서버내에 다양한 프로젝트를 넣을 수 있으므로)를 선택적으로 적용할 수 있게 된다.

SNAG-0046.png

자 OK 해서 일단 설정 창을 닫고 다시 CCTray 아이콘을 더블 클릭하거나 메뉴에서 Show Status Window를 클릭하도록 한다.

그러면 아래와 같은 창이 뜨면서 아까 선택한 서버의 프로젝트가 트리형식으로 나타난다.

SNAG-0047.png

자 이제 추가한 프로젝트를 선택한 후 Force Build를 클릭하도록 한다.

만일 실패하면 CC 아이콘이 빨개 지고, 성공하면 녹색으로 나오게 된다.

 

도스 창을 보게 되면 처음에 대기화면에서 무언가 화면 가득 쌓여 있다. 아이콘이 빨갛게 된 경우에는 반드시 그 오류 내용을 도스창을 통해 찾아보도록 한다.

SNAG-0048.png

 

주의!

여기서는 설정 오류 뿐만 아니라, 빌드 하다가 발생되는 오류나, 기타 등등 다양한 사유에서 발생되는 모든 형태의 오류로 인해 아이콘이 빨개진다.

반드시 정상적으로 빌드 되는 소스를 가지고 테스트를 진행하도록 한다.

그래야 설정이 정상적이라는 것을 믿고 진행할 수 있는 것이다.

하다 못해 윈도우 창만 떨렁 띄우는 프로젝트라도 미리 컴파일 해서 아무 이상이 없는지 꼭 확인해주도록 한다.

 

성공하면 아래화면 처럼, 맨 믿줄에 Integration complete: Success로 뜨고 아이콘도 녹색으로 바뀐다.

SNAG-0049.png

이 글은 스프링노트에서 작성되었습니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • ···
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • ···
  • 156
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

비스킷 것 2010 Google Apps Engine me2sms Tutorial 개발환경 me2dayzm 매뉴얼 java Buscuit 지름신 me2photo 친구 블로그 SharePoint WSS 오류 moss Azure Visual Studio 수 협업 windows 불만 MOSS 2007 e-book 인터파크 twi2me 좀

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바