BLOG ARTICLE 버그 | 2 ARTICLE FOUND

  1. 2009.03.18 스모킹 카운터 1.2 버그
  2. 2009.01.07 버그추적 시스템 Mantis 설치 (6)

저번 주에 1.2 버젼을 올렸습니다. 통계에 섬머타임이 적용된 버그등을 수정하고 캐릭터 에니메이션을 추가하고 디자인을 조금 변경하였습니다.

어제 1.2 버젼이 리뷰를 끝내고 배포가 되었습니다. 그런데 어플 업로드시 공식 사이트로 등록해 놓은 블로그에 아이팟 터치 1세대 사용자께서 어플리케이션이 멈춘다는 글을 보았습니다. 혹시나 해서 앱스토어를 가보니 업그레이드 후 튕긴다는 리뷰를 보았습니다. 일단 더 이상 다운로드되는 것을 막기위해 스토어에서 내렸습니다.

제가 파악한 범위에서는 1세대 사용자에게서 문제가 발생하는데, 제가 1세대가 없고 늦은 시간이였기 때문에, 1세대를 가지고 있는 지인에게 연락하여 다음날 가져와 달라고 요청했습니다. 원인은 늘 그렇듯이 어처구니 없는 실수였습니다.

sqlite3_finalize(statement);
sqlite3_finalize(statement);

디버깅 하다보니 위와 같은 코드가 있더군요. 아마 복사를 하다 필요없는 sqlite3_finalize까지 같이 가지고 왔나 봅니다. 이 치명적인 오류는 해킹된 아이팟 1세대만 튕기고 나머지 시뮬레이터나 2세대에서는 견딘 것 같습니다.

두번째 어플리케이션이 멈추는 듯한 문제는 지나치게 느려진 속도에 있었습니다. 메인화면은 2개의 View로 나누어 놓았습니다. 상단은 에니메이션이 필요하고 추후에 다양한 에니메이션을 보여 주기위해 Open GL ES를 사용하기 위함이고, 하단의 수량, 시간등을 보여 주는 부분은 매 프레임 마다 에니메이션이 필요 없기 때문이었습니다. 그런데 이번에 업글을 하면서 하단의 뷰도 매 프레임 실행되도록 변경했습니다. 제 2세대에서는 아무 차이가 없었기 때문이었습니다. 하지만 1세대에서는 속도에 심각한 문제가 발생했습니다. 아마 애플도 리뷰시 2시대만 사용하는 것 같습니다.

현재는 이미지 출력시에 가장 간단한 방법인 drawAtPoint를 사용하고 있었습니다. 애니메이션이 더 추가되고 GL로 가기전에 그나마 퍼포먼스가 조금 나은 CGContextDrawImage로 교체할려고 합니다.

아무튼 오류를 고치고 그날 핀 수량을 뱃지로 보여주는 부분을 추가하여 다시 올렸습니다. 아마 다음주 초쯤 올라갈 것 같네요. 사용하고 계신분들께는 너무 죄송합니다.

맨티스 1.1.1 버젼을 사용하다가 이번에 1.1.6 버젼으로 업그레이드를 했습니다. ChangeLog를 살펴보니 1년동안 업그레이드를 착실히 해온 것 같습니다. 새로운 버젼을 설치 하면서 과정과 사용법을 간단히 정리해 보았습니다.

맨티스 설치사양은 아래와 같습니다.

  • MySQL 4.1.1 이상
  • PHP 4.3.0 이상
  • 아파치, IIS등의 웹서버

1. 다운로드 및 설치
1) 다운로드
맨티스 다운로드 페이지나 혹은 프롬프트 상태에서 아래와 같이 맨티스 설치 파일을 다운로드 받은 후에 압축을 풉니다.
 
> wget http://downloads.sourceforge.net/mantisbt/mantisbt-1.1.6.tar.gz?modtime=1228833846&big_mirror=0
> tar xvzf mantisbt-1.1.6.tar.gz

2) 링크
mantis로 접근하기 위해 압축이 풀린 디렉토리에 심볼릭링크를 걸어줍니다.

> ln -s ./mantisbt-1.1.6 mantis

3) 설치
웹브라우져에서 http://[YOUR-DOMAIN]/mantis/admin/install.php를 실행하여 설치를 시작합니다. 먼저 아래와 같은 첫화면에서 DB 접속정보를 입력합니다.


MySQL 관리자 권한이 있는 계정을 'Admin Username'과 'Admin Password' 필드에 입력하시면 설정한대로 Database와 계정을 생성합니다. 입력을 완료한 후에 'Install/Upgrade Database' 버튼을 클릭합니다.

다음단계에서는 'Write Configuration File(s)'에 오류가 발생합니다. 이는 mantis 루트에 config_inc.php 파일을 생성할 권한이 없어서 입니다. 아래의 작업으로 해결할 수 있습니다.

4) config_inc.php 설정
기존 샘플 파일(config_inc.php.sample)을 아래와 같이 복사합니다.

> mv config_inc.php.sample ./config_inc.php

config_inc.php 파일을 열어 오류메시지에 있는 내용대로 아래와 같이 DB를 설정합니다.
$g_hostname = 'localhost';
$g_db_type = 'mysql';
$g_database_name = 'bugtracker';
$g_db_username = '[USER-NAME]';
$g_db_password = '[USER-PASSWORD]';

