Background Image
나머지...
2019.09.30 23:29

Doxygen으로 소스코드 문서화 해보기

조회 수 2251 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

오픈소스 프로젝트를 이용해서 개발을 해보신 분들은 소스코드를 문서화한 레퍼런스 문서(또는 개발자 매뉴얼)을 참고해서 개발해 본 경험이 있을 것 같습니다. 개발자를 위한 이러한 문서는 기본적으로 프로젝트 빌드 방법, 주요 아키텍쳐 설명 등의 내용들을 담기도 하고 소스코드에서 정의한 변수나 구조체와 함수 같은 것들이 소스 파일을 직접 열어서 찾아보지 않아도 보기 좋게 정리하거나 변수나 함수 간의 관계를 정리해서 보여주기도 합니다.

다음과 같은 프로젝트의 문서를 예시로 참고해 볼 수 있겠네요.

공개 되어있는 코드를 한줄한줄 따라가보며 파악할 수도 있지만 프로젝트의 규모가 커지고, 코드의 복잡도가 증가할수록 개발자를 위한 문서는 중요해집니다. 왜냐하면 문서를 읽으면 소스코드를 훨씬 빠르게 파악할 수 있기 때문입니다. 이러한 문서 덕분에 다른 개발자가 조금 더 쉽게 내 프로젝트에 기여할 수 있게 된다면 내 프로젝트에 참여하고 기여해주는 사람들이 더 많아질 수 있는 좋은 선순환의 시작점이 될 수 있을 것입니다.

하지만 문서를 작성하는 것도 큰 비용입니다. 아무리 설계와 개발을 하면서 문서를 만들더라도 점점 덩치가 커지는 소스코드의 모든 변수와 함수를 문서화 하려고 한줄 두줄 옮겨 적어가는 것은 매우 비효율적이겠죠. 게다가 소스코드는 계속해서 바뀌기 때문에 최신화하는 비용도 만만치 않을것입니다.

 

그러면 조금 더 효율적으로 소스코드를 문서화 할 수 있는 방법은 무엇이 있을까요?

 

Doxygen - 소스코드 문서화 도구

소스코드를 문서화하기 위한 대표적인 도구로 Doxygen를 소개합니다. Doxygen은 코드를 기반으로 문서를 생성하여 작성되므로 비교적 최신 상태로 유지하기가 쉽습니다. 특히 문서와 코드를 상호 참조 할 수 있어 실제 코드를 쉽게 참조 할 수 있다는 장점이 있습니다.

아직 큐브리드에서는 공식적으로 소스코드 레퍼런스 메뉴얼을 지원하지는 않습니다. 공식 홈페이지에서 제공하는 유저 매뉴얼이 잘 설명되어 있긴 하지만, 오픈소스 프로젝트인 큐브리드의 소스코드를 읽어보고 기여해보고 싶은 개발자의 입장에서는 아쉬움이 큰 것이 사실입니다. 이 글에서 소개하는 도구를 시작으로, 이러한 문서를 만들어나가다보면 큐브리드 프로젝트에 무언가 기여해보고 싶어하는 개발자가 많아질 수 있을거라 기대합니다.

이제부터 큐브리드 소스코드를 기반으로 문서를 생성해보도록 하겠습니다.

다음 섹션부터 단계별로 진행할 명령어는 큐브리드의 빌드환경인 CentOS 7을 기준으로 작성하였습니다. 설치하는 도구는 다양한 운영체제를 지원하기 때문에 각 환경에 맞게 설치 후 명령어 도구로 진행하면 됩니다.

문서를 생성 할 코드 가져오기

큐브리드의 소스코드는 github 저장소에서 관리되고 있습니다. 경로는 다음과 같습니다.

다음의 git clone 명령어로 github의 큐브리드 소스코드를 복사해오는 명령어를 실행합니다. 꼭 git을 사용해서 코드를 가져올 필요 없이, 소스코드가 준비된 폴더 안에서 따라해보셔도 됩니다.

