[셋팅] mac os에서 aws-cli로 s3 셋팅부터 접근까지

aws-s3는 음.. 클라우드 파일 호스팅을 위한 서비스입니다.

예를 들어, 여러 이미지, 동영상, 음원 등을 이 곳에 저장해놓고, 저장해놓은 이미지를 링크하나로 접근할 수 있습니다.

그리고, 이 aws-s3에 파일들을 쉽게 올리고 지우고 하기 위해 존재하는게 aws-cli입니다.

aws-cli를 셋팅하는 것부터 활용하는것 까지 간단하게 적어봤습니다!!

개발 환경을 맥북으로 바꾸면서 이전에 셋팅해놓은걸 다시 할 필요가 있었습니다.

그리고 유저 셋팅하는것도 바꿔봤습니다.

  • 설치
  • cli에서 유저 셋팅
  • IAM, s3에서 권한 셋팅
  • 접근 확인

이런 과정으로 s3에 파일도 올리고 내리고를 할 수 있습니다.

빈약한 설명이지만, 아래 링크들을 하나씩 참고하시면 하실수 있을거라 믿습니다..

셋팅이 끝나면, aws-s3에 업로드, 다운로드를 할 수 있습니다. 이 내용은 아래 링크를 참고하셔요.

AWS S3를 aws-cli로 관리하자

 

참고한 링크

설치 – https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-macos.html

cli 셋팅 – https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-configure.html

권한 부여 – https://github.com/keithweaver/python-aws-s3/

접근 확인 및 실제 사용 – https://passionbull.net/2019/03/others/aws-cli-for-aws-s3/

소셜로그인과 스팀연동 #2 안드로이드 앱에 적용

안녕하세요. 제이콥입니다.

요즘 이것저것 일끝나고 재밌게 시간을 보내고 있어요. 책도 읽고 개발도하고 운동도하고요.

오늘은 제가 개발중인 앱에 소셜로그인을 적용중인데요. 이부분에 대해 정리해봤습니다.

이 글에서는 대충 이런식으로 동작할 수 있구나.. 그런걸 봐주시면 되겠습니다.

아직 마켓에는 스팀, 비회원 로그인이 업데이트가 안됐습니다! 몇개 버그를 더 수정하고 마켓 업데이트를 할 예정입니다.

다운로드하기 Google Play


1. 지난글 이야기

https://steempeak.com/kr-dev/@jacobyu/2242-summ-about-steem-dapp-with-social-login

지난 글에서는 기존 소셜 로그인 연동 사례에 대해 봤었습니다.

SteemLogin, tokenBB, bukio에 대해 간략하게 소개했었는데요.

저도 소셜로그인을 구현하고있습니다.


2. SEY에 적용

Firebase authentication을 활용해서 구글, 스팀, 익명 로그인을 구현해봤습니다.

이게 글로 잘 설명하려니깐 어렵네요.

구글로 예를 들어보겠습니다.

  1. 로그인을 위해 구글 계정을 선택합니다.
  2. 선택한 계정에 대한 파이어베이스 UID가 생성됩니다. UID는 파이어베이서 auth에 저장됩니다.
  3. 저장된 UID는 영어앱에서 호출 가능하며, 로그아웃을 하지 않는다면 계속 갖고 있습니다.
  4. 이 UID를 활용하여, database에 포인트, 구독 정보 등을 업데이트, 조회합니다.
  5. 앱에서 특정 데이터를 요구할 경우, 값을 반환합니다.

여기서 스팀과 익명 계정도 위의 순서대로 동작합니다. 1번의 경우만 다릅니다.

스팀은 스팀커넥트를 활용하여, 사용자를 확인합니다. 그리고 스팀커넥트에서는 사용자의 아이디, 토큰을 반환합니다.

여기서 사용자의 아이디만 활용해서 파이어베이스 UID를 생성합니다.

다음 과정은 모두 동일합니다.

토큰의 경우 따로 저장하지 않는데, 그 이유는 이 앱에서는 스팀에 보팅이나, 커멘트를 작성하지 않기 때문입니다.

추후, 공유하기 기능을 넣어서 앱 자체에서 포스팅을 할 계획이 생긴다면 그 때는 토큰을 4번에서 저장할 예정입니다.


3. 느낀점? 계획?

이 앱에서는 단순히 계정주인이 맞는지 정도만 확인했습니다.

