반응형

 

 

발자국 내용은 딱히 형식이 정해져 있지 않아서 발자국 쓰기 전날까지 들었던 강의들 중, 모르는 내용들을 적어서 내가 다시 봤을 때, "아 맞다!" 라는 말이 나올 정도로만 적을 예정이다!


 

목차

  1. 모르는 내용 정리
  2. 미션 해결 과정
  3. 회고

 


1. 모르는 내용 정리

 

<Gradle>

Gradle : Gradle은 Groovy를 기반한 빌드 관리 도구.

  • 빌드 관리 도구 : 프로젝트 내에서 다양하게 외부 라이브러리와 로컬 레포지토리에서도 라이브러리 별로 버전 관리를 해야할 때 용이
  • Gradle이 왜 필요할까?
    • Gradle
      • groovy 언어를 사용한 Domain-specific-language를 사용 ( 코드가 간결)
      • 어느 task가 업데이트 되었는지 체크
      • 이미 반영된 빌드 부분은 더이상 재 실행되지 않는다. -> 빌드 시간 단축
    • Maven
      • java8용 프로젝트 관리 도구 apache의 ant 대안
      • 외부 저장소에서 필요한 라이브러리, 플러그인들을 다운로드 한 후 , 로컬 시스템의 캐시에 모두 저장
    • 그래서 왜 Gradle인데!!!
      • Gradle은 작업 의존성을 그래프, Maven은 고정적이고 선형적 모델을 기반
      • Gralde은 어떤 task가 업데이트되었고 안되었는지를 체크
      • Gradle은 이미 업데이트 된 task에 대해서는 작업이 실행되지 않으므로 빌드 시간 단축
      • 빌드 설정 규모가 작으면 큰 차이를 느끼지 못하지만 규모가 크면 훨씬 Gradle의 빌드 시간이 단축된다는걸 알 수 있다.
  • Gradle과 Maven 차이를 알면 Gradle이 왜 필요한지 알 수 있다.

<Dependencies>

  • Spring Web : 웹 어플리케이션을 개발하기 위한 핵심 기능 제공
  • Thymeleaf : View Template, 동적으로 화면을 구성할 수 있게 해줌
  • Spring Data JPA : JPA를 이요한 구현체를 더 추상화시켜 더 쉽고 간편하게 JPA를 이용 가능
  • mysql driver : mysql를 연동할 때 필요한 dependency
  • h2 database : RDBMS, 테스트 단계 또는 작은 규모의 프로젝트에서 사용
  • validation : 데이터에 대한 유효성 검증 처리를 수행
  • Spring Security : 홈페이지에 인증 및 권한 기능을 빠르게 부여해 인증 및 권한 보호 기능을 손쉽게 추가할 수 있음.

 

<프로그램이 시작되는 시작되는 코드>

src/main/kotlin/PortfolioApplicatioin.kt

fun main(args: Array<String>) {
    runApplication<PortfolioApplication>(*args)
}

Whitelabel Error Page 오류가 뜨는 이유 : 어플리케이션이 뭘 해야 할지 모르기 때문에 Whitelabel Error Page를 보내줌.(정상)

 

<Git 용어>

Git : 분산 버전 관리 시스템 ⇒ 협업을 쉽게 해주는 툴 : GitHub

Commit : git에 저장하는 단계

Rollback : 이력 되돌리기

Branch : branch 생성 및 제거, 확인등의 기능을 하는 명령어

Merge : 브랜치 병합

Conflict : 충돌

Repository : 원격 저장소 , 인터넷이나 네트워크 어딘가에 있는 저장소

Push : 로컬 브랜치를 원격 저장소로 푸시할 때 사용하는 기본 명령어

 

<Git 명령어>

  • git init : git 공간으로 초기화
  • git status 명령어 입력시 Untracked files 라는 게 있는데 이건 git에서 따로 설정을 안한다는 소리
  • https://www.toptal.com/developers/gitignore/ : gitignore 파일을 자동으로 만들어줌

 

<github에 PUSH 방법>

  1. 터미널에서 git init
  2. git remote “git 저장소”
  3. → 인텔리제이(GUI)로 할 시에는 git → Manage Remote
  4. commit
  5. push

 

<application-default.yml , application-docker.yml>

profile이 default 이면, application-default.yml 파일에서 환경변수를 가져오고

profile이 docker 이면, application-docker.yml 파일에서 환경변수를 가져온다.

 

application-default.yml 파일에서 spring:jpa:hibernate:ddl-auto:create 인데

왜 application-docker.yml 파일에서는 spring:jpa:hibernamte:ddl-auto:none 일까?

