'5. Documentation'에 해당되는 글 10건

  1. 2011.08.17 [Java] CheckStyle and eclipse-cs
  2. 2011.07.18 Microsoft StyleCop
  3. 2011.03.07 wikimatrix - 용도에 맞는 wiki 를 찾아주는 사이트
  4. 2011.03.07 [MoinMoin] Windows XP, Apache 환경에서 파일 업로드 문제
  5. 2011.02.22 우분투 MoinMoin Wiki 설치
  6. 2010.12.08 Code Conventions for the JavaServer PagesTM Version 1.x Language
  7. 2010.12.08 Natural Docs - JavaScript 문서화 지원
  8. 2010.01.06 CHM 파일 병합하기 (Merge chm files)
  9. 2009.07.13 Doxygen v1.5.9 에서 한글 깨짐 수정
  10. 2008.06.15 Doxygen 주석 활용 [VC++ 스타일]
2011. 8. 17. 03:46

[Java] CheckStyle and eclipse-cs

Java 용 Coding Convention 체크 도구입니다. 이클립스 add-on 으로 제공되며 사용할만한 가치가 있습니다.

http://eclipse-cs.sourceforge.net/
http://checkstyle.sourceforge.net/ 

를 참고하시면 되며,

http://eclipse-cs.sourceforge.net/downloads.html

에 설치 방법 또한 자세하게 나옵니다. 

설치 후에, 아래 페이지를 참고하여 프로젝트에 CheckStyle 을 적용해 봅시다.

http://eclipse-cs.sourceforge.net/basic_setup_project.html



여러 명이서 코드 작업할 때, 일관성을 유지하면서 가독성을 높이기 위해서는 옵션이 아닌 필수적인 선택입니다.

 
2011. 7. 18. 21:20

Microsoft StyleCop

C# 으로 개발할 때 코딩 컨벤션을 체크해 주는 무료 도구입니다. 주석 및 스타일등을 강제화할 수 있어 여러명이 동시에 작업하는 소스의 경우 일관성을 유지할 수 있어 굉장히 유용합니다.

저의 경우는 Visual Studio 2008 에 적용하여 사용하고 있는데, 무척이나 만족스럽습니다.
몇가지 맘에 들지 않거나 너무 불편한 것들이 있으면 이를 예외로 설정할 수도 있습니다. 또, Custom Rule 도 정의할 수 있는 것 같습니다 (코딩을 해야 하는 것 같아 깊게 살펴보지는 않았습니다).  

적용한 방식은 다음과 같습니다.

하나의 솔루션에 여러개 (약 8~9개)의 C# 프로젝트가 있었습니다. 모든 프로젝트에 적용하면 고치는 양이 너무 많을 것 같아 프로젝트 하나씩 적용하였습니다. 
또한 외부에서 가져온 소스 역시 스타일에 예외토록 하였습니다. 그리고 Global 하게 적용될 수 있는 설정을 만들고 이를 각 프로젝트에 merge 하여 동시에 적용되도록 하였습니다. 
이렇게 하기 위해 솔루션 밑에 StyleCop 설정 파일을 두고, 이를 각 프로젝트 밑의 StyleCop 설정파일과 merge 되도록 하였습니다. 그리고 빌드 시 Style 이 일치하지 않으면 경고가 아닌 에러를 일으키도록 하여 무조건 수정을 하도록 강제하였습니다. 

StyleCop 과 관련된 설치법과 설치에 대한 자세한 내용은 아래 링크를 참고하시기 바랍니다.

StyleCop 공식 페이지
http://stylecop.codeplex.com/
글로벌 세팅 파일 만들기
http://code-inside.de/blog-in/2010/12/19/howto-apply-stylecop-settings-on-several-projects/
파일 예외처리하기
http://blogs.msdn.com/b/sourceanalysis/archive/2008/11/11/introducing-stylecop-on-legacy-projects.aspx
2011. 3. 7. 22:42

wikimatrix - 용도에 맞는 wiki 를 찾아주는 사이트

세상엔 수많은 wiki 가 있습니다. 어떤 wiki 를 선택해야 할지 모를 때 자신의 용도에 맞는 wiki 를 찾아주는 사이트를 소개합니다. Wiki Choice Wizard 를 사용하여 최적의 wiki 를 선택할 수 있도록 도와줍니다.

아래 링크를 참고하세요.

2011. 3. 7. 22:37

[MoinMoin] Windows XP, Apache 환경에서 파일 업로드 문제

회사에서 프로젝트 정보 공유 및 관리를 위해 MoinMoin 을 설치하였습니다.

