aro dream

development, dream, human

카테고리: 개발프로세스

Redmine 이메일 리마인드 시키기

일감(issue)이 생기면 redmine에서 자동으로 이메일을 보내기는 하지만 일감 시한이 얼마 남지 않았을 때 리마인드 시킬 필요가 있어서 찾아 보았다.

처음으로 찾은 것은 플러그인 중에 이메일 리마인드시키는 플러그인이 있어서 시도해 보았으나 결론은 꽝~!

Redmine 3.3까지만 지원하는데 모르고 계속 시도하다가 결국은 포기하였다… (지금 우리가 쓰고 있는 것은 3.4.3)

다시 찾다보니 Redmine 홈페이지에 방법이 있어 정리~!

Redmine은 할당되어 활성화된 일감들에 대해 리마인드 이메일 보내는 기능을 rake를 이용하여 제공한다. 대상은 시한이 지났거나 얼마 남지 않은 일감들이다.

가능한 옵션들은 다음과 같다.

  • days: 리마인드시킬 일감의 시한까지 남은 날의 수 (defaults to 7)
  • tracker: tracker 아이디 (defaults to all trackers)
  • project: project 아이디 (defaults to all projects)
  • users: 리마인드를 시킬 사용자들. ‘,’로 구분한다
  • version: 해당 이슈들의 대상 버전의 이름 (defaults to none)

예) 기한이 지났거나 7일내로 남은 일감에 할당된 사용자들에게 이메일을 보냄:

bundle exec rake redmine:send_reminders days=7 RAILS_ENV="production" 

예) 사용자 1, 23, 56에게 기한이 지났거나 7일내로 남은 일감에 대해 이메일을 보냄:

bundle exec rake redmine:send_reminders days=7 users="1,23,56" RAILS_ENV="production" 

한번만이 아니라 주기적으로 수행하려면 크론탭(Linux) 또는 스케쥴러(Windows)에 등록해야 한다.

예) 월요일부터 금요일까지 8:50에 redmine 디렉토리로 이동한 후 리마인드 이메일을 보냄:

crontab -e
50 8 * * 1-5 cd /opt/redmine-3.4.3-2/apps/redmine/htdocs/ && /opt/redmine-3.4.3-2/ruby/bin/bundle exec rake redmine:send_reminders days=1 users="1,5,6,7,8,9,10" RAILS_ENV="production"

이상~ 잘 동작하고 있다~!

Redmine 홈페이지의 ‘Sending Reminder Emails‘ 참조

‘풀스택 엔지니어’님의 ‘Crontab 사용법 정리‘ 참조

Redmine 백업과 복구하기 (Redmine backup & restore)

Redmine은 계속 쓰면서 정작 백업은 소홀히 한 것 같다.

백업도 하고, 정리도 할 겸 관련 내용 정리~!

1. 다른 장비(서버)로 옮기는 가장 간단한 방법

전체 복사를 이용한 방법이 가장 간단하다.

  1. 기존 설치되어 있는 장비의 Bitnami 설치 디렉토리를 통째로 복사한다
  2. 새로 설치할 장비의 설치 디렉토리에 붙여놓기 한다.
  3. 새로운 장비의 [Bitnami Home] 에서 serviceinstall.bat 실행 (Windows의 경우)

정말 간단하다~

* Linux의 경우는 해당되지 않는다… 찾아 봐야 겠다.

2. Redmine 백업

1. [Redmine Home]\apps\redmine\htdocs\config\database.yml 오픈하여 password 확인한다.

 

2. db dump 생성

mysql이 설치되어 있는 곳의 bin 디렉토리로 가서 mysqldump를 실행하여 백업파일을 만든다.

mysqldump 실행 시 위에서 알아낸 비밀번호를 이용해야만 한다.

cd [Redmine Home]\mysql\bin
mysqldump -ubitnami -p[password] bitnami_redmine > [Backup Home]\redmine.bak.dump (windows의 경우)
ex) ./mysqldump -ubitnami -p12345678 bitnami_redmine > /backup/redmine.bak.dump (linux의 경우임)

* 만약 mysqldump 실행시 아래와 같은 경고 메시지가 나와도 실행은 된다.

Warning: Using a password on the command line interface can be insecure.

mysql 5.6버전부터 mysqldump 명령시 mysql_config_editor를 이용한 로그인 설정이 필요하다고 한다.
하지만 이 경고 메시지가 보기 싫다면 아래와 같이 해도 된다.
먼저 login-path 설정

mysql_config_editor set --login-path={설정명} --host=localhost --user=root --password Enter password: {패스워드를 입력하여 저장}

그리고는 다음과 같이 사용한다.

