목차

LifeMotif: GMail-based Private Diary System

구글 코드: http://code.google.com/p/lifemotif-desktop/
Git 사용하기: http://rogerdudler.github.io/git-guide/index.ko.html

Desktop

Concept

플랫폼 선택에 있어

LifeMotif는 일단 '오픈(open)'되게 나갈 생각이다. 그러므로 가능한 한 여러 플랫폼을 지원할 수 있도록 만들었으면 좋겠다. 이것은 빌드된 바이너리 뿐만 아니라 소스 코드에도 해당된다. 그러므로 어떤 특정한 플랫폼만 지원하는 기술은 사용하지 않았으면 좋겠다.

C#의 경우 문법적으로도 깔끔하고, 여러 좋은 점이 많지만 Microsoft에 묶여 있다는 인상을 접기 어렵다. 여러 플랫폼을 아우를 수 있는 라이브러리로 Qt가 있으므로 Qt를 사용하고, C++를 사용하도록 하는 것이 좋다고 판단하였다.

OAuth나 이메일 데이터를 가져오는 네트워킹 파트에서는 Python을 사용하는 것이 간결하고 더 효율적인 것으로 생각한다. 또한 네트워크가 아닌 부분 있어 왠만한 부분들은 표준 C++ 기능을 이용하여 Qt를 이용하지 않더라도 큰 문제 없이 동작하도록 하자. Qt를 사용해보니, 상당한 이점이 많으므로 Qt를 주된 라이브러리로 사용하도록 한다. Qt 라이브러리는 많이 사용한 경험이 없어 계속 새로 알아낸 것들은 문서화를 진행하고 있다. 해당 항목은 qt에 기록하도록 하자.

현재 Visual Studio에 많이 의존하여 코드를 작성하였지만 빌드, 배포 보두 여러 플랫폼을 고려하도록 작성하도록 한다.

주요 기능

  1. 인증 기능 (authenticate)
    • Gmail로부터 사용자의 이메일 계정에 접근할 수 있도록 허락받는 기능
    • Gmail 서버로부터 access token, refresh token을 받아 오는 기능
  2. 이메일 리스트 가져오기 (email listing)
    • 이메일 서버로부터 유저가 정한 메일함으로부터 이메일 목록을 가져오는 기능
    • 이메일이 전달된 날짜를 바탕으로 언제 쓰여진 일기인지 파악
  3. 이메일 데이터베이스
    • 이메일을 날짜별로 분류함. GMail은 이메일을 제목을 기반으로 하나의 대화로 묶는 기능이 제공되므로 대화 단위로 데이터베이스를 작성함.
  4. 일기 보기
    • 이메일, 즉 일기 하나를 가져와서 출력하는 기능
    • 이메일 raw data의 파싱이 필요함.

Web

별도의 웹 인터페이스를 만들어서 사용하고 싶기도 하다. 그러므로 이 경우에는 Python django, flask 혹은 PHP 생짜 기반의 웹 인터페이스도 좋고, 별도의 워드프레스 플러그인화 해도 무방할 듯하다.

Django

파이썬을 기반으로 웹프레임워크 생성.

워드프레스 플러그인화

워드프레스 플러그인에서의 기능