Windows XP Professional 이라서 IIS 에 돌리려고 했으나 어떤 설정이 맞지 않는지 페이지가 제대로 나오지 않았습니다. 그래서 어쩔수 없이 Apache 에다가 MoinMoin 을 설치하였습니다. 

설치 방법은 아래 링크를 참고하였습니다.


설치한 MoinMoin 버전은 1.9.3 이었는데 두가지 문제가 나타났습니다.

첫째는, 페이지명이 한글인 경우 URL Encoding 이 잘못되어 제대로 표시되지 않았습니다. 

예로, http://localhost/mywiki/대문

이라고 입력하면, 대문페이지가 제대로 보이긴 하는데 메인 타이틀에 보이는 '대문'글자가 깨져 버렸습니다. 이 깨진 문자를 클릭하면 잘못된 URL 로 이동하였구요.

이건 아무리 자료를 찾아도 해답을 찾지 못해 결국 영문 URL 만 사용하기로 하였습니다. 

두번째는, 파일 첨부가 제대로 동작하지 않는 것이었습니다. 이 문제는 아래 링크를 참고하여 해결하였습니다.


MoinMoin/web/request.py 의 init 함수를 다음과 같이 수정합니다.

먼저 필요한 라이브러리를 임포트합니다.
import sys
import os
그리고 나서 __init__ 함수를 아래와 같이 수정합니다.
    def __init__(self, environ, populate_request=True, shallow=False):
        try:

            if sys.platform == "win32":
                import msvcrt
                msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
                msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

            ResponseBase.__init__(self)
            RequestBase.__init__(self, environ, populate_request, shallow)
            self.href = Href(self.script_root or '/', self.charset)
            self.abs_href = Href(self.url_root, self.charset)
            self.headers = Headers([('Content-Type', 'text/html')])
            self.response = []
            self.status_code = 200

        except Exception, err:
            self.fail(err)

이렇게 수정한 후 apache 를 재시작하면 파일 첨부가 제대로 동작합니다. 한글 명을 가진 파일 첨부시에는 문제가 있을 수 있으니 그건 또다른 방법이 필요합니다.


2011. 2. 22. 21:08

우분투 MoinMoin Wiki 설치

Project 의 정보 공유 및 문서화를 우분투 서버에 MoinMoin 위키를 설치하였습니다. 

다행히 우분투 웹페이지에 자세한 설치법이 소개되어 있었습니다. 아래 링크를 참고하시면 됩니다.


이젠 사용법을 익혀야 하는데 이건 차차 익숙해 지겠죠.

모인모인 홈페이지는 다음과 같습니다.

2010. 12. 8. 03:40

Code Conventions for the JavaServer PagesTM Version 1.x Language

JSP 코딩 컨벤션 관련 번역 글입니다. 

2010. 12. 8. 03:10

Natural Docs - JavaScript 문서화 지원

Doxygen 과 유사한 JavaScript 문서화를 지원하는 도구입니다.

2010. 1. 6. 06:46

CHM 파일 병합하기 (Merge chm files)

chm 파일을 여러개 병합한다. 이진적인 병합이 아닌 논리적인 병합이 된다.

A, B 두개의 파일을 A 에다가 Merge 하면 A 에서 B 의 내용을 볼 수 있다. 인덱스도 검색가능하다. 단, B 가 지정된 경로에 존재해야 한다.

병합하는 방법은 아래와 같다.

* 부모 .chm 파일의 [MERGE FILES] 섹션에 자식 .chm 파일을 포함시키기

1. [OPTIONS] 더블 클릭
2. 클릭 Merge Files 탭
3. 클릭 Add

* 부모 .chm 파일 인덱스에 최소한 하나의 키워드가 있어야 자식 .chm 파일의 인덱스가 자동으로 포함된다.

* 부모 와 자식 인덱스 모두 binary 인덱스여야 한다.

1. [OPTIONS] 섹션 더클 클릭
2. Compiler 클릭
3. Create a binary index 체크 박스 선택

* .chm 파일명에 공백이나 점을 포함시키지 말 것

* 아래와 같은 Topic 이 추가되어야 한다.

INCLUDE: childchm.chm::\childchm.hhc

1. Contents 테이블에서 오른쪽 클릭
2. Insert File 클릭
3. .chm 파일명과 .hhc 파일 명 기입
4. 파일을 찾을 수 없다고 하더라도, 그냥 Yes 를 선택한다.

* 자식 .chm 파일과 부모 .chm 파일이 폴더 내에 있어야 한다.

