이렇게 쉬운 방법이 있었다니...

http://upendo.tistory.com/33


아 깔끔하다.ㅋㅋ

저작자 표시 비영리 동일 조건 변경 허락
신고

iPad2를 쓴지 어언 일주일째. 오매불망 기다린 2주라는 시간이 무색하게 어느덧 무덤덤해졌다. 내가 이상한건가.;; 암튼 이 애증의 iPad2에 대한 개인적 리뷰는 다음에 하기로 하고...

iPad2를 쓰면서 가장 불편한 점은 URL 공유가 어렵다는 점이다. 물론 Atomic 브라우저나 iChromy 같은 다른 브라우저를 쓰면 해결될 수도 있지만 탈옥을 하지 않는한 기본 브라우저는 사파리이기에, 메일이나 여기저기서 하이퍼링크를 누르면 사파리로 기본적으로 연결이 되기 때문에 불편한건 사실이다. 안드로이드는 웹서핑을 하다가도 메뉴 키를 누르면 '페이지 공유' 항목이 있어서 Twitter, Facebook 등 여러 공유 채널 중 하나를 선택하는게 가능했는데 그 방식이 몸에 익숙해졌는지 사파리의 완전 수동 URL 공유 방식은 불편할 수밖에 없었다.

방법을 찾아보던 중 Facebook의 북마클릿 공유 기능을 알게 되었다. 북마크 바에 이 링크를 추가해놓으면 공유를 원하는 페이지에서 북마크 바의 링크 클릭으로 공유가 가능해진다. 그런데 Facebook의 북마클릿 공유 페이지에서는 브라우저로 버튼을 드래그하여 추가하도록 되어 있는데 iPad에서는 이것이 불가능하다. iPad에서 이 기능을 쓰기 위해서는 다음과 같이 하면 된다.

