'1.02'에 해당되는 글 2건

  1. 2006/03/18 태터의 Migrator 개조하기 (5)
  2. 2006/03/18 태터툴스 0.96x to 1.02 마이그레이션기 (1)
이번 TatterTools 1.02와 더불어 등장한 Migrator.php를 뜯어보자. 우선 주의할 것은 케릭터셋 변환을 위한 데이터가 들어 있어서 어정쩡한 에디터로 읽었다간 파일이 망가질 수 있다. 가능하면 UTF-8로 읽어 내기를 권장한다.

주의! 여기의 내용은 상당히 위험한 방법일 수 있기 때문에 어느정도 프로그래밍이 가능하고 특별한 처리를 하기 위한 상황에서만 실제 적용을 하기 바랍니다. 초보자를 위한 FAQ같은 것은 아닙니다. 또한.. 언제나 잊지 말것은 Backup!

UTF 판별하기 함수
이전에 UTF8의 판별에 대해 적은 글이 있는데 그 방법의 결정판이 이 파일의 250번째줄 근처에 있는 isUTF8과 adjustUTF8 함수일 것이다. 허나 이 함수에서 주의할 점이 하나 있다. 나름대로 제너럴 하게, 그리고 무난하게 판단하고 변환을 시켜주고 있지만 자신의 데이터가 특별한 경우 가차없이 '?'로 변신 시키는 함수기도 하다. 특수한 언어 체계(?)를 사용중이라던가 컨텐트 중에 특수한 케릭터 변환이 필요하다면 이 함수를 약간 손봐줘야 할 것이다. 0.96 즉 euc-kr에서 변환하는 경우에 xml에서 import 도중 에러가 날때도 역시 여기를 고민해 봐야 할 수 도 있다.

특정 영역의 변환 문제
1.02로의 변환중 특정 영역에 euc-kr로 남아 있어서 문제라거나 utf-8로 변환되어 버려 문제가 생기는 경우, 그리고 특정 문자의 치환이 필요하다면 300라인쯤 부터 펼쳐지는 "각부분처리기"에서 수정할 수 있다.
우선 변환과 관련된 것은 iconver, 그리고 치환자는 str_replace를 사용하고 있다. 특정 글의 특정 부분에 이런것을 적용하거나 해제하고 싶다면 바로 이부분에서 수정할 수 있다. 특히 420번째즘 나오는 $post->content 영역의 경우 글에 들어 있는 스크립트를 1.02에서 사용하기 위해 태터 플러그인족에 공개된 PureCode를 사용하도록 수정할 수 있게 자동 변환할때 사용해야할 키워드일 것이다. "<script>"의 "<"를 "&lt;"로 변환하고 앞뒤로 PURE를 붙여주는 작업등을 할 수 있다. 본인의 경우 글이 100개밖에 안되서 대충 보고 문제되는 놈들은 0.96을 옆에 뛰우고는 에디터로 Copy&Paste를 하는 식으로 작업했지만 도저히 수작업으로 불가능 하다면 이 방법을 생각해 볼 수 있다.

마이그레이션 이후
0.96에서 바로 1.02로 점프한 나로서는 일종의 "플랫폼 변환"을 당하고 말았다. 체계도 달라지고 에디터도 다르고 글을 쓸때 정보도 다르다. "Borland C++ for Windows"를 쓰다가 "Visual Studio 98"로 넘어갈때의 느낌이랄까? 좋아진점도 있지만 나빠진 것도 많고 그보다 중요한 것은 새로운 것을 배워야 하고 적응해야 한다. 그리고 이런 이동에서 격어야 하는 어려움들... Tatter&Company의 개발자도 죽어라 디버깅 했겠지만 나도 이 이동을 위해 한달 전 부터 나름대로 준비를 해 왔다. 그래도 여전히 이동 당일날 약간의 트러블은 생기게 되고 아직도 FF에서는 배경의 격자가 보이지 않고 등등..

그러나, 아픈만큼 성숙해 지는 법이다.

이전부터 1.01 테스트 사이트를 통해 스킨 등의 기본 준비를 하고 있었고 1.02의 알파/베타 테스트 데이터로 엄청 사용되었기 때문에 별 무리없이 이전에 성공하였습니다. RSS로 구독하시던 분들은 갑자기 글이 중복되어 등록된 것을 보실 수 있을 것입니다. 0.96x와 1.02의 RSS 출력 차이에 의한 것이죠. 반대로 기존의 링크 주소나 RSS 주소는 동일하기 때문에 구독설정을 수정할 필요는 없습니다. (거의 1.02 출시 마지막에 추가된 기능이라죠? ^^)

