오늘 한 일
- 데이터베이스 선정 논의
- CI/CD 배포 & 코드 프리징
- 데모 영상 준비
- 데모영상과 함께 발표 자료 준비
- 테스트 코드 채점 로직
- header, navbar 스타일 수정
- 문제 출제 페이지 layout 배치 일부 완료
내일 할 일
- 데모
- 기술 공유 발표
- 멘토님과 미팅(20:30?)
피어세션 주제
- DB 선정 고민(성능 상의 이슈)
- ORM : Typescript를 사용하므로 TypeORM을 사용할 예정
- RDBMS(MySQL) vs NoSQL(MongoDB)
- MySQL
- 데이터 간의 관계가 많고, 신뢰성이 보장된 데이터베이스다.
- 코드를 저장하기 위한 데이터 타입으로 TEXT(TINY, MEDIUM, LONG)이 있다.
- TEXT는 길이가 고정이라 비효율적이다.
- 파일로 저장해서 불러오는 방식 → 파일 I/O는 속도가 느려서 부적합하다.
- MongoDB
- NoSQL로 대용량 데이터를 저장하기 적합하므로 코드를 저장하기 안성맞춤이다.
- MySQL에서 파일로 불러오는 방식보다는 데이터베이스에서 코드를 가져오는 방식이 더 빠르다.
- MySQL + MongoDB
- RDBMS의 장점과 NoSQL의 장점을 모두 사용하는 방식
- MySQL을 기본으로 사용하고, 코드는 NoSQL에 저장하는 방식
- 데이터베이스에 두 번 접근해야한다는 단점이 있다.
- 실제 서비스에서도 다른 종류의 데이터베이스를 함께 사용하는 사례가 있다.
- 백준(6년 전 기준) - MariaDB / MongoDB + Redis
- 코드 실행 방법
- 코드는 불러와지면서
prettier가 적용된다.(useState를 통해 상태를 바꿔줄 때에도 적용)
- 코드를 문자열로 저장한 뒤,
new Function 으로 함수로 바꿔 실행
- 보안에 취약한 방법(XSS 공격)이기 때문에 iframe 및 WebWorker 사용 보완 예정
- Testcase 실행은 Test 라이브러리인
Chai 를 사용
- 커스텀 Styled-component 사용(Made by 갓영근)
- 리렌더링(코드 초기화) 문제 상세히 적기
- 빌드 과정에서
package.json 버전 차이 문제
create-react-app 에서 자동으로 설정한 라이브러리 버전과 다른 라이브러리의 의존성으로 설치된 버전이 달라서 충돌 발생
babel/jest