mysqldump --login-path={설정명} {디비명} > {백업파일명}.sql

옵션 내용은 다음과 같다.

--login-path : 구분하기위한 문자열
--host : 접속하려는 DB서버의 호스트명 또는 IP
--user : 저장할 계정
--password : 패스워드값은 제외하고 옵션만 지정하여 실행

3. 첨부파일, 플러그인, 테마 백업

[Bitnami Home]\apps\redmine\htdocs 에서 각 항목에 맞는 디렉토리들을 복사한다.
보관을 용이하게 하고 용량을 줄이기 위해 압축해서 놓는 것을 권장한다.
1) 첨부파일 : files 디렉토리
2) 플러그인 : plugins 디렉토리
3) 테마 : public\themes 디렉토리

tar -zcvf /opt/redmine-3.4.3/apps/redmine/htdocs/files /backup/redmine_files.bak
tar -zcvf /opt/redmine-3.4.3/apps/redmine/htdocs/plugins /backup/redmine_plugins.bak
tar -zcvf /opt/redmine-3.4.3/apps/redmine/htdocs/public/themes /backup/redmine_themes.bak

이렇게하면 백업 완료~!

3. Redmine 복구

1. db dump 복구

위에서 알아낸 비밀번호를 사용하여 백업파일로 부터 mysql 데이터를 복구한다.

mysql -ubitnami -p[password] bitnami_redmine < [Backup Home]\bak.dump

2. 백업해두었던 첨부파일, 플러그인, 테마 붙여놓기

백업해 놓았던 redmine 첨부파일, 플러그인, 테마 파일들을 다시 옮겨 놓는다.
테마의 경우 redmine 버전을 올릴 경우 복구한 테마는 깨질 수도 있으므로 주의!

3. 아래 명령으로 마이그레이션 수행

cd [Redmine Home]\apps\redmine\htdocs
# db migration
bundle exec rake db:migrate RAILS_ENV=production
# plugin migration
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

이로써 복구 완료~!

‘흔한 컴공의 블로그’님의 ‘Bitnami Redmine 백업과 복구‘ 기사 참조

Redmine (Bitnami)에서 thin 서버가 사용하는 port 바꾸기 (windows)

금번에 외부 솔루션 하나를 테스트하기 위해 Redmine 서버에 같이 설치해서 사용하다가

port 충돌이 일어난다는 것을 알았다.

충돌이 일어나는 port는 3002번, thin_redmine2 서비스 였다.

외부 솔루션의 포트를 바꾸려고 알아봤지만 바꿀 수 없다는 대답을 듣고,

Redmine의 thin_redmine 서비스들의 포트를 바꾸는 법을 찾아 여기에 정리해 본다.

(의외로 오래 걸렸다능…)

 

모두 3개의 설정(configure) 파일의 내용을 바꿔주면 설정 완료~!