=> application-default.yml 에서는 개발 목적으로 데이터베이스 스키마를 매번 재생성할 필요가 있지만, application-docker.yml 에서는 베포 및 운영 환경에 적합하게 데이터베이스 구조가 변경되지 않도록 하기 위한 설정

 

<어노테이션 정리>

@Id : 해당 테이블의 PK 필드를 의미

@Entity : JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션

@GeneratedValue : JPA에서 Entity의 PK를 생성하여 주는 기능

-> @GeneratedValue(name="member_id") : PK로 사용될 Entity의 프로퍼티에 @Id 어노테이션 선언

-> @GeneratedValue(strategy=GenerationType.IDENTITY) : 기본 키 생성을 데이터베이스에 위임한다.

-> @GeneratedValue(strategy=GenerationType.AUTO) : 기본값으로 DB 방언에 맞춰 자동으로 설정하여 준다.

@Column : 객체 필드와 DB 테이블 칼럼을 맵핑한다.

@Component : 클래스를 자동으로 빈으로 등록하기 위해 클래스 레벨에서 사용

@Profile : 빈이나, 컴퓨넌트에게 프로필을 정해줄 수 있음

@PostConstruct : 객체의 생성이 일어난 직 후에 초기화를 수행하는 메서드에 부착한다.

@ManyToOne : 단방향 관계이고 FK관리에 있어서 가장 자연스럽다. @JoinColumn 어노테이션과 같이 쓰인다.

@JoinColumn : 엔티티 테이블에 FK 칼럼을 정의해준다.

 

자료형뒤에 ? 는 무슨 의미일까 ?

ex ) Long?

자료형 뒤에 ? 가 오는 것은 Kotlin에서 사용되는 문법이고 ?를 자료형 뒤에 붙이는 방식은 nullable 여부를 나타낸다. 예를 들면 var name: String? = null 이 코드는 해당 변수 name에 null 값이 올 수도 있다는 뜻이다.

 

 

<코드 분석>

  • var type: SkillType = SkillType.valueOf(type) : SkillType.valueOf(type) 은 type이라는 문자열을 SkillType 열거형의 값으로 변환. 만약 type이 열거형에 없는 값이면 예외 발생
  • var cookies: String? = httpServletRequest.cookies ?.map {"${it.name}:${it.value}"} ?.toString() : httpServletRequest에서 쿠키 정보를 가져오고, 쿠키 이름과 값을 "이름:값" 형식으로 변환하는 코드
  • var referer: String? = httpServletRequest.getHeader("referer") : HTTP 요청에서 "Referer" 헤더 값을 가져온다. 이 코드는 사용자가 어떤 페이지에서 현재 페이지로 이동했는지 나타냄
  • @OneToManyvar details: MutableList<ExperienceDetail> = mutableListOf() : JPA 관계를 나타내고, 엔티티 간의 일대다(One-to-Many) 관계를 나타냄


2. 미션

미션 1과 2를 제출하는건데, 미션1은 테이블 설계하기와 깃허브 리포지토리에 프로젝트 올리기이다.

 

미션 1 : https://github.com/HyupTech/LMS/commit/fa47b404d36b3ce418f16213e3bb30ca96b812ed

미션 2 : https://github.com/HyupTech/LMS/commit/0993897036a0e17e7a366031b950235edd5d506e

  


 

3. 회고

발자국을 작성하면서 나는 이제까지 강의를 보면서 공부를 했지만 다시 한번 이렇게 정리를 해가면서 강의를 보지 않았다. 왜냐하면 시간이 너무 아까웠고, 차라리 정리하는 시간에 강의를 하나 더 보자는 마인드였다. 하지만 발자국을 써보면서 왜 이렇게 좋은걸 내가 안했을까라는 후회가 들고, 이렇게 정리를 해가면서 했으면 아마 실력이 조금이라도 더 올랐지 않았나 라는 생각이 들었다. 앞으로 발자국도 쓰고, 내가 따로 공부하고 있는것도 정리해가면서 공부를 해야겠다.

 

3-1. 미션 회고 

이번 미션에서 처음으로 ERD를 구성하고 어디에 PK를 주고 관계 설정을 어떻게 할지에 대한 고민이 많았던 것 같다. 현재 대학교 2-2에 재학중인데 데이터베이스 과목을 수강중인데 꽤 도움이 되었던 것 같고, 백엔드 개발자가 될려면 데이터베이스 공부도 놓지 말아야겠다고 생각이 들었다. 앞으로 더 많은 미션들이 기다리고 있는데 열심히 공부를 해야겠다! 

반응형

+ Recent posts