forked from codesquad-members-2022/todo-list
-
Notifications
You must be signed in to change notification settings - Fork 2
22.04.05
Jaehong Choe edited this page Apr 15, 2022
·
2 revisions
로그 페이징 처리
- 백엔드에서 한번에 보여줄 로그 개수 정보를 안드로이드 팀에 알려주도록 함.
단말 정보
-
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 );
-
다이어그램
-
서버 구동 과정
AWS
-
데이터베이스와 EC2를 같은 인스턴스를 써야 하는데, 메모리가 작아서 빌드가 잘 안 돌아갈 거다. 어떻게 해결할지 고민해볼 것. RDS 사용 x
-
서버 용량 8기가
- 용량 부족? X
- 이미지 서버는 S3(오브젝트 스토리지)를 따로 사용.
- 용량 부족? X
-
22번 포트로 오는 SSH 프로토콜을 허용하겠다.
- 기본적으로 22번 포트만 열려있고 나머지는 닫혀있는 상태.
-
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없이 바로 접속 가능.
- 비밀번호 없이 루트 사용자만 접속 가능하게 하는 게 더 안전하니까.
- 루트 사용자는 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 (타임리프 수정 후 새로고침 불필요)
추가 공부 사항
- SSL
- DB 접속 정보 github에 업로드 방지
- AWS MySQL 인바운드 규칙 추가 안전하게 처리하기
-
appBar 구현
-
navigation Drawer
-
appBar 에서 아이콘 선택시 navigation drawer나타나도록 구현
-
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
- Android Dependencies