기존 thin_redmine:3001, thin_redmine2:3002 포트들을 thin_redmine:3009, thin_redmine2:3010으로 바꾸도록 하겠다.

 

  1. Redmine 설정 파일이 있는 폴더로 이동한다.
        Redmine이 설치되어 있는 폴더에서 Redmine의 설정 폴더로 이동한다.
          ex) C:\Bitnami\redmine-3.1.0-0\apps\redmine\conf
  2. httpd-vhosts.conf 파일 내용을 수정한다.
  3. httpd-prefix.conf 파일 내용을 수정한다.
  4. Redmine scripts 폴더로 이동한다
        Redmine이 설치되어 있는 폴더에서 Redmine의 scripts 폴더로 이동한다.
          ex) C:\Bitnami\redmine-3.1.0-0\apps\redmine\scripts
  5. thin_redmine 서비스들의 등록을 해제한다.
        serviceinstall.bat 배치파일을 실행시켜 thine_redmine 서비스들의 등록을 해지한다.
          ex) C:\Bitnami\redmine-3.1.0-0\apps\redmine\scripts\serviceinstall.bat REMOVE
  6. serviceinstall.bat 파일 내용을 수정한다.
        serviceinstall.bat 배치 파일의 ‘install’ 항목에서 this_redmine 서비스 시작시 포트 번호를 바꾸고자 하는 포트 번호로 수정한다.
      수정전)

        if not “”%1″” == “”INSTALL”” goto remove
        “C:\Bitnami\redmine-3.1.0-0/apps/redmine\scripts\winserv.exe” install “redmineThin1” -start auto “C:\Bitnami\redmine-3.1.0-0\ruby\bin\ruby.exe” “C:\Bitnami\redmine-3.1.0-0/apps/redmine\htdocs\bin\thin” start -p 3001 -e production -c “C:\Bitnami\redmine-3.1.0-0/apps/redmine/htdocs” -a 127.0.0.1 –prefix /redmine
        net start redmineThin1 >NUL
        “C:\Bitnami\redmine-3.1.0-0/apps/redmine\scripts\winserv.exe” install “redmineThin2” -start auto “C:\Bitnami\redmine-3.1.0-0\ruby\bin\ruby.exe” “C:\Bitnami\redmine-3.1.0-0/apps/redmine\htdocs\bin\thin” start -p 3002 -e production -c “C:\Bitnami\redmine-3.1.0-0/apps/redmine/htdocs” -a 127.0.0.1 –prefix /redmine
        net start redmineThin2 >NUL
      수정후)

        if not “”%1″” == “”INSTALL”” goto remove
        “C:\Bitnami\redmine-3.1.0-0/apps/redmine\scripts\winserv.exe” install “redmineThin1” -start auto “C:\Bitnami\redmine-3.1.0-0\ruby\bin\ruby.exe” “C:\Bitnami\redmine-3.1.0-0/apps/redmine\htdocs\bin\thin” start -p 3009 -e production -c “C:\Bitnami\redmine-3.1.0-0/apps/redmine/htdocs” -a 127.0.0.1 –prefix /redmine
        net start redmineThin1 >NUL
        “C:\Bitnami\redmine-3.1.0-0/apps/redmine\scripts\winserv.exe” install “redmineThin2” -start auto “C:\Bitnami\redmine-3.1.0-0\ruby\bin\ruby.exe” “C:\Bitnami\redmine-3.1.0-0/apps/redmine\htdocs\bin\thin” start -p 3010 -e production -c “C:\Bitnami\redmine-3.1.0-0/apps/redmine/htdocs” -a 127.0.0.1 –prefix /redmine
        net start redmineThin2 >NUL
  7. thin_redmine 서비스들을 등록한다.
        serviceinstall.bat 배치파일을 실행시켜 thine_redmine 서비스들을 등록한다.
          ex) C:\Bitnami\redmine-3.1.0-0\apps\redmine\scripts\serviceinstall.bat INSTALL
          <주의> INSTALL 철자를 꼭! 대문자로 한다. 아니면 해지가 된다…

 

이상이다~!

‘협업의 기술 (Team Geek A Software Developer’s Guide to Working Well with Others)’

지은이: 브라이언 피츠패트릭 (Brian W. Fitzpatrick), 벤 콜린스-서스먼 (Ben Collins-Sussman)

옮긴이: 장현희

출판사: 제이펍 (jpub)

이 책은 소프트웨어 개발자들간의 협업에 대한 이야기를 다룬다. 내용을 보면 개발 팀 관리에서 사용자 관리(?)까지 이 책에서 다루고 있다. 두 지은이가 꽤 오랜시간동안 경험해 온 이야기들을 잘 정리하여 여러 컨퍼런스 및 실전에서 써먹기까지 한 이야기들이라 현실적이라 말하고 있고, 내 생각에도 꽤 적용할 만한 내용들이 많다.

아쉽다면 번역이 잘된 편이기는 하지만 군데군데 내용 전개가 자연스럽지 못한 곳이 좀 있고, 그러다보니 내용이 잘 이해가 안되는 곳이 있다. 두 번 정도 읽으니 그런 곳도 이해가 되기는 한다. 그리고 외국 사례이고, 그것도 주로 구글과 SVN 개발 관련 사례다보니 우리의 현실과는 좀 다른 것도 있다. 그런 내용은 각자가 알아서 각자의 현실에 맞게 적당히 적용하는 것으로…


그룹프로젝트

