지난달 개편된 스프링노트에는 읽기모드, 대쉬보드, 페이지 댓글 등의 기능들이 있다.
요새 블로그에 글을 쓸 때 스프링노트를 적극 활용중인데, 내 홈피의 글쓰기 편집창보다 스프링노트가 훨씬 나은데다 블로그로 보내기 기능을 갖고 있기 때문. 이미지 트래픽도 절감하고 -_- 이래저래 좋다. 그래서 블로그에 쓰는 내용은 대부분 그 원본이 스프링노트에 있다.
그러다보니 댓글이 분산되는 일을 겪게 된다. 얼마전에 쓴 생산성 2.0 이란 글의 경우 모든 댓글이 스프링노트에 달렸고 블로그에 발행된 글에는 댓글이 하나도 달리지 않았고, Firefox 3.1 beta 에 대해 리뷰한 글의 경우 대부분의 댓글이 스프링노트에 달리고 블로그에는 2개의 댓글만이 달려있다!
;ㅁ; 그래서 블로그 특정 포스트의 댓글을 출력할 때 그 글을 발행한 원본 스프링노트 페이지에 달린 댓글도 함께 출력하도록 수정하였다.
스프링노트 페이지의 댓글은 어떻게 가져오나
일단 페이지의 댓글을 가져와야 한다. 댓글은 GET http://rath.springnote.com/pages/1111/comments.xml 형태로 가져올 수 있다.
이번 기회에 getComments 메서드를 springnote-api for java에 추가하였으니 java 개발자들은 springnote-api svn 을 사용할 수 있을 것이다.
그 다음엔?
블로그의 댓글과 스프링노트의 댓글을 필요한만큼 정규화시킨다. 딱히 스프링노트 Comment 리소스에 댓글 작성자의 정보(오픈아이디나 스프링노트 페이지 주소)를 제공하지 않아 완벽하진 않겠지만 그래도 스프링노트 아이콘
![]()
과 스프링노트 안에서의 닉네임 정도는 표시해줄 수 있을 것이다. 작성자, 내용, 날짜. 이렇게 3개면 충분하다. 간단히 List 에 넣은 뒤 생성날짜 기준으로 오름차순 정렬을 해준다. (Collections.sort(List, Comparator)를 썼다)
그리고 출력!
포스트가 스프링노트에서 내보낸 것인지 어떻게 알지? pageId는 또 어떻게 알고?
그러게 말이다. 스프링노트에서 내보낸 것인지 아닌지 깔끔하게 알 수 있는 방법은 없다. 그저 스프링노트에서 내보낸 글일 경우 "이 글은 스프링노트에서 작성되었습니다." 라고 표시되는데 이것이 수정될 일은 거의 없다치고 (댓글 fetcher 코드는 블로그 주인장만 건드리는 것이고 포스트도 주인장만 다는 것이므로) 정규식을 써버리자.
블로그 내용에
Pattern p = Pattern.compile("http://[a-zA-Z0-9]\.springnote\.com/pages/([0-9])">스프링노트</a>에서 작성");
이 패턴이 있는지 조사한 뒤
Matcher matcher = p.matcher(HTML태그를포함한블로그내용); if( matcher.find() ) { String pageId = matcher.group(1); }
페이지 번호를 캡춰해온다. 그러면 pageId 를 얻어온 곳에서부터 SpringNote API를 콜하여 댓글을 얻어오고, 원 댓글과 merge 하는 작업 및 출력하는 루틴을 거치게 하면 된다.
스프링노트 API... 튼튼하겠지?
이 글은 스프링노트에서 작성되었습니다.
Comments
4 thoughts shared
Continue Reading
Discover more thoughts and insights
스프링노트 Java API 0.7 릴리즈
스프링노트 API for Java 를 0.7로 릴리즈 하였습니다. 기능 변경은 없으며, 돌아오는 9월 17일부터 변경될 API Call 방식(SSL)을 지원합니다. 아니, 지원한다기보다 이전 방식(http)을
집중하기 싫은 이유
충분히 숙련되어 집중할 필요가 없는 일만 할 수 있다면 모를까, 내가 하는 일들은 대부분 집중이 필요하다. 몰아의 경지니, egoless니, 그 상태로의 전이함이 의도적이건 아니던 집중된 상태를 말한다. 너무
WebRTC와 씨름하는 새벽
아직도 Google WebRTC 코드와 시간을 보내고 있다. AV1 인코더는 요새 부쩍 빨라진 libaom 2.0을 써도 넷플릭스가 만든 svt-av1을 써도 어셈블리 반 러스트 반인 rav1e를 써도 라이브에