N빵 날리미

이거 접었다.

나혼자 가끔씩 쓰고 있었는데 언젠가부터 Facebook API가 바뀌었는지 안된다.

뭐 실제 금융서비스랑 연계한 서비스들이 많이 나왔으니…개선할 필요를 잘 못느끼겠더라.

끝.


nbbang

1. 왜 개발했나?

N빵 계산이 귀찮아서. (계산이 귀찮아서 그냥 만들었는데 사실 평생 계산할 시간보다 더 많이 들었다)

친구들과 모임을 종종하게 되는데 여럿이 모인 경우 N돌이 한 사람을 정하고 그 사람이 대표로 모든 결제를 진행한다. N돌이는 그 다음날 혹은 며칠 뒤에 본인이 결제한 건들에 대한 내역과 입금 계좌를 알려주곤 하는데 여기에서 약간 귀찮은 문제가 발생한다.

우선은 모든 인원이 함께 움직이지 않을 때가 많다는 것이다. 예를 들어 4명이 모이기로 했는데 4명이 한꺼번에 와서 마지막까지 모두가 함께 있는 것이 아니라 2명 정도는 먼저 오고 그 중에 한 명은 중간에 간다거나 하는 일이 생기게 되는데 이런 경우 계산하기가 번거로워진다. 게다가 어느 정도의 투명성을 보장해야 하기 때문에 복잡한 상황이 될 수록 메세지로 보내야 하는 내용들이 늘어나게 된다. 보통 1차엔 누구누구가 왔었고, 2차엔 누구누구가 함께 했으며, 그 중에 누구는 집에 가버렸기 때문에 3차에는 누구누구가 있었으며 그래서 각자 내야할 돈은 A 얼마, B 얼마 이런 식이 된다. 메세지 입력 자체도 귀찮은 일이 되어버린다.

하지만 N돌이 입장에서는 귀찮아도 적당히 성의껏 보낼 수 밖에 없는게 본인의 돈으로 선결제가 되었기 때문이다. 여기에서 두번째 문제가 발생한다. N돌이는 본인 돈이 이미 들어가있는 상태이지만 친구들에게 돌려받을 수 있는 길은 요원하다. 그들이 입금을 해줘야 받을 수 있는건데 늦게 입금되는 경우, 또 그 금액이 얼마 되지 않는 경우 독촉하기가 뭐한 경우가 발생한다. 사실 이 문제는 아직도 N빵 날리미만으로는 해결하기가 어렵기 때문에 고민하는 중이다.

2. 기능

(1) Facebook login / 친구 리스트 받아오기

(2) Drag & drop으로 친구 추가

(3) N빵 계산

(4) Facebook 메세지 전송

3. 사용한 기술 또는 open source

(1) Spring framework

향후 사용자 관리 등의 여러 기능들이 추가될 수 있고 복잡해질 수 있어서 spring 선택. 사실 연습의 목적이 더 강하다.

(2) Bootstrap

혼자 해야하니 선택할 수 밖에 없었다. 과거에도 bootstrap으로 꽤 효과를 본 적이 있어서 안심하고 선택했는데 그래도 어렵다. 디자인이란건. Bootstrap과 더불어 theme도 2개 사용했다.

(3) JQuery / AJAX

몇 개 action에 따른 기능 구현과 HTTP request를 위해 사용함. 역시 연습의 목적이 더 크다.

(4) Facebook graph API

로그인 및 친구 리스트를 받아오기 위해 사용했는데 기본적인 몇 개 scope만 적용했다.

(5) Facebook chat API / smack

Facebook으로 메세지를 전송하기 위해 chat API를 사용했는데 (사실 이 부분은 얘기할 게 많지만), chat은 XMPP를 구현해야 해서 이미 구현된 client library인 smack을 가져다 썼다. Smack이 그나마 여러 library 중에는 잘 만들어져 있기는 한데 버전에 따라 문제가 발생하거나 버그로 보이는 것도 있었다. 관련된 내용은 google에서 검색해보면 여럿 나온다.

4. 향후 추가할 기능

(1) 친구 검색

현재는 친구 리스트를 스크롤해서 하나하나 drag 해줘야 하는데 여간 불편한게 아니다. 그래서 검색 기능을 넣을 생각을 하고 있다.

(2) 날짜 추가

현재 날짜 정보가 없어서 오해의 여지가 있다. 추가할 생각.

(3) History 관리

일회성에 그치는게 아니라 과거 기록을 확인할 수 있도록 할 예정이다. 이게 되려면 사용자 관리도 추가되어야 한다.

(4) 기타

생각하고 있는 여러가지 기능들이 있는데 고민해보고 꼭 필요하거나 재미있을 것 같은 것만 추가할 예정.

불편한 점이나 필요한 기능은 아래 댓글로 달아주세요.

2 Comments

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.