차례

  1. 천재 프로그래머의 전설
    • 내 코드를 숨길 수 있게 도와주세요
    • 천재의 전설

      아직 마무리하지 못한 일을 다른 사람이 본다는 건 아주 불안한 일이죠. 다른 사람들이 진지하게 나를 판단하고 나를 바보라고 생각하는 것만큼이요.

    • 숨긴다는 것은 해로운 것이다
    • 결국은 팀이다

      소프트웨어 개발은 팀 스포츠이다.

    • 세 개의 기둥
      • 겸손(Humility)
          당신은 우주의 중심이 아니다. 또한, 전지전능하지도 않으며 항상 성공하는 것도 아니다. 자기 개선에 대해 항상 열려 있어야 한다.
      • 존중(Respect)
          당신은 함께 일하는 사람을 진심으로 존중할 수이썽야 한다. 그들을 인간으로 대하고, 그들의 능력과 업적에 감사해야 한다.
      • 신뢰(Trust)
          함께 일하는 사람들은 숙련된 인력이며, 항상 옳은 일을 할 것이라 믿고 적절하게 그들을 운영할 수 있어야 한다.

      모든 사회적 충돌은 대부분 겸손과 존중, 신뢰의 부족으로 인해 발생한다

    • HRT 실습
      • 자존심 버리기

        ‘겸손해진다는 것’은 누군가에게 당하기만 하는 것과는 다르다. 자신감을 갖는 것은 잘못된 것은 아니다. 단지 아는 체하는 행동을 삼가라는 뜻이다. 당신 자신이 현명한지 아닌지에 대해 걱정하는 것보다는 팀의 목표를 설정하고 조직의 자부심을 높일 수 있도록 ‘집단적’ 자부심에 대해 고려하는 것이 훨씬 낫다.

      • 베푸는 방법과 비판을 받아 들이는 방법 모두 배우기

        무엇보다 가장 중요한 것은 존중이 묻어나야 한다. 건설적인 비판을 하는 사람들은 진정 다른 사람을 위하며, 그 대상이나 대상이 하는 일이 향상되기를 원한다. 당신의 동료를 존중하고 건설적인 비판을 하되, 예의를 갖추는 법을 배워야 한다. 누군가를 진정으로 배려하는 마음이 있다면 요령껏 유용한 표현을 선택하게 될 것이다. 하지만 이 기술은 많은 연습을 거쳐야 얻을 수 있다.

        “이봐, 나는 이 부분의 흐름 제어가 약간 혼란스러운 것 같아. 여기에 xyzzy 코드 패턴을 적용하면 좀 더 명확하고 유지보수가 쉬워지지 않을까?”

      • 빨리 실패하라, 그것에서 배워라, 그리고 반복하라
      • 학습을 위한 시간을 아끼지 마라
      • 인내하라
      • 주변으로부터 영향을 받아들여라
    • 다음장에서는
  2. 환상적인 팀 문화는 어떻게 만들까
    • 문화란 무엇인가?

      당신의 팀 문화는 좋은 사워도우 덩어리와 같다. 당신이 배양한 씨균(당신의 종자)이 당신의 도우(즉, 새로운 구성원)에게 주입되어 이스트균과 박테리아(당신의 팀 구성원)와 함께 성장함에 따라, 마침내 훌륭한 빵 덩어리(당신의 팀)가 탄생하게 되는 것이다.

    • 왜 당신이 관심을 가져야 하는가?

      팀 문화에 있어 흥미로운 점은, 매우 강력하게 정의된 문화를 구축한다면 그 문화가 스스로 선택을 하게 될 것이라는 점이다. 오픈 소스 세계에서 HRT원칙을 근간으로 깔끔하고, 고급스러우며, 유지보수가 쉬운 코드를 작성하는 것을 중시하는 프로젝트는 그들이 존경하고, 신뢰하며, 깔끔하고, 고급스러우며, 유지보수가 쉬운 코드를 작성하는 사람들과 일하고 싶어 하는 엔지니어들을 매료시킨다.

    • 문화와 사람

      소프트웨어의 세계에서는 제품을 구현하는 엔지니어에게는 뛰어난 창의성을 요구하며, 훌륭한 엔지니어를 원한다면(그리고 그들이 계속해서 업무를 수행하게 하려면), 그들을 위한 문화를 만들고 그들이 안전하게 아이디어를 공유하고 의사 결정에 참여할 수 있도록 해야 한다. 만일 팀 단위 업무를 잘 수행하는 뛰어난 엔지니어를 원한다면, 훌륭한 엔지니어들을 고용하는 것부터 시작해야 한다. 우리가 알고 있는 많은 훌륭한 엔지니어들은 거대한 산업 분야에서 자신들이 뭔가를 더 배울 수 있는 팀에 매력을 느낀다.

    • 성공적인 문화의 의사소통 패턴
    • 높은 수준의 동기화
      • 사명
      • 능률적인 회의
      • ‘지리적으로 협업이 어려운’ 팀에서 일하기
      • 디자인 문서
    • 일상적인 논의
      • 메일링 리스트
      • 온라인 채팅
      • 이슈 추적기 사용하기
    • 엔지니어링의 일부로서의 의사소통
      • 코드 주석
      • 소스 코드에 자신의 이름 넣기(‘작성자 태그’ 이슈)
      • 모든 커밋에 대해 코드 리뷰 요구하기
      • 실제 테스트와 릴리즈 프로세스 수립하기
    • 결국은 코드에 대한 것이다
  3. 모든 배에는 선장이 필요하다
    • 공백에 대한 본질적인 혐오감
    • @비난받는 관리자
      • 리더‘는 새로운 ‘관리자‘이다

        전통적인 관리자들은 일을 어떻게 할 것인지를 고민하는 반면, 리더는 무엇을 할 것이지를 고민한다. 그리고 그 일을 해낼 방법을 찾기 위해 그들의 팀을 신뢰한다.

      • 유일하게 무서운 것은… 글쎄, 모든것
    • 헌신적인 리더

      관리자의 가장 중요한 역할이 가정의 건강과 행복을 추가하는 집사처럼 팀에 봉사하는 것이며, 우리가 ‘헌신적인 리더십‘이라고 부르는 덕목을 적극 수용하는 것이다. 헌신적인 리더로서 당신은 겸손과 존중, 그리고 신뢰가 공존하는 분위기 형성에 주력해야 한다. 이는 엔지니어 스스로는 버릴 수 없는 관료주의적 장애물을 제거하고, 팀이 합의를 이끌어 내는 데 도움을 주거나, 심지어는 늦은 시간까지 일하는 팀을 위해 저녁을 사는 것을의미할 수도 있다. 헌신적인 리더는 팀의 균열을 방지할 뿐 아니라 필요한 때 조언을 하기도 하지만, 자신의 손을 더럽히는 것을 두려워하지도 않는다. 헌신적인 리더가 수행하는 유일한 관리한 팀의 기술적, 사회적 건전함을 관리하는 것이다.

    • 안티패턴
      • 안티패턴: 무능력한 구성원의 고용
      • 안티패턴: 저성과자들에 대한 무시
      • 안티패턴: 사람사이의 이슈에 대한 무시
      • 안티패턴: 모든 이들의 친구되기
      • 안티패턴: 고용 기준과 타협하기
      • 안티패턴: 팀을 아이 취급하기
    • 리더십 패턴
      • 자존심을 버려라
      • 선사가 되어라

        당신에게 조언을 구하는 엔지니어는 당신이 그의 문제를 해결해 주는 것을 원하는 게 아니라 그가 문제를 해결할 수 있도록 도와주기를 원하는 것이며, 그가 원하는 도움을 주는 가장 쉬운 방법은 그에게 질문을 하는 것이다.

      • 촉매가 되어라
      • 스승이자 멘토가 되어라
      • 명확한 목표를 설정하라
      • 정직하라
      • 행복을 관찰하라
      • 그 외의 팁과 요령

        최고의 엔지니어들을 (그들의 바람과는 반대로) 관리자 역할로 밀어 넣는 회사들을 볼 때마다 우리 필자들은 항상 놀라곤 한다. 대부분은 그 결과로, 팀은 유능한 엔지니어를 잃는 대신에 수준 이하의 관리자를 얻게 된다.

        새로운 물결을 일으킬 때를 알아야 한다.

        기다린다는 것은 프로세스에 필연적으로 발생할 엄청난 피해를 잠시 연기시키는 것 빡에 되지 않는다. 따라서 행동해야 하며, 그것도 빨리 행동해야 한다.

    • 사람은 식물과 같다

      서로 다른 엔지니어를 키우기 위해서는 서로 다른 것들이 필요하다.

      • 내적 동기부여와 외적 동기부여
    • 최종 의견
  4. 유해한 사람들과 협업하기
    • ‘유해함’의 정의
    • 팀 강화하기
    • 위협 감지하기
      • 다른 사람의 시간을 존중하지 않기
      • 자존심
      • 과도한 특권의식
      • 어수룩한 또는 혼란스러운 커뮤니케이션
      • 피해망상
      • 완벽주의
    • 유해함 무찌르기
      • 완벽주의자의 에너지를 다른 곳으로 돌리기
      • 에너지를 좀먹는 녀석들한테는 먹이를 주면 안된다
      • 너무 감성적이 되지 말 것
      • 분노 속에 담긴 진실을 주목하라
      • 친절함으로 괴물들을 물리쳐라
      • 포기할 때를 알아야 한다
      • 멀리 내다보라
    • 최종 의견

      어리석음으로 충분히 설명될 수 있는 일을 악의의 탓으로 돌리지 마라 – Robert J. Hanlon

  5. 조직 관리 기술
    • 장점과 단점, 그리고 전략
    • 이상: 팀이 회사 내에서 어떤 기능을 해야 하는가?
      • 이상적인 관리자와 함께하는 삶

        만일 당신의 관리자가 HRT 원칙을 이해하는 헌신적인 리더이며 당신의 성공을 돕는 것에 관심이 있는 사람이라면 몇 가지 간단한 일을 통해 당신의 관리자가 자신의 역할을 쉽게 수행할 수 있도록 도울 수 있으며, 그 덕분에 당신 자신이 더욱 생산적이고 가치있는 팀 구성원이 될 수 있다. 일을 처리할 때 더 많은 책임감을 갖자. 위험을 감수하고 실패를 두려워하지 말자. 성인으로서 행동하자. 당신이 확신하지 못하는 일에 대해서는 질문을 하자.

    • 현실: 당신의 주변 상황이 당신의 성공에 방해가 될 때

      행복한 가정은 대부분 비슷하다. 모든 불행한 가정은 각자 나름대로 불행하다. – Leo Tolstoy, Anna Karenina

      • 좋지 않은 관리자와 함께하는 삶
      • 조직 내에서 정치를 일삼는 사람들
      • 좋지 않은 조직
    • 조직 관리하기
      • 권한보다는 용서를 구하는 것이 쉽다
      • 길을 얻을 수 없다면 길을 만들자
      • 관리 역량 향상을 위해 학습하자
      • 행운과 호의의 경제학
      • 안전한 위치까지 승진하기
      • 힘 있는 친구를 찾을 것
      • 바쁜 임원에게 부탁할 때는 메일을 사용하자
    • 두 번째 계획: 퇴사하기
      • 옳은 일을 하고 해고될 때를 기다리자
    • 전혀 희망이 없는 것은 아니다
  6. 사용자도 사람이다
    • 대중적 인지도 관리하기
      • 첫 인상에 주목하라
      • 적게 약속하고 더 많이 주자
      • 업계의 분석가들을 존중하며 일하자
      • 당신의 소프트웨어의 사용성은 어느 정도인가?
      • 대상을 선택하라
      • 진입 장벽에 대해 고민하자
      • 사용자가 아니라 사용성을 측정하자
      • 속도의 문제
      • 모든 것을 제공하려고 하지 말자
      • 게을러지지 말자
      • 복잡함을 숨기자
    • 사용자와의 관계 관리하기

      사용자들은 무엇보다도 자신들의 말을 들어주기를 원한다

      • 잘난 체하지 말자
      • 인내심을 갖자
      • 신뢰와 즐거움을 만들자
      • 사용자를 기억하자

        마케팅: 사람들이 당신의 소프트웨어를 어떻게 인식하고 있는지 알고 있으며, 사람들이 인지할 수 있도록 개입 여부를 결정한다.

        사용성: 소프트웨어는 사용하기 쉽고, 빠르고, 친숙하며, 접근이 쉬워야 한다. 그렇지못하면 사용자들은 떠나게 될 것이다.

        고객 서비스: 장기 고객들과의 적극적인 교류는 소프트웨어의 혁신과 사용자 확보에 영향을 끼친다.