우선 아무 페이지나 북마크에 추가한다. 사파리에서 좌측 상단 5번째 버튼에서 책갈피 추가를 하면 된다. 그리고 다음과 같이 수정을 한다.

  • 책갈피 이름: Share on Facebook (원하는 이름으로)
  • URL은 다음을 붙여 넣는다.

 javascript:var d=document,f='http://www.facebook.com/share',l=d.location,e=encodeURIComponent,p='.php?src=bm&v=4&i=1306989952&u='+e(l.href)+'&t='+e(d.title);1;try{if (!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share_internal_bookmarklet(p)}catch(z) {a=function() {if (!window.open(f+'r'+p,'sharer','toolbar=0,status=0,resizable=1,width=626,height=436'))l.href=f+p};if (/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}}void(0)

URL이 자바스크립트 코드로 되어있는데 상당히 길다. 자세히 보진 않아서 잘은 모르겠지만 북마크에다 자바스크립트를 넣을 생각을 하다니 정말 대단한것 같다.ㅋㅋ 암튼 우선은 페이스북 공유기능만 생겼지만 트위터나 다른 것들도 이런 방법들이 있을 것 같다. 나중에 또 찾아봐야겠다.


저작자 표시 비영리 동일 조건 변경 허락
신고

내 작업환경 - 운영체제

컴퓨터 Tip 2011.01.02 01:56 Posted by 몽백작

난 하루의 절반 이상을 컴퓨터 앞에 앉아 있는 프로그래머이다. 나에게 작업환경이란 컴퓨터를 포함한 컴퓨터에 설치된 운영체제, 그리고 각종 도구들을 말한다. 연구소에서 일한지 벌써 3년째를 맞고 있는데 지난 2년 동안은 컴퓨터, 운영체제, 작업 방식, 사용하는 도구들에 있어서 개인적으로 참 많은 변화를 겪게된 시기였던지라 이렇게 한번 정리를 해보는 것도 의미가 있을 것 같다는 생각이 들었다.

사무실 내 자리에는 두 대의 컴퓨터가 있다. 하나는 조립으로 맞춘 데스크탑, 또 하나는 맥북이다. 내가 연구소에서 일한 2년 동안 나는 다른 사람들에 비해 상당히 자주 운영체제를 바꾼 편이다. 처음에는 Windows XP였다. 그 첫번째 이유는 어쩔수 없이 '남들이 다 쓰니까'이다. 사내 인트라넷은 여느 회사들과 마찬가지로 ActiveX로 떡칠이 되어 있고 자료 정리, 문서 작성에도 주로 MS Office를 통해서 이뤄지기 때문이다. 하지만 지금 생각해보면 더 큰 이유는 그 시절 나의 제한적인 시야에 있었다. 나 역시 보통의 사람들처럼 Windows XP 만이 당연한 정답으로 생각했었기 때문이다. 그것 밖에 알지 못했기 때문에 그것 밖에 쓸 수 없었다는 표현이 맞을 것 같다.

그러다 일년 이후 Vista로 바꿨다. 이유는 단 하나이다. 작업 창 간 전환(alt+tab)시 화살표 키로 창 전환을 못하는 것 때문이다. 나는 대부분 창을 많이 띄어놓고 작업하기 때문에 창 전환이 빨르면 좋은데 alt+tab으로 일일이 순서대로 창을 선택해야 하는 점은 정말 불편하였다. Alt+tab과 화살표 키를 통해 빠른 창간 전환이 가능한 Vista, 그러나 나는 이마저도 정말 오래 쓰지 못하였다. 많은 다른 이들도 그렇게 평가하듯 얼마되지 않아 어딘지 모르게 삐그덕 거리기 시작했기 때문이다.

그러다 며칠 후 Windows 7이 출시되었다. 비록 바꾼지 얼마 되지 않았던 시점이었지만 어차피 쓰고 있던 Vista도 마음에 들지 않던 터라 다시 포맷을 감행하였다. 처음에는 Windows 7에 대해 별 기대하지 않았었지만 직접 경험해보고 나서 난 정말 감탄하였다. 안정성은 Windows XP만큼이나 탄탄해진 느낌인데 Vista 특유의 Aero glass 테마를 유지하고 있었다. 작업표시줄도 훨씬 효율적으로 바뀌었다. 게다가 윈도 업데이트시 장치 드라이버까지 업데이트를 해주는 센스까지 발휘하였다. 그 후로 1년 가까이 Windows 7을 사용하였다.

Windows 7은 군더더기가 없었다. 게다가 탄탄하기까지 하였다. 하지만 딱 하나 단점이 있다면, (Windows 7이라기 보다는 전체 Windows 시리즈의 단점) 가상 데스크탑을 지원하지 않는 다는 것이었다. 대부분 범용 리눅스 배포판에서는 가상으로 데스크탑 공간을 여러개 사용하는 것이 가능하다. Mac OS X에서도 Space and Expose라는 이름으로 지원한다. 하지만 Windows에서는 지원하지 않는다. 이런 것과 비슷한 기능을 하게 해주는 프로그램이 별도로 있기는 하지만 안그래도 꽉 차있는 시스템 트레이를 또 차지하면서 100% 만족감을 느낄 수 있을지는 의문이었다. 그런데 정작 Windows 7에서 다른 운영체제로 모험을 감행한 원인은 따로 있었다. 바로 '보안감사'와 '내PC지키미'라는 멍청한 보안 프로그램이다.


내PC지키미를 실행해봤더니 국가정보원과 국가보안기술연구소의 로고가 찍혀 있었다. 국내 최고의 보안 기관에서 만들었으니 제대로 내 PC를 지켜줄 것이라 생각했지만 내 예상은 여지없이 비켜가고 말았다. 이 프로그램은 IE로 사내 인트라넷에 접근할 때 이상한 팝업을 띄우더니 Java plugin이 바이러스라고 의심이 된다며 실행을 마구 차단시키는 것이 아닌가. 아무래도 인트라넷 중 일부 기능이 Java applet을 사용해서 플러그인이 동작된 것 같은데, 도대체 이 지키미는 어떤 기준으로 Java를 의심스럽다고 하는 건지, 어처구니가 없었다. 이 외에도 몇가지 ActiveX를 무조건 차단해버린 결과 결국 회사 업무가 불가능한 지경에 이르게 되었다. 게다가 프로그램 구동 방식이나 UI 자체도 조악하기 그지 없었다. 또한 이 지키미는 바이러스마냥 삭제도 어려웠다. '프로그램 추가/제거'에는 눈 씻고 찾아봐도 없어 정상적인 방법으로 삭제가 불가능하였다. 결국 구글링을 통해 모 관공서 게시판에서 삭제 프로그램을 찾아 실행한 뒤 겨우 삭제할 수 있었다. 이 짓으로 바쁜 일주일 중 하루를 날려먹고 나니 MS Windows에 대한 회의가 들었다. 물론 평소에도 그런 생각들은 없었던 것도 아니나 적어도 회사에서 만큼은 Windows를 써야 한다는 미련(?)조차 말끔이 날려버렸다.

나의 4번째 운영체제는 우분투 리눅스이다. 물론 집의 데스크탑 운영체제로도 사용하고 있던 터라 설치나 환경 설정, 사용 등에 대해서 부담감은 전혀 없었다. 다만 Office와 인트라넷이 조금 걱정이 되긴 했지만 다행히 VMware Workstation 라이선스는 회사에서 보유 중이니 vmware를 믿어보기로 하였다. 게다가 어차피 그 부분은 내 업무의 아주 작은 일부분일 뿐이지 정말 주로 하는 일들은 대부분 리눅스 환경에서 가능하다. 아니, 오히려 Windows에 Cygwin을 설치해서 쉘을 사용했었으니, 리눅스 환경이 더 적합하다고 할 수 있다. 하루의 고민 끝에 우분투 리눅스를 다운로드 받아 설치하였다. 그리고 약 한달이 되어가는 지금 매우 만족스럽게 쓰고 있다. 이는 우분투 리눅스 자체가 꽤 훌륭한 수준인 점도 있지만 이미 내가 주로 사용하는 웹 브라우저(구글 크롬 또는 파이어폭스), 작업환경 관련 프로그램들(이클립스, bash) 등이 이미 멀티플랫폼을 지원하기 때문이다.

여기에 최근에 얻게 된 맥북 프로 덕분에 Mac OS X도 동시에 쓰고 있다. Mac OS X는 국내에서는 아이폰 덕택에 사용자층이 상당히 늘어난 케이스이긴 하지만 미국의 대학생들은 대부분 맥을 쓴다. 제작년과 작년에 학회 참석차 갈 수 있었던 미국 유명 대학교들을 방문하고서야 이를 직접 실감할 수 있었다. 그 전부터 해킨토시를 만들어 몇차례 시도한 적이 있었지만 본격적으로 맥을 갖고 싶다고 느낀건 아마 미국 출장 이후가 아닐까 싶다. 아무튼 Mac OS X에서도 멀티플랫폼을 지원하는 대부분의 프로그램 덕분에 별다른 어려움을 못 느끼고 있다.

우분투 리눅스와 Mac OS X 덕분에 Windows 운영체제는 전부 vmware 속으로 들어가게 되었다. 물론 이렇게 사용하기 시작한지 아직 한달이 채 되지 않았지만 앞으로도 별 어려움 없이 잘 쓸 수 있을 것 같다는 생각이 든다. 가끔 뭔가 좀 안되면 어떠랴. 요즘 같이 인터넷이 발달되어 있는 시대에 항상 어딘가에 해답은 있었다. 그리고 이렇게 시도하면서 안되는 부분들을 고쳐가면서 공부하는 것도 개발자에게 어느 정도 필요한 부분이라고 생각이 든다.
신고

쓸만한 메모 애플리케이션들

컴퓨터 Tip 2010.12.26 12:55 Posted by 몽백작

스마트폰의 주요 활용 분야 중 하나가 바로 '메모'이다. 소셜 네트워크 서비스로 사람들이 일상을 공유하기 시작하면서, 일상을 사진으로 찍고, 기록하고, 공유하는 행위는 아주 중요한 스마트폰의 기능이 되었다. 뿐만 아니라 평상시 자신의 생각, 아이디어를 체계적으로 정리하기 위한 목적으로 '메모' 앱을 쓰기도 한다. 나는 후자의 목적으로 주로 많이 쓴다. 이런 목적으로 쓰기 위해서는 크게 모바일 지원과 함께 웹 동기화, 매쉬업 등 두 가지 부가적인 기능이 매우 중요하다고 생각된다. 

웹 동기화는 스마트폰에서 기록한 메모 내용을 웹(클라우드)으로 동기화한 후 스마트 폰이 아닌 데스크 탑이나 웹 브라우저를 통해 언제 어디서나 볼 수 있도록 한다. 스마트폰에만 기록되는 메모는 체계적으로 정리하기 어려울 뿐더러 보기도 힘들다. 또한 폰 분실이나 불의의 사고가 발생할 경우 데이터를 복구하기 힘들어진다.

매쉬업(mashup)은 메모들 간 관련 있는 정보, 단어들에 대해 서로 엮는 기능을 말한다. 이 기능은 메모들을 체계적으로 정리할 때 매우 유용하다. 보통 집단 지성인 위키(wiki) 등에서 그런 기능을 채택하고 있다. 하지만 개인적인 메모들도 위키처럼 체계적으로 정리하고 싶어하는 욕구는 그 동안 사람들에게 관심을 끌었던 MS OneNote, MoinMoin Desktop 등 개인용 위키, 데스크탑 위키 등을 통해 잘 나타난다.

다음은 내가 주로 사용해본, 그리고 아직까지 사용하고 있는 주요 메모 앱들이다.(아직 제가 써보지 못한 앱들이 있을 수 있습니다. 댓글 등으로 추천해주시면 감사하겠습니다.)

 

상당히 오래 전부터 서비스를 해온 에버노트가 있다. 데스크탑 노트 애플리케이션 분야에서 MS Office OneNote가 독주를 할 때 이 에버노트가 그 대항마 역할을 했었다. 기본적으로 웹 기반 노트 서비스이며 Windows, Mac OS X 등 데스크탑 앱을 지원할 뿐만 아니라, iPhone 및 iPad, Android용 앱도 지원한다. Tag를 통해 메모를 분류할 수 있다. 하지만 뭔가 매쉬업이 불가능한 구조이다. 메모 내에서 외부로 링크를 걸 수는 있지만 메모간 링크는 뭔가 깔끔하지 못하다. 에디터에서 명시적으로 메모간 링크를 위한 기능이 지원되지 않을 뿐더러 메모의 URL이 너무 길어 하이퍼링크로 연결하기에도 영 지저분한 느낌이 든다. 그래도 메모 애플리케이션의 정석이라 불러도 무방할 만큼 문안한 기능들을 제공하므로 사용하기에 부족함은 없긴 하다.


Springpad는 웹 기반 메모 애플리케이션이다. HTML5를 기반으로 웹 브라우저 상에서 충분한 기능을 제공하므로 별도의 데스크탑 앱은 존재하지 않는다. 크롬 웹스토어에서 찾아볼 수 있으며 iPhone 및 Android 용으로는 별도의 네이티브 앱을 제공한다.

Springpad를 처음 사용해보면 작성할 수 있는 메모의 형식이 매우 다양하다는 것을 알 수 있다. 하지만 에버노트와 비슷하게 메모간 링크가 어렵다는 단점이 있다.

 

Catch는 기본적으로 웹 기반의 메모 앱이다. 단어 앞에 #만 붙이는 방식을 통해 아주 심플하면서 독특한 방식으로 태그 및 매쉬업이 가능하다. 메모 자체를 외부로 publish할 수 있다는 점도 강점이다. 하지만 굳이 #을 붙여야 한다는 점은 의외로 단점이다. 한번 태그가 된 단어는 알아서 #을 붙여주면 좋으련만 은근 귀찮은 느낌이 든다. Catch는 iPhone보다 Android용을 많이 알려졌는데 그 이유는 iPhone 보다 Android 지원이 빵빵한 몇 안되는 애플리케이션이기 때문이다. 지금도 개인적으로 계속 사용하고 있는 메모 애플리케이션이다.

 

우분투를 사용해본 사람이라면 Tomboy 노트를 잘 알 것이다. 완벽한 위키 스타일 노트로 매쉬업이 매우 편리하다. 게다가 우분투원이 런칭하면서 웹 동기화도 지원하기 시작하였다. 하지만 Android용으로 Tomboy 노트가 있다는 것을 아는 사람이 있을까? 오픈소스 프로젝트로 개발되고 있으며 이름은 Tomdroid 라 하여 안드로이드 마켓에서 다운로드 받을 수 있다. 하지만 아직 모바일에서는 읽기 밖에 지원이 되지 않지만 차후 업데이트가 된다면 아주 유용할 듯 싶다. 그런데, 가장 큰 단점이 있으니, 바로 한국어 지원이 매끄럽지 못하다는 점이다. Tomboy의 장점은 메모를 입력할 때 어떤 메모의 제목과 동일한 단어가 있으면 바로 링크가 걸린다는 점이다. 예를 들어 'android' 라는 단어를 입력하는 경우 입력을 마치고 공백을 위해 스페이스바를 누를 때 메모 중에 'android' 라는 제목을 가진 메모가 있을 때 바로 링크가 걸리게 된다. 영어는 단어의 앞 뒤로 공백이 들어가기 때문에 이런 방법이 매우 유용해 보이지만 한글 처럼 단어에 조사가 들어가는 경우에는 인식이 되지 않는다. 즉, 링크를 위해서 억지로라도 단어와 조사의 사이에 공백을 넣어줘야 하는 단점이 있다. 아직 사용자 층이 너무 얇고 주로 영어권 개발자들에 의해 개발되고 있기 때문에 있을 수 있는 문제라고 생각된다. Tomboy 노트가 우분투 전용이라는 느낌도 있는데 윈도 용으로도 있고 Mac OS X도 지원하는 등 거의 모든 범용 운영체제에서 지원되고 있는 바 관심있으신 분들은 한번 설치해 보고 많이 사용해봤으면 좋겠다는 생각이 든다.

신고

드디어 리얼맥을 만나다.

컴퓨터 Tip 2010.12.24 11:00 Posted by 몽백작

수차례 해킨토시를 시도하는 사람들이라면 리얼맥이 갖고 싶어질 껍니다. (아 물론 필요에 의해서 리얼맥 대신 추가적으로 해킨토시를 시도하는 사람들 빼구요.ㅋㅋ) 저도 그 중 한사람이었는데 항상 살 기회가 오지 않더라구요. 돈도 없구요.ㅠㅠ 그런데 드디어 저에게도 리얼맥이 생겼습니다. ^^


제 책상의 왼편을 차지하고 있는 뜨끈뜨끈한 리얼맥 13인치 맥북프로입니다. 뭐 조만간 새로운 맥북프로와 iMac 발표 예정이라는 떡밥이 걸리긴 하지만, 그래도 지금 맥북도 충분히 쓸만 하거든요.ㅋㅋㅋ
돈은... 회사가 사줬습니다. 덕분에 회사 자산이라는...;; 그래도 맥의 UI를 경험해볼 수 있다는게 중요한거니까요..ㅋㅋ 아.. 일 열심히 해야겠네요. 히히
신고

Google 사이트도구 = 위키?

컴퓨터 Tip 2010.09.28 09:04 Posted by 몽백작

Google의 새로운 문서도구가 나온지도 몇달이 흘렀다. 하지만 초창기부터 지금까지 아시아 언어 입력 문제점과 함께 나에게 거부감을 불러 일으킨건 문서의 형태였다. 과거의 문서는 종이에 프린트할 문서라기 보다는 HTML 문서에 가까웠다. 그래서 자료, 생각들을 정리하는 개인용 위키마냥 사용하고 있었다. 그러기에 충분했던 것은 바로 웹에 게시하지 않아도 웹페이지 형태로 보기가 가능했기 때문이었다. 그런데 새로운 문서도구는 웹에 게시(만천하에 공개)를 해야만이 웹페이지 형태로 보기가 가능하므로 사적인 비공개 자료 등을 정리하기가 애매했다.

그렇게 조금씩 새로운 구글닥스는 나에게서 멀어져갔다. 자료들을 정리하기 위해서 스프링노트 잠깐, 원노트 잠깐, 에버노트 잠깐 등등 여러 노트들을 써봤다. 하지만 그 어떤 것도 내 스타일이 아니었다. 스프링노트는 오픈마루스튜디오도 사라지고 유지만 겨우겨우 하고 있는 분위기라 언젠가는 갈아타야 할 것 같았고, 원노트는 MS Office 정품이 있어야 했다. MS Web Apps는 여전히 불편했다. 에버노트는 문서와 문서간 서로 연결되는 위키라기 보다는 메모에 가까웠기에 체계적으로 자료를 정리할 수 없었다.

그러다 만난 Google 사이트도구!! 새로운 구글닥스는 웹페이지 편집기보다는 정말 인쇄될 수 있는 문서의 편집도구로의 기능을 강화한 것이고 내가 원한 기능은 사이트도구에 그대로 있었다.



그동안 난 Google 사이트도구는 그저 (공개되는) 웹페이지를 편하게 만들어 줄 수 있는 툴로만 생각했다. 덕분에 개인 홈페이지를 편하게 만들수 있었다. 그런데 Google 사이트도구는 그 용도 뿐만 아니라 개인용 비공개 위키나 비공개 협업 페이지로의 역할도 충분히 할 수 있다. 다음번에 공동 프로젝트를 수행할 일이 있으면 한번 제대로 사용해봐야겠다.

뿐만 아니라 문서, 스프레드시트, 프레젠테이션 뿐만 아니라 유튜브 동영상까지 임베드 할 수 있을 뿐더러 뉴스, SNS 등등 관련 가젯들도 페이지에 삽입할 수 있다. 그 수가 아직은 충분하지 않지만 많은 사람들이 사용하면 할 수록 가젯들은 덩달아 증가하지 않을까? 우선 가젯을 제외하고라도 숨어있는 기능들이 상당하다. 한번 사용해보면 재미있을 것 같다.^^
신고

Eclipse는 Java 뿐만 아니라 C/C++ 개발에 있어서도 매우 훌륭한 툴이다. 특히 코드 리팩토링 기능은 코드 수정을 정말 쉽게 만들어준다. MS Visual Studio에서 C/C++ 프로그래밍을 하는데 리팩토링때문에 열 돋는 일이 생긴다면 한번 이클립스로 외도를 해보는 것도 나쁘지 않을 것 같다. 하지만 패스 설정을 해주지 않는다면 Win32 API에 관한 Code Completion이 동작하지 않아 힘들 수 있다.

프로젝트 만드는 것은 간단하다. 새로운 C 또는 C++ Project를 생성하고 기존 파일들을 죄다 긁어오면 된다. 그리고 패스를 아래와 같이 설정해주자.


'Project Properties'에 들어가서 'C/C++ General' → 'Paths and Symbols'로 들어가서 'Add' 클릭한 후 인클루드할 패스를 선택해주면 된다. 나의 경우 Visual Studio 2008을 사용하고 있으므로 다음 경로들을 추가해주었다.

C:\Program Files\Microsoft Visual Studio 9.0\VC\Include
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include

이렇게 하고 사용하니 엄청 편해졌다. F3키를 누르면 어디든 선언된 부분으로 점프할 수 있고, Code Completion 기능도 VS의 IntelliSense보다 훨씬 나은 것 같다.
신고

http://kldp.org/node/58297#comment-241936

리눅스 쉘이 아니라고 별 기능 없을 꺼라고 우습게 보면 안된다.ㅎㅎㅎ
신고

리눅스에 데몬이 있다면 윈도엔 서비스가 있다. 서비스에 사용자 응용을 등록하기 위해서는 Windows Resources Kit(이하 WRK)에 포함된 instsrv.exe와 srvany.exe가 필요하다. WRK 링크에 들어가보면 Windows 7은 지원되지 않는 것으로 나오는데, 그렇다고 해서 Windows 7 전용의 방법이 있는 것은 아니다. sc create 라는 놈으로 깔짝깔짝 해봤는데 영 안된다. 결국 결론은 Windows 7에서도 WRK를 설치하고 Windows XP와 똑같이 하면 된다는 것이다.

위 링크에서 WRK를 다운받아 설치하고, 관리자 권한으로 cmd.exe를 실행시킨다.

> C:\path\to\instsrv.exe {등록할 서비스 이름} C:\path\to\srvany.exe

예)
> "C:\Program Files\Windows Resource Kits\Tools\instsrv.exe" {등록할 서비스 이름} "C:\Program Files\Windows Resources Kits\Tools\srvany.exe"