스팀커넥트가 포스팅키로도 접근 가능하다고 했었던가요? 이걸 한번 확인해봐야겠네요.

포스팅키로 스팀커넥트 토큰을 만들고,

토큰을 파이어베이스 데이터베이스에 저장하는 방식으로요.

그 후, 포스팅 공유기능을 넣어서 영어공부 오늘도 했다! 뭐 이런걸 넣어보고 싶어요.


감사합니다.

[조사] 소셜로그인과 스팀연동

어제 tokenBB 글들을 보고 생각이 들었던게 몇 개 있는데요.

https://steempeak.com/@glory7/smt

https://steempeak.com/kr/@blockchainstudio/smt-vs-steem-engine-6-scotbot-tokenbb-and-nitrous

  1. 스팀과 소셜 로그인 연동한 서비스가 뭐가 있지?
  2. 스팀과 소셜 로그인 연동 어떤식으로 하면 되는걸까?
  3. 직접 구현할 수 있을까? 가져다 쓸 수 있을까?

그런걸 생각해봅니다.

1. 기존 소셜 로그인 연동 사례

SteemLogin, tokenBB, 북이오 3개정도가 괜찮더군요.

3개에 대해 제가 이해한대로 설명을 해볼게요.


SteemLogin

https://steempeak.com/utopian-io/@steemlogin/steemlogin-a-new-and-easy-way-to-sign-in-to-steem

찾아보니 스팀로그인이라고 소셜 로그인과 스팀을 연동시켜주는 서비스가 있었습니다.

steem posting key와 firebase의 소셜 계정 인증과 연결을 해서,

한번 등록만 해놓으면 소셜계정으로 포스팅키에 접근해서 포스팅도 하고 보팅도 할 수 있게요.

이부분은 스팀커넥트처럼 앱에 적용할 수 있게 해놨는데, 테스트 해봐야겠습니다.

토큰bb

직접 사용해보시는게 빠르실 것 같습니다!

https://test.tokenbb.io/

https://monsters.tokenbb.io/

https://steempeak.com/@glory7/smt

토큰 BB는 buildTeam에서 만들었습니다.

이 로그인 방식을 써드파티앱에서 사용가능한지 빌드팀에 물어봤습니다.

아직 스팀커넥트, 키체인처럼 다른 써드파티앱에서는 사용할 수는 없지만, 추후 제공할 수도 있다. 답변을 들었습니다.

북이오 (bukio)

북이오도 예전부터 스팀을 연동하는 부분을 해왔습니다.

소셜 로그인 한 후, 리워드 계정으로 연결 할 수 있게 해놨습니다.

바로 스팀으로 로그인도 가능하고요.

 

2. 스팀, 소셜로그인 연동 방식

연동 방식은 이렇지 않을까 싶어서 끄적끄적 해봤습니다.

연동 절차

  1. 스팀 기반 앱에서 구글로 로그인
  2. 스팀 연동을 안할경우, 구글 고유키와 공동계정에 연결
    1. 댓글, 보팅 가능
  3. 스팀 연동을 할 경우, 구글 고유키와 개인계정에 연결
    1. 댓들, 보팅 가능
    2. 어떤 앱이든 구글로 로그인해도 스팀글 작성 가능

보안문제

  • 구글에 맡긴다.
  • 파이어베이스의 파이어스토어 활용
  • 자신의 계정에 대해서만 접근 가능하게한다.

신뢰문제

  • 스팀커넥트에게 맡긴다.
  • 서비스가 해킹당할 시, 로그인 토큰 회수 가능

 

3. 직접 구현할 수 있을까? 가져다 쓸 수 있을까?

직접 구현한다면

스팀로그인에서 했던 방식대로 (파이어베이스 로그인 인증, 파이어스토어로 데이터 저장) 구현을 해보면 되지 않을까 싶습니다.

제가 이해한 스팀로그인의 인증 방식은 2번에서 그린 그림입니다.

이미 구현된 것을 활용

buildteam에서 tokenBB에 적용한 것 처럼, 다른 앱에서도 사용할 수 있게 서비스를 배포한다면 그것도 사용해볼 수 있을 것 같습니다.

아니면 스팀로그인을 써보는 것도 괜찮은 것 같습니다!

https://steempeak.com/utopian-io/@steemlogin/steemlogin-a-new-and-easy-way-to-sign-in-to-steem

 

감사합니다!

 