yum -y install git
git clone https://github.com/cubrid/cubrid
cd cubrid

 

Doxygen 설치하기

다음으로 Doxygen을 설치해보도록 하겠습니다. Doxygen에서 변수와 함수의 관계 그래프를 그리기 위해 graphviz라는 도구도 함께 설치합니다. 다른 운영체제의 경우 http://www.doxygen.nl/download.html를 참조하시면 됩니다.

yum -y install doxygen graphviz

 

Doxyfile 생성하고 설정하기

Doxyfile은 Doxygen으로 생성할 문서에 대한 설정 파일입니다. 다음 명령어로 Doxyfile을 생성할 수 있습니다.

doxygen -g my_conf 

 

이제 폴더 내에 my_conf라는 파일이 만들어진 것을 확인할 수 있습니다. my_conf 외에 다른 이름으로 지정하는 것도 가능합니다. 만들어진 파일 (my_conf)를 텍스트 에디터로 열어보면, 굉장히 복잡해 보이는 파일이 하나 생성된 것을 확인할 수 있습니다. 하지만 대부분 기본 값으로 채워져 있는 일종의 템플릿이고 주석에서 각 설정에 대해 자세히 설명되어 있는 것을 ㅂ 볼 수 있습니다. 따라서 모든 설정을 여기서 소개하긴 힘들어 몇 가지 주요한 설정을 소개하고 넘어가도록 하겠습니다.

 

이제부터 설명하는 설정을 한번 그대로 설정해보며 문서를 만들어보려고 합니다.

먼저 프로젝트 이름부터 설정해보겠습니다. 텍스트 에디터에서 PROJECT_NAME을 찾아 기본 값으로 "My Project"라고 설정되어 있는 부분을 원하는 이름을 입력합니다. 

저는 "CUBRID DOC"으로 입력해 보겠습니다.

PROJECT_NAME           = "CUBRID DOC"

 

다음으로 INPUT을 찾아 = 이후에 src/compat를 입력합니다. INPUT으로 입력할 파일 또는 폴더를 설정합니다. 큐브리드는 큰 프로젝트라 생성이 오래 걸리기 때문에 이 예제에서는 큐브리드의 src/compat 폴더 내의 소스 파일에 대해서만 생성하려고 합니다.

INPUT                  = src/compat

 

이제 어떻게 Doxyfile 문서를 수정하는지 조금씩 감이 오실 것 같습니다. 간단한 설명과 함께 계속 따라해보겠습니다.

# 입력하려는 파일의 확장자를 지정할 수 있습니다.
FILE_PATTERNS          = *.c \
                         *.cc \
                         *.cxx \
                         *.cpp \
                         *.c++ \
                         *.h \
                         *.hh \
                         *.hxx \
                         *.hpp \
                         *.h++

# 문서가 생성될 경로를 지정합니다.
OUTPUT_DIRECTORY       = build_doc

# HTML로 된 문서만을 생성합니다.
GENERATE_HTML          = YES
GENERATE_LATEX         = NO

# 소스코드의 모든 요소를 문서화 대상으로 합니다.
EXTRACT_ALL            = YES

 

이제는 소스코드로부터 다음의 그림과 같은 Caller 그래프를 그리기 위한 설정입니다.

caller_graph.PNG

CALLER_GRAPH는 어떤 함수를 호출하는 다른 함수에 대한 관계를 그려주는 그래프입니다. 이 설정 외에도 CALLER_GRAPH와 같은 섹션에 있는 다른 설정들을 이용해서 여러가지 그래프를 그려 볼 수 있습니다.

CALLER_GRAPH           = YES

 

위에서 설명한 설정 외에도 수 많은 설정이 있습니다. Doxyfile에서 모두 기본값으로 설정되어 있으니 나중에 자신의 프로젝트에 맞게 여러가지 설정을 바꾸어보며 테스트 해보시면 됩니다.

 

