트랙백 명세는 인코딩 방식에 대해 아무런 언급이 없다. 이를테면 알아서 구현해라
라는 말인데, 덕분에 한글을 표현하는 방식이 제각각이다. euc-kr 과 utf-8이 혼재되어 있는 상황이라 더욱 골치 아프다.
ExpressionEngine은 외국계 블로그 엔진이라 태터나 이글루스 등에 트랙백을 전송하면 글자가 깨진다. 이런 문제를 해결하고자 EE의 트랙백 모듈을 직접 수정해봤다.
환경
EE의 설정값이 다음과 같은 경우만 고려했다. 아마도 이것이 표준이라고 할 수 있을 것이다.
-
ExpressionEngine 버전: 1.4.2
- [Admin/Global Weblog Preferences/Automatically Convert High ASCII Text to Entities]: no
- [Admin/Weblog Management/XML Language]: Korean
- [Admin/Weblog Management/XML Character Encoding]: utf-8
수정 사항
-
트랙백의 기능이라 함은 송신과 수신 두 가지이다. 이 중에서 수신 기능은 손보지 않았다. 어차피 수신된 트랙백 메시지가 깨진 경우에는 수작업으로 대처하면 된다. 아주 유명한 블로그라서 하루에도 트랙백이 몇개씩 쌓인다면 모르겠지만, 대부분의 경우에는 큰 문제가 안 된다. 즉, 급하지 않다.
-
아무래도 태터툴즈가 대세이니 태터툴즈와 동일한 방식으로 메시지 인코딩을 하기로 결정했다.
-
euc-kr가 기본인 블로그 엔진이나 서비스 중 일부는 utf-8로 인코딩된 트랙백 메시지를 제대로 처리하지 못한다. 이런 블로그에는 메시지를 euc-kr로 다시 인코딩해서 보내야 하는데, 이와 관련된 처리는 태터툴즈의 방식을 따라했다.
-
Trackback_CP::send_trackback 메써드가 주요 수정 대상이었고, Trackback_CP::process_trackback은 HTTP 헤더에 charset을 추가한 것이 전부이다.
-
소스코드 중 수정된 부분 앞에는
// modified
라는 주석을 달았다.
테스트
다음, 이글루스, 파란, 네이버, 그리고 태터툴즈를 대상으로 테스트를 진행했다.
-
네이버: 트랙백을 너무 자주 보냈더니 차단당한 것 같다.
-
다음: 다음의 블로그 서비스는 특수문자 처리를 제대로 못 하는 것 같다. 메시지에 %가 있으면 오류를 반환한다. 그나마 <와 >는 메시지에서 삭제 당한다. 이것은 다음 측에서 수정해야 할 문제이다.
-
이글루스: 테터툴즈 소스코드를 보면 이글루스에 보내는 메시지는 euc-kr로 변환한다. 그러나 이글루스는 utf-8로 인코딩된 메시지를 제대로 처리하는 것으로 보인다. 예전에는 확실히 이런 기능이 없었는데 추가된 것 같다.
다운로드
원본과 수정된 소스코드를 펼쳐놓는 것만으로도 스코롤 압박이 장난 아니게 된다. 그리고 무엇보다 소스코드를 하나하나 설명하기가 귀찮다. 혹시라도 질문 사항이 있으면 메일 또는 덧글로 연락주면 대답해주겠지만. 이해해주리라 믿는다. -_-
테스트 해 보겠습니다. 그런데 버젼, 빌드 넘버가 필요하군요.
그리고 최근 트랙백 플러그인 업뎃해야하나 오래만에 Yoshi 블로그에
가니까 배포를 안하더군요. 제경우 4개의 블로그가 각기 버젼이 다릅니다.
그리고 EE 사용자도 각각 버젼과 빌드넘버 차이가 있겠지요.
아예 모듈자체를 이걸로 쓴다면 괜찮겠군요.
언잰가 일모리님(http://ilmol.com/)도
euc-kr로 핑하고시는 utf-8이 표준인데 euc-kr로 해봤다고 하시더군요.
차단당하시고.. 수고하셨습니다. ㅎㅎ
pMachine으로 2003,4년에 저도 저렇게 하다가
eouia님한데 혼났는데 블코에 테스트 글 자주 올라간다고
안돼보여서 모라고 하는 거라고… 사실 그런 잔소리 때문에
많은 도움이 되었지요. 또 어디가신거지…^*^
ee.winnwe.com에는 수신에 문제가 있는가 봅니다.
이따 한밤중에 공부 좀 해야겠군요.
테스트 환경의 EE 버전을 적어넣었습니다. 그나저나 네이버 블로그 쪽에는 아직도 트랙백을 보낼 수 없는데 걱정입니다. 며칠 뒤에는 다시 풀렸으면 좋겠는데 말입니다. 정 안되면 네이버 측에 문의해봐야겠네요.
네이버랑 MSN스페이스 두 군데 했는데 정상적으로 핑이 들어갑니다.
네이버
http://blog.naver.com/inknice/1014394
MSN스페이스
http://mrlearn.spaces.msn.com/blog/cns!514BAF1ED8A1D539!184.entry
다운받은 소스에 function process_trackback
에서 함수 재정의했다고 에러나길래 보니까
주석처리하고 써야겠더군요.^^
최신버젼 1.4.2 빌드 20060620에서 이소스로 대체버리면 되겠습니다.
사용자입장에서는 소스내용보다는 작동여부가 중요하겠지요.
역시 뭘 알고 뜯어고쳐야… 이래서 스페셜리스트는 달라요.
(네이버는 무조건 차단보다는 시간제한이 횟수로 제한하는 방식으로…)
고맙습니다.^^
EE에서 트랙백 문제를 해결하는 방법
트랙백 송수신문제를 어설프게 나마 처리를 시도하려고 했는데 내가 작성한 웹로그는 전혀 쓸모가 없다. 다행스럽게도 스페셜리스트 KAISTizen님이 모듈 전체를 분석해 EE의 트랙백 송신에 문제없이 처리가 되도록 대안을 내놓아 줌으로써 한글환경에서 EE를 잘 사용할 수 있도록 도움을 주었다, 내가 이미 작성한 아래의 웹로그는 쓸모가 없으며, 이 웹로그가 EE에서 트랙백송신을……
오류가 났던 부분은 수정했습니다. 막판에 Trackback_CP::process_trackback의 시그너처를 고친 것이 마음에 걸려서 함수 오버로딩을 했습니다만, PHP5에 와서야 오버로딩이 지원되기 시작한 것을 깜박 잊었습니다. 아주 간단한 소스코드 추가 작업이라 설마 오류가 날 줄 몰랐습니다. 테스트를 해봤어야 하는건데.
질문해 본다고 하고 자꾸 몇차례 잊어버렸는데요.
ExpressionEngine의 URL Title사용시 한글이 안되는 문제 말입니다.
해결하시고 사용하십니까? 아니면 그냥 영문만 계속 사용중이십니까?
자바스크립트로 한글이 가능한가요? 그걸 뭐라고 해야되나요 자모조합?
오토마타? 이런 문제로 한계가 있을까요?
꼼수로 사용을 안하고 있는데 거기서 끝날 문제가 아닌 것 같더군요.
아직 미해결이라면 언제 그와 관한 포스팅 기다리겠습니다.
1.5.0도 한글 문제는 달라진게 없네요.
mcp.trackback.modified.zip
이게 어디로 갔는지 안보이길래 다운로드 하러 왔습니다.
EERL 폐쇄시키고 오랜만에 와보니까 adsense가 달렸네요.^^
1.60에서도 잘 되리라 생각합니다.
잘쓸게요.
더운 여름 건강에 유의하시길…
제가 트랙백 기능을 거의 안 쓰다 보니 새 엔진에서도 잘 되나 모르겠습니다.
혹시 잘 안되면 말씀해주세요.
애드센스는 호스팅비나 벌어볼까 하고 달았는데, 어쩌다 보니 호스팅비도 안 내게 됐고, 제거해버릴까 생각 중입니다. ㅎㅎ
버젼 1.60에서도 tackback모듈은 바뀐게 없네요.
고로 잘작동을 합니다. 덕분에 필요시 잘 쓰겠습니다.^^
그런데 말이지요. 요즘 wiki 이걸로 문서작성을 시도해 보려는데,
1.5x에서 잘 작동을 했는데 1.60에서는 상하위 ASCII 때문인지 안되더군요.
[[대한민국]] 이게 [[ㅁㅁㅁㅁ]] 이럽니다.
들여다 봐도 뭐가 얼른 찾아져야 말이지요.ㅎㅎ
지난번에 뭐가 문제 있어서 EE의 릭이 ftp로 들어왔는데 별로 안친절해요.^^
까마초인가 이사람은 도움이 필요하면 언제든 연락하라고 하면서 꽤 친절하더군요.
이거저거 귀찮아서 그냥 혼자 해보려는데 잘 안됩니다.
애드센스는 뭘 내리셨습니까? 그것도 하나의 콘텐츠인데요.
적립되면 나중에 애인선물이라도 사줄 수 있는데요.^^
즐거운 주말 되시길…
위키를 쓰지 않다 보니 정확히 어떤 문제인지 대답해 드리기 애매하네요.
호스팅비 부담이 사라지면서 애드센스를 아예 빼던가, 최소한으로 줄이려고 하던 참이었습니다. 아직 완전히 뺄지 여부는 결정하지 않았습니다. 단지 다시 광고를 삽입하더라고 글 읽기를 방해하지 않는 곳에 배치하려구요. ㅎㅎ