5년만에 블로그를 바꿨습니다. 그동안 extends HttpServlet 과 JSP로 수작업한 블로그로, 버그도 많고 사용성 개선도 없고 기능 빼기도 없고 추가도 없고.. 그러다가 드디어 블로그를 엎었습니다. 워드프레스로!
PHP 5를 100% 자바로 구현한 Quercus는 몇해전부터 여러번 찔러봤지만 legacy php 앱을 돌리기엔 많은 문제가 있었습니다. 초반의 즐거움은 잠시뿐이였고, 최근 발견한 metaWeblog newMediaObject 버그도 있고 2007년 초에 mediaWiki를 설치하려다 실패한 적도 있었습니다. phpMyAdmin이나 wordpress의 경우 한글 문제 때문에 좌절하고 버려뒀었습니다. 자세히 기억은 안나지만 phpMyAdmin과 태터툴즈 같은 경우 Quercus가 mcrypto lib을 제대로 구현하지 못해서 문제가 생기기도 했었습니다.
매번 Quercus를 시도할 때면 한글 문제에 부딪힙니다. <? echo ("한글". (1+2). "이야 깔깔") ?> 이런 코드는 아무런 문제가 없지만 mysql에 왔다갔다 하면 그때부터 한글이 뽀각뽀각 깨지기 시작합니다. UTF-8을 기본 인코딩으로 쓰는 저는 create database 할 때도 꼭 default charset utf8 을 붙여주는데, Quercus의 mysql_fetch_xxxx 시리즈는 latin1 만을 지원하는지 insert 는 잘해주면서 select 하면 한글이 와장창 깨지는 문제가 있는거지요. caucho 에서 제공하는 문서에 의하면 web.xml 의 servlet-mapping 쪽에 php-ini 엘리먼트를 만들어서 script encoding, output encoding, runtime_encoding 을 지정할 수 있다고 하는데.. 해도 잘 안되고요. -_- 그러다 누가 이기나 해보자! 하고 Quercus 소스코드를 구경하다보니 무서운 코드가 있었습니다.
if (metaData.getClass().getName().equals("com.mysql.jdbc.ResultSetMetaData")) {
// calling getString() will decode using the database encoding
String s = rs.getString(column);
if (s == null)
return NullValue.NULL;
// php/1464, php/144f, php/144g
// attempt to convert to latin1 bytes,
// conversion may fail if there was a mismatch between database
// encoding and latin1 (implying that the database didn't encode
// the data that went into it)
bytes = MysqlLatin1Utility.encode(s);
}
주석을 보니 데이터베이스 인코딩이 latin1이 아니라면 깨질거라는군요. 세상에 MysqlLatin1Utility도 있고. 그래도 친절하게 깨질거라고 주석을 달아주셨으니 몸둘바를 모르겠습니다. 소스코드가 이런줄도 모르고 계속 문서만 읽으면서 php-ini 고쳐보고 이짓저짓 했던 저를 슬프게 만들어버리는 저 주석.. 분노와 욕심 속에서 저는 코드를 아래와 같이 바꿔버렸습니다. (caucho mantis를 보면 작년에 5월에 고쳤다고 하는데 뭘 어떻게 고친건지..)
bytes = MysqlLatin1Utility.encode(s);
bytes = s.getBytes("UTF-8");
이렇게만 바꾸고 resin.jar를 다시 빌드하니 한글이 잘 출력됩니다. 지금 읽고 계신 이 문서도 Resin 3.2.0 (OpenSource) + Quercus + WordPress 2.7 조합으로 출력된 내용입니다. phpinfo를 보면 PHP 5.2.0 이라고 예쁘게 나옵니다. ^^
이제는 난이도가 낮은 작업들을 스믈스믈 처리하기 시작했습니다. 기존 데이터들을 WordPress로 import 해야할텐데요, 귀찮은 스크립트 하나 짜야될 줄 알았는데 워드프레스가 RSS 문서를 통한 import를 제공해주는 바람에 날로 먹었습니다. 댓글도 어떻게 안되나.. 생각했지만 여기선 방법이 없었고요, 그냥 노가다 스크립트 짜서 열심히 퍼다 옮겼습니다. 아쉽게도 OpenID로 댓글을 남겨주신 분들에게 오픈아이디 마크까지 마이그레이션 해드리지는 못했습니다. 아직 WordPress OpenID 플러그인이 Quercus에서 제대로 작동하지 않아서 어쩔 수 없었고요, 선처를 부탁드리겠습니다. (_ _)
마지막으로 WordPress에서 제공하는 퍼머링크들을 RESTful 하게 만들기 위해 작년에 만든 URIMapper로 wordpress에서 퍼머링크를 만들 때 사용하는 몇가지 규칙들을 추가해서 주소들도 예쁘게 바꾸고, 예전 제 블로그의 퍼머링크와 워드프레스용 퍼머링크를 translate 해주는 간단한 서블릿을 만드는 것으로 워드프레스로의 이사가 끝났습니다.
아이고 예쁘네요! 이제 수많은 워드프레스 테마들이 다 내꺼라니!!
Comments
12 thoughts shared
기분째즈
오우 ㅊㅋㅊㅋ
백일몽
우웡... 보기 좋다. 그나저나 저 소스는 대체 무슨 생각일까? -.-
오스카 :
오호, 워프에 합류한 걸 ㅊㅊ~ 이 테마 요즘 많이들 쓰네요~
저런, identity가 떨어지는 테마였군요 --; 상용 테마를 질러야 되는걸까요.. -ㅠ-
기분째즈
오픈소스 어쩌구 저쩌구 미투에 글 남긴건 이것때문인가보네. 소스까지 볼 생각을 하다니. ㅎㅎ
워프로 온 걸 환영하오~ ㅎㅎ~ 워프 옮기면서 구해놓은 것들.. 물론 무료... 쓸만한 것들 많으니... 꼭 한번 살펴보길.. ㅎㅎ~
Continue Reading
Discover more thoughts and insights
미투데이에 남긴 흔적 - 망초 스페셜
일 할때도 품에 안겨 놀아달라는 망초는 애교만점 이 글은 rath님의 2008년 9월 20일의 미투데이
일촌 신청
데스크탑 애슬론으로 바꾼지 얼마나 지났는지 기억은 잘 안난다. 아무튼 데스크탑 바꾸고 개발 페이스를 좀 많이 잡았고 Melon Player를 잘 안썼다는 것. 순수가 요청한 '봄맞이용 상큼발랄한 팝'을 찾다보니
대한민국에는 소프트웨어가 없다
작년초에 구입하고 처음 몇페이지만 읽다가, 오늘에서야 처음부터 끝까지 정독하여 다 읽은 책이 있다. 바로 '대한민국에는 소프트웨어가 없다' 이다. 2004년 작년 한해는 프로그래밍이나 내 커리어 레벨로 보면