[정보] 소프트웨어, 잉여와 공포 – 박상민

웹 서핑중 좋은 글을 발견하여 소개한다.

소프트웨어, 잉여와 공포         by 박상민

글 중에 인상적인 구절을 옮기면,

잉여와 해커 정신이 실리콘밸리의 근본이라면, 한국의 근본 정서는 무엇일까 생각해 본다. 나는 “공포(fear)” 라고 생각한다. 공부를 못하면 루저가 된다는 공포, 숙제를 안해가면 맞을거라는 공포, 소프트웨어때문에 삼성이 무너진다는 공포, 6/25 시절로 다시 돌아갈지도 모른다는 공포.

우리는 개인, 집단 모두 공포에서 벗어나려 치열하게 살고있다. 뛰어난 해킹 잠재력을 가진 얼마나 많은 사람들이 공무원과 교사 시험을 준비하고 있을까? 이건희 회장이 주기적으로 이야기하는 “삼성 최대의 위기”는 정말 언제로 오는 걸까? (SW는 정말로 위기라고 생각한다). 한국형 안드로이드라는 “성스로운 똥” 아이디어를 낸 공무원들은 한국 SW의 미래가 얼마나 두려웠을까?

결론적으로 공포가 지배하는 문화에서 잉여와 해커의 정신은 살아 날 수가 없다. 최근 얼마나 많은 수의 한국 해커들이 국제 오픈소스 프로젝트 (예: Apache) 에 참여하고 있는가 세어본적이 있다. 정말 몇안되는 사람들 뿐이었다.

