관리 메뉴

꿀맛코딩

비트밋 자동투표 매크로 본문

프로젝트

비트밋 자동투표 매크로

soycrab 2020. 3. 5. 14:02

심심해서 만들었던

수많은 토이 프로젝트 중 

나만 사용하기 아까워서 배포한 녀석이다. 

 

제작 기간은

대략 3 주 퇴근후, 주말 시간을 투자해서 만들었다. 

 

디자인은 뭐 애초에 내가 만든 프로젝트들은 컨셉이


디자인 감각0인 개발자가 만들어낸 투박한 컨셉이라


기대하면 안 된다.

 

기능은 간단하다. 

비트밋에서 서비스하는 투표 기능이 있고, 

해당 투표 기능을 1회 참여할 때마다 1000 BDP를 얻을 수 있다.

해당 포인트는 1/100 비율로 BDT 토큰으로 전환이 가능하며,

언젠가 거래소에 상장 되기를 바라며 모으고 있다. 

 

화면 구성은 아래와 같다. 

 

 

 

 

매크로 메인 화면이다. 

 

로그인, 로그아웃, 공지사항, 남은 시간 

현재 회차 정보, 투표 진행 여부, UP, DOWN 선택 투표,

투표 시작, 정지 기능 정도가 되겠다. 

 

Bitmeet에서 따로 API를 제공하고 있지 않아서,

그냥 웹페이지 분석해서 만들어 연동했다. 

 

이 부분은 언제든 문제가 될 수 있는 부분이어서 

공지사항에 언제든 서비스가 중지될 수 있음을 명시했다. 

 

사용된 기술은 Background에서도 지속적으로  API 통신이 가능하도록 

 Service를 사용했고, OS에서 앱을 메모리에서 지워도 다시 살아나도록 Wake Up을 이용했다.

또한 상태 정보를 공유하기 위해 새로운 Thread를 사용하지 않고 실행했다. 

 

 

다음은 채팅 화면이다. 

 

 

 

원래 목적은 사용자들 간의 소통을 목적으로 만들어 놓았는데, 

이용자가 적다 보니 문의하기 채팅이 되어 버렸다. 

 

화면은 단순해 보이지만 내부적으로 관리자 기능부터 해서 

기억이 안 날정도로 많은 기능들이 내장되어 있다. 

 

대충 정리해보면 

관리자 기능으로는 

 

관리자

공지사항 추가, 수정, 삭제 기능

사용자 채팅 블럭, 삭제 기능 

사용자 계정 채팅 차단, 해제

사용자 계정 블럭, 해제

..... 

또한 해당 명령어들은 모두 실시간으로 반영되며,

사용자 계정 채팅 차단 시 채팅 입력 불가, 

계정 블럭 또한 실시간으로 

사용자를 블럭 시키고 로그아웃 되며, 로그인이 불가능 해진다. 

 

또한 관리자 같은 경우는 OS에 상관없이

텔레그램으로 채팅 관리가 가능하도록

만들었다. 

 

텔레그램 봇방에 채팅 메시지들이 실시간 수신되며 

명령어 및 채팅을 입력해서 채팅방 관리가 가능하다. 

 

 

사용자 

금지어 필터링 

텍스트, 사진 전달 기능 

채팅 신고 

채팅 알림 설정 (알림 내용 숨기기 보이기 설정 가능)

등...

 

로그인은 자체 로그인 기능을 만들까 하다가 

개인 정보 관리가 힘들 것 같아서 

구글 로그인 연동을 사용했다. 

 

회원은 닉네임, 프로필 사진 등 변경이 가능한데 

프로필 사진 같은 경우는 Firebase Storage를 사용해서 

프로필 사진을 저장하고, 

사용자가 프로필 사진을 변경할 경우 기존 프로필 사진을 

key 값을 이용해 제거 

불필요한 이미지들이 남지 않도록 작업해 놓았다. 

대부분 Storage를 사용하는 기능 들은 해당 콘텐츠가 삭제되면 

등록된 이미지도 서버에서 삭제된다. 

채팅도 그러하다. 

데이터 == 돈   항상 명심하자!

 

두서없이 기능을 적다 보니 길이 너무 길어졌다. 

추가적인 기능을 욕심에 이것저것 넣다 보니,

나도 잊어버리는 기능들이 많아져 버렸다. 

 

이제 대충 프로젝트 스펙에 대해 나열하고 마무리해야겠다.

 

형상관리 Git 

 

안드로이드 사용 라이브러리

retrofit2, okhttp3, rxkotlin, ucrop

Firebase : message, config, database, auth, ads, storage

........... 너무 많다. 

 

기본 

서버 Node js (Rest api),

pm2 배포 관리로 관리했는데 정말 편하다 

서버의 한계치까지 자동으로 인스턴스 늘려서 올려주고,

배포도 개발 상용 분리해서 마음껏 테스트 가능하고, 

원하는 데로 스크립트 설정 후 실행하는 게 매력적이다.

또한 인스턴스 추후 인스턴스 추가 및 자동화, 

서버 이전 등을 고려하여 

ORM  은 Sequelize를 사용했다.

미리 디비 관계 및 타입 등을 지정해두고 디폴트 값및 많은 설정 등이 

자동으로 이루어지는 게 너무 편하고 좋았다.  

툭하면 aws 계정 만료로 인해 서버 이전을 했는데 그때마다 득을 많이 봤던 것 같다.

게다가 SQL Injection도 걱정할 필요가 없으니 완전 땡큐다.

 

 

DB Mysql 초당이 아니라 시간당 몇 건이 나올까 말까 이고, 

Nosql 자체를 쓸 서비스 자체가 없기 때문에 오로지 Mysql 만 사용했다.

어쨌거나 관계형 디비는 최소한으로 쓰긴 써야 하니까.... 

 

도메인 호스팅은 후이즈를 이용했다가 비용 때문에 버렸다....

 

스토리지 Firebase Storage

사용하기 정말 편리하다,

게다가 일정 용량만 넘지 않으면 계속해서 무료이니

나 같은 토이 프로젝트 만들기가 취미인 사람에게 얼마나 좋은 서비스인가.

 

채팅

서버 Firebase realtime database

(Firebase Cloud Firestore도 목적에는 맞지 않지만 체험해 보려고 사용했는데 실시간 채팅에 적용하기에는 반응이 살짝 느리다. 2 초 ~ 딜레이 발생 )

스토리지 Firebase Storage

욕 필터링은 매번 Api로 받아올 필요가 없고 자주 업데이트될 항목이 아니어서 

Firebase RemoteConfig를 이용했다. 

이 녀석은 용도가 참 다양해서 매력적이다. 

 

큰일이다.... 아직도 쓰고 싶은 게 산더미인데 

욕심 같아서는 상세 스펙을 모두 다 쓰고 

사용하며 있었던 스토리도 모두 쓰고 싶은데 

그런 건 그냥 추억으로 간직해야겠다. 

이야기가 너무 길어져 버렸다. 

 

오늘은 이만.. 

 

 

반응형

'프로젝트' 카테고리의 다른 글

고르다(명품 최저가 구매 쇼핑) 프로젝트  (0) 2021.01.18
가위 바위 보 게임  (0) 2019.08.27
프렌드샵 2016년  (0) 2017.07.03
레인보우 인식기(2015)  (0) 2017.06.30
리얼라인 인식기,리얼스캔 ver 1(2016년)  (0) 2017.06.30
Comments