내일배움캠프/TIL 55

[Spring_4기 본캠프] 일정관리 앱 비즈니스 요구사항 정리 | Day 36

▶ Lv1.일정관리 앱 과제의 비즈니스 요구사항 분석 및 설계▼ 데이터 모델- ID : 각 일정의 고유 식별자 (Primary Key)- 할일 (task) : 일정의 제목 또는 주요 내용- 작성자명 (author) : 작성자의 이름- 비밀번호 (pw) : 일정 수정/삭제 시 검증을 위해 사용- 작성일 (createDate) : 일정 작성 날짜와 시간 ( 생성 시 시스템에서 자동 설정 )- 수정일 (modifiedDate) : 일정 수정 날짜와 시간 ( 최초 생성 시 작성일과 동일하며 수정 시 자동 갱신 ) ▼ 기능 요구사항1) 일정 생성- 새로운 일정을 생성하고 데이터베이스에 저장- 입력값 : 할일, 작성자명, 비밀번호 ( 작성일과 수정일은 자동 설정 ) 2) 전체 일정 조회- 등록된 일정 목록을 조회-..

[Spring_4기 본캠프] 메모장 실습과 Postman, 깃모지 | Day 35

1. 실습을 활용해 일정관리 앱으로 둔갑시키기  인프런 강의만 듣다가는 과제를 끝내지 못할 것같아 캠프에서 지급해준 강의에 나온 메모장 만들기 실습을 바로 진행하기로 했다.메모장이나 일정관리 앱이나, 이름만 다르지 거기서 거기 아닌가? 라는 생각이 들어 Memo를 Todo로 바꾸며 프로그램을 작성했다.↓ 1차 완성 코드 ( CRUD 기능만 있음 ) ↓더보기package com.example.todo.entity;import com.example.todo.dto.ToDoRequestDto;import lombok.AllArgsConstructor;import lombok.Getter;/** * 일정 관리 애플리케이션의 ToDo Entity 클래스 * 이 클래스는 데이터베이스의 ToDo 테이블과 매핑되며 일..

[Spring_4기 본캠프] Spring 입문 - 스케줄러 실습과 트러블슈팅 | Day 34

1. 메모장 만들기 실습  며칠 전 일정관리 앱을 Spring 기반으로 만드는 과제가 발제되었는데 캠프에서 제공하는 강의만으로는 절대로 과제를 진행할 수 없을 것같아서 인프런으로 김영한 선생님의 스프링 입문 강의를 듣고있었다. 하지만 코드를 따라치면서도 강의 내용이 이해가 되지 않아서 20분도 안되는 강의를 5~6번씩 반복해서 들으니 시간이 너무 많이 낭비되고 있다는 생각이 들었다.고민하던 찰나 다른 동료분들이 캠프 강의 초반말고 후반에 실습부분을 바로 들으면 더 이해가 잘된다고 조언해주셨다.강의에서는 메모장 만들기 실습을 하는데 나는 그냥 스케줄러로 변경해서 실습을 하면서 과제를 연습하고 있었다. 2. 트러블 슈팅  강의를 들으면서 실습을 진행한 지 10분밖에 안되었는데 첫 번째 에러가 났다.이제는 빨..

[Spring_4기 본캠프] Spring 입문 - 회원관리 서비스 개발 | Day 33

1. 회원 서비스 개발  public Long join(Member member) { // 같은 이름이 있는 중복회원 X //ctrl + alt + v 단축키로 자동으로 optional 입력해줌. 반환이 Optional memberRepository.findByName(member.getName()).ifPresent(m -> { //ctrl + alt + n 메서드 체이닝 -> 변수 선언과 동시에 로직을 수행한 후 바로 리턴하는 구조, 변수 선언이 불필요 throw new IllegalStateException("이미 존재하는 회원입니다."); }); memberRepository.save(member); ..

[Spring_4기 본캠프] Spring 입문 - 회원관리 예제 테스트해보기 | Day 32

1. 간단한 회원 관리 프로그램을 만들어 테스트 해보자. package hello.hello_spring.repository;import hello.hello_spring.domain.Member;import org.junit.jupiter.api.Assertions;import org.junit.jupiter.api.Test;class MemoryMemberRepositoryTest { // 잘 작동하는지 테스트 MemberRepository repository = new MemoryMemberRepository(); @Test public void save() { Member member = new Member(); member.setName("커비"); ..

[Spring_4기 본캠프] Spring 입문 - 백엔드 개발 | Day 31

1. Spring 이틀 차, 소감은?- 강의에서 입력하는 코드를 그대로 따라 치고, 웹페이지가 변한 모습을 보면 신기해하고 그러고 있다.내가 지금 뭘 하는건지, 이해를 하고 있는건지 알 수 없었다. 배우는 느낌이 아니라고 해야할까? 2. 회원 관리 서비스를 개발해보자1) 비즈니스 요구사항 정리 - 데이터 : 회원ID, 이름- 기능 : 회원 등록, 조회- 데이터 저장소 미정 (가상의 시나리오)   → 아직 데이터 저장소가 선정되지 않아 인터페이스로 구현클래스를 변경할 수 있도록 설계  → 데이터 저장소는 RDB, NoSQL 등 다양한 저장소를 고민중인 상황으로 가정  → 개발을 진행하기 위해 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용  - 컨트롤러 : 웹 MVC의 컨트롤러 역할..

[Spring_4기 본캠프] Spring 입문 - build terminal 오류 트러블 슈팅 | Day 30

>> Spring 입문 첫 날, 3시간 동안 머리 깨진 경험  우선 트러블 슈팅을 하기 전 나와 같은 경험을 현재 진행형으로 하고 계신 분들을 위해 파훼법부터 빠르게 정리하고자 한다. ./gradlew build 불가능터미널 (필자는 windows 운영체제, git bash 를 사용중) 에서 ./gradlew build 명령어를 입력했지만 내 경로에 java 명령을 찾을 수 없다는 오류가 발생했다. 내 JAVA_HOME 환경을 자바 설치 위치랑 맞춰달라는 말 같았다.자바의 버전 확인을 위해 java -version, javac -version 등 자바의 버전 확인을 원하는 명령을 모두 쳐봤지만 bash에서 자바 자체를 찾지 못하는 듯했다. env:JAVA_HOME 명령어도 먹히질 않았다.이후 인터넷 검색..

[Spring_4기 본캠프] 상속 & 다형성과 캐스팅 | Day 29

1. 상속 : 기존 클래스의 필드와 메서드를 새로운 클래스에서 물려받는 것. (extends 키워드를 이용)◆ 부모클래스 : 새로운 클래스에 필드와 메서드를 물려주는(상속해주는) 클래스 = 상위 클래스◆ 자식클래스 : 부모클래스가 상속을 해주는 클래스 = 하위 클래스- 자식 클래스는 부모 클래스의 기능을 상속받아 사용할 수 있지만 부모 클래스는 자식클래스에 접근할 수 없다.- 자바는 다중 상속을 지원하지 않아 부모 클래스는 하나만 가질 수 있다. 물론 부모 클래스도 부모를 가질 순 있다.  2. 상속과 메모리 구조- 부모 클래스로부터 상속을 받아 새로운 객체를 생성하면 상속 관계에 있는 부모 클래스까지 함께 포함해 인스턴스를 생성한다.즉, 참조값은 하나지만 실제로 그 안에는 두 가지 클래스 정보가 공존하..

[Spring_4기 본캠프] 자바 메모리 구조와 static | Day 28

1. JVM - 자바 메모리 구조 ▶ 자바 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역으로 나눌 수 있다.메서드 영역 : 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다.클래스 정보 : 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드 존재static 영역 : static 변수들을 보관런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 예를 들어 프로그램에 “안녕” 이라는 문자가 있으면 이런 문자를 공통으로 묶어서 관리한다.스택 영역 : 실제 프로그램이 실행되는 영역. 메서드를 실행할 때 하나씩 쌓인다. (후입 선출)스택 프레임 : 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. 메서드를 호출할 때마다 하나의 스택 ..

[Spring_4기 본캠프] 키오스크 과제&트러블 슈팅 | Day 27

1. 객체 지향 키오스크 프로그램을 설계해보자  키오스크 과제가 발제되고 처음 작성된 코드는 철저한 절차 지향의 프로그램이었다. 단순히 프로그램의 작동 순서대로 조건문과 반복문이 떡칠된 가독성이 매우 떨어지는 하드 코딩을 하고나서 깨달은 점을 바탕으로 설계를 새롭게 해 코드를 작성해봤다.   우선 가장 먼제 과제의 요구사항을 살펴봤다.- 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법을 익힌다.- 메뉴를 MenuItem 클래스와 List를 통해 관리한다.- main 함수에서 MenuItem 클래스를 활용하여 햄버거 메뉴를 출력한다.- Kiosk 클래스를 생성해 전체 로직 제어를 관리한다.- 키오스크 프로그램을 시작하는 메서드가 구현되어야 한다.- Menu 클래스를 생성해..