[KT AIVLE] 빅프로젝트(4)

onlyJoon·2023년 6월 12일
0

KT AIVLE

목록 보기
20/31
post-thumbnail

작성일: 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파일명

빌드를 다시 하고 싶을때

  • ./gradlew clean: build 폴더가 없어짐
  • ./gradlew clean build: build 폴더를 다시 생성

정적 컨텐츠

  • html을 그대로 전달하는 방식
  • 스프링에서 기본으로 제공: /static 디렉토리에서 찾아서 전달

MVC와 템플릿 엔진

  • 서버에서 html을 변경해서 전달
  • MVC: Model, View, Controller

API

  • Json/XML 등의 데이터 포멧으로 Client에 데이터 전달
  • react/vue 등에 API로 데이터를 보내면 Client가 알아서 화면을 구성
  • 서버끼리 데이터를 주고받을 때도 사용
  • MVC와는 API는 html을 보내냐, 데이터 자체를 보내냐의 차이
  • @ResponseBody 사용: viewResolver를 사용하지 않음

Controller

  • 비즈니스 로직 or 내부적인 처리에 집중

View

  • 화면을 구성하는데 집중

@ResponseBody

  • HTTP의 Body에 데이터를 직접 보냄
  • viewResolver 대신 HttpMessageConverter 동작
  • 기본 문자 처리: StringHttpMessageConverter
  • 기본 객체 처리: MappingJackson2HttpMessageConverter

객체 to Json

  • Jackson: Json뿐만 아니라 다른 형식으로도 변환 가능
  • Gson: 구글에서 만듦. Json만이 타겟

테스트

  1. java의 main 메소드 실행해보기
  2. 웹 애플리케이션의 컨트롤러 사용
  3. Junit 프레임워크 활용
  • 1과 2는 느리고, 반복이 어려우며, 여러 테스트를 한 번에 실행하기 어려움
  • 3은 테스트코드를 만들고 그 자체를 실행하는 방식(Good)

작성팁

// Given: 주어진 상황

//When: 실행할 것

//Then: 실행해서 나와야 할 결과
  • 위의 주석을 활용하는 것을 추천

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 강의를 다 듣고 게시판, 회원가입, 로그인을 구현해보는 것이 이번 주의 목표이다.
매일 스크럼 시간을 고정적으로 가졌으면 하는 의견을 팀장에게 전달하였고, 오늘부터 진행해보았는데
프로젝트 방향성도 잘 잡히는 것 같고, 계획적으로 진행되는 느낌이 들어서 좋았다.

profile
A smooth sea never made a skilled sailor

0개의 댓글