최근 트래픽 유입이 많은 트위터(Twitter)와 미투데이(me2DAY)와 같은 소셜 미디어의 오픈 API를 이용하여 글을 포스팅하기 시작한 것을 계기로 새로운 소통문화을 즐기고 있습니다. 재미있는 일은 블로그에서 제공하는 댓글 기능을 통해서 이루어지는 소통보다 양적으로나 질적으로나 더욱 원활한 소통이 이루어 진다는 것입니다. 사실 예전부터 그랬지만 이 블로그에 작성된 포스트에는 댓글이 잘 달리지 않는 편입니다. 그래서 이 양질의 댓글들을 쌔벼(?)오기로 마음먹고 약 3일 정도 삽질해서 위와 같은 결과물을 만들었습니다. PHP와 자바스크립트로 구현하였으며, 이 과정에서 습득한 몇가지 정보들과 변경된 점들을 정리해 보았습니다. :
1. 블로그 포스트가 공개(Public)되는 시점에서 트위터와 미투데이에 글 내보내기(Sync)
2. 내보내기에 성공한 경우 응답 결과로부터 생성된 포스트의 ID를 블로그 포스트 DB 필드에 기록
3. 블로그 포스트 DB 정보로 부터 트위터와 미투데이의 포스트 ID를 근거로 댓글 목록 호출
4. 이 과정에서 댓글에 댓글이 달린 경우를 구분하여 2차 호출
5. 질의 응답을 구분한 댓글 HTML(Skin) 파싱
6. 시간 흐름순으로 노드 재정렬 및 데코레이션
다수의 서버간 소켓통신이 발생하기 때문에 응답 속도가 매우 느립니다. 그래서 페이지 로딩 속도에 지장을 주지 않기위해 자료호출 부분은 Ajax로 처리하였으며, 댓글 목록과 댓글 갯수를 요청하기 위한 두가지 모드가 있습니다. 여기에 사용된 서버단 라이브러리로는 Me2PHP와 Twitter class를 사용하였으며, 몇몇 메서드나 함수들은 직접 작성하였습니다. 기존과 다른 점은 댓글이 출력되는 모양을 iChat틱(?)하게 스타일하였고 이메일 정보를 추가로 입력하는 경우 Gravatar API를 이용하여 아바타 이미지를 호출하고 출력하도록 했으며 트랙백과 댓글을 구분하지 않고 코멘트 영역으로 포함시켜 버린 것 등입니다. 상황봐서 원격으로 댓글을 작성하는 기능과 속도 개선을 위해 자료를 캐시하는 기능을 추가해 볼 생각입니다.
* 2010-01-25 : 인라인 댓글 작성기 및 편집기 추가
* 2010-01-27 : 트위터 원격 댓글 작성기능 추가
* 2010-01-27 : 트위터의 응답 결과를 캐시하여 호출속도 향상
* 2010-01-29 : 트위터의 OAuth API를 이용한 세션 공유 지원
* 2010-01-30 : 트위터의 서버단 라이브러리를 twitter-async로 교체
* 2010-07-9 : 트위터의 데이터를 서버 데이터베이스에 보관
* 2010-07-10 : 서버로부터 트위터 데이터를 정적인 컨텐츠로 호출
* 2010-07-10 : 서버와 트위터 API간 비동기식 동기화 로직 추가
* 2010-07-18 : @Anywhere API 이용한 호버카드 적용
* 2010-07-19 : 동기화 데이터베이스 최적화 및 경량화
* 2010-07-20 : 댓글에 댓글 출력 위치 구분
* 2010-07-22 : 멘션, 사용자 타임라인, 트위터 데이터 캐시 범위 확장
* 2010-07-25 : 트위터 데이터 베이스 덤프
Comments
Got something to add? You can just leave a comment.
멋지십니다. RT @firejune 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534
from Topsy
@TAE_HYUN 고맙습니다!
from twitter
오~ 이거 이제봤는데 멋지네요.. ㅎㅎㅎㅎ
근데 PDF변환기 어떤거 쓰셨는지 여쭤봐도 될까요? 해외꺼 변환라이브러리 같은것들은 한글이 거의다 깨지더라구요. ㅠ..ㅠ
reply edit
html2fpdf 와 fpdf에서 제공하는 korean.php를 이용했습니다. 한글 문제는 utf-8 패치로도 해결할 수 없었으며, 결국 utf-8을 euc-kr로 변환하여 사용해야 했습니다. 또 다른 문제로는 HTML을 pdf로 옮기는 과정의 스타일링 이슈와 시스템 폰트를 호출하는 구조이기 때문에 윈도가 아닌 계열에서는 문자가 보이지 않는 것도 해결해야할 과제로 남아있습니다. 아래는 제가 참조했던 사이트들 입니다.
http://www.fpdf.org/
http://acko.net/blog/ufpdf
http://html2fpdf.sourceforge.net/
reply edit
아~ 역시! 직접 해결하신 거였군요.
pdf변환기는 하나같이 한글이 깨지더라구요 ㅠ..ㅠ 2byte언어권에 대한 배려가 없는 ㅠ..ㅠ
좋은 정보 감사합니다. ㅎ
reply edit
별말씀을요 ^^;
reply edit
test RT @firejune 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534
from Topsy
RT @firejune: 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534
from Topsy
@dobiho 트위터>블로그는 http://firejune.com/1534 사용하네요.
from Topsy
제가 찾던 서비스를 구현한 분을 보니 너무나 반갑습니다.
혹시 개발하신 어플리케이션을 제가 사용할 수 있는 방법이 있는지요?
reply edit
제가 생각하던 것을 구현해내신 분을 만나서 반갑습니다.
제가 이쪽에는 전혀 문외한이라 실례가 될 지 모르지만 여쭤봅니다.
혹시 개발하신 어플리케이션을 제가 쓸 수 있는 방법이 있는지요?
트위터와 미투데이에서 다는 댓글들을 블로그 포스팅에서 모아서 볼 수 있는 기능을 말하는 것입니다.
reply edit
답변이 늦어서 죄송합니다. PHP소스라도 괜찮으시다면 알려드리도록 하겠습니다.
reply edit
테스트 중..
reply edit
우와~ 이거 신기한데요 ^^
reply edit
@firejune 한 달도 더 전에 http://firejune.com/1534에서 구현하신 기능을 쓸 수 있냐고 댓글로 물어봤던 사람입니다. 한동안 댓글이 달린줄 몰랐다가 지금 알았습니다 전 PHP가 뭔지 모르는데 사용할 수 있을까요?
from Power Twitter
RT @firejune 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534 테스트
from Topsy
@lunamoth 미투데이의 오픈 API를 이용한 것으로 Me2PHP 라이브러리를 이용하여 구현했습니다. http://firejune.com/1534 에 관련 내용을 포스팅 했으니 참고하세요. 근데 루나님 참 오랜만에 뵙네요. ^^
from Topsy
@firejune 아 그렇군요, 미투데이, 트위터 API 였군요. 다른 서드파티 서비스를 쓰신 것인지 궁금했었습니다.^^; 예나 지금이나 파이어준님은 커스터마이징의 대가이신듯^^; 예 저는 블로그를 쓴지가 오래됐지요;;; 좀 써봐야될텐데 하하;
from P3:PeraPeraPrv
RT @firejune: @lunamoth 미투데이의 오픈 API를 이용한 것으로 Me2PHP 라이브러리를 이용하여 구현했습니다. http://firejune.com/1534 에 관련 내용을 포스팅 했으니 참고하세요. 근데 루나님 참 오랜만에 뵙네요. ^^
from Topsy
@x1wins 가져오는 기준은 http://firejune.com/1534 이 포스트를 참고하세요.
from twitter
http://firejune.com/1534 잘 읽었습니다 firejune 님께 다시한번 감사의 말씀 드립니다.
from Topsy
@x1wins 별말씀을요~
from TweetJune
@firejune 와우~넘 멋집니다.혹시 php소스는 공유할수 있으신지요? myymid at gmail.com
from firejune.com
@firejune 순간 무슨글인가 했습니다. ㅎㅎㅎㅎㅎ
from Echofon
좋은내용 잘 보고 갑니다.
reply edit
굿 RT @firejune 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534
from twitter
굿 RT @firejune 포스트와 관련한 미투데이 트위터 댓글 매시업 http://firejune.com/1534
from Topsy
포스트와 관련한 미투데이 트위터 댓글 매시업 http://t.co/vPFH9vFY via @firejune
from twitter
포스트와 관련한 미투데이 트위터 댓글 매시업 http://t.co/oewKmE74 via @firejune
from twitter
Your Reaction Time!