더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.
soojung 0.5: backend 추상화와 분리
2005/03/23 AM 01:13 | 개발/soojung | 11 comments | 0 trackbacks | AllBlog: vote, to pocket
Date: 1111464917 Title: 안녕하세요~ Category: 이상한 얘기 Options: NO_TRACKBACK|NO_RSS Format: plain 잇힝~올블로그에서 포드캐스팅을 지원한다는 소식을 듣고 Enclosure를 붙여 주는 플러그인이나 만들까 하다가, 뭔가 낌새가 안 좋아서 소스코드를 뒤져 보니 아니나 다를까 저 필드들은 완전히 고정되어 있던 것이었다. orz;
뭐 이런 계기로 안 쓰던 cvs branch까지 써 가면서 파일 포맷 처리하는 부분(backend)만을 완전히 분리하고 있다. 여기를 보시면 현재 작업중인 파일을 볼 수 있는데 (branch라서 일반적인 cvs checkout으로는 안 나오고 태그를 지정해 줘야 나온다) 코드가 상당히 거시기하다는 걸 알 수 있다. -.- 아무튼 새로 제안된 포맷은 다음과 같다. (현재의 포맷과 하위 호환성을 가진다)
Title: 안녕하세요~ Category: 이상한 얘기 Options: NO_TRACKBACK Options: NO_RSS Date: 1111464917 Format: plain Separator: --blahblah-- 잇힝~ 이 글이 전문입니다. 하나 둘 셋 하나 둘 셋 --blahblah-- 이 글은 rss에 표시될 excerpt.잘 보면 몇 가지가 다르다는 걸 알 수 있다.
- 필드의 순서가 고정되어 있지 않고, 새로운 필드를 추가할 수도 있다. (거의 메일 헤더 따라하는 수준이군 -_-)
- 같은 필드 이름이 여러 번 나올 수 있다. 물론 현재 들어 있는 Database.class.php는 이런 경우를 모두 처리한다.
- separator를 지정하고 그 separator를 기준으로 내용을 나눌 수 있다. (위에서는 body와 excerpt를 구분하기 위해 사용했다)
그나저나 이 작업을 하면서 SQLite 등의 RDBMS를 지원하기 위한 것도 생각해 봤는데, 이런 backend랑 현재의 backend랑 같은 방법으로 처리하려니 걸리는 것이 한 두 가지가 아니다.
- 현재 파일 포맷 정의는 여러 곳에 난잡하게-_- 흩어져 있고, 검색 등의 기능은 Soojung.class.php에 들어 있다. 이러한 기능들을 모두 Database.class.php로 옮겨야 한다.
- 뭐 옮기는 것만 하면 괜찮은데 현재의 코드는 추상화가 상당히 힘든 상황이다. 제대로 구현하기 위해서는 RDBMS의 명령들을 간단하게나마 구현해야 하는데 이게 쉬운 일이 아니다.
- backend를 추상화시키면서도 텍스트 DB에서 속도 저하가 일어 나지 않게 하기 위해서는 index의 개념이 필수적이다. 현재 이러한 기능을 담당하는 것은 다름 아닌 데이터 파일의 이름인데, 이런 것들을 일반화시킨다던지 하는 작업이 필요하다.
...생각하는 건 많은데 정작 코드로 나오는 게 별로 없어서 문제지. 아이구.
TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=547
Comment: 토끼군 (2005/03/23 AM 01:25)
klutzy: 추상화가와 별 상관 없습니다. 므겡 :D
Comment: ddt (2005/03/23 AM 09:33)
걸리는 게 있으면 kldp wiki나 soojung projcect 게시판에 올려서 다른 개발자들 얘기도 들어보세요 :)
토끼군 화이팅~ 흐흐
Comment: 백일몽 (2005/03/23 AM 09:34)
저렇게 삽질을 해야 한다면 속 편하게
xml 데이터 포맷으로 가는 것도 좋을것 같은데요. php xml 파서가 후져서 안 좋으려나?
Comment: 토끼군 (2005/03/23 AM 11:07)
ddt: orzorzorzorz
백일몽: 뭐 그것도 한 이유가 되겠죠 -.- 근데 하위 호환성을 유지하려니까 저렇게 확장하는 게 대안이 될 수 밖에 없네요 (라고는 해도 댓글과 트랙백 형식은 이번에 바뀌게 되겠죠.)
Comment: 백일몽 (2005/03/24 PM 09:38)
수정1.0 이라는 대의를 위해서 그냥 판을 엎어보는 것도 좋을것 같은데요.
기존 파일은 변환기 만들어서 바꿔버리면 될테고요.
Comment: 토끼군 (2005/03/24 PM 10:58)
백일몽: 수정 개발자들은 귀차니즘을 증오하는 사람들이라서 변환기도 만들기 귀찮아 할 거에요 ;)
Comment: d3m3vilurr (2005/03/25 AM 04:45)
수정개발자에게 귀차니즘은 증오가 아니라 애호죠;)
Comment: 토끼군 (2005/03/25 AM 04:49)
d3m3vilurr: 아 "귀차니즘"이 아니라 "귀찮은 일"을 증오하는 거죠 =3 (말이 꼬였네;)
Comment: 백일몽 (2005/03/25 PM 11:33)
역시 수정 (-.-)=b
Comment: 토끼군 (2005/03/26 AM 11:37)
백일몽: -.-
Comment: klutzy (2005/03/23 AM 01:24)
추성화라길래 무슨글인가 했더니 추상화(...)