path\to는 WRK가 설치된 경로를 말한다. 기본은 C:\Program Files\Windows Resources Kits\Tools 일 것이다. 윈도 커맨드 프롬프트에서 입력하는 것이므로 경로에 공백이 들어간다면 큰따옴표로 묶어주면 된다.

다음엔 레지스트리를 건드릴 차례다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\{등록한 서비스 이름}의 하위에 'Parameters'라는 키를 만든다. 그리고 그 안에 'Application', 'AppParameters' 등 2개의 문자열 값을 만든다. 그리고 각각의 데이터에 등록할 응용프로그램의 풀패스와 파라미터를 입력한다.

마지막으로 다시 관리자 권한으로 서비스를 시작하면 된다.
> net start {등록한 서비스 이름}

제어판의 관리도구에 있는 서비스에서 해당 서비스를 찾아서 실행시켜줘도 무방하다.

신고

Trac과 VisualSVN 연동 삽질

컴퓨터 Tip 2010.07.22 21:34 Posted by 몽백작

무심코 Trac이 소프트웨어 프로젝트 협업하기 좋은 툴이라고 들어서 덤벼들었다 간만에 삽질을 제대로 했다. 그래도 원하는 지점을 팠으니 다행! ㅎㅎ

Trac을 윈도에 설치하는 건 정말 쉽지 않다. 사실 TracInstall에 나온대로 따라가면 그만인데 생각외로 쉽지 않았다. 우선 Python 버전 의존성때문에 한 구덩이를 팠고, 서버에서 사용하는 VisualSVN과의 연동때문에 우물을 파버렸다. ^^;;