Note : merge 연산은 대상 .chm 파일을 참조하는 링크를 생성할 뿐이다. 프로젝트에 링크 사본을 복사하지 않는다. 만일 자식 .chm 파일을 삭제한다면, 자식 .chm 파일의 인덱스와 키워드를 볼 수 없다.

* 알려진 버그로 인해, 컨텐츠 테이블이 병합되지만, 토픽이 올바르게 들여쓰기 되지 않는다.

예를 들어 아래처럼 보여야 할 목록이

 Mybook
       Chapter 1
       Chapter 2
       Chapter 3

아래 처럼 보여질 수 있다.

 Mybook
       Chapter 1
              Chapter 2
                     Chapter 3
                            Chapter 4

이 버그를 해결하기 위해서는, 메모장에서 부모 .hhc 파일을 변경해야 한다. 모든 부가적인 <UL> 과 </UL> 태그를 모두 삭제하고, .hhc 파일을 저장, 그리고 부모 .chm 파일을 재 컴파일 한다.

참고 : http://support.microsoft.com/kb/311151/en-us?fr=1

2009. 7. 13. 16:13

Doxygen v1.5.9 에서 한글 깨짐 수정

Doxygen v1.5.9 에서 한글이 깨지는 현상이 나타났다. 다음과 같이 하면 한글 깨짐을 고칠 수 있다.

Expert 탭에서,
Project 항목
DOXYFILE_ENCODING : EUC-KR
OUTPUT_LANGUAGE : Korean-en
Input 항목
INPUT_ENCODING : CP949

* KSC-5601 CharSet 은 UNX에서는 EUC-KR 이란 encoding으로 표현되고, 윈도우즈에서는 cp949란 encoding 으로 표현된다.

이렇게 옵션을 변경 후 다시 Generate 하면 한글이 정상적으로 출력된다. 만약 옵션 변경시 문제가 발생하면 출력창에 그 원인이 제공되므로 해당 에러 메시지를 확인후 문제점을 해결한다.

Doxygen 에서 인코딩은 libiconv (http://www.gnu.org/software/libiconv/) 를 사용하는데, 한글은
EUC-KR, CP949, ISO-2022-KR, JOHAB
등을 지원하는 걸 알 수 있는데, 적당한 인코딩을 선택하면서 에러를 없애 나가면 된다.

근데, 한글 문제는 그렇다 치고 IE에서 번짐 현상이 있다. 이건 IE 문제인 것 같다. Firefox 에서는 정상적으로 동작하니깐... 다행. 휴~


2008. 6. 15. 13:32

Doxygen 주석 활용 [VC++ 스타일]

//////////////////////////////////////////////////////////////////////////
/// @brief  Test Class for an example of doxygen usage
/// @remark  More Information
/// @author  Jihoon.Yim
/// @version V1.0
/// @date  3/21/2008
//////////////////////////////////////////////////////////////////////////
/// @note  I changed my mind.
/// @todo  I will have to think more complex design on this class.
class Test
{
 int Add(int i, int j);
 int Sum(int i, int j);
};

//////////////////////////////////////////////////////////////////////////
/// @brief  Add two parameters and then return the sum
/// @param  i Integer value
/// @param  j Integer value
/// @exception Throws an exception when error occurs.
/// @return  Return (i+j)
/// @retval  -1 Failed to add
/// @remark  More Information
///    - Item 1
///     -# Sub Item 1
///     -# Sub Item 2
///     .
///    - Item 2
///    .
/// @code
/// int i=3;
/// int j=3;
/// try
/// {
///  int result = Add(i, j);
/// }
/// catch
/// {
///  ...
/// }
/// @endcode
/// @author  Jihoon.Yim (A company)
/// @author  Gildong.Hong (B consulting company)
/// @date  3/21/2008
//////////////////////////////////////////////////////////////////////////
/// @bug  [Fixed 3/22/2008 Jihoon.Yim] That was not correct in some cases.
/// @bug  [Fixed 3/21/2008 Jihoon.Yim] I forgot some calculation. (Fixed 3/23/2008)
/// @warning Watch out when using this class.

int Test::Add(int i, int j)
{
 return (i+j);
}


//////////////////////////////////////////////////////////////////////////
/// @brief  Add two parameters and then return the sum
/// @param  i Integer value
/// @param  j Integer value
/// @return  Return (i+j)
/// @retval  -1 Failed to add
/// @author  Jihoon.Yim
/// @date  3/21/2008
//////////////////////////////////////////////////////////////////////////
int Test::Sum(int i, int j)
{
 return (i+j);
}