기본 메일계정을 설정합니다.
# --- email variables -------------
$g_administrator_email  = 'admin@YOUR-DOMAIN';
$g_webmaster_email      = 'admin@YOUR-DOMAIN';

# the "From: " field in emails
$g_from_email           = 'noreply@YOUR-DOMAIN';

# the return address for bounced mail
$g_return_path_email    = 'admin@YOUR-DOMAIN';

기본으로 한글사용을 위해 아래와 같이 추가합니다.
$g_default_language = "korean";

* admin 디렉토리 삭제
마지막으로 ./admin 디렉토리를 삭제합니다. admin 디렉토리는 초기설치와 관련된 파일들이 위치해 있어 설치후에는 필요가 없이 권한없이 접근할 수 있기 때문에 삭제합니다. 삭제하지 않으면 로그인 화면에서 오류가 표시됩니다.

> rm -dfr ./admin/

5) 로그인
웹브라우져에서 http://YOUR-DOMAIN/mantis 로 들어 갑니다. 아래와 같이 맨티스 사이트가 나오면 오류없이 설치된 것 입니다.

관리자 아이디인 'administrator'와 초기 기본 패스워드인 'root'를 입력하고 로그인 합니다. 관리자 패스워드는 계정관리로 들어가 반드시 변경해야 합니다.

2. 사용자 계정
'관리/사용자 관리' 메뉴로 들어가 '계정생성' 버튼을 클릭하여 사용자를 추가합니다. 계정 생성후에 상세한 옵션이나 권한을 설정할 수 있습니다.


이메일로 계정등록이 발송되기 때문에 이메일 주소를 정확히 입력하셔야 합니다. 테스트를 하여보니 제 서버에서는 이메일이 발송 되지 않았습니다. 

* 이메일 발송 오류
맨티스 루트디렉토리에 있는 config_defaults_inc.php에서 아래의 g_phpMailer_method를 0으로설정되어 있던 것을 아래와 같이 1로 변경하였더니 이메일이 정상적으로 발송되었습니다.

# select the method to mail by:
# 0 - mail()
# 1 - sendmail
# 2 - SMTP
$g_phpMailer_method     = 1;
 
같은서버에 있던 이전 버젼은 0으로 mail()을 사용해도 발송되었는데 이번 버젼에 문제가 있는 것인지 다른 문제가 있는 것인지 모르겠습니다. 저는 0일 경우에는 발송이 안되고 1과 2일 경우에는 발송이 되었습니다.

3. 프로젝트
1) 프로젝트 생성
'관리/프로젝트 관리' 메뉴로 들어가 새로운 프로젝트를 생성합니다. 역시 등록 후에 아래와 같은 상세한 설정을 할 수 있습니다.


2) 서브 프로젝트
연관된 서브프로젝트를 생성하고 관리할 수 있습니다.

3) 버젼
버젼을 등록하고 관리합니다.

3) 분류
이슈등록시 지정할 분류를 관리합니다.

4) 사용자
프로젝트에 관련된 사용자를 추가하고 권한을 설정할 수 있습니다.


4. 이슈 등록 및 확인
1) 사용자 등록
사용자 계정(testID)로 로그인하여 '이슈보고하기' 메뉴를 클릭합니다. 해당 프로젝트를 선택하고 버튼을 클릭하여 필드를 입력하고 등록합니다.


아래는 등록된 이슈목록입니다.

2) 관리자 확인
다시 관리자로 로그인 하면 메인화면에서 새로운 이벤트를 확인할 수 있습니다. 할당되지 않은 이슈에는 담당자를 할당하거나 바로 처리할 수 있습니다.


5. 기타
1) 위키
위키설정은 사실 큰 의미는 없습니다. config_default_inc.php파일에서 g_wiki_enable 속성을 ON으로 하면 메뉴에서 wiki의 링크가 추가됩니다.

#####################
# Wiki Integration
#####################
 
 # Wiki Integration Enabled?
 $g_wiki_enable = ON;

 # Wiki Engine (supported engines: 'dokuwiki', 'mediawiki', 'xwiki')
 $g_wiki_engine = 'dokuwiki';

 # Wiki namespace to be used as root for all pages relating to this mantis installation.
 $g_wiki_root_namespace = 'mantis';

 # URL under which the wiki engine is hosted.  Must be on the same server.
 $g_wiki_engine_url = $t_protocol . '://' . $t_host . '/%wiki_engine%/';

2) 사용자화
웹에서 관리 메뉴와 config_default_inc.php 파일을 변경하여 용도에 맞게 변경할 수 있습니다.

* 커스텀 필드 등록
아래와 같이 사용자 필드를 등록할 수 있습니다. 이외에 권한등 다양한 옵션이 있습니다.

등록된 필드를 프로젝트에 링크하며 해당 프로젝트의 이슈 등록시 사용자 등록필드가 출력됩니다.

* 디자인 변경
core 디렉토리의 html_api.php의 함수들을 수정하여 페이지마다 공통적인 top, bottom과 그외 다른 디자인을 변경할 수 있습니다.

이외에도 공지사항, 문서관리등과 함께 편리하게 이용할 수 있는 기능들이 많이 있습니다. 장단점이 있지만 개인적으로는 Trac보다는 Mantis가 편한 것 같습니다.