텍스트큐브 1.7.6 버그 패치

텍스트큐브와 트랙백

텍스트큐브는 트랙백을 보내는 것이 상당히 어렵다. 정확이 이야기 하면 트랙백을 보내는 것이 어렵다기 보다는 트랙백을 여러 개 받으면 트랙백을 받은 글을 찾아 가는 것이 어렵다. 스킨에서 받은 트랙백을 5개로 설정하고 5개 이하의 트랙백을 받았다면 사이드바의 최근 트랙백을 통해 찾아가면 된다. 그런데 이 이상 받은 트랙백은 관리도구에서 확인은 가능하지만 트랙백을 받은 글을 찾아갈 수 있는 방법이 없다. 따라서 받은 트랙백을 텍스트큐브 관리 도구가 아니라 구글 리더를 이용해서 관리한다. 그 이유는 이렇게 하는 것이 트랙백을 받은 글을 찾기 쉽기 때문이다.

는 트랙백을 보내는 것이 상당히 어렵다. 정확이 이야기 하면 트랙백을 보내는 것이 어렵다기 보다는 트랙백을 여러 개 받으면 트랙백을 받은 글을 찾아 가는 것이 어렵다. 스킨에서 받은 트랙백을 5개로 설정하고 5개 이하의 트랙백을 받았다면 사이드바의 최근 트랙백을 통해 찾아가면 된다. 그런데 이 이상 받은 트랙백은 관리도구에서 확인은 가능하지만 트랙백을 받은 글을 찾아갈 수 있는 방법이 없다. 따라서 받은 트랙백을 텍스트큐브 관리 도구가 아니라 구글 리더를 이용해서 관리한다. 그 이유는 이렇게 하는 것이 트랙백을 받은 글을 찾기 쉽기 때문이다.

그런데 얼마 전 텍스트큐브가 1.7.6으로 판올림 됐다. 가장 반가운 기능은 역시 관리도구에서 트랙백을 바로 보낼 수 있는 기능이었다. 그런데 막상 관리도구에서 트랙백을 바로 보내려고 하자 다음처럼 "글을 걸지 못했습니다"라는 오류 메시지가 나타났다. 시절에는 버그가 있으면 손보는 것이 상당히 쉬웠다. 그러나 텍스트큐브로 올라가면서 각종 플러그인을 지원하고 개체기반으로 바뀐 뒤로는 텍스트큐브의 구조를 알고 있지 않으면 버그를 잡는다는 것이 쉽지 않다.

그래서 텍스트큐브 1.5판부터 트랙백 문제가 있었지만 버그를 잡지 못하고 그냥 사용해 왔다. '1.7.6'도 비슷하다. 마음에 드는 기능은 많지만 버그도 많았다. 몇몇 버그는 이미 패치가 된 상태이지만 아직도 곳곳에 버그가 눈에 띈다. 가장 마음에 들지 않는 버그는 트랙백을 바로 보내는 기능. 이 기능 때문에 판올림을 한 것인데 가장 중요한 기능이 정상적으로 동작하지 않아 이번에 원인을 파악했다. 기본적으로 텍스트큐브는 AJAX를 기반으로 동작하기 때문에 패킷 스니퍼링 프로그램으로 날라가는 패킷을 분석해서 버그를 잡았다. 텍스트큐브의 구조를 모르고 요즘 텍스트큐브는 너무 복잡하기 때문에 이 방법외에 다른 방법은 힘들었다.