[소개] Steem-engine 용어

오늘은 스팀엔진이 나오고 여러 용어가 나왔는데요.

steem-engine, steem-engine token, SCOT, SCOT-BOT, Nitrous

너무 헷갈립니다. 그래서 한 번 찾아서 제가 이해한대로 정리해봤습니다.

aggroed가 nitrous를 소개하면서 scot, scotbot에 대해 소개했는데요.

이 글을 같이 봐봅시다.

혹시 제가 글을 잘못 이해한게 있다면 알려주세요. 수정하겠습니다.

https://steempeak.com/steem-engine/@aggroed/introducing-nitrous-to-supercharge-your-steem-engine-community


Scot

Scot stands for smart contract organizational token.

Scot은 Smart Contract Organizational Token의 약자입니다. 그리고 우리가 잘 알고 있는 steem-engine의 토큰들을 Scot이라고 생각하시면 될 것 같습니다. JJM, MINI, WEED 모두 Scot입니다.

다시말하면 Scot은 steem-engine의 토큰입니다. JJM, MINI, WEED.


Scotbot

Scotbot; Community Tokens with proof of brain distribution– If you’re looking to distribute Scot similar to Steem then your options are Scotbot or wait for SMTs! We will support SMTs too, but they don’t exist yet. So, if you want to start now Scotbot is your only option.

Scotbot is a python voting bot that holger80 built that utilizes design specs of the SMT white paper.

Scotbot이 나오기 전에는 Scot은 스팀 기반의 거래가 될 수 있는 토큰이였습니다.

하지만, 스팀엔진은 Scot을 스테이킹을 할 수 있게 했고, Scotbot이란 걸 통해서 Scot을 Steem처럼 분배할 수 있게 했습니다.

Scot을 스테이킹한 사람들이 특정 글에 보팅을 하면 Scotbot이 design specs of the SMT white paper에 따라 계산을 잘 해서 Payout될 때 Scot을 받을 수 있도록 했습니다.

그리고 Scotbot은 파이썬 보팅 봇으로, 아래의 scotbot manual에 따라 동작합니다. 특정 태그의 포스팅을 체크를 할 것이며, 그 포스팅이 몇명의 Scot 홀더들에게 보팅이 됐는지, 그 홀더들이 Scot을 얼마나 스테이킹했는지 등등을 체크하는 것 같습니다.

https://steempeak.com/steem-engine/@holger80/scotbot-parameter-manual

코드는 공개돼있지않습니다.

공개하지 않겠다는 설명을 어디선가 읽었는데 어떤포스팅인지 기억이 안납니다.

요약하자면, Scotbot 덕분에 Steem의 보팅 시스템이 Scot에 적용됐습니다.


Nitrous

Nitrous is your own custom website for your own custom coin with it’s own custom distribution!

Nitrous는 Steemcoinpan, Weedcash같은 사이트를 말합니다. 위에서 설명한 Scotbot이 “열심히 계산하고 각 포스팅마다 받아야 할 Scot을 계산 합니다. 그러면 Nitrous 사이트에서 계산한 것을 쉽게 볼 수 있도록 해줍니다.

image.png


요약

Nitrous와 Scotbot이 나옴으로써 Scot (JJM, WEED)와 같은 토큰을 활용한 스팀잇 같은 싸이트를 개인이 제공할 수 있게됐습니다.

그러므로, 자기가 원하는 커뮤니티를 만들 수 있고요. 그리고 사람들이 서로 보팅도 하면서 토큰도 만들고요.

스팀처럼요.

감사합니다.

[소개] Holder Monitoring & Auto Voting tool

안녕하세요. 제이콥입니다.

스팀엔진 토큰 운영자를 위한 Auto Holder Monitoring & Voting Tool을 소개해봅니다.

제가 만들고 있는 툴인데요. 아직 좋은 이름을 못정했습니다. ㅎㅎ

Auto Holder Monitoring & Voting Tool라고 부르겠습니다.

Auto Holder Monitoring & Voting Tool는 자동으로 홀더리스트를 업데이트합니다.

그리고 운영자가 설정한 룰을 바탕으로 홀더리스트에게 보팅을 해줍니다.

Auto Holder Monitoring & Voting Tool는 현재 JJM 토큰에서 안정적으로 사용하고 있습니다.


툴 소개

https://passionbull.github.io/jjm/