생각해보면 나도 그런 것 같다, 공포라는 것에 사로잡힌…

과연 우리 사회에서 ‘잉여’라는 게 얼마나 존재할 수 있는지 궁금하다.


아래는 댓글중 발췌하였다.

리누스 토발즈가 한 이야긴데, survivalsocial orderentertainment 자기는 이렇게 세 단계에 사람이 머물러 있다고 생각하고, 오픈소스 운동은 entertainment 에 속하는 사람들이 한다더라고요…

우리나란 social order 상태에 머물러 있는것 같은데, 보수언론은 공포를 자극해서 자꾸 survival쪽으로 끌어내리려 하는것 같습니다. 대기업들은 social order에 머물러 있게 하고요. 사실, 경제적 여건은 entertainment 쪽으로 이동을 해도 될만큼 잘 사는것 같거든요..

말씀하신대로 미국도 예전에 survival을 너무 강조하다보니 오히려 그 반작용(히피 문화라던가요) 에 의해 entertainment 으로 이동한것 아닌가 싶기도 하고요. 암튼 이런것도 공부해 보면 재밌을것 같습니다.

아래는 같이 읽으면 좋은 글들…

개발 프로세스 관리를 위한 Redmine 설치 및 사용

이번에 우리팀에서 이슈트래커가 필요하게 되어 겸사겸사 Redmine을 설치하게 되었다.