일단 확인해본 결과 blog.trackback.php 파일에 버그가 있었다. 또 맞트랙백을 보내는 기능은 트랙백을 보낸 시스템에서 텍스트큐브에서 지원하는 형식의 RDF를 지원해야 가능했다. 따라서 티스토리에서 보낸 트랙백은 관리도구에서 바로 트랙백을 보낼 수 없다. 따라서 관리도구의 트랙백을 바로 보내는 기능 역시 트랙백을 바로 보낼 수 있는 경우에만 전송 단추가 나타나도록 개선되야 할 것 같았다(쉽지는 않은 기능 같다). 말이 조금 길어졌다. 텍스트큐브의 관리도구에서 트랙백을 바로 보내기 위해서는 blog.trackback.php 파일을 다음처럼 패치해야 한다.

  1. 좋아하는 편집기(예: EditPlus)로 library/model/blog.trackback.php 파일을 연다.
  2. function getRDFfromURL을 찾아 requireComponent를 다음처럼 바꾼다.

    변경전
    requireComponent('NeedleWorks.PHP.HTTPRequest');
    
    변경후
    requireComponent('Eolin.PHP.HTTPRequest');
    

    확인해 보면 알 수 있지만 배포본에는 NeedleWorks.PHP.HTTPRequest.php가 없고 Eolin.PHP.HTTPRequest.php만 있다. 따라서 1.8에서 1.7.6으로 내리면서 잘못 배포된 것이 아닌가 싶다.

  3. 다음처럼 if (class_exists('DOMDocument')) { ... } else { 를 주석처리한다. else 다음 블럭은 살려 둬야 하기 때문에 꼭 else { */처럼 주석 처리해야 한다.

    /*  if (class_exists('DOMDocument')) {
            $doc = DOMDocument::loadXML($match[0]);
            if (!$doc) {
                return false;
            }
            $desc = $doc->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description');
            $desc = $desc->item(0);
            if ($desc === null) {
                return false;
            }
            return array(
                'title' => $desc->getAttributeNS('http://purl.org/dc/elements/1.1/', 'title'),
                'url' => $desc->getAttributeNS('http://purl.org/dc/elements/1.1/', 'identifier'),
                'trackbackURL' => $desc->getAttributeNS('http://madskills.com/public/xml/rss/module/trackback/', 'ping')
            );
        } else {*/
    
  4. 함수 끝의 return 문 바로 아래의 괄호를 다음처럼 주석처리한다.

    return (isset($result['trackbackURL'])) ? $result : false;
    ////    }
    

직접 패치하는 것이 귀찮은 사람은 다음 파일을 내려받아 library/model 폴더에 올리면 된다.

이외에 사용하는 도중 발견된 버그가 꽤 많다. 일단 위지윅편집기의 기본 편집 모드가 HTML로 설정해도 자동으로 위지윅으로 바뀐다는 것은 이전 글에서 설명했다. 그런데 더 재미있는 것은 이렇게 위지윅모드에서 글을 입력하면 입력한 글이 모두 사라진다. 또 임시글의 유령글이 종종 발견된다. 이 것은 1.7.6의 버그인지 아니면 데이터 교정을 했기 때문에 발생한 일인지 분명하지는 않다. 이것외에도 또 있는데 지금 기억나는 것(불편한 것)은 이 두가지이다.




텍스트큐브의 유령글들

처음에는 무슨 일인가 싶었다. 아울러 원본을 삭제한 덕에 유령으로 복구한 글도 있다. 날짜를 보면 임시글 때문에 생긴 현상인 것 같은데 정확한 원인은 알 수 없었다.

관련 글타래

2008/11/17 10:01 2008/11/17 10:01
글쓴이
author image
운영체제의 모든 것을 운영하고 있는 IT 블로거. IT 블로거라는 이름은 현재 시국때문에 시사 블로거로 바뀐 상태다. 그러나 나는 아직도 시사와 사회에 관심이 많은 IT 블로거일 뿐이다. 컴퓨터, 운영체제, 시사, 가족, 여행, 맛집, 리뷰등과 살면서 느끼는 소소한 일상이 블로그의 주제이다. 왼쪽의 아이콘은 둘째 딸 다예가 그린 내 모습이다.
오늘의 글
인기있는 글
조회수 많은 글 | 베오베
댓글 많은 글 | 베오베

Trackback

Trackback Address :: https://offree.net/trackback/2132

Facebook

Comments

  1. CaN Tips 2008/11/17 16:06

    알려주신 방법을 보고 고쳤습니다. 편집기에서 글이 사라지는 것은 예전부터 있었던 문제가 아닌가 합니다. 아무튼 두 모드를 왔다갔다 할 때, 항상 이전 모드의 내용을 습관적으로 "복사"하고 있습니다. 편집기 부분도 어떻게든 개선이 되었으면 좋겠습니다.

    perm. |  mod/del. reply.
    • 도아 2008/11/17 16:24

      저는 위지윅모드를 전혀 사용하지 않기 때문에 이전에는 사라지는 것은 몰랐습니다. 다만 데이타를 변경하지 않도록 강제로 패치해서 사용하고 있는데 이제는 데이타도 바꾸더군요.

  2. CaN Tips 2008/11/17 17:14

    유령글은 무슨 말인가 했습니다. 제 경우에도 관련글 보기에서 몇몇 글이 1970년 1월 1일에 작성된 것으로 표기되고 있습니다. 이런 글은 일단 클릭하고 들어가서 바로 저장하기를 하면 작성일이 수정되는 것 같아 한 동안 이런 글이 보이면 일일이 들어가 다시 저장하고는 했습니다. 그런데 죽 하다보니 다시 저장한 글도 또 1970년이 되었다가 제대로 나왔다가 그러더군요. 설치 후 업데이트하고 PC도 몇 번 바꾸면서 어느 순간에 좀 꼬인건가라고 생각하고 있었는데 다른 분들에게도 나타나는 현상이었군요.

    perm. |  mod/del. reply.
    • 도아 2008/11/17 17:25

      그러면 1.7.6의 버그가 거의 확실하군요. 저도 비슷한 증상으로 글의 날짜가 사라져서 올블로그에 송고한 날짜로 복구했습니다.

  3. 공상플러스 2008/11/18 22:11

    패치패치패치패치패치패치 역시나 텍스트큐브는 발전하고 있군요 :)

    perm. |  mod/del. reply.
  4. 웹초보 2008/11/18 23:53

    저도 새로운 기능인 맞트랙백이 작동 안해서 무슨 문제가 했는데.. 이렇게 해결해 주시니 정말 감사할따름입니다.. ^^;

    perm. |  mod/del. reply.
    • 도아 2008/11/19 08:50

      그런데 TC 1.7.x 이상에서만 동작해서 효용성이 아주 크지는 않을 것 같더군요.

  5. DuGong 2009/01/09 15:22

    저도 텍스트규브 오래전부터 사용해서 지금은 1.7.6까지 왔네요.
    역시 종종 유령글처럼 글이 보여지는 문제나 위지윅 모드에서의 글쓰기가 불편하다는 점이다 다음 뉴스보내기가 잘 안되거나 이올린등에 트랙백을 잘 못보내거나 또는...

    가끔 설정해 놓은 사이드바 플러그인이 그냥 풀어져 버리는 현상들 때문에 골치가 아픈 상태인데 여기서 좋은 글 보고 갑니다. 조금씩 조금씩 수정하다보면 언젠가는 좋아지겠지만 그래도 불편한건 어쩔 수가 없네요.

    perm. |  mod/del. reply.
    • 도아 2009/01/10 09:15

      유령글을 빼고는 거의 대부분 직접 패치했습니다. 관련글은 이미 올려 두었습니다.

클릭!

(옵션: 없으면 생략)

글을 올릴 때 [b], [i], [url], [img]와 같은 BBCode를 사용할 수 있습니다.