이 툴은 홀더리스트 페이지와 보팅 페이지로 구성돼있습니다.

그리고 아래의 기능들을 제공합니다.

  1. 스팀커넥트 로그인
  2. 토큰 정보 & 홀더 정보 조회
  3. 업데이트된 홀더에게 보팅
  4. 보팅 시, 원하는 댓글 추가 가능
  5. 보팅 내역 조회

image.png

개발 계획

  1. 스팀커넥트 로그인
  2. 토큰 정보 & 홀더 정보 조회
  3. 업데이트된 홀더에게 보팅
  4. 보팅 시, 원하는 댓글 추가 가능
  5. 보팅 내역 조회
  6. 코드 최적화
    1. 속도 개선
    2. 라우팅 문제 해결
    3. redux or mobx 적용
    4. 배포 자동화

판매 계획

이 툴은 JJM의 보팅 자동화를 위해 개발됐습니다.

개발이 어느정도 되다보니 다른 토큰 운영자님들도 사용할만한 툴이 된 것 같습니다.

이 툴을 사용하고 싶은 운영자님이 계시다면, 서비스에 맞게 수정해서 툴을 제공해드리겠습니다.

제가 제공할 수 있는 것은 아래입니다.

  1. 관리자 웹페이지/서버 제공
  2. 운영자 요구에 따른 조건/ 룰 추가
  3. 버그 및 문제 상황 발생 시, 문제 해결

 

Google Cloud Firestore 라이브러리 활용기 #2

cloud firestore를 활용하는 방법은 2가지 있다고 말했었는데요.

https://steempeak.com/kr-dev/@jacobyu/2113-how-to-use-google-firestore

그중에 REST API로 cloud firestore 활용하는 부분을 간단히 소개해봅니다.

Firestore에서 collection, document를 만들어 놓으면, 만든 collection, document에 접근할 수 있는 rest api가 자동으로 만들어집니다.

REST API로 뭘 할수있냐면 간단한 crud작업을 할 수 있습니다.

다큐먼트를 만들고, 읽고 업데이트하고 지울수 있습니다.


Get all

https://firestore.googleapis.com/v1beta1/projects/{project_name}/databases/(default)/documents/test

  • get 요청
  • 이 url은 test에 있는 모든 document를 읽기를 요청합니다.

Get account

https://firestore.googleapis.com/v1beta1/projects/{project_name}/databases/(default)/documents/test/jacobyu

  • get 요청
  • 이 url은 test에 있는 jacobyu 문서를 읽기를 요청합니다.

Add account

https://firestore.googleapis.com/v1beta1/projects/{project_name}/databases/(default)/documents/test?documentId=makeahabit

Json body

{
“fields”: {
“point”: {
“integerValue”: “0”
},
“posting”: {
“integerValue”: “0”
}
}
}

  • post 요청
  • 이 url은 test에다가 makeahabit이라는 다큐먼트 생성을 요청합니다.

Update account

https://firestore.googleapis.com/v1beta1/projects/jacob-test-d826e/databases/(default)/documents/test/jacobyu?updateMask.fieldPaths=posting&updateMask.fieldPaths=point

Json body

{
“fields”: {
“point”: {
“integerValue”: “5”
},
“posting”: {
“integerValue”: “5”
}
}
}

  • PATCH 요청
  • 이 url은 jacobyu의 field postingpoint 내용 수정을 요청합니다.

참고

https://cloud.google.com/firestore/docs/reference/rest/v1/Value

https://firebase.google.com/docs/firestore/reference/rest/?hl=ko

Google Cloud Firestore 라이브러리 활용기

Google cloud firestore에 대한 이미지 검색결과

Cloud Firestore

Cloud Firestore is a fast, fully managed, serverless, cloud-native NoSQL document database that simplifies storing, syncing, and querying data for your mobile, web, and IoT apps at global scale. Its client libraries provide live synchronization and offline support, while its security features and integrations with Firebase and Google Cloud Platform (GCP) accelerate building truly serverless apps.

Google에서 서비스하고 있는 Cloud Firestore에 대해 소개합니다.

Cloud Firestore는 cloud, serverless, NoSQL 데이터베이스입니다.

여러 특징들이 있는데

  • 확장성. 동시 접속이 많아지면 알아서 확장이 된다고 합니다.
  • 보안.
  • 사용자는 로직, 데이터만 고민하면 됩니다.

활용방법

활용 방법은 크게 2가지입니다.

1번. 각 클라이언트에 맞는 라이브러리를 사용하는 것, 그리고 2번. firestore를 활용한 restAPI 서버 구성입니다.

1번. 클라이언트에 맞는 라이브러리

1번 방법은 쉽게 firestore를 사용해볼 수 있으나, 클라이언트 플랫폼이 달라질때마다 그에 맞는 라이브러리를 찾아 써야합니다.

예를 들어, 안드로이드에서 firestore를 사용할 때와 아이폰에서 firestore를 사용할 때 코드가 좀 다르죠.

그리고 firestore에 종속된 코드라서 추후 아마존, 자체서버로 서버를 옮길 경우, 다시 코드를 짜야하죠.

2번. Firestore를 활용한 restAPI 서버

2번 방법은 restAPI를 한 번 구성해놓으면 어떤 플랫폼이든 기존에 rest api 요청하는 코드를 그대로 활용할 수 있습니다.

그리고 아마존, 자체 서버로 옮겨도 그대로 코드를 사용할 수 있죠.

2번 방법은 직접 사용해보고 더 적어보겠습니다.


1번 방법, JJM page에서 활용

보팅 히스토리 부분에서 firestore를 활용해봤습니다.

JJM 보팅을 할 때마다, 보팅 히스토리에 기록합니다.

그리고 그 기록들을 볼 수 있도록 해봤습니다.

이를 위해서 필요한건 딱 2개의 함수만 있으면 됩니다.

쓰기와 읽기죠.

아래처럼 history에 보팅 rate와 보팅을 한 날짜를 add합니다. 이부분이 쓰는 부분입니다.

db.collection("history").add({
rate: _rate,
date: _date
});

이 부분은 history에 담긴 document를 읽어오는 부분입니다.

시간 순서대로 10개만 읽어봤습니다.

db.collection("history").orderBy("date","desc").limit(10)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());


느낀점

서버를 잘 몰라도 서버가 필요한 서비스를 제공할 수 있습니다.

단, Firestore의 무료할당량을 초과하면 돈을 내야합니다.

무료할당량을 초과할정도면 돈을 벌 수 있는 서비스이지 않을까?? 생각해봅니다.

읽어주셔서 감사합니다!!!


참고

https://firebase.google.com/docs/firestore/use-rest-api?hl=ko

https://firebase.google.com/docs/database/rtdb-vs-firestore?hl=ko

https://medium.com/get-it-working/get-googles-firestore-working-with-react-c78f198d2364

[JJM Holders] Material UI 적용

안녕하세요.

JJM holders UI에 material ui를 적용해봤습니다.

기존의 사용하던 text, table, button 등을 이미 material style의 text, table, button등으로 바꾸는 작업을 해봤습니다.

기존의 기능은 그대로 유지하면서 페이지를 분리해봤습니다.

  • 스팀 로그인 (네비 바)
  • 홀더 페이지
  • 보팅 페이지

https://passionbull.github.io/jjm/ 에 접속하시면 확인할 수 있습니다.

 

https://ipfs.busy.org/ipfs/QmUpqJZt6jmeCSSGZ8rV67wVwqCeme32XG4evXB8Dr4PbN)DBsWRjz2P

https://ipfs.busy.org/ipfs/QmQYurDsw91hYdLwDo2xiXTWcvBdESPt87dtLqchKsYUfx


Material design에 대한 설명을 가져와봤습니다.

https://material-ui.com/premium-themes/

https://material.io/design/introduction/#principles

https://medium.com/beginners-guide-to-mobile-web-development/a-guide-to-google-material-design-977315149ea5

Material Design is a visual language that synthesizes the classic principles of good design with the innovation of technology and science.

Google named it as material design ( codenamed as “Quantum Paper”) and introduced it in 2014 Google I/O conference.

Google’s Material Design considers “material” as a homogeneous digital fabric in which the material responds according to the user interaction . It provides the certain design standards for developing application across android , web and ios devices.

 


과정

UI를 바꾸는 과정은 생각보다 쉬웠습니다.

먼저 가장 좋은 템플릿을 찾아봤습니다.

https://material-ui.com/premium-themes/

이 사이트에서 무료로 공개된 템플릿 중에 material-dashboard-react라는 것을 활용했습니다.

https://www.creative-tim.com/product/material-dashboard-react?partner=104080

이 템플릿에서 제가 필요한 부분을 사용하고 사용하지 않는부분을 빼면서 작업했습니다.

크게 admin.jsx에 sidebar, navbar, main page, bottom bar로 구성되어있습니다.

UI 구성에는 어려움이 적었습니다. 원하는 UI 구성요소가 이미 있어서 편했습니다.

 


어려웠던 점 & 개선할 점

github page에서 route관련 문제

https://passionbull.github.io/jjm/ 이 route page인데 https://passionbull.github.io/jjm/voting으로는 바로 접속을 못합니다.

접속을 못하는 이유는 github에서는 /jjm/voting을 다른 호스팅으로 생각을 해서 그런가? 싶습니다.

아마 서버에서 호스팅한다면 이런 문제는 없을것 같긴 합니다.

이 문제는 router 쪽 코드에서 파라미터로 이동할 페이지의 이름을 받아서 이동하면 될까? 싶습니다. 개선해야합니다.

스팀 라이브러리 & 네트워크 문제

Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR

홀더들에게 보팅을 하기 위해서는 언제 보팅을 받았고, 최신 글이 뭔지 확인해야합니다. 이 과정에서 정보들을 가져오는데 시간이 걸립니다.

거기다가 스팀에서 계정 정보, 포스팅정보를 가져올 때 에러가 날 경우가 있습니다. 그럴 경우, 몇 개의 계정은 누락될 수 있습니다. 제 핸드폰에서는 잘 되는데, 노트북에서는 에러가 날 때가 있더군요.

해결 방안으로 몇가지 생각하고 있는데

  1. 여러번 로드를 합니다.

  2. 이 부분은 따로 미리미리 서버에서 계정들의 포스팅 정보를 로드해놓는 것이 유용할 것 같습니다.

  3. 다른 방법으로 dsteem 라이브러리를 사용해볼까합니다.

서버비용 없이 서비스 만들기

최대한 서버없이, 관리비용없이 웹페이지를 만들어보고 있습니다.

많은 사용자가 사용하지 않을 것 같아서 github page이면 충분하지 않을까 생각합니다.

그 외에 aws-s3를 사용하긴 했습니다. aws-s3는 스토리지 저장소로, 이미지, 텍스트를 저장해놓을 수 있습니다. 이 스토리지에 보팅할 메시지를 저장해놓고, 보팅을 할 때 이 메시지들을 가져와서 댓글을 작성합니다.

작성될 메시지를 수정하고 싶다면 코드를 수정하지 않고 스토리지 저장소의 보팅 메시지만 수정하면 보팅할때 작성할 메시지를 변경할 수 있습니다.

스테이트 관리

state 관리를 잘 해야겠다. 그리고 코드 분리, 기능과 ui를 분리해보는 것, 설계 등에 더 노력해야겠다 생각하고있습니다. mobx를 공부해서 적용해 볼 예정입니다.


관리자 페이지 개발 계획

  1. 홀더 정보 보여주기
  2. 스팀커넥트 로그인
  3. 보팅 자동화 with 댓글
  4. 보팅할 떄 작성할 댓글을 원격에서 수정
  5. UI 업데이트
  6. 배당 자동화

 

웹 개발을 해보면서 부족함을 많이 느낍니다. ㅜㅜ

앞으로 공부하면서 발전시키도록 하겠습니다.

감사합니다.

[JJM Holders] 자동보팅 툴 – 자동 댓글

안녕하세요. 제이콥입니다. JJM 홀더 페이지를 만들고 있습니다.

개발하고 있는 부분을 공유합니다.

보팅을 할 때 미리 정해진 댓글 달기 기능을 개발 중입니다.

그리고 필터링 부분에 실수가 있어 수정하였습니다.

이제는 JJM이 보팅을 할 때 댓글을 남길 수 있게됐습니다!!­

image.png

 


버그 수정된 부분

자동 보팅 툴 지난버젼에서 실수가 있었습니다. ‘jjm’ 태그의 사용 여부 필터링을 제대로 체크못했습니다.

위의 3개는 지켰으나, 중요한 조건 중에 하나인 ‘jjm’ 태그 여부를 빼먹었습니다.

그래서, 지금까지의 보팅은 홀더가 7일 이내 글을 썻다면 ‘jjm’여부와 관계없이 제일 최신 글에 됐습니다.