준비단계
0.96x와 1.02 사이에는 많은 변화가 있어서 일부 글들은 수습불가 상태로 글이 깨져 버리기도 합니다. 현재의 1.02 에디터는 이 상황을 해결 할 수 없습니다. DB를 직접 수정하거나 거의 새로 작성해 줘야 합니다. 더불어 데이터 백업 등의 이유로 인하여 가능하다면 기존의 블로그를 유지하는 것이 좋습니다. 0.96x의 경우 경로만 변경해 주면 정상적으로 동작하기 때문에 이 작업이 쉽습니다. 적당한 백업 경로를 만들고 모두 이동시킵니다.
물론 이 전에 폴더의 파일을 압축하고 DB의 내용도 별도로 덤프를 시켜 두는 것도 좋습니다.
그리고 이전에 설치되었던 경로와 동일하게 1.02를 받아서 설치합니다. DB의 prefix를 다르게 하면 동시에 0.96x와 1.02를 유지할 수 있습니다.

migrator 준비하기
제가 사용하는 환경에서 조차 업로드 제한이 2M라서 블로그 전체를 백업받아 1.02의 Import에 넣을 수 없는 상황입니다. 따라서 URL 지정 방식을 사용해야 했습니다. 기왕 이럴꺼 약간의 트릭을 사용했습니다. 태터 공식 홈에서 제공되는 migrator.php를 수정을 합니다. 사용자 인증을 없애고 바로 xml로 백업을 수행하도록 하는 것입니다. 여기서 주의점은 블로그 내의 모든 데이터를 볼 수 있기 때문에 migrator.php 이름을 변경하고 모든 작업이 끝난 후엔 chmod 600 정도로 다른 사람이 접근하지 못하게 하는 것이 좋습니다. 자 그럼 소스를 수정해 봅시다.

중간에

....
</html>
<?
       exit;
}
check_authority();

if (!isset($_GET['migrate'])) {
       header('Content-Type: text/html; charset=utf-8');
?>
...
라는 부분이 보입니다. 이 부분을 다음과 같이 수정합니다.

....
</html>
<?
       exit;
}
//check_authority();

if (!isset($_GET['migrate'])) {
       header('Content-Type: text/html; charset=utf-8');
?>
...
사용자 인증 부분을 comment out 하는 것입니다. 이런식으로 한 후 위 파일의 URL 다음에 "?migrate"를 붙여주면 바로 데이터를 콸콸콸 쏟아 낼것입니다.

임포트~~
이제 새로 설치된 1.02로 가서 데이터 불러오는 작업을 시작합니다. 데이터의 URL은 직전에 설명한 방식을 사용합니다. 부디 성공하길 기원합니다. 0.96x의 경우 euc-kr이기 때문에 utf-8의 1.02로 변환되면서 많은 위험성이 존재하였습니다. 1.02 개발 초기 단계에서는 실제로 잘 안되었다는 군요. 하지만 열혈 테스터인 겐도군의 블로그가 0.96x여서 오히려 클래식 보다 더 잘된다는 소문이...
에러가 나는 경우 현재 설치한 1.02를 다른 폴더로 옮기고 0.96을 원래 위치로 이동시키고는 PAPACHA씨를 괴롭히면 되겠습니다. 잘되면 이제 그냥 쓰는 겁니다.
이 상황에서 있지 말아야 할 것은.. 위에서 사용했던 migrator 파일의 퍼미션을 확인하세요. 블로그를 통째로 펌질 당하고 싶지 않다면요.

정리작업
처음에도 언급하였습니다만 0.96에서 잘 보이던 글이 1.02에선 와장창 깨지는 경우가 종종 있습니다. 저도 CODE가 제대로 처리되지 않아 수정하였습니다.(위에 CODE 버튼은 있으면서도 지원이 아직 안된다죠;;) 중간의 Openyourbook 관련 스크립트도 당했구요. (태터 플러그인 게시판에 Pure라는 놈을 만든 이유..) 특히 스크립트의 경우 1.02 에디터에서는 수정할 수 없기 때문에 0.96을 옆에 뛰우고 그 데이터를 이용해서 새로 작성하는 것을 권장합니다.
또하나. 일부 정상적이지 못한 문자들이 기존에 입력되어 있는 경우 1.02로 넘어 올때 '?'로 변신시켜 준다고 합니다. 남의 글을 퍼다가, 혹은 편집 실수로 잘못된 표현된 문자가 ?로 나오니 이런 것도 한번씩 점검 하시기 바랍니다.