지난 24일 토요일 오후 서현동 nhn 사무실에서 XE캠프가 진행됐다. 신청자 300여명 중 선별된 약 70여명이 참석한 이번 행사에서는 XE에 관심이 많은 IT 전문가들이 모여 심도 있는 대화를 나눴다.
< 엑스프레스 엔진 http://www.xpressengine.com/ >
아래는 고급형 반에서 진행됐던 이야기들을 메모 형식으로 기록한 것들이다. 보다 자세한 슬라이드 및 영상 녹화 자료는 XE 공식 홈페이지에 공개될 예정이다.
코어 개발자 기조 발표
1. 실행 경로를 따라가 보자
index.php 의 구조. 거의 모든 기능으로 구현 된다.
다른 프로그램은 워낙 외부 접근 경로가 다양해서 보안 문제가 있었는데
XE는 index.php에서 몰아서 관리하고 있다.
첫째, 몇 가지 필요한 파일을 include 하게 된다.
콘텍스트 초기화
SSO체크
모듈 핸들러 초기화
액션 실행
결과 표시
의 과정을 거쳐 화면이 표시된다.
2. 왜 이런 구조로 되어 있을까
가장 먼저 콘텍스트 초기화를 하게 된다.
콘텍스트란 여러 변수의 저장소라고 이해하면 쉽다.
request_method, db_info 등
초기화란
각종 정보의 세팅, 기본 언어파일 로드, 기본 js/css 추가
3 가상 사이트 구조에 대해
디폴트 URL과 리퀘스트 URL에 대해
4. checkSSO
가상사이트와 기본 사이트와의 로그인 구조
자신의 주소를 GetParameter로 넣으서 헤더 리다이렉트
기본 사이트와 가상 사이트의 로그인 한 번에 가능
코어 모듈을 더 가볍게 하는 작업 중
코어 모듈 가볍게 하는 과정임. 멤버모듈 등을 떼어내는 등 고민 중.
5. 모듈 핸들러 초기화
파일, 모듈, 디스플레이 등을 핸들링하는 것들이 있다.
이 중 모듈 핸들러는 가장 중요하다.
document srl
mid
디폴트 모듈
등을 순차적으로 찾게 된다.
모듈 정보를 읽어 와서 세팅을 하게 되면 모듈 핸들러에서 하는 초기화다.
6. 액션의 실행
index.php 를 procmodule 을 부르고, 액션을 부른 뒤, 액션에서 함수를 부르게 된다.
7. 액션의 결과
HTML 및 XML에 따라
HTML은 콘텍스트에 variable 넣은 후 sttemplatefile로 file 넣는다.
XML rpc나 J선의 경우에는 다소 다르다.
8. 템플릿 콤파일
치환 - include, import 등
Fetch
9. 내부 calling - AJAX
Form submit, 카운터 업데이트 등에서 사용
procFilter
이 과정이 진행되는데 중간 중간 살짝 빠지는 부분이 있다.
한 가지는 애드온이고, 다른 하나는 트리거다.
10. 애드온 실행 위치 : 총 4가지
before_module_init - 모듈 핸들러 클래스 생성 이후
before_module_proc - 출력 하기 전에 애드온 부르기
after_module_proc - 모듈 실행 전후
before_display_content - 출력 전
매우 강력하기도 하고, 또 조심해야 하기도 하다.
애드온을 잘못하면 엉뚱하게 빠질 수 도 있고, 심지어 admin이 실행 안될 수도 있다.
Cache File 기반으로 되어 있음
11. Trigger Call
코드에서 위치를 지정하고 있음.
modulehandler.init, after 등
정해진 오프젝트를 정해서 결과를 받는 방식
12. Virtual Site
예를 들어 insertTextyle - 지정된 domain(vid)로 새로운 site 를 생성
Language Code, module, addon 등을 따로 관리한다.
따라서 버추얼 사이트에 해당하는 모듈을 생성할 때 site_srl을 지정해주기만 하면 됨.
<문답>
1. 애드온과 트리거에 대한 편의성 및 가치 논의
Q 사실 이렇다면 트리거가 필요하지 않을 것 같기도 하다. Q 과연 애드온과 트리거에 대해 어떤 것을 써야 좀 더 효율적으로 시스템에 로드가 걸리지 않게 할 수 있을까 고민 중이다.
A 물론 애드온과 트리거는 처음에 역할이 달랐었다. 그러나 트리거와 달리 애드온은 네이티브 코드로 인식되기 때문에 동작 자체를 확 바꿀 수 있다. 예를 들어 스마트폰 애드온의 경우 기존 로직을 무시하고 애드온에 맞게 동작한다.
Q 가상도메인 기능. textyle 도메인 1과 2가 있을 때 2로 접속했을 때에도 도메인은 1이 표시되는 경우가 있다.
A 스킨 상의 문제일 수 있지 않을까. 사이트 ID로 만든 사이트는 도메인에 대한 개념은 없다. 그러나 도메인으로 세팅되는 것은 다른 도메인으로 실행되면 안된다.
Q 리라이트 모드에 대한 버그에 대해
A 리라이트 룰에 대해서는 약간 처리해야 될 이슈가 있다. 1.3.0 버전에서 처리하려고 한다.
Q 검색에 대해서. 코어를 건드리지 않는 범위에서 작업을 하려고 하는데, 모듈을 이용해서 상속을 받아 검색을 처리하고 쿼리는 따로 만들었는데, 좋은 방법이 없을까.
A 아직 못하고 있는 부분도 있다. 플래닛 등에는 쿼리를 따로 만들어 쓰기도 한다. 확장변수를 상당히 많이 쓰시는 걸로 안다. 일단 관련 api가 안들어가고 있고, 도큐먼트 리스트도 마찬가지인데, 검색대상 컬럼이 많은데 어떤 검색이 더 필요한지 잘 모르고 있다. 기능 추가 등을 고민하고 있다.
Q 텍스타일에 대해 더 질문 드리겠다. 독립도메인을 잘못 입력했을 때 해당 서비스 접속이 아예 안된다. 직접 만들려고 생각도 했지만 아직 고민 중이다. 별도 도메인ID와 독립도메인을 동시에 유지하는 것이 맞지 않을까. 즉 이 말씀은 코어도 좀 유연해졌으면 좋겠다.
A 유연하다는 말은 상당히 의미가 다양하다. 어떤 사람은 복잡하다고 생각하고, 어떤 사람들은 필요하다고 생각한다. 가상사이트와 말씀하신 기능에 대해서는 유연하다기 보다는 기능 자체가 없는 것 같다. 코어에 기능이 넣어야 하는 거 같다. 프로젝트에 안건으로 올려 주시면 좋겠다.
Q module.xml 개발할 때 퍼미션 부분이 있다. 문서화가 되어 있지 않으니 거의 직접 다 뜯어 봤다.
A 문서화 쪽은 큰 목표로 잡고 있다. 특히 뭐를 문서화를 할 것인지 잘 모르는 경우도 있다. 그런 제안도 있었으면 좋겠다.
Q 모듈 튜토리얼 등 제작. 어떤 개발자든 쉽게 접근할 수 있도록 했으면 좋겠다.
A doc.xpressengine.com 참고.
Q 자바스크립트 프레임워크 등에 대해
A 오토링크에 대해 예를 들 수 있겠다. 자바스크립트의 동작 절차와 책임 소재가 명확해지도록(자바스크립트 동작 구조를 통짜가 아닌 나눠 구성하는 방식에 대한 설명이 이어짐)
Q 텍스타일 콤포넌트 개발이 생각보단 어렵던데?
A 실제로 단락편집기 콤포넌트를 일반인들이 쉽게 개발하기는 쉽지 않을 것 같다. 단락별편집기 콤퍼넌트가 많아지는 것도 문제고, 편집 화면에서 일일이 관련 자바스크립트가 잔뜩 로딩돼야 한다. 또한 표준 ui 구성 문제 등이 있다. 이에 대해서는 기존 편집기를 엑스프레스 에디터를 넣을 계획이다.
Q 엑스프레스 에디터의 익스텐션 기능 활용에 대해서는?
A 기존 편집기는 정말 텍스트 편집 위주로 더 단순화시키고, 표준 편집기로 엑스프레스 에디터 기능을 넣으면 (기존에 개발됐던 수많은) 익스텐션 활용이 가능하게 된다.
이 밖에 대화는 주로 개별 이슈에 대한 트러블슈팅 및 해결방안 논의로 진행됨.
#### 스킨 과정 자료
참고로 이날 XE 캠프는 스킨과정/모듈과정/고급과정으로 나눠 진행됐는데, 스킨과정 자료는 http://naradesign.net/wp/2009/10/25/1066/ 에서 확인 가능하다.
ITViewpoint 서명덕 기자
* CAMP 진행 순서 및 주요 내용
시각 | 소요시간 (min) | 장소 | 세부 내용 | |
PM 12:00 | 60 | 8층 카페 | 점심 식사* | |
PM 1:00 | 15 | 8층 카페 | XE 소개 및 개발 가치 소개 | |
PM 1:15 | 15 | XE 개발방법론 | ||
PM 1:30 | 150 | 7층 대강의장 | 튜토리얼 및 Q&A | 스킨 개발 |
8층 카페 | 모듈 개발 | |||
8층 1회의실 | 고급 과정 | |||
PM 4:00 | 15 | 8층 카페 | 휴식 시간 | |
PM 4:15 | 15 | 공모전 소개 | ||
PM 4:30 | 20 | 공모전 Q&A | ||
PM 4:50 | 30 | 주제별 토론 및 다과 | ||
종료시각 PM 5:20 |
| |||
* 간단한 점심 식사를 제공할 예정입니다.
개발자 뉴스센터 카테고리의 다른 글

안녕하세요. ITViewpoint 스타터이자 공동 에디터 '서명덕 기자' 입니다. 닉네임은 떡이떡이 입니다.
이 곳은 블로그미디어이며, 개인 공간은 http://itviewpoint.thoth.kr/ 을 메인으로 옮겨 갈 생각입니다.
개인적인 목적이라면 콘텐츠 막펌을 전면 허용 http://itviewpoint.com/blog/54971 합니다. 다만 비상업적인 용도에 한하며, 상업적인 용도라면 별도로 문의하세요. RSS http://itviewpoint.com/blog/rss 는 전문 제공합니다.

서명덕 기자

thoth
호랭이





