연구랑 별개로 개발자의 마인드(?)로 갑자기 해보고 싶은 게 생겼는데, "스팀잇에서 나랑 가장 친한 친구는 누구인가?" 를 알 수 있는 그런 싸이트를 하나 만들어보고 싶었습니다. 페이스북에서도 유저 간 상호작용 데이터를 가지고 이런 걸 알려주는 싸이트 (vonvon, funnyapp 등)가 몇몇 있었던 것 같은데요. 스팀잇에서는 제가 아직 못 찾은건지... 뭐 있더라도 제가 따로 만들어보는 것도 재밌을 것 같다고 생각해서, 시작하려고 계획중입니다.
(출처: vonvon)
어차피 현재 본업인 연구를 위해서라도 스팀잇 데이터를 뜯어봐야 하기 때문에 스팀잇 데이터를 얻을 수 있는 API에 대해서도 간간히 살펴보고 있던 중이었는데요. 우선, 제가 쓰기에 가장 쓸만하면서 그나마 문서화가 잘되어 있다고 말할 수 밖에 없는 steem.js (https://github.com/steemit/steem-js) 를 쓰기로 결정했습니다. (steemjs도 사실 문서화는 별로인 편인데... 흠... 다른 것들에 비하면 양반이더라구요)
제가 생각한 아이디어를 steemfriend 👪 라는 이름으로 지었습니다. 도메인 (http://www.steemfriend.com/) 도 사서 빈 장고 프로젝트에 연결은 해놨는데 요즘 할 게 워낙 쌓여 있어서 앞으로도 제대로 할 수 있을지 모르겠습니다. 사실 이 글을 쓴 이유도 일단 한 번 질러보자라는 마음과 사람들 앞에서 이야기 해놓으면 빼도 박도 못하게 될 거(?) 라는 생각에 글을 쓴 것이죠.
우선 기본적인 아이디어는...
- 특정 사용자가 작성한 모든 글들 가져오기,
- 각 사용자의 글에 post / comment 한 글을 가져오기,
- 비중 정책에 따라서 결과를 적절하게 보여주기
의 형태입니다.
마지막 3) 은 무슨 말이냐 하면, 단순히 보팅 퍼센티지의 합 정도로 순위를 매길 것인지? 댓글과 함께 데이터를 같이 본다면 댓글과 보팅 사이에는 몇 대 몇 비율로 비중을 잡아야 하는지 등을 이야기하는 겁니다.
보팅만 따질거라면 보팅 파워 퍼센티지 같은 걸로 쉽게 끝나겠지만 댓글이 들어간다면 그것도 나름 고민해 봐야 하는 부분이니깐요... 우선 지금 아이디어로는 사용자에게 전적으로 맡기는 형태로 (보팅:댓글 비율에 대한 드래그 바 같은 걸 두어서?) 해볼까 생각중입니다. 뭐 어쨌든 지금은 구현된게 아니라 다 구상중인 거니 나중에 바뀔 수도 있겠죠.
지금까지 한 건...
steem.js API를 사용해서 특정 사용자가 작성한 글들에 대한 permlink를 가져오는 걸 우선적으로 구현했습니다. 쉽게 말하자면, 위에서 말한 1단계를 우선 해놓은 것인데요. steem.js에서 포스팅의 세부 정보인 vote / reply 정보를 얻기 위해서는 getContent() 라고 하는 함수를 써야 하는데, 그 함수를 쓰기 위해서는 결국 permlink라는 것이 필요합니다.
steem.api.getContent(author, permlink, function(err, result) {
console.log(err, result);
});
여기서 permlink하면 어려운 게 아니라, 각 글마다 주어진 아이디 같은 것입니다. 예를 들어서 제가 히게선생 먹스팀한 글을 가져와보겠습니다. (@jeongmincha/2ngfyr) 링크를 보시면 @jeongmincha 뒤에 2ngfyr 이라고 하는 값이 있습니다. 이 값이 바로 permlink 인 것이죠. 사용자의 이름과 permlink 가 함께 있으면 어떠한 글이든 지목할 수 있게 되는 것입니다.
사실 아이디어 자체는 아주 단순한건데 API가 워낙 더럽게 되어 있어서 단순한 구현인데도 생각보다 시간이 좀 걸리더군요... 그리고 대학원 오고나서는 개발을 위한 코드보다는 주로 연구를 위한 코드만 작성해서 그런지 또 이쪽(?) 코드 감각이 많이 떨어졌더라구요 😭
왜 항상 사람은 바쁠 때 창의적이게 될까
평소에는 그냥 딩가딩가 노는게 즐겁다가 갑자기 할 일이 많이 생겨나게 되면서 이것저것 하고 싶은게 생겨져 버렸습니다 ㅋㅋㅋ 사람이란 놀때는 확 놀게 되고, 바쁠 때만 꼭 그 바쁜 것 이외에 다른 무언가가 생각나서 해보고 싶은 욕구가 증가하는 거 같아요 ㅋㅋㅋ 지금 steemfriend 프로젝트도 그 욕구를 위한 배출구 중 하나입니다.
글을 마무리하며...
- 지금까지 한 건 없지만, 혹시라도 조금이라도 도움을 주실 분이 있다면 언제든지 환영입니다. 개발적인 부분도 좋고, 디자인적인 부분 (이게 제일 많이 필요한 부분이죠 ㅠㅠ) 도 좋구요 ㅎㅎㅎ
- 꼭 직접적인 관여를 하지 않으셔도 채찍질해주시는 분도 구합니다. 계속 저를 @언급해주시면서 "너 왜 개발 안하냐, 지금 놀고 있는거냐, 이거 안만들거면 글은 왜 썼냐" 이런 질책을 해주시는 것도 환영(?)입니다
- 추가적인/세부적인 아이디어 제공도 더더욱 환영이구요 ㅎㅎㅎ
- 저를 지지할 수 있는 가장 좋은 방법은 Voting / Resteem 입니다.
이쯤해서 정말 글 마무리 하겠습니다. 긴 글 읽어주셔서 감사합니다. 좋은 하루 되세요!