Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 395
  • 2594350
DNS Powered by DNSEver.com
XE

XE 요소 개발을 쉽고 빠르게 - XE Wizard

Posted 2013. 03. 13 Updated 2017. 06. 02 Views 13924 Replies 2
Atachment
첨부

지난 2개월간 일련의 XE 관련 프로젝트들을 진행하면서 XE 구성요소들에 대한 다방면의 지식을 습득할 수 있었습니다.

다른 CMS와는 달리 XE는 구성요소들이 레이아웃, 모듈, 위젯, 애드온 등으로 세분화되어 구성되어 있으며, 각 요소들도 기능별, 성격별로 구성 파일들이 세분화되어 있습니다.

XE 개발을 처음 시작하려고 마음먹은 개발자가 처음 맞닥들이게 되는 난관은 수많은 디렉토리와 파일들에 대한 부담감입니다.

저도 역시 처음에 그랬습니다. 참조를 하려고 게시판 모듈을 뜯어봤는데, conf에 lang, queries 등등 정체불명의 디렉토리들과 board.admin.model.php은 무엇이며... [...]

초반 갖은 삽질을 통해 각 파일 및 디렉토리의 용도를 파악했다고 하더라도 곧바로 또 다른 불편함을 느끼게 되는데, 바로 프로젝트 시작의 지루함(?)입니다.

XE의 가장 큰 구성요소라 할 수 있는 모듈 제작에 착수하려면 기본적으로 처음 세팅에 다음 요소들이 필요합니다.

  • conf 디렉토리 : 모듈정보 및 환경설정 파일을 저장
  • lang 디렉토리 : 언어 관련 파일을 저장
  • tpl 디렉토리 : 뷰(View) 표시를 위한 HTML 템플릿 파일을 저장
  • module.class.php : 모듈 최상위 클래스
  • module.admin.view.php : 관리자 뷰(View)를 관장하는 클래스
  • module.admin.controller.php : 관리자 제어를 관장하는 클래스

여기에 DB라도 쓸라 하면, queries 디렉토리와 schemas 디렉토리도 추가됩니다. 폼 유효성 검증 기능을 사용하려면 ruleset 디렉토리도 생성해야 합니다.

당연히 위에 나열된 요소들은 모듈에 따라 서로 다르게 구현되어 있지만, 기본적으로 같은 공통 요소가 있습니다. 예를 들어, 관리자 페이지에서 모듈 목록을 보여주고 삽입/수정/삭제 하거나 권한설정, 스킨설정 등의 부분이 공통된 요소이며, 이들은 모든 모듈에 공통적으로 들어가는 기능들이라고 할 수 있습니다.

처음 몇 번은 이미 만든 모듈을 복사해서 모듈명만 바꿔 사용을 했으나, 이내 이런 단순반복성 노가다를 자동화 할 필요를 느끼게 되었습니다. (저는 어렵고 힘든 일보다 단순하고 지루하고 반복적인 일을 극도로 싫어합니다...)


보통 윈도 MFC 프로그래밍과 같은 대규모(?) 프로젝트를 시작하는데, 메모장을 열고 하나부터 열까지 필요한 내용을 다 써 나가는 개발자는 없을 것입니다. 보통 Visual Studio에서 프로젝트를 생성하고, 자동 생성된 템플릿 파일에 만들려는 프로그램의 성격에 맞도록 코드를 수정하고 추가해 가면서 프로젝트를 진행해 나갈 것입니다.

여기에 착안하여 XE버전의 Visual Studio.. 만큼은 아니더라도, 기본 템플릿 정도는 자동으로 생성해 주는 프로그램을 만들어 보기로 작정했습니다.

기본 틀만이라도 자동으로 생성해주면, 생각을 구현으로 옮기기까지 시간이 그만큼 단축되어 생산성이 향상되는 효과를 기대할 수 있기 때문입니다.

일주일동안 퇴근 후 남는 짧막한 시간을 활용하여 XE Wizard라는 모듈을 만들어 보았습니다. 개발자 정보와 생성할 요소들을 체크하면 모듈을 자동으로 생성해 줍니다. 파일과 디렉토리 생성 뿐만 아니라, 파일 내용 기본 템플릿도 자동 생성해 주는 기능을 갖추고 있습니다.


xewizard.png
▲ XE Wizard 모듈생성 탭
(XE Wizard도 XE 내에서 동작하는 하나의 '모듈'입니다.)


xewizard_output.png
▲ 자동 생성된 디렉토리와 파일들


mymodule.admin.view.php-x.png
▲ 자동 생성된 관리자 뷰 클래스 파일(module_name.admin.view.php)


XE 1.7.x 버전에서 최적화되어 동작하도록 제작했으며, 앞으로는 1.5.x 버전이 아닌 1.7.x 버전을 베이스로 개발을 해 나갈 것이므로 하위 버전 호환성은 검증하지 않았으며, 지원할 예정은 없습니다.

추후 필요에 따라 모듈생성기능 뿐만 아니라 위젯이나 애드온, 레이아웃과 같은 다른 요소를 자동 생성해주는 기능도 추가해 갈 예정입니다.

Visual Studio 만큼의 성능은 아니더라도, 기본 템플릿을 생성해 주는 기능만으로도 충분히 생산성의 향상을 기대할 수 있을 듯 합니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

  • ?
    홈페이지 eond 2014.01.25 02:06:42
    템플릿 생성해주는게 XE에선 꼭 필요하죠 하하하;;

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
193 Linux 한글 입력기 나비(Nabi)에서 한/영 키가 인식되지 않는 경우 file TUW 2017.06.02 2410
192 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 방법 1 file TUW 2017.06.14 2957
191 Linux [Linux] Screen 터미널 에뮬레이션 프로그램 사용하기 TUW 2015.08.19 3046
190 Linux Intelli Backup: File system 및 Database 백업 자동화 Bash 스크립트 TUW 2017.06.14 3257
189 Linux [VirtualBox] 가상머신 Windows 7 에서 Aero 기능 활성화하기 file TUW 2017.06.02 3312
188 Python VirtualEnv를 통한 Python Sandbox 개발환경 구축하기 file TUW 2017.06.02 3777
187 Python [Django Tutorial] 7. 백엔드 콘솔에 Custom Command 추가하기 file TUW 2017.06.16 3779
186 일반 GitLab 코드리뷰 페이지 탭 크기(Tab Size) 4칸으로 바꾸기 file TUW 2021.12.28 3900
185 일반 [TeraTerm] 명령줄 인수와 공개키 인증으로 간편하게 SSH 접속하기 TUW 2018.11.06 4592
184 일반 Linux에서 Code Composer Studio (CCS) - Ti ARM 개발환경 구축하기 file TUW 2017.06.02 4684
183 일반 [GIT] 임시 저장소 사용하기: stash TUW 2015.11.27 4775
182 Python [Django Tutorial] 8. Production - setting.py설정, Static파일 모으기 TUW 2017.06.16 5015
181 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 배경 file TUW 2017.06.02 5430
180 AVR [전자동 커튼] 2차 설치, 또 다시 발견된 문제점 file TUW 2017.06.02 5897
179 일반 [WSL] Windows Subsystem for Linux - Bash.exe를 Ubuntu와 유사하게 설정하기 file TUW 2021.12.28 5926
178 Python [Django Tutorial] 2. 개발 환경 세팅하기 - pyenv 및 virtualenv 활용 TUW 2017.02.26 6082
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5