설정한 Doxyfile을 사용해서 소스코드 레퍼런스 문서 생성

이제 doxygen 명령으로 doxyfile에서 설정한대로 문서를 생성할 수 있습니다. 쉽게 다음 명령어로 생성해봅시다.

doxygen my_conf 

 

명령어를 입력하면 Parsing ...과 Generating .... 으로 시작하는 로그를 보실 수 있습니다. 문서 생성 과정이 끝나면 OUTPUT_DIRECTORY에서 입력한 build_doc 폴더내의 html를 들어가보면 index.html 파일이 있습니다. 이 파일을 열어보면 다음 그림과 같은 화면을 볼 수 있습니다.

cub_doxy.PNG

 

상단의 Classes을 눌러보면 소스코드에서 정의된 구조체 또는 클래스를 확인할 수 있습니다.

cub_struct.PNG

 

구조체의 이름을 눌러 들어가보면 (e.g. db_domain_info) 다른 구조체와의 관계 그래프도 표시하고 있는 것을 확인할 수 있습니다.

doxy_st.PNG

cub_domain.PNG

 

마찬가지로 상단의 Files 탭을 클릭하면 파일의 목록을 볼 수 있습니다.

cub_files.PNG

 

파일 이름을 클릭해보면 다음과 같은 그림을 볼 수 있습니다. 이 파일이 어떤 다른 헤더를 include 하는지 그려주기도 하고 어떤 변수와 함수를 정의하고 있는지 문서화하여 보여줍니다.

cub_doc.PNG

cub_fun.PNG

마무리

여기까지 Doxygen을 이용해서 큐브리드 소스코드의 레퍼런스 문서를 만들어보았습니다. 간단히 Doxygen에 대해 소개하기 위한 목적으로 작성했기 때문에 이 강력한 도구를 충분히 설명하기엔 부족합니다. 이 글에서 Doxygen가 가진 기능을 모두 다루어보지는 못하였지만, Doxygen 매뉴얼을 참고하여 조금만 사용해보면 여러분이 지금 수행하고 있는 프로젝트의 소스코드를 문서화할 때 하나의 좋은 옵션이 될 수 있을 것으로 기대합니다.

 

마무리를 하려니 무언가 찝찝함이 남습니다. 서론에서 "소스코드는 계속해서 바뀌기 때문에 최신화하는 비용도 만만치 않다"고 언급했었습니다. 소스코드가 바뀔때마다 doxygen으로 생성하고, 생성된 문서를 배포하는 과정도 비용입니다. 이 부분에 대해서는 다음 글에서 Travis CI와 Github pages를 이용해서 최신화된 코드에 대해 Doxygen으로 문서를 배포하는 방법에 대해 소개할 예정입니다.

 

긴 글 읽어주셔서 감사합니다.

 

