Skip to content

22.04.05

Jaehong Choe edited this page Apr 15, 2022 · 2 revisions

22.04.05

프로젝트 회의


로그 페이징 처리

  • 백엔드에서 한번에 보여줄 로그 개수 정보를 안드로이드 팀에 알려주도록 함.

단말 정보

  • author by {클라이언트 기기 정보}
    • 요청 헤더에 들어온 클라이언트 정보를 꺼내서 응답 시 같이 내려주기.
    • request-header 의 user-agent 를 통하여 iOS, AOS, Web 구분 가능

백엔드 진행 현황


AWS EC2에 MySQL 서버 구동 및 테스트 완료.

  • 스키마

    • varchar size는 카드 출력 테스트 후 결정.
    • 클라이언트에서 카드 정보를 enum 순서대로 정렬된 데이터를 가져올 수 있다.
    drop table if exists card;
    drop table if exists member;
    drop table if exists log;
    
    CREATE TABLE member (
      user_id varchar(255) PRIMARY KEY,
      username varchar(255) NOT NULL,
      password varchar(255) NOT NULL
    );
    
    CREATE TABLE card (
      id int PRIMARY KEY AUTO_INCREMENT,
      title varchar(255) NOT NULL,
      content varchar(255) NOT NULL,
      section enum('todo', 'doing', 'done') NOT NULL,
      user_id varchar(255) NOT NULL,
      FOREIGN KEY (user_id)
            REFERENCES member (user_id)
            ON DELETE CASCADE
    );
    
    CREATE TABLE log (
      id int PRIMARY KEY AUTO_INCREMENT,
      user_id varchar(255) NOT NULL,
      event enum('create', 'move', 'delete') NOT NULL,
      log_time dateTime NOT NULL,
      FOREIGN KEY (user_id)
            REFERENCES member (user_id)
            ON DELETE CASCADE
    );
  • 다이어그램

    image

  • 서버 구동 과정

    AWS

    • 데이터베이스와 EC2를 같은 인스턴스를 써야 하는데, 메모리가 작아서 빌드가 잘 안 돌아갈 거다. 어떻게 해결할지 고민해볼 것. RDS 사용 x

    • 서버 용량 8기가

      • 용량 부족? X
        • 이미지 서버는 S3(오브젝트 스토리지)를 따로 사용.
    • 22번 포트로 오는 SSH 프로토콜을 허용하겠다.

      • 기본적으로 22번 포트만 열려있고 나머지는 닫혀있는 상태.

      image

    • EC2 접속 코드

      • ssh -i {pem키} ubuntu@{public ip}
    • EC2 서버 접속 후

      • sudo apt update
      • sudo apt upgrade
      • sudo apt install mysql-server
      • sudo mysql_secure_installation
        • 강력한 암호 → no
        • password → team05
        • anonymous → yes
        • remote → yes
        • test db remove → yes
        • privilege → yes
      • mysql -u root -p
        • 8.0부터는 이렇게 패스워드로 접속 불가.
      • sudo mysql -u root
        • mysql 접속 완료
        • auth socket은 현재 서버의 루트 사용자만 접속할 수 있는 소켓
          • 루트 사용자는 password없이 바로 접속 가능.
            • 비밀번호 없이 루트 사용자만 접속 가능하게 하는 게 더 안전하니까.
    • mysql 후속 작업

      • create database testdb;
      • create user 'test'@'%' identified by 'team05';
      • grant all on testdb.* to 'test'@'%' with grant option;
      • flush privileges;
      • AWS 인스턴스 인바운드에 Mysql / 0.0.0.0 규칙 추가.
        • 위험한 방법이므로 더 나은 방법 찾아보기.
      • mysql 파일 정보 수정
        • cd /etc/mysql
        • sudo vi mysql.conf.d/mysqld.cnf (수정하니까 리드온리라고 해서 sudo로 실행)
        • 아래 라인 주석 처리
          • #bind-address = 127.0.0.1
          • #mysqlx-bind-address = 127.0.0.1
      • 접속 완료

프로젝트 구조 세팅

  • Gradle dependencies
    • spring web
    • lombok
    • SQL
      • JDBC API
      • MySQL Driver (runtimeOnly)
    • Thymeleaf (선택)
      • Spring Boot DevTools (타임리프 수정 후 새로고침 불필요)

추가 공부 사항


안드로이드 진행상황

  • appBar 구현

    • navigation Drawer

      • appBar 에서 아이콘 선택시 navigation drawer나타나도록 구현

        image

      • navigation Drawer - Listener 등록

        • drawer 열렸을 때를 감지할 수 있도록 구현 → 추후 todo 정보 이력 나타낼 예정
        binding.drawerLayout?.addDrawerListener(object: DrawerLayout.DrawerListener{
                    override fun onDrawerSlide(drawerView: View, slideOffset: Float) {
                        Log.d("AppTest", "onDrawerSlide called")
        
                    }
        
                    override fun onDrawerOpened(drawerView: View) {
                        Log.d("AppTest", "onDrawerOpened called")
        
                        binding.tvInDrawer?.text = "change success"
        
                    }
        
                    override fun onDrawerClosed(drawerView: View) {
        
                    }
        
                    override fun onDrawerStateChanged(newState: Int) {
        
                    }
        
                })
    • 앞으로 구현할 상황

      • 리사이클러뷰 목록에 맞게 추가
      • navigation Drawer에 리사이클러 뷰 추가
  • 프로젝트 세팅

    • Android Dependencies
      • Data Binding

📚 Home

OverView

🤝 협업 방식

Git

📋 프로젝트 구성 문서

DB Schema
DB 접속 정보 관리
배포 과정

✏️ 일일 회의록

22.04.15
22.04.14
22.04.13
22.04.12
22.04.11
22.04.09 ~ 22.04.10
22.04.08
22.04.07
22.04.06
22.04.05

Clone this wiki locally