2006년 03월 10일
이글루스 백업 툴에 관한 메모 V2
먼저, 전에 혼자 뭐 좀 해보려고 끙끙대며 조사한 내용들
#1 자동 로그인 및 월별 아카이브 페이지를 이용하는 아이디어 : http://lunaris.egloos.com/862213
#2 코멘트 및 트랙백을 읽어오는 메커니즘에 대한 참고 자료 : http://lunaris.egloos.com/830928
첫 페이지를 기점으로 모든 페이지를 다 크롤링하는 건 비효율적일 뿐 아니라, 부하도 많이 걸리는 일이다. 따라서, 아래와 같은 방법을 사용하는게 좋지 않을까?
(0) 로그인 절차를 거쳐 쿠키를 얻는다. (이후의 모든 서버 억세스에는 쿠키를 붙인다) 어떤 페이지를 어떤 방식으로 접근해야 하는지는 #1에서 분석된 바와 같다. (이글루스->WP 마이그레이션 툴 소스를 보면 보다 분명해진다)
(1) http://이글루주소/m1900-01-01 을 읽는다.
(2) <div class="ARCHIVE_BODY"> ~ </div> 내용을 읽고, 여기 포함된 <A> 태그의 href attibute 들을 이용해 실제로 월별 아카이브가 존재하는 기간을 찾아 둔다.
(3) 각 월별로 http://m연-월-01 URL 을 읽어서 parsing 한다. 다른 정보는 욕심이 나더라도 대충 버리고, 가장 첫번째 POST division 에 주목한다. 이 부분은, 실제 포스팅이 아니라, 해당 월의 포스팅 제목들 및 #2 에서 이야기한 posting serial number를 가지고 있는 아카이브의 헤더 역할을 한다. 여기서, <a href=#serial > 형식들에 주목해서, regular expression 으로 해당 월 포스팅들에 대해 serial number 및 제목들을 몽땅 뽑아서, 인덱스 파일에 저장해둔다.
(4) #2 에서 조사한 바로는, 결국 해당 포스팅의 serial number 만 알면, permalink 는 물론이고, comment 및 trackback 이 튀어나올 hidden frame 용 URL도 자동으로 계산할 수 있다. 즉 포스팅 한 개에 대해 HTTP GET 이 3번 들어가면 그 글의 '모든' 정보들을 가지고 올 수 있다. 가지고 온 글의 내용을 parsing 하는 것은 (3) 절차를 해낼 수 있다면 결코 어렵지 않은 일일 것이다. 본문 내용에서 필요한 이미지 및 첨부 파일등은 가져오는 건 코더 개인의 능력에 달린 일일 것이다.
(5) 이글루스 서버에 무리한 부하를 주는 것을 막기 위해, 실제로 글의 내용을 가지고 올 때 절대로 멀티 쓰레드로 돌지 않게 하고, 또 한꺼번에 모든 글들을 다 가지고 오는 것 보다 월별로 한 번씩 작업하게 하자. 이사 가는게 너무 쉬우면 재미 없으니까. *웃음* 착하게 살자. 사실은, 모든 글들의 리스트를 보다 효율적으로 가져오는 방법은 사실 월별 아카이브를 뒤지는 것 보다 각 카테고리 별로 주어지는 '카테고리 보기' 화면을 이용하는 것이다.
(6) 이글루스의 카테고리 화면은 http://이글루주소/ i숫자 형식으로 이뤄지는데, 각 카테고리별 글 보기 화면 페이지에서 글들의 serial number를 빼내는 것 자체는 앞선 작업들과 별로 다르지 않다. 정작 그 이글루의 카테고리들이 어떤 어떤 것들이 있는가- 를 아는게 더 어려운데, 이걸 Menu 를 직접 분석하는 건 오히려 실속 없는 일이 될 것이다. 이땐 과감히 '글 관리하기' 페이지 앞부분의 <script>~</script> 내에 포함된 자바스크립트 소스 부분에다 정규 표현식을 걸어주는 센스를 발휘하자. var categoryValue = new Array ("","7","2","3","6","8","5","1"); 을 보며 7,2,3,6,8,5,1 을 뽑아내는 정도는 프로그래머의 자존심상 못한다는 얘긴 절대 할 수 없다.
(7) 가장 좋은 것은 (2)/(3) 에서 이야기한 '기간' 을 이용하는 것과 (5)/(6) 에서 이야기한 카테고리별 인덱스를 이용하는 두 가지 방법을 모두 제공하는 것이다. 즉, 유저가 원한다면 특정 기간의, 특정 카테고리 에 한해서 백업을 할 수 있는 기능을 제시할 수 있는 가능성이 충분하다.
#1 자동 로그인 및 월별 아카이브 페이지를 이용하는 아이디어 : http://lunaris.egloos.com/862213
#2 코멘트 및 트랙백을 읽어오는 메커니즘에 대한 참고 자료 : http://lunaris.egloos.com/830928
첫 페이지를 기점으로 모든 페이지를 다 크롤링하는 건 비효율적일 뿐 아니라, 부하도 많이 걸리는 일이다. 따라서, 아래와 같은 방법을 사용하는게 좋지 않을까?
(0) 로그인 절차를 거쳐 쿠키를 얻는다. (이후의 모든 서버 억세스에는 쿠키를 붙인다) 어떤 페이지를 어떤 방식으로 접근해야 하는지는 #1에서 분석된 바와 같다. (이글루스->WP 마이그레이션 툴 소스를 보면 보다 분명해진다)
(1) http://이글루주소/m1900-01-01 을 읽는다.
(2) <div class="ARCHIVE_BODY"> ~ </div> 내용을 읽고, 여기 포함된 <A> 태그의 href attibute 들을 이용해 실제로 월별 아카이브가 존재하는 기간을 찾아 둔다.
(3) 각 월별로 http://m연-월-01 URL 을 읽어서 parsing 한다. 다른 정보는 욕심이 나더라도 대충 버리고, 가장 첫번째 POST division 에 주목한다. 이 부분은, 실제 포스팅이 아니라, 해당 월의 포스팅 제목들 및 #2 에서 이야기한 posting serial number를 가지고 있는 아카이브의 헤더 역할을 한다. 여기서, <a href=#serial > 형식들에 주목해서, regular expression 으로 해당 월 포스팅들에 대해 serial number 및 제목들을 몽땅 뽑아서, 인덱스 파일에 저장해둔다.
(4) #2 에서 조사한 바로는, 결국 해당 포스팅의 serial number 만 알면, permalink 는 물론이고, comment 및 trackback 이 튀어나올 hidden frame 용 URL도 자동으로 계산할 수 있다. 즉 포스팅 한 개에 대해 HTTP GET 이 3번 들어가면 그 글의 '모든' 정보들을 가지고 올 수 있다. 가지고 온 글의 내용을 parsing 하는 것은 (3) 절차를 해낼 수 있다면 결코 어렵지 않은 일일 것이다. 본문 내용에서 필요한 이미지 및 첨부 파일등은 가져오는 건 코더 개인의 능력에 달린 일일 것이다.
(5) 이글루스 서버에 무리한 부하를 주는 것을 막기 위해, 실제로 글의 내용을 가지고 올 때 절대로 멀티 쓰레드로 돌지 않게 하고, 또 한꺼번에 모든 글들을 다 가지고 오는 것 보다 월별로 한 번씩 작업하게 하자. 이사 가는게 너무 쉬우면 재미 없으니까. *웃음* 착하게 살자. 사실은, 모든 글들의 리스트를 보다 효율적으로 가져오는 방법은 사실 월별 아카이브를 뒤지는 것 보다 각 카테고리 별로 주어지는 '카테고리 보기' 화면을 이용하는 것이다.
(6) 이글루스의 카테고리 화면은 http://이글루주소/ i숫자 형식으로 이뤄지는데, 각 카테고리별 글 보기 화면 페이지에서 글들의 serial number를 빼내는 것 자체는 앞선 작업들과 별로 다르지 않다. 정작 그 이글루의 카테고리들이 어떤 어떤 것들이 있는가- 를 아는게 더 어려운데, 이걸 Menu 를 직접 분석하는 건 오히려 실속 없는 일이 될 것이다. 이땐 과감히 '글 관리하기' 페이지 앞부분의 <script>~</script> 내에 포함된 자바스크립트 소스 부분에다 정규 표현식을 걸어주는 센스를 발휘하자. var categoryValue = new Array ("","7","2","3","6","8","5","1"); 을 보며 7,2,3,6,8,5,1 을 뽑아내는 정도는 프로그래머의 자존심상 못한다는 얘긴 절대 할 수 없다.
(7) 가장 좋은 것은 (2)/(3) 에서 이야기한 '기간' 을 이용하는 것과 (5)/(6) 에서 이야기한 카테고리별 인덱스를 이용하는 두 가지 방법을 모두 제공하는 것이다. 즉, 유저가 원한다면 특정 기간의, 특정 카테고리 에 한해서 백업을 할 수 있는 기능을 제시할 수 있는 가능성이 충분하다.
# by | 2006/03/10 22:19 | 0 1 Nation | 트랙백 | 덧글(5)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
1. 저도 처음엔 그렇게 생각했는데 글 리스트는 글 관리하기에서 쉽게 얻을수 있었습니다. 고로 123은 필요 없더군요-_-;
2. 카테고리는 글관리하기에서 저 자바스크립트 부분을 잘 펐습니다. 순서까지 잘 ㅎㅎ
3. 트랙백은 /t일렬번호 코멘트는 /c일렬번호가 히든 프래임입니다.
4. 하여간 이젠 이미지만 처리하면 배포 들어갈껍니다. ㅎㅎ
직접 짤 생각을 하면서 어떤 방향으로 짜고, 어떻게 나중에 써먹을 수 있는 도구로 만들지 짱돌을 굴리는 중이었는데 일단 태터 이전 툴이 나오는 거군요. 감사히 써먹겠습니다 ^^
ps. 코드를 발로 짜서 큰일입니다...OTL 게다가 Ajax한번 써 먹어보자고 장난치다가 늦어지고 있습니다-_-;;;;