참고 자료


  1. 와탭(whatap)을 이용한 CUBRID 모니터링

    와탭과 큐브리드의 협력으로 출시된 Whatap for CUBRID를 통하여 모니터링 하기! 회원가입 후 데모 버전 사용이 가능하며, 큐브리드 설치가 되어있는 환경에서 에이전트와 연결하여 간략한 모니터링까지 해보겠습니다. 제가 사용한 큐브리드 버전은 9.3.6.0002 linux 버전 이고, 와탭 에이전트도 큐브리드를 설치한 OS에 같이 설치하였습니다. (자바설치 필수) 프로젝트 생성 와탭 홈페이지에서 데이터베이스 모니터링을 선택 후 해당 화면에서 프로젝트 생성 버튼을 클릭합니다. 큐브리드를 선택하고 원하는 프로젝트명과 서버 지역 등을 입력하고 저장합니다. 에이전트 추가생성된 프로젝트를 선택하여 에이전트를 추가해줍니다. 1.​ 라이선스 발급 버튼을 선택하여 라이선스 키를 생성해줍니다. 2. DB 에이전트 다운로드 보이는 주소를 통하여 wget 방식으로 에이전트를 tar파일을 다운받습니다. (저는 DB가 설치된 서버의 다른 계정에 다운받았습니다.) 다운받은 tar 파일을 풀면 whatap 디렉터리가 생성됩니다. 3. 모니터링용 계정 생성 모니터링을 하기 위해선 DBA 나 DBA 권한이 있는 계정이어야 합니다. 모니터링용 계정을 따로 생성하여 모니터링을 해보겠습니다. > c...
    Date2019.12.26 Category알려요~ By황영진 Views113 Votes0
    Read More
  2. 리소스해커로 CUBRID 매니저 아이콘 변경하기

    언제 부터인가 CUBRID 매니저를 설치하면 바탕화면 및 시스템 트레이 아이콘이 이클립스 아이콘으로 나온다. 일단 큐브리드 매니저를 다운 받고 설치해 보자. https://www.cubrid.org/downloads/os-select/64-bit/tools/manager 다운을 받고 설치를 하고나면 바탕화면에 바로가기 아이콘이 생긴다. 사용자 최접점 인터페이스로 사용되는 툴이 이클립스 아이콘으로 나오는 것이 항상 신경이 쓰였다. 패치가 되기전에라도 아이콘을 정상 사용하고 싶은 사용자들에게 리소스 해커라는 툴을 소개하면서 아이콘 변경 방법도 공유하고자 한다. 좌측은 최초 설치 시의 모습이고 우측은 리소스 해커를 통해서 아이콘을 변경한 후의 모습니다. 이제 리소스 해커를 구해보도록하자. 구글 검색하면 나오는 아무 버전이나 수정 가능하다. 필자는 VenusGirl님의 블로그에서 한글 버전에 가장 최근에 수정된 버전으로 수정을 했다. 설치 없이 압축만 풀면 바로 수행이 가능해서 아래의 버전으로 선택 했다. 동일하게 진행하고자 하시는 분은 아래의 링크에서 받으시면 됩니다. 링크: Resource Hacker KR 버전 5.1.7 - 리소스 수정 다운 받은 파일을 풀고 ResourceHacker.exe 파일을 실행하면 ...
    Date2019.12.16 Category제품 여행 By성진 Views280 Votes1
    Read More
  3. SQLGate for CUBRID로 데이터베이스를 다뤄보자

    2019년 7월 30일, SQLGate for CUBRID 버전이 출시되었습니다. 아래 SQLGate 홈페이지에서 출시내용을 자세히 확인할 수 있습니다. https://support.sqlgate.com/hc/ko/articles/360033815393?utm_source=cubrid_com&utm_medium=main_slider&utm_campaign=cubrid_launch 지금부터 SQLGate for CUBRID로 CUBRID DB를 다뤄보고 활용해보겠습니다. 1. 설치 https://www.sqlgate.com/product/download 에 접속하여 SQLGate for CUBRID를 다운로드하고 실행하면 설치가 완료됩니다. 2. SQLGate for CUBRID 라이선스 CUBRID 또는 SQLGate 홈페이지에서 SQLGate for CUBRID 사용에 대한 라이선스를 확인할 수 있습니다. 라이선스 종류는 다음과 같으며 필요한 라이선스를 구입하여 사용하시기 바랍니다. - 기업용 라이선스 보기(https://www.sqlgate.com/pricing/perpetual) - 인디개발자 라이선스 보기(https://www.sqlgate.com/pricing/indieLicense) - 구독 서비스 보기(https://www.sqlgate.com/pricing/subscription) ※무료 버전을 다운로드 받으시면 14일 동안 전체 기능을 경험해 볼 수 있습니다. 3. SQLGate 실행하기 - 가입한 이메일 주소로 로그인 한 뒤 확인을 클...
    Date2019.12.10 Category알려요~ By정훈 Views177 Votes0
    Read More
  4. CUBRID Network Diagram (CUBRID Version 9.3, 10.1)

    CUBRID Network Diagram 큐브리드를 사용하다 보면 네트워크 연결 구성에 대해 궁금할 수 있습니다. 이런 궁금증에 대해 간단한 이미지와 설명으로 큐브리드 네트워크 연결 구성에 쉽게 다가 올 수 있도록 기술 하였습니다. 들어가기에 앞서 큐브리드 네트워크 연결 구성에 대해 이해하기에 OS 환경 및 CUBRID 버전에 따른 약간의 차이점이 있습니다. 아래의 2가지 기능 차이에 대해서 숙지 하시면 큐브리드 네트워크 다이어그램에 대해 쉽게 이해하실 수 있습니다. - Windows 큐브리드 버전에서는 SHARD Broker 기능과 HA 환경을 제공 하지 않습니다. (SINGLE 구성만 제공) - Linux 큐브리드 버전 9.3에서는 SHARD Broker기능을 제공 하지만 10.1버전에서는 SHARD Broker 기능을 제공 하지 않습니다. 큐브리드 네트워크 다이어그램 세부 정보 < Master / Slave / Replica Node > HA 환경의 데이터 베이스를 구성하는 서버 - cub_master : 실제 데이터 베이스 프로세스와 연결을 담당하는 프로세스 - cub_manger : CUBRID Manger 프로그램의 관리모드 사용을 위한 프로세스 < SINGLE > HA환경이 아닌 싱글로 운영 되는 데이터 베이스 서버 - cub_master : 실제 데이터 베이스 ...
    Date2019.11.02 Category제품 여행 By윤준수 Views253 Votes1
    Read More
  5. Doxygen으로 소스코드 문서화 해보기

    오픈소스 프로젝트를 이용해서 개발을 해보신 분들은 소스코드를 문서화한 레퍼런스 문서(또는 개발자 매뉴얼)을 참고해서 개발해 본 경험이 있을 것 같습니다. 개발자를 위한 이러한 문서는 기본적으로 프로젝트 빌드 방법, 주요 아키텍쳐 설명 등의 내용들을 담기도 하고 소스코드에서 정의한 변수나 구조체와 함수 같은 것들이 소스 파일을 직접 열어서 찾아보지 않아도 보기 좋게 정리하거나 변수나 함수 간의 관계를 정리해서 보여주기도 합니다. 다음과 같은 프로젝트의 문서를 예시로 참고해 볼 수 있겠네요. CGAL : https://doc.cgal.org/4.2/CGAL.CGAL/html/index.html Eigen : http://eigen.tuxfamily.org/dox/ Xerces-C++ : http://xerces.apache.org/xerces-c/apiDocs-3/classes.html 공개 되어있는 코드를 한줄한줄 따라가보며 파악할 수도 있지만 프로젝트의 규모가 커지고, 코드의 복잡도가 증가할수록 개발자를 위한 문서는 중요해집니다. 왜냐하면 문서를 읽으면 소스코드를 훨씬 빠르게 파악할 수 있기 때문입니다. 이러한 문서 덕분에 다른 개발자가 조금 더 쉽게 내 프로젝트에 기여할 수 있게 된다면 내 프로젝트에 참여하고 기여해주는 사람들이 더 많아...
    Date2019.09.30 Category나머지... Byhgryoo Views2251 Votes0
    Read More
  6. No Image

    DB2, Informix, Sybase ASE, Postgres DBMS 데이터를 CUBRID로 이관하는 방안에 대하여...

    DBMS 보급과 관련하여 과거와는 달리 민간 및 공공기업에서 서비스 중요도 및 비용등을 고려하여 다양한 제품을 도입하여 사용하고 있다. 뿐만 아니라 시스템 사용연한 도래, 유지보수 비용절감, 클라우드 전환 및 차세대 시스템 도입을 통해서 기존 DBMS를 다른 DBMS로 변환하는 경우가 빈번하게 발생하고 있다. DBMS 변경으로 응용체계 전환 및 데이터 전환, 운영 및 사용자 기술전환등이 수행되는데 기술적 측면 및 비용적인 부분에서 예상보다 많은 리스크를 직면하게 되기도 한다. 성공과 실패는 면밀한 전환환경에 대한 분석 및 계획과 수행하는 기술자들의 자질에(기술 및 도전적 & 긍정적 마인드) 의해 결정된다. 이러한 여러 요소들 중에서 여기서 다루고자 하는 부분은 전환에 있어 기본이면서 중요한 데이터 전환에 대한 부분이다. 큐브리드는 국산을 제외한 외산 DBMS중에 민간 및 공공기간을 통틀어 점유율이 높다고 볼 수 있는 Oracle 및 MS-SQL, MySQL에 대해서 데이터 이관 툴을 제공하고 있다. 해당 제품명은 CMT(Cubrid Migration Toolkit)이며 Linux 및 Windows 버전을 기본으로 GUI 및 Terminal 방식을 지원하고 있다. 그 이외에도 비록 시장 점유율은...
    Date2019.07.15 Category나머지... By김창휘 Views434 Votes0
    Read More
  7. CUBRID GRANT ALL TABLES

    CUBRID GRANT.... 큐브리드에서는 GRANT ... ON ALL TABLES 구문을 아쉽게도 제공 하지 않습니다. 현재는 수동으로 GRANT 구문을 작성하여, 사용하여야 합니다. "이러한 불편함을 자동으로 작성해주면 어떨까" 라는 생각으로 스크립트를 작성하였습니다. HOW to do GRANT ... ON ALL TABLES .....? $ sh cub_grant.sh -------------------------------------------------------------------------------------------------------- CUBRID DBMS, auto-generator for grant all tables usage : sh cub_grant.sh <dbname> <grantee user> <grantor user> <grantor user password> <option> <option> -view : grantee user all grant view -dml : default SELECT, DELETE, UPDATE, INSERT -ddl : default ALTER, INDEX, EXECUTE -all : ALL PRIVILEGES(dml+ddl) <file creation info> default path : . -dml : ./GRANT_DML.sql -ddl : ./GRANT_DDL.sql -all : ./GRANT_ALL.sql -------------------------------------------------------------------------------------------------------- 1. Linux 환경에서만 사용 가능합니다. 2. bash 스크립트로 작성 되었습니다. 3. CUBRID 엔...
    Date2019.06.25 Category제품 여행 By윤준수 Views529 Votes0
    Read More
  8. CUBRID 슬랏 페이지(slotted page) 구조 살펴보기

    내가 INSERT한 레코드는 어떤 구조로 파일에 저장될까? 운전을 하다 보면 가끔 엔진이나 미션 등이 어떻게 동작하는지 궁금할 때가 있다. 연료가 어떻게 엔진에 전달되는지, 엔진은 어떻게 연료를 연소하여 동력을 얻는지, 또 이를 미션에 전달하여 어떻게 차를 움직이게 하는지 등에 대해 말이다. CUBRID를 사용하는 사용자들도 가끔 이런 호기심이 생기지 않을까? 이런 호기심 많은 사용자를 위한 첫번째로 "사용자가 INSERT한 레코드는 어떤 구조로 파일에 저장될까?"란 주제로 이야기 해보려고 한다. 티타임을 이용해 가벼운 마음으로 읽을 수 있도록 작성하였으니 여유 시간에 재미로 읽을 수 있길 바래본다. 슬랏 페이지(slotted page) 구조 CUBRID도 OS나 다른 DBMS와 같이 성능상의 이유로 페이지(page) 단위 디스크 I/O를 수행한다. CUBRID 페이지 크기는 최소 4KB ~ 최대 16KB 이며, 디폴트로 16KB 디스크 페이지 크기를 사용한다. 슬랏 페이지 구조란 이런 페이지에 데이터 저장을 구조화하는 하나의 방식을 말한다. CUBRID 사용자가 INSERT 구문을 사용하여 데이터(레코드)를 입력하게 되면, 여러 처리를 거친 후 결국 디스크 페이지에 입력된 데이터가 쓰여지게 ...
    Date2019.06.18 Category제품 여행 By민준 Views518 Votes0
    Read More
  9. Node.js 사용자들을 위한 CUBIRD 연동 방법 [4탄(최종)-CUBRID와 Node.js 커넥션 풀(Connection Pool)설정]

    1. 환경소개 OS CentOS7 64비트 Node.js 10.15.3 버전 Npm 6.4.1 버전 java 1.8.0_201 버전 Editer Eclipse DB CUBRID 10.1 (10.1.2.7694-64632b2)(64비트) 2. 커넥션 풀 (Connection Pool) 이란? 2-1) 개념 ● 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 있다가 필요할 때 커넥션을 풀에서 쓰고 다시 풀에 반환하는 기법을 말합니다. ● 커넥션 풀을 사용하면 커넥션을 생성하고 닫는 시간이 소모되지 않기 때문에 애플리케이션의 실행 속도가 빨라지며, 또한 한 번에 생성될 수 있는 커넥션 수를 제어하기 때문에 동시 접속자 수가 몰려도 웹 애플리케이션이 쉽게 다운되지 않습니다. ● 웹 컨테이너가 실행되면 커넥션(Connection) 객체를 미리 풀(pool)에 생성해 둡니다. ● DB와 연결된 커넥션(Connection)을 미리 생성하고, 풀(pool) 속에 저장했다가 필요할 때에 가져다 쓰고 반환합니다. ● 미리 커넥션(Connection)을 생성했기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리할 수 있습니다. 3. 커넥션 풀 (Connection Pool) 환경 설정 ● node-cubrid는 자체적인 커넥션 풀(Connection Pool) 기능을 제공하고 있지는 않습니다...
    Date2019.06.13 Category제품 여행 By원종민 Views1194 Votes0
    Read More
  10. Node.js 사용자들을 위한 CUBIRD 연동 방법 [3탄-Callback과 Promise 패턴 개념 소개]

    개요. ●Callback과 Promise 패턴을 이야기 앞서 동기식과 비동기식 프로그래밍을 소개하겠습니다. 1. 동기식 프로그래밍 vs 비동기식 프로그래밍 1-1) 동기식 프로그래밍 ● 어떤 작업을 요청한 후 그 작업이 완료되기까지 기다렸다가 응답을 받아 처리하는 것을 말합니다. <예제 코드> <예제 결과> 동기식 프로그래밍 function addition(x){ return x+x; } var num = addition(2); console.log(num); //4 * 순차적으로 해당 덧셈작업이 완료되기 까지 기다렸다가 결과 값을 보여주게 됩니다. 1-2) 비동기식 프로그래밍 ● 어떤 작업을 요청한 후 다른 작업을 수행하다가 이벤트가 발생하면 그에 대한 응답을 받아 처리하는 것을 말합니다. <예제 코드> <예제 결과> 비동기식 프로그래밍 function addition(x, callback){ setTimeout(callback, 100, x+x); } var num = 0; addition(2,function(x){ num = x; }); console.log(num); //0 * setTimeout은 비동기를 표현하기 위해 사용하였습니다. * 0.1초 후 callback 함수가 실행되는 코드입니다. 해당 코드를 동기식으로 바라보면, console.log에는 4라는 결과 값이 출력되어야 하지만, 결과는 0이 됩니다. 그 이유로 console.log...
    Date2019.06.11 Category제품 여행 By원종민 Views285 Votes0
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2147 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales