Supersett
개발자의 하루
Supersett
Blockchain Dev
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프론트
    • 회사생활
    • 블록체인
    • 프로젝트
      • 창업 프로젝트 (DRF + AWS)
      • Spring 프로젝트
    • [중앙대]멋쟁이 사자처럼
    • 기술서적
    • Problem Solving
      • 알고리즘
    • 일기장
      • 하루 정리
      • 삽질 일기
      • 조급할 때 눌러보기

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Near Scan
  • 자바
  • 취업준비
  • 국비
  • Luniverse
  • 멋쟁이사자처럼 중앙대
  • 멋사 중앙대
  • Near Explorer
  • 블록체인정보가공
  • 신입개발자
  • 니어프로토콜
  • 멋쟁이 사자처럼
  • 멋쟁이 사자처럼 면접
  • 비트코인
  • 블록체인 서버설계
  • 디프만16기
  • 멋쟁이 사자처럼 서류
  • 자바스크립트
  • 구글소셜로그인
  • 국비교육
  • DEPROMEET
  • Multichain API
  • 글리치해커톤
  • 초보개발자
  • 국비지원
  • 컴퓨터학원
  • 면접준비
  • 해커톤
  • java
  • 프로젝트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Supersett

개발자의 하루

[Hackathon] Backend DashBoard is underway👾
블록체인

[Hackathon] Backend DashBoard is underway👾

2023. 5. 14. 19:24
기획이 3번 정도 휙휙 바뀌다 이제 하나로 정리가 되기 시작했다.
잡아둔 대략적인 프로젝트 구조에서 구체적인 api, 코드를 짜야할 시간이다.
효율적이고 효과적으로 남은 5일을 보내기 위해 전체적인 그림을 그리고 하나씩 쳐낼 것이다.

1. 와이어프레임을 토대로 기능 정리


2. 기능을 토대로 DB 작성하기


3. [API 명세] 작성하고, 고려해야 할 사항 정리하기.


4. [API 명세] 우선순위 설정 후, [코드] 구현하기

✅ [DB세팅] Mysql 연결

✅ [User] 지갑 연결 후 로그인 → 해당 정보 DB에 저장 후 JWT 발급 

✅ [User] getUserInfo

🔲 [User] updateUserInfo

public interface UserService {
    public void login(String userAddress);
    public User getUserInfo(String userAddress);
    public void updateUserInfo(String userAddress);
}

✅ [Mypage] getMypageInfo

✅ [Mypage] getMyBoardList

✅ [Mypage] getMyReplyList

→ 이 부분이 진짜 오래 걸렸다 ㅠㅠ 뿌려줘야 할 정보들이 정말 다채롭네..🙄

public interface MypageService {
    public MypageResDTO getMyPageInfo(String userAddress);
    public List<MyboardResDTO> getMyBoardList(String userAddress);
    public List<MyreplyResDTO> getMyReplyList(String userAddress);
}

✅ [Board] createBoard

🔲 [Board] getTopRatedBoardList - QueryDsl 쓸까

✅ [Board] getBoardList

public interface BoardService {
    public void createBoard(String userAddress);
    public Board getBoard(String userAddress);
    public List<Board> getBoardList(String userAddress);
    public List<Board> getTopRatedBoardList(String userAddress);
}

✅ [Reply]

public interface ReplyService {
    public void createReply(String contractAddress, Long boardId, String writerAddress, String content);
}

✅ [Like]

public interface LikeService {
    public String likeOnOff(Long boardId, String userAddress);
}

✅ [Follow]

public interface FollowService {
    public String followOnOff(String followeeAddress, String followerAddress);
}

✅ [Style] getNewbieStyle : 사용자의 최초 로그인 시, newbie 칭호를 발급합니다.

✅ [Style] getStyleList : 개인정보를 수정할때 고를 수 있는 칭호 리스트를 반환합니다.

public interface StyleService {
    public void getNewbieStyle(String userAddress);
    public List<String> getStyleList(String userAddress);
}

✅ [Level System] score에 따른 구간별 레벨 세팅

✅ [Level System] 글쓰기 +10, 댓글쓰기 +5

✅ [Level System] 좋아요 10개 받은 게시글 작성자 +500 (좋아요 취소가 있기에, 한번만 지급될 수 있도록 로직짜기)

public class Leveling {
    public int calculateLevel(int score) {
        if (score <= 1) {
            return 1;
        } else if (score <= 500) {
            return 1 + (score - 1) / 50;
        } else if (score <= 1000) {
            return 11 + (score - 500) / 100;
        } else if (score <= 2000) {
            return 21 + (score - 1000) / 200;
        } else if (score <= 4000) {
            return 31 + (score - 2000) / 400;
        } else if (score <= 8000) {
            return 41 + (score - 4000) / 800;
        } else if (score <= 16000) {
            return 51 + (score - 8000) / 1600;
        } else if (score <= 32000) {
            return 61 + (score - 16000) / 3200;
        } else if (score <= 64000) {
            return 71 + (score - 32000) / 6400;
        } else if (score <= 128000) {
            return 81 + (score - 64000) / 12800;
        } else {
            return 91 + (score - 128000) / 25600;
        }
    }
}

5. 해커톤와서 추가적인 기획 요청이 들어왔습니다. 구현합시다.

✅ [Often Used App] mypage 에 들어가는 통계

→ NFT set, Defi set, Others 3가지 집합을 준비해서 받아온 json 중 app_name 부분을 비교해서 sorting 하고 제일 많이 사용한 dapp 을 top4를 클라이언트에 응답으로 넘겨줍니다.

🤖feature : Often Used App

  • 값 분류 알고리즘
    • 자료구조 중 set을 사용하자
  • 분류된거 db에 저장
    • 🚨발견한 문제점!!!!! 클릭할때마다 똑같은 값들이 전달받고 쌓이면서 새로운 값만 선별해서 추가해야 할텐데 그거에 관한 로직은 따로 고려해야할것같다. 예를 들어 트랜잭션 주소까지 저장해서 일치하는 게 없다면 저장을 한다던가!!!!!(할수있겠네 그러면 usedDapp 속성에 transaction 컬럼이 추가되어야 겠다)
  • 주어진 값들 중 통계를 내서 프론트에 전달

6. 마지막으로 AWS EC2 배포 세팅(spring, mysql)을 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'블록체인' 카테고리의 다른 글

[Digital Signiture] 암호화의 원리🔐  (1) 2023.05.24
[Hackathon] NICO dApp Project (feat. Block Explorer, SBT, Community)  (0) 2023.05.22
[Hackathon] 삽질 일대기😰  (0) 2023.05.11
[Hackathon] Web3 프로젝트 구조 설계에 관한 깊은 고찰🤔  (0) 2023.05.09
[Hackathon] 📚프로젝트 구조화 + 우선순위 설정 (feat. NEAR Protocol)  (0) 2023.05.03
    '블록체인' 카테고리의 다른 글
    • [Digital Signiture] 암호화의 원리🔐
    • [Hackathon] NICO dApp Project (feat. Block Explorer, SBT, Community)
    • [Hackathon] 삽질 일대기😰
    • [Hackathon] Web3 프로젝트 구조 설계에 관한 깊은 고찰🤔
    Supersett
    Supersett
    하루를 돌아보고 공부한 티를 내기 위해 블로그를 만들었습니다.

    티스토리툴바