2010년 7월 22일 현재, Python은 2.7과 3.x 버전이 있지만 svn-Python binding이 아직 2.6밖에 지원하지 않으므로 반드시 Python 2.6을 설치해야 한다. 그렇게 해도 svn-Python binding의 libsvn 디렉토리내의 *.dll은 모두 *.pyd 로 확장자를 바꿔줘야 한다. 2.7로 설치해버리면 바꿔줘도 소용없다. Python의 command line에서 'from svn import core'라고 쳐봐도 core 모듈을 못불러온다는 대답밖에 못듣는다. 결국 여기서는 다시 원점으로 돌아가서 다 지워버리고 Python 부터 서로 호환되는 버전을 설치했더니 해결!!

Trac과 subversion 연동에 있어서 하이라이트는 바로 커밋 로그에서 티켓에 대한 처리를 결정하는게 아닐까 생각된다. 발행된 티켓에 대해서 fix, close, ref 등 명령어로 로그에 명시를 해 놓으면 Trac에 바로 적용이 되니 코드관리와 프로젝트 협업이 따로 안놀고 유기적으로 동작하는게 아닐까? 그런데 이 기능을 사용하도록 하는게 생각외로 쉽지 않았다.;;;

Trac 0.12 이전 버전은 써보지 않아서 잘 모르겠지만, 0.12부터는 하나의 환경에 여러 subversion 저장소를 지정할 수 있기 때문에 svn commit 이나 저장소 속성 변경 등을 수행할 때마다 명시적인 동기화(explicit synchronization)를 수행하는 걸 추천한다고 한다. 또한 앞서 말한 핵심기능인 commit 로그에서 티켓 상태를 바로 업데이트 하기 위해서는 반드시 명시적 동기화가 선행되어야 한다고 한다. 예전에는 어떤 방식으로 돌아갔는지 확실히 모르겠지만, 현재는 명시적인 동기화를 위해서는 subversion의 저장소의 hook 기능을 사용해야 한다. hook은 subversion에서 어떤 커맨드를 수행할 때, 하기 전(pre) 혹은 하고 난 후(post) 명령을 수행하는 기능을 말한다. 명시적 동기화에는 post-commit.cmd와 post-revprop-change.cmd 등 두가지 스크립트가 사용된다. (자세한 내용은 TracRepositoryAdmin#ExplicitAdmin 참고)

문제는 분명히 메뉴얼대로 했는데 커밋 실패가 발생한다는 점이다.
$ svn ci
전송중     ~~~~.c
파일 데이터 전송중 .svn: 커밋이 실패하였습니다:
svn: MERGE of '/{저장소위치}': 200 OK (https://{저장소URL})
svn: 커밋 메시지는 다음 파일에 저장되어 있으며, -F로 재사용 할 수 있습니다. :
svn:       'C:\~~~~~~\svn-commit.13.tmp'

웃긴건 커밋 실패라고 나오면서 실제로 저장소에는 커밋이 되었으며 (http 요청이 잘 처리되었다는 응답코드인 200 OK가 출력되었으며 실제로 저장소 내용을 확인해봐도 그러하다.) 정작 수정한 로컬만 갱신이 되지 않았다는 것이다. 결국, svn up 으로 업데이트하여 로컬을 최신 내용으로 갱신해야 다시 저장소와 동기가 맞게 되며 로그에 쓴 fixes #{티켓번호} 는 Trac에 반영되지도 않았다.

svn ci를 통해서 커밋을 하면 메시지를 받은 VisualSVN이 저장소를 갱신하고 post-commit.cmd 스크립트를 통해 로그에 명시된 번호를 가진 티켓의 상태와 함께 Trac의 저장소 캐시도 갱신하게 되는데, VisualSVN의 권한으로는 Trac 저장소 디렉토리를 건드릴 수 없다는 것이 문제인 듯 싶었다. 아무래도 VisualSVN이 윈도의 서비스로 동작하므로 어떤 계정으로 로그온하여 동작하는지 알아보고, Trac 저장소 디렉토리를 해당 계정이 접근할 수 있도록 권한을 바꿔주면 될 것 같았다. 확인 결과, '네트워크 서비스'로 되어 있길래 Trac 저장소 디렉토리에 네트워크 서비스 계정(NETWORK SERVICE)을 추가하고 모든 권한을 부여하였다. 하지만 변한 것은 아무 것도 없었다.

그렇게 해서 본격적으로 삽질을 한지 수 시간이 지난 후, 구글에서 다음 링크를 찾아냈다.

아... 왜 Trac 저장소 디렉토리에 대한 권한을 바꿀 생각만 했을까... VisualSVN을 실행하는 주체를 바꿔주면 될 것을...
결국, 링크에서 씌여진 대로 로그온 주체를 로컬 시스템으로 바꾸니 커밋도 되고, 티켓에 반영도 되고,...ㅠㅠ 까딱 길어질뻔한 삽질이 빨리 끝났다는데 위안을 삼고 있다.

그런데... 아직 잘 이해가 안간다.
디렉토리에 대한 권한을 바꾼게 왜 실패했는지...;;;;;
아... 오묘한 윈도XP....

아무튼 해결...ㅠㅠ
신고



 

티스토리 툴바