스팀잇에서 누가 나랑 가장 친할까? 👪 steemfriend 개발시작? 🚀

in #kr7 years ago

연구랑 별개로 개발자의 마인드(?)로 갑자기 해보고 싶은 게 생겼는데, "스팀잇에서 나랑 가장 친한 친구는 누구인가?" 를 알 수 있는 그런 싸이트를 하나 만들어보고 싶었습니다. 페이스북에서도 유저 간 상호작용 데이터를 가지고 이런 걸 알려주는 싸이트 (vonvon, funnyapp 등)가 몇몇 있었던 것 같은데요. 스팀잇에서는 제가 아직 못 찾은건지... 뭐 있더라도 제가 따로 만들어보는 것도 재밌을 것 같다고 생각해서, 시작하려고 계획중입니다.

unnamed.jpg
(출처: vonvon)

어차피 현재 본업인 연구를 위해서라도 스팀잇 데이터를 뜯어봐야 하기 때문에 스팀잇 데이터를 얻을 수 있는 API에 대해서도 간간히 살펴보고 있던 중이었는데요. 우선, 제가 쓰기에 가장 쓸만하면서 그나마 문서화가 잘되어 있다고 말할 수 밖에 없는 steem.js (https://github.com/steemit/steem-js) 를 쓰기로 결정했습니다. (steemjs도 사실 문서화는 별로인 편인데... 흠... 다른 것들에 비하면 양반이더라구요)

제가 생각한 아이디어를 steemfriend 👪 라는 이름으로 지었습니다. 도메인 (http://www.steemfriend.com/) 도 사서 빈 장고 프로젝트에 연결은 해놨는데 요즘 할 게 워낙 쌓여 있어서 앞으로도 제대로 할 수 있을지 모르겠습니다. 사실 이 글을 쓴 이유도 일단 한 번 질러보자라는 마음과 사람들 앞에서 이야기 해놓으면 빼도 박도 못하게 될 거(?) 라는 생각에 글을 쓴 것이죠.

우선 기본적인 아이디어는...

  1. 특정 사용자가 작성한 모든 글들 가져오기,
  2. 각 사용자의 글에 post / comment 한 글을 가져오기,
  3. 비중 정책에 따라서 결과를 적절하게 보여주기
    의 형태입니다.

마지막 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하면 어려운 게 아니라, 각 글마다 주어진 아이디 같은 것입니다. 예를 들어서 제가 히게선생 먹스팀한 글을 가져와보겠습니다. (https://steemit.com/life/@jeongmincha/2ngfyr) 링크를 보시면 @jeongmincha 뒤에 2ngfyr 이라고 하는 값이 있습니다. 이 값이 바로 permlink 인 것이죠. 사용자의 이름과 permlink 가 함께 있으면 어떠한 글이든 지목할 수 있게 되는 것입니다.

사실 아이디어 자체는 아주 단순한건데 API가 워낙 더럽게 되어 있어서 단순한 구현인데도 생각보다 시간이 좀 걸리더군요... 그리고 대학원 오고나서는 개발을 위한 코드보다는 주로 연구를 위한 코드만 작성해서 그런지 또 이쪽(?) 코드 감각이 많이 떨어졌더라구요 😭

왜 항상 사람은 바쁠 때 창의적이게 될까

평소에는 그냥 딩가딩가 노는게 즐겁다가 갑자기 할 일이 많이 생겨나게 되면서 이것저것 하고 싶은게 생겨져 버렸습니다 ㅋㅋㅋ 사람이란 놀때는 확 놀게 되고, 바쁠 때만 꼭 그 바쁜 것 이외에 다른 무언가가 생각나서 해보고 싶은 욕구가 증가하는 거 같아요 ㅋㅋㅋ 지금 steemfriend 프로젝트도 그 욕구를 위한 배출구 중 하나입니다.

글을 마무리하며...

  • 지금까지 한 건 없지만, 혹시라도 조금이라도 도움을 주실 분이 있다면 언제든지 환영입니다. 개발적인 부분도 좋고, 디자인적인 부분 (이게 제일 많이 필요한 부분이죠 ㅠㅠ) 도 좋구요 ㅎㅎㅎ
  • 꼭 직접적인 관여를 하지 않으셔도 채찍질해주시는 분도 구합니다. 계속 저를 @언급해주시면서 "너 왜 개발 안하냐, 지금 놀고 있는거냐, 이거 안만들거면 글은 왜 썼냐" 이런 질책을 해주시는 것도 환영(?)입니다
  • 추가적인/세부적인 아이디어 제공도 더더욱 환영이구요 ㅎㅎㅎ
  • 저를 지지할 수 있는 가장 좋은 방법은 Voting / Resteem 입니다.

이쯤해서 정말 글 마무리 하겠습니다. 긴 글 읽어주셔서 감사합니다. 좋은 하루 되세요!

Sort:  

우와... 잼이있을거 같아요~ 기대됩니다~ 언능 볼수 있었으면 좋겠어요~

정말 도움을 드리고싶네요~~ 좋은기능 이런 개발까지 하시다니!! 제가 도울수 있는 부분은 없지만 계속 응원하겠습니다^^

계속 채찍질(?)해주시고 보팅+리스팀 정도 해주시기만 해도 정말 큰 영광입니다 😘

통계 보기를 좋아해서 재밌게 이용할 것 같습니다. 기대합니다. :-)

하필 바쁠때 더 창의적이 된다는거에 100% 공감입니다 ㅋㅋㅋ 그리고 일단 질러놔야 시작이라도 하는거에도 완전 공감이구요. 재밌는 결과가 기대됩니다. 댓글/팔로우/보팅 했습니다 ^^

감사합니다 :)

화이팅!! ㅋㅋ 같이 열심히 고고

바쁠 때 창의적이게 된다는 말 100% 공감합니다!!! ㅎㅎ

좋은 성과가 있길 바랍니다.

꼭 해야 할 일이 몰릴 때 창의력이 분출된다지요 ㅋㅋㅋ 개발 업데이트 글 올려주세요~~

저도 비슷한 생각을 해봤었는데 아이디어 보태겠습니다.

감사합니다 ㅎㅎㅎ 자주 지켜봐주시고 채찍질 부탁드립니다

제 생각엔 기본적으로 팔로우 팔로잉부터 엮어서 팔로우 관계를 edge로 하고 사용자를 node로
하는 directed graph 만들어야 한다고 봅니다.

아 그래프에 관련된 이야기를 해주셨군요 감사합니다.
계속해서 진척이 될 때마다 조금 더 구체적으로 이야기가 될 수 있을 것 같네요 ㅎㅎ
감사합니다

재밌는 아이디어 입니다. 개인적으로도 만들어보고 싶은 기능이 많이 있는데 개발능력이 없는 것이 너무 안타깝네요. ㅠㅠ

좋은 기능 많이 넣어서 빨리 오픈해주세요. ^^ 써보고 싶습니다.

팔로우 하겠습니다.

해보고 싶은 아이디어 이것 저것 다 말씀해주세요~! 능력+시간이 되는 대로 해보겠습니다

많은 분들이 좋아할 만한 아이템입니다~ 응원 드려요 ^^

관심 감사드립니다!

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.029
BTC 63135.01
ETH 2546.56
USDT 1.00
SBD 2.64