이번에 ‘jjm’ 태그 필터링을 넣음으로, 원래 보팅룰을 지킬 수 있게됐습니다.

몇 개 글을 체크해봤을때, 모두 jjm이 들어가 있어서, ‘jjm’ 태그의 사용 여부를 넣다고 생각했습니다.

다음에는 이런 실수를 빨리 해결하거나 미연의 방지할 수 있도록 노력하겠습니다.


JJM 필터링

jjm의 필터링은 아래의 과정으로 이뤄집니다.

스팀에 작성된 글에는 언제 작성하였는지, 몇 명이 보팅하였는지, 베너피셔리는 있는지, 태그는 어떤 것을 사용했는지 등등.

많은 정보가 포함되어 있습니다.

저는 여기서 json_meta의 tags정보를 활용하여 이 태그들 중에 ‘jjm’이 있는지 확인합니다.

image.png


자동 댓글 작성

댓글 작성은 지금까지 구현을 해놓은 게 있어서 편했습니다.

보팅을 하는 함수에서 추가적으로 댓글을 다는 부분을 붙였습니다.

하지만 코드에다가 댓글내용을 픽스해 놓을 경우, 넣고싶은 댓글이 달라질때마다 코드를 수정해야하는 일이 생깁니다.

그래서, 댓글의 내용은 제 서버에 간단한 API 서버에 저장할 예정입니다. 이렇게 하면, 넣고 싶은 댓글을 언제든지 수정 가능합니다.

현재는 코드에 댓글 내용을 적어놨지만, 빠른 시일 내에 서버 관련 부분을 개발할 계획입니다. (이 부분은 공부해놓은게 있어서 금방 할 것 같습니다.)


JJM 보팅 룰대로 보팅이 안되고 있다거나, 문제가 있는 경우 언제든지 말씀해주세요!

감사합니다.

[JJM Holders] 자동보팅 툴, 개발 과정

안녕하세요. 제이콥입니다.

JJM 홀더 페이지를 만들고 있습니다.

이번에는 자동보팅 기능을 넣어봤습니다.

https://passionbull.github.io/jjm-list/

image.png


과정은 이렇습니다.

  1. 프로그램이 실행되는 시간 -7일 이내 각 홀더의 글들을 찾습니다.
  2. 프로그램을 실행시키는 시간 – 1일 이내 ‘virus707’의 계정으로 보팅이 됐는지 확인합니다.
    1. 보팅이 돼있다면, 이미 JJM보팅을 받은것으로 취급합니다.
  3. 필터링합니다.
    1. 7일 이내  JJM태그를 붙여 글을 썻다.
    2. 보팅이 안됐다.
    3. JJM 보유량에 따라 정렬한다.
  4. 스팀커넥트로 계정을 연결합니다.
  5. 보팅 퍼센트대로 보팅합니다.

한번 테스트 해보겠습니다.

지금 웨이팅 리스트를 뽑아보니,

3월31일 오전 6시 14분 이후 글을 썼지만 보팅이 안된 리스트입니다.

image.png

테스트를 하기 위해, 제 계정으로 보팅을 해봤습니다.

잘 되는것 같습니다!


문제점

유저들의 정보를 가져오는데 오래걸립니다.

각 유저마다 7일 이내의 글에 보팅이 있었는지 확인하기 위해 재귀호출을 합니다.

서버를 하나 두고, 미리 작업을 한 후, 웹페이지에서 요청할 때 값을 주는 식으로 하면 좀더 빠르게 할 수 있겠다 생각했습니다.

아니면, steem db를 사용하면 좀 더 빠르게 데이터를 가져올 수 있지 않을까 생각했습니다.

보팅을 하는데도 꽤 오래걸립니다.

steemConnect를 활용해서 보팅을 하는데, 한번에 여러개 보팅을 못합니다.

그래서 보팅이 끝나고 다음 보팅을 할 수 있도록 해봤습니다.


JJM Holders 개발 계획

  1. 리액트로 변경, UI 개선

  2. 자동 배당 툴 기능 추가


참고

스팀 자바스크립트 라이브러리

스팀포스팅 재귀함수

자바스크립트 날짜 계산

react-native flatlist의 리랜더링

리액트 메테리얼 ui

리액트 ui 라이브러리 리스트

 

혹시 잘못표기된게 있거나 궁금한것, 제안, 조언, 버그 발견 등등 편하게 말해주세요.

감사합니다!