XE1.5 버전 업데이트시 발생한 호환성 오류에 대한 XE팀 공식 의견입니다.
2011.12.09 10:34
안녕하세요. XE개발팀 입니다.
날씨가 급격하게 추워진 요즘 감기로 고생하시는 분이 없기를 바랍니다.
버전 업데이트 이후 몇 가지 호환성 문제가 있어 그 원인 및 개선을 위한 보완책 공유 드립니다.
1. XE1.4이전 버전에서 잘 사용하던 레이아웃/스킨에서 오류가 발생합니다.
개선 내용 :
TemplateHandler버그 수정 및 성능 개선
원인 :
1.4버전의 Template엔진은 내부에 이미 오류가 상당하였습니다. 예를 들어 Template 태그를 닫지 않는 경우 문법오류가 발생해야 하지만 이전 버전에서 이를 체크 하는 로직에 문제가 있어 태그가 완전하게 닫히지 않아도 문제없이 사용할 수 있었습니다. 또한, 이미지/외부 파일들 경로 설정 방식도 일관성이 없어, 스킨 구조에 따라 외부 파일 로드 방식이 모두 제각각이었습니다. 이렇듯 로직 오류가 있음에도 불구하고 Template 문법에 대한 정확한 매뉴얼이 존재하지 않았기 때문에 많은 서드파티/스킨제작자들이 오류에 맞추어 레이아웃/스킨을 제작하고 있었습니다.
이런 문제를 개선하고자 1.5에서는 Template문법의 스팩을 명확하게 결정하고 이에따라 문법을 엄격하게 체크하도록 수정하였습니다. 이로 인하여 실제로 Template엔진 코드는 1/3수준으로 크기가 줄었으며, 원활한 디버깅을 지원할 수 있게 되었습니다. 또한, Template해석 속도도 개선되었습니다.
따라서, 기존의 오류 로직이 포함된 레이아웃/스킨의 경우 새로운 Template엔진에서 오류로 감지되어 정상적인 출력이 되지 않습니다.
오류개선을 위한 보완책 :
문제가 발생한 레이아웃/스킨파일을 이슈트래커나 공식 메일 계정으로 전달해 주시면 문제 사항을 확인하여 TemplateHandler를 개선하거나 레이아웃/스킨파일 수정 방법을 공지 하도록 하겠습니다.
2. document모듈 업데이트 후 알 수 없는 error가 발생합니다.
개선내용 :
XE document모듈 개선
원인 :
1.4버전의 문서 상태는 서로 다른 방식의 로직으로 구현되었습니다. 그렇다 보니 새로운 문서 상태가 추가될 경우 별도의 값을 저장하기 위한 column을 추가하거나, 새로운 함수들을 추가해야 했습니다.
이런 문제를 개선하고자 문서의 상태를 하나의 컬럼(status)으로 관리하도록 변경하였습니다. 이를 통해 document 클래스의 코드 가독성을 높였으며, 확장성있는 구조로 변경되었습니다.
따라서 기존에 사용하던 Table 컬럼 들을 삭제하고 새로운 status컬럼을 추가해야 하는 작업이 필요하였습니다. 개선 이후 Table의 기존 컬럼을 삭제하거나 새로운 컬럼을 추가 할 경우 간혹 게시글이 많거나 DB성능으로 인하여 Table변경 업데이트를 모두 완료하지 못하고 종료되는 현상을 일부 발견하였습니다. 이렇게 테이블이 정상적으로 업데이트 되지 못한 경우 특정 컬럼을 읽을 수 없다는 오류가 발생할 수 있습니다.
오류개선을 위한 보완책 :
별도의 프로그램을 통해 테이블 수정 및 확인이 가능하도록 지원할 예정입니다.
XE설치시 권장사항 :
XE모듈 업데이트 시에는 DB에 문제가 발생할 수 있으므로 반드시 DB백업후 진행하실 것을 권장합니다.
3. XE1.5신규 설치 후 1.4버전용 회원 스킨을 사용할 경우 회원 로그인/회원가입이 되지 않습니다.
개선 내용 :
email_address 로그인 방식 추가
원인 :
1.4 버전에서는 user_id를 로그인 계정으로 사용하였습니다. 하지만 이는 혹 있을지 모르는 개인정보 유출에 피해를 크게 줄 수 있어 XE기존 로그인 방식을 user_id 또는 email_address로 선택하여 운영하도록 기능 개선되었습니다. 이와 더불어 회원 가입 양식도 이전 버전보다 훨씬 유연하게 관리할 수 있도록 개선하였습니다. 그리고, 이번 1.5에 추가된 ruleset기능을 로그인/회원가입에 적용하여 속성 유효성 검사를 철저하게 할 수 있도록 개선하였습니다.
하지만 ruleset을 사용하기 위해서는 기존의 skin파일도 변경해 주어야 하며, XE신규 설치시 기본 로그인 계정은 email_address가 되므로 기존 회원 스킨을 선택하여 사용하는 경우 무조건 로그인 계정을 user_id로 유효성 검사하기 때문에 로그인이 불가능하게 됩니다.
오류개선을 위한 보완책 :
1.5버전에서 사용해야할 회원 스킨 제작 가이드를 별도로 제작하여 배포할 예정입니다.
XE회원스킨 제작 가이드 http://code.google.com/p/xe-core/wiki/MemberSkinGuide
사이트 운영시 권장사항:
1.5 신규 설치시 기본 로그인 계정은 email_address이므로 email_address 로그인이 지원 가능한 회원 스킨을 선택하거나, 기존 스킨을 그대로 이용하고 싶은 경우는 반드시 기본 로그인 계정을 user_id로 변경하여 저장하시기 바랍니다.
4. Fatal error: Call to undefined method Object::executeQuery() in /.../func.inc.php on line ...
개선 내용 :
DB class 개선
원인 :
속도 개선과 새로운 서브 쿼리 기능 추가를 위하여 XE 1.5에서 DB class들을 전반적으로 개선하였습니다. 또한 DB 효율성을 높이기 위하여 DB master/slave기능을 추가 좀더 디테일한 DB설정도 가능하게 되었습니다. 이런 기능 변화로 인해 files/config/db.config.php 구조와 내용 또한 변경되었습니다. 허나, XE 버전 업그레이드 중 알 수 없는 오류로 인하여 해당 파일(/files/config/db.config.php)을 업데이트 하지 못하는 경우가 발생하였습니다.
오류 개선 방법 :
위와 같은 에러가 발생한 경우 ../files/config/db.config.php 파일을 무조건 삭제하시지 마시고, 아래의 구조로 변경하여 업데이트 하시기 바랍니다. (삭제 후 XE메인 페이지 접근 시 신규 설치로 오인, 모듈의 설정 및 회원 가입 폼 설정이 초기화 되어 로그인이 불가 할 수 있습니다.)
-XE 1.4-
<?php if(!defined("__ZBXE__")) exit();
$db_info->db_type = 'mysql';
$db_info->db_port = '3306';
$db_info->db_hostname = 'localhost';
$db_info->db_userid = 'DB계정';
$db_info->db_password = 'DB계정 비밀 번호';
$db_info->db_database = 'DB이름';
$db_info->db_table_prefix = 'xe';
$db_info->time_zone = '+0900';
$db_info->use_rewrite = 'Y';
$db_info->default_url = 'XE설치 URL(http://포함)';
?>
-XE 1.5-
<?php if(!defined("__ZBXE__")) exit();
$db_info->master_db = array('db_type' => 'mysql','db_port' => '3306','db_hostname' => 'localhost','db_password' => 'DB계정 비밀 번호','db_database' => 'DB이름','db_userid' => 'DB계정','db_table_prefix' => 'xe_');
$db_info->slave_db = array(array('db_type' => 'mysql','db_port' => '3306','db_hostname' => 'localhost','db_password' => 'DB계정 비밀 번호','db_database' => 'DB이름','db_userid' => 'DB계정','db_table_prefix' => 'xe_'));
$db_info->time_zone = '+0900';
$db_info->use_rewrite = 'Y';
$db_info->default_url = 'XE설치 URL(http://포함)';
?>
댓글 20
-
한마음^^
2011.12.09 10:50
모든 문제들에 대한 답은 아니지만 이렇게라도 공식적으로 문제들에 대해서 해결책을 제시하고 사용자들과 소통하려는 노력에 대해서 박수를 보냅니다~!!^^ -
새가슴
2011.12.09 11:04
MSSQL 및 PostgreSQL 확실히 지원되도록 부탁드립니다.. 수고많으신데 ㅠ.ㅠ -
빨간발
2011.12.09 11:42
xe 개발팀 감사합니다. -
서비여
2011.12.09 14:23
사용자들이 필요한게 요런거거든요^^ 그러나 난 이미 저질러버렸는데 어쩌나 ㅎㅎ -
쏭바강
2011.12.09 14:31
잘못된 코드 방치했다가 점점 더 걷잡을수 없어서 결국 문을 닫게됐다는 어느 소프트웨어회사 이야기가 떠오릅니다. 클린 코드? 좋은 코드? 나쁜 코드? 지금이라도 바로잡겠다니-기술적인 부분은 잘 모르겠지만- 다행이란 생각입니다. -
무한탐구
2011.12.09 15:12
1.6 기대됩니다. -
vkqkr
2011.12.09 15:35
ie8 에서 익스플로러 창이 확죽거나 에러메세지후 죽는 문제는 어떻게 되는건가요? -
똥똥
2011.12.09 15:48
그 오류는 이미 1.5.1버전에서 수정 된것으로 알고 있는데요 혹시 사용하시는 XE버전이 어떻게 되시는 지요 -
NA답답이
2011.12.09 16:42
이러한 글들을 좀 더 일찍 접할 수 있었더라면, 더 좋았었겠다는 생각입니다. 바쁘신 와중에 이제라도 이러한 공식적인 글들을 접할 수 있게 되어 그 동안 신뢰성(기술적 의지)에 약간 금간 부분이 봉합 되는 듯합니다. 다시 한 번 감사 드리며, 보편적인 XE사용자들의 눈 높이도 맞는 글들을 자주 접할수 있기를 기대합니다. -
착한악마
2011.12.10 05:33
저도 익스 8에서 창닫임이 심한데요 버전은 1.5.1에서도 똑같이 일어납니다.. 레이아웃의 태그은 다 닫쳐있는데요 뭐가 문제 일까요.. 공식메일 주소는 어떻게 되는지요. 메일좀 부탁드립니다. -
윤디
2011.12.10 08:25
저도 익스 8에서 창닫임 계속 됩니다. -
비밀얌
2011.12.10 09:11
업데이트 이후에 심각한 문제는 아니지만 몇가지 문제가 있었는데 이렇게 공지로 글을 써주시니 감사합니다. 근데 다른 회원정보 보기를 하면 그 사람의 아이디, 이름, 이메일... 등등 가입시 입력한게 전부 다 보이네요. 가입폼을 항목마다 공개/비공개 형식으로 설정할 수 있게 해주시면 좋겠습니다. -
yohan666
2011.12.10 16:12
저는 이 공지가 더 빨리 나왔어야 했다고 생각합니다. 공지에 나와있는것을 참고하니 해결되었네요 -
Migguragi
2011.12.10 21:00
4번관련/ /files/config/db.config.php 이파일은 ftp로수정도 하지 못하고 권한변경도 안되더라고요... 업데이트해도 마찬가지 아닌가요...초보의 짧은의견이었습니다. -
하늘종
2011.12.10 23:44
웹호스팅 업체에서 보안 문제로 해당 파일의 수정 권한을 막아놓을 수 있습니다. 호스팅 업체에 한번 문의해보세요. -
케이준
2011.12.13 23:39
1.4.x 에 비해서 페이지 로딩 속도가 너무 늦습니다. 최근 1.5.1에서 좀 나아진 듯 합니다만 여전히 체감상으로 느껴지게 많이 느립니다. -
케이준
2011.12.13 23:39
-
Starless
2011.12.14 21:21
1.5.x 업데이트 이후로 블로그 스킨에서 본문이 보이지 않는 문제가 스킨의 종류 여하를 막론하고 일어납니다. 게시판 등에서 이 문제에 대한 호소들이 올라온지 한참 지났는데도 아직 해결이 안 되네요. -
비밀얌
2011.12.14 23:04
이상하게 업데이트 이후 아이폰으로 접속하면 로그인이 안되네요. 아이디와 비밀번호 넣고 로그인 누르면 그냥 페이지만 갱신되고 로그인이 안되네요. 아이폰에서 모바일 버전과 PC 버튼 눌러서 둘다 아이디 넣고 비밀번호 넣어도 로그인이 안됩니다. 신기한 것은 컴퓨터에서 사파리, 파폭, 크롬, 인터넷익스에서는 로그인이 문제 없이 잘 됩니다. 무엇이 문제 일까요? -
임과장
2011.12.15 02:45
4번 오류에 해당되서 바꾸서 업로드 했더니 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /.../classes/db/DBMysql.class.php on line 139 Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /.../classes/db/DBMysql.class.php on line 141 이 두가지 에러메세지가 반복적으로 뜨네요.. ㅠ_ㅠ 아훙~ 어찌해야 되나요? ㅠ_ㅠ