작성일: 2023.06.12(월)
KT AIVLE AI 개발자 트랙 3기 과정의 마지막인 빅프로젝트를 진행하고 있습니다.
Daily Scrum
내 역할, 협업 내용, 나머지는 팀원 담당
What did you do yesterday?
- 노션 스크럼 및 회의록 템플릿 만들기 및 정리
- UI/UX 재설계
- AI 데이터 수집 계획 수립
What will you do today?
- spring 기초 공부
- react 기초 공부
- 데이터 수집
- AI 모델링 계획 수립
Are there any impediments in your way?
What I did today
스프링 입문
Maven, Gradle
스프링부트
- 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크
Thymeleaf
- HTML(Markup)과 데이터를 결합한 결과물을 만들어 주는 역할을 하는 템플릿 엔진
프로젝트 src 폴더
- main과 test로 나누어져 있음
- main/java: 패키지, 소스 파일
- main/resources: XML, 설정 파일 등 java 파일 제외 나머지
- test: 테스트 코드
build.gradle
...
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
- junit: 기본적으로 들어가는 테스트 관련 라이브러리
- repositories의 mavenCentral()은 아래의 라이브러리를 받아오는 저장소
viewResolver
- 컨트롤러에서 리턴 값으로 문자 반환 시 화면을 찾아서 처리하는 역할
콘솔에서 빌드
- 프로젝트 폴더로 이동
./gradlew build
cd build/libs
java -jar 빌드로 생긴 jar파일명
빌드를 다시 하고 싶을때
정적 컨텐츠
- html을 그대로 전달하는 방식
- 스프링에서 기본으로 제공: /static 디렉토리에서 찾아서 전달
MVC와 템플릿 엔진
- 서버에서 html을 변경해서 전달
- MVC: Model, View, Controller
API
- Json/XML 등의 데이터 포멧으로 Client에 데이터 전달
- react/vue 등에 API로 데이터를 보내면 Client가 알아서 화면을 구성
- 서버끼리 데이터를 주고받을 때도 사용
- MVC와는 API는 html을 보내냐, 데이터 자체를 보내냐의 차이
- @ResponseBody 사용: viewResolver를 사용하지 않음
Controller
View
@ResponseBody
- HTTP의 Body에 데이터를 직접 보냄
- viewResolver 대신 HttpMessageConverter 동작
- 기본 문자 처리: StringHttpMessageConverter
- 기본 객체 처리: MappingJackson2HttpMessageConverter
객체 to Json
- Jackson: Json뿐만 아니라 다른 형식으로도 변환 가능
- Gson: 구글에서 만듦. Json만이 타겟
테스트
- java의 main 메소드 실행해보기
- 웹 애플리케이션의 컨트롤러 사용
- Junit 프레임워크 활용
- 1과 2는 느리고, 반복이 어려우며, 여러 테스트를 한 번에 실행하기 어려움
- 3은 테스트코드를 만들고 그 자체를 실행하는 방식(Good)
작성팁
IntelliJ 단축키(Mac 기준)
- cmd + P: 파라미터 정보보기
- cmd + shift + Enter: 세미콜론 자동완성
- cmd + n: 새로운 무언가 생성(ex.디렉토리, 클래스, getter&setter)
- opt + Enter: import
- cmd + shift + T: (서비스 클래스에서) 테스트 생성
기타
- 카메라와 pose-estimation 기법을 통한 결과
마치며
Spring으로 프로젝트를 진행하기 위해서 강의를 듣고 있는데, 에이블스쿨에서 배운 Django 내용이 도움이 되는 것 같다.
특히, MVC 모델 내용에서 MVT와 거의 비슷해 이해하는데 수월했다.
늦어도 목요일까지는 JPA 강의를 다 듣고 게시판, 회원가입, 로그인을 구현해보는 것이 이번 주의 목표이다.
매일 스크럼 시간을 고정적으로 가졌으면 하는 의견을 팀장에게 전달하였고, 오늘부터 진행해보았는데
프로젝트 방향성도 잘 잡히는 것 같고, 계획적으로 진행되는 느낌이 들어서 좋았다.