node.js를 이용하여 나의 보팅파워 보기
파이썬의 경우에는 인터렉티브 방식이라 실행할려고 하는 윈도우 시스템에 관련 package가 모두 설치가 되어야 한다. 현재 내가 쓰는 노트북은 사용자 명이 한글이여서 steem-python이 설치가 되지 않아서 사용을 못한다. python으로 만든 소스를 .exe로 만드는 방법이 있다고 하여 방법을 찾고 있으나 아직은 오리무중. 몇몇 개발자가 도와주고 있으니 곧 해결될 것으로 기대하자!!
그렇다고 개발을 멈출 수는 없으니, node.js로 초간단 개후진 인터페이스를 가진 보팅파워를 보여주는 웹 프로그램을 만들어 보았다.
개발을 할려면 node.js, visual studio를 설치하여야 한다. 설치법은 아래 글 참고.
자동으로 보팅하는 봇 만들어 보기 #2
추가로 npm으로 express, moment, body-parser를 설치하여야 한다.
일반인들은 개발까지 필요가 없으니, 간단한 편집기로 수정을 해 가면서 작업을 할 수도 있다. 단 node.js는 설치하여야 한다.
나는 보팅파워를 볼려고 steemd.com에 자주 접속한다. 그런데 오른쪽에 나오는 온갖 transaction 정보 가지고 오느라 시간이 너무 많이 걸린다. 이러다가 성격을 안 좋아 질 것 같아서 voting power만 가져오는 간단한 웹 프로그램을 만들어 보았다.
node.js와 웹프로그램은 처음이라 뻔한 것 하는데도 시간이 많이 걸렸다.
현재까지 만든 기능은 아래와 같다.
명령창에서 server를 실행시킨 후 익스플로러에서 사용자 명을 입력하면 현재 voting power가 출력된다. 또 명령을 내릴려면 http://127.0.0.1:3000/ 를 다시 입력하면 된다.
개인적인 소망으로는 아래와 같이 멋진 UI로 만들고 싶었으나, 이런 건 다음 생애에나 가능할 듯 하다.
이번에 개발한 프로그램은 아래 github에 올려놓았으니, 초보 개발자들은 참고하시기를.
https://github.com/multiwhs/steem-js
사실 이 프로그램의 하이라이트는 보팅파워 계산하는 방법이다.
이 방법을 간단하게 기술한다.
steemDB에는 최근에 보팅한 시간과 그 당시의 보팅파워가 저장되어 있다.
계정의 정보를 얻는 방법은 아래 API를 사용하면 된다. 여기에서 author는 리스트이니 참고.
steem.api.getAccounts(['tradingideas'], function (err, result)
이 함수의 결과 값 중 아래 두 값을 사용한다.
result[0].voting_power // 가장 최근에 보팅하고 난 후의 보팅 파워
result[0].last_vote_time // 가장 최근에 보팅한 시간(UTC 기반)
함수에서 받은 시간은 모두 문자열이므로, 시간 계산을 위해서는 밀리세컨드 단위로 변경하여 처리를 하여야 한다. 이를 위하여 사용할 시간관련 패키지를 선택하여야 한다. node.js는 처음이라 네이년에게 물어보니 moment가 좋다고 하여 사용하였다.
시간처리하는 것이 생각보다 어렵다. timezone에 대한 정확한 이해가 필요하다.
현재 보팅 파워를 구하는 방법은 다음과 같다.
- 최근 보팅파워와 보팅 시간을 가져온다(UTC 시간임을 명시하고 변환하여야 한다.)
- 현재 시간을 가져온다.
- 둘 간의 차이를 초 단위로 구한다.
- 24시간에 20%가 채워진다. 이것을 기준으로 3번에서 구한 초 동안 채워지는 %를 계산한다.
- 최종 보팅파워에 4에서 구한 값을 더 한 후 100 보다 크면 100으로 변경한다.
끝!!
이렇게 간단하것 만드는데 며칠이 걸렸다. 에휴!!
ps. 실행방법 (node.js는 설치되어 있다고 가정)
- 위에 언급한 github에 접속하여 voting-power.zip를 다운받는다.
- unzip한다.
- 명령어창을 띄운다.
- unzip한 곳으로 가서 아래 명령어를 입력한다.
node server.js - 인터넷 익스플로러를 띄운다.
- http://127.0.0.1:3000 입력하고 엔터를 친다.
- 입력창에 id를 @없이 입력한 후 엔터를 누른다.
- 현재 보팅파워가 출력된다.
- 뭔가 문제가 생기면 여기에 댓글을 단다.
UI쪽은 d3.js 로 만들어보시는 것도 좋을 것 같아요! 사용법도 크게 어렵지 않아서 추천드려요
앗 감사합니다. 이런 댓글을 원했습니다.
I like your post.
Thanks for sharing this with us :D
우어 대단하세요.. 완전 신세계네요..저한테는..
이해가 되는 문장이
꼭 만들려는 거 성공하시길 바라겠습니다~~ 가시밭길 그만 가시구 ^^
ㅋㅋㅋ개발자가 UI까지 완벽하면 욕심쟁이아닌가요
오호....
좋네요....파이썬 어려워요 ㅜㅜ
파이썬 .py파일을 .exe실행 파일로 바꾸는 방법은 저같은 경우는
pip3로 pyinstaller를 다운받고 cmd로 해당 파이썬 파일로 이동후
pyinstaller --onefile 원하시는파일.py
이렇게 명령어를 입력해서 실행파일로 만들었습니다만..
원하시는게 이런것인지는 모르겟네요
그렇게 해서 만들어진 .exe를 실행해보니 에러가 납니다.
오! 한번 저도 공부를 해봐야겠네요.
github 자료 잘 볼게요.
내꺼 github 잘 있을려나 로또 통계날려고 예전에 만들었다가 기억도 안나네요.
와우!! node 로 만든 플젝이네요!! 공개 감사드립니다.^^