처음에는 trac을 알아보고 설치라려 했으나 Redmine이 사용이 더 편리해보여 Redmine을 설치하였다.

설치는 Redmine에 필요한 Apache, mySQL, Redmine, 등을 각각 설치하는 것 보다는 Bitnami의 Stack을 이용하는 것이 편리해보여 Bitnami의 Redmne Stack을 설치하였다.

그런데 이미 SVN을 사용하고 있기 때문에 Bitnami Redmine Stack을 설치했다가 기존의 SVN과의 연동이 되지 않을까 걱정을 하였지만, 다행히 쉽게 연동이 되었다.

이제 그 설치 순서를 정리해본다.

먼저 설치 환경은 Windows Server 2008 R2를 사용하고 있고, 이미 VisualSVN이 설치되어 사용중에 있다.

1. Bitnami Redmine Stack 설치

먼저 다음 url에서 Bitnami Redmine Stack을 내려 받는다.

http://bitnami.com/stack/redmine

페이지에 보면 설치본도 있지만 vmware와 같은 가상머신에 설치할 수 있는 이미지도 있다. vmware나 virtual box와 같은 가상화 솔루션을 사용하고 있다면 편리하게 설치를 완료할 수 있다. 나는 설치본을 내려 받았다.

다운을 받다 보면 로그인하고 받으면 나중에 더 편리하다고 하지만, 사이트에 계정을 만들기 귀찮은 사람은 ‘No thanks, just take me to the download’을 선택해 그냥 다운 받을 수 있다.

(2014년8월1일 현재 bitnami-redmine-2.5.1-2-windows-installer.exe 버전을 받을 수 있다)

Bitnami Redmine Stack 설치는 말 그대로 ‘다음’, ‘다음’만 누르면 설치가 끝난다. 모두 Apache Web Server, MySQL, SVN, Redmine, 등을 설치하게 된다.

모두 설치하는데에는 약간 시간이 걸린다.

2. Redmine 설정

설치가 모두 끝난 후, ‘모든 프로그램>Bitnami Redmine Stack>redmine manager tool’을 실행시키면 다음과 같은 화면이 나타난다.

이미 MySQL Database, Apache Web Server, Subversion Server, Thin_redmine, Thin_redmine2가 실행이 되어 있을 것이다.

설치시 모든 옵션을 기본으로 설정하였다면 ‘http://localhost/redmine’으로 접속한다.

초기화면이 뜨고 설치시 설정했던 관리자 계정의 아이디와 패스워드로 접속해서 다음과 같은 화면이 뜨면 성공적으로 설치가 된 것이다.

3. 기존의 VisualSVN과 연동

기본 형상관리로 기존에 사용하던 VisualSVN을 연동하는 방법도 있을 것 같다. 하지만 나는 그냥 새로 생성되는 프로젝트나 이슈를 기존의 VisualSVN으로 연동하는 방법을 썼다.

새로 생성한 프로젝트를 선택한뒤, ‘설정’에서 ‘Repositories’를 선택한다.

왼쪽 아래의 ‘New repository’를 누르면 다음과 같은 화면이 나온다.

‘SCM’ 항목은 ‘Subversion’을 선택하고,

‘Identifier’ 항목에는 형상을 나타낼 수 있는 이름을 적는다.

‘URL’ 항목에 기존에 사용하던 VisualSVN의 연결하고 싶은 url을 기입한다. (예: http://192.168.0.10/svn/IS-Package/HUM/trunk)

‘Login’ 항목에는 VisualSVN에서 사용하는 아이디를,

‘Password’ 항목에는 VisualSVN에서 사용하는 암호를 넣고 ‘Create’ 버튼을 누르면 완료~!

프로젝트의 ‘Repositories’ 항목을 선택하면 다음과 비슷한 화면이 나오게 될 것이다.

4. SVN의 Comment와 Redmine의 이슈 상태 연동

이렇게만 설정하고 사용하게되면 개발자들이 이슈를 처리할 때, 개발한 소스를 SVN에 이런저런 Comment와 같이 올리고나서, 다시 Redmine에 접속해서 이슈의 상태를 변동해야 할 것이다. 이런 번거로움이 개발자들이 Redmine을 기피하게하는 요인이 된다고 한다.

다행히도 Redmine에는 SVN의 Comment의 내용과 연동해서, Comment의 미리 정해진 키워드를 인식해서 상태를 변동시키는 기능이 있다.

‘Administration’ 메뉴에서 ‘Settings’를 선택하고, ‘Repositories’ 탭을 선택하면 다음과 같은 화면이 나온다.

이 화면의 ‘Referencing and fixing issues in commit messages’ 항목들이 연동을 가능하게 해주는 설정이다.

화면 아래의 테이블 항목에서 ‘Tracker’ 항목에는 원하는 이슈 타입을 선택하고, ‘Fixing keywords’ 항목에 사용하고 싶은 키워드들을 입력한다. 여러 개의 키워드들을 입력할 때는 쉼표’,’를 넣고 이어 써주면 된다. ‘Applied status’ 항목에 해당하는 상태 값을 선택하고, ‘% Done’ 항목에서 해당하는 진행 퍼센티지 값을 선택하면 된다. 나는 키워드로 ‘fixed,closed,end’를 입력하였고, 세 키워드들에 대해 상태는 ‘Closed’, 퍼센티지는 ‘100%’를 선택하였다.

‘Save’ 버튼을 눌러 저장한 후, 실제 소스를 약간 수정하여 Commit를 해보았다. Comment에 기존에 쓰던 형식 아래에 다음과 같이 입력하였다. #다음에는 해당 이슈의 번호를 적는다.

CONDUCTOR:

    redmine integration test

    end #2

Commit를 하고 Redmine에서 살펴보니 바로 적용되지는 않았다. 하지만 프로젝트의 ‘Repositories’ 탭을 선택하고 다시 살펴보니 적용이 되어 이슈가 ‘Closed’ 상태로 변경이 되어 있었다. 키워드의 위치는 comment의 처음, 중간, 마지막 어디에 적어도 상관이 없었다.

실제 설치하고 나서 살짝 사용해 보니 설치보다 어떻게 사용하는가가 더 중요할 것 같다. 예로 프로젝트는 어떤 식으로 생성해 관리를 하고, 각 프로젝트에 이슈(일감)는 어떤식으로 생성해 할당, 관리를 할 것인가…그리고 사용하는 팀원들이 적절하게 사용할 수 있도록 쓰는 사람들에게 알맞게 적용하는 것이 큰 관건이 될 것 같다.

 

팁1: Redmine 스킨 바꾸는 법

Redmine에는 기본적으로 스킨이 3개정도 들어가 있는데 너무 밋밋하다 싶으면 다음과 같이 스킨을 바꿀 수 있다.

1.다음 URL로 들어가 스킨을 고른다.

redmine theme list 에 들어가 맘에 드는 스킨을 고른다. 화면캡처가 있는 것도 있으니까 확인해 볼 수도 있다. 보통 최신 리스트의 것들이 아무래도 최근 유행하는 것들이다. 스킨을 선택해 스킨을 내려 받는다.

2. 스킨을 설치한다.

설치라고 별거 없다. 받은 파일들을 redmine 설치된 곳 아래에 있는 ‘public/themes’ 폴더에 폴더째로 복사해 넣는다.

3. redmine을 재시작 한다

redmine을 재시작하지 않으면 새로 설치한 스킨을 인식하지 못한다. 가볍게 redmine을 재시작 시킨다.

4. 새로 설치한 스킨을 선택한다

Administration 메뉴의 Settings 메뉴에서 ‘Display’ 항목을 고르면 스킨을 선택할 수 있다. 리스트박스를 선택하면 새로 설치한 스킨이 보일 것이다. 선택하고 ‘Save’ 버튼을 누르면 끝~!

 

설치시 도움이 된 문서들:

http://bitnami.com/stack/redmine – Bitnami Redmine Stack 페이지

http://opentutorials.org/course/438/2397 – 생활코딩 사이트의 redmine 소개 및 사용방법

http://blog.naver.com/PostView.nhn?blogId=jadin1&logNo=70120494742 – redmine과 svn의 연동

http://blog.jidolstar.com/552 – MS윈도우에 Subversion 서버 설치하기 – Http환경으로 만들기