백엔드 부트캠프를 평소에 하고싶었으나 기회(돈, 장소)가 없어 독학중 이었으나 이번에 정말 다행스럽게도 올해 새롭게K-디지털 트레이닝으로 전환된 \[코드스테이츠] 백엔드 부트캠프 1기를 광고에서 보게 되었고 나름 심혈을 기울여 설문과 자소서를 쓴 덕분에 합격하게 되었습
오프라인으로 같은 공간에서 대면으로 의사소통할 수도 있지만 항상 그렇지 못하는 점에서 시간과 공간의 제약을 상쇄시키기 위해 툴들을 많이 사용합니다. ZOOM 미팅에서 강사님께서 언급하셨듯이 현업에서 많이 사용하는 툴들을 고르셨다고 하니 익혀두면 취업후에도 유용히 사용할
컴퓨터라는 명칭은 먼저 계산한다는 의미의 Computare에서 유래되었습니다.현대의 컴퓨터는 2차세계대전 당시 튜링의 보편만능기계(Universal Computing Machine)를 시초로 합니다.컴퓨터는 입력받은 데이터를 정해진 규칙대로 처리해서 결과를 저장하고 출
HTML은 웹 문서를 구조적으로 표현하기 위한 언어CSS는 구조적인 문서를 어덯게 시각적으로 표현하는지에 대한 언어자바스크립트는 웹 문서를 표현하기 위한 스크립팅 언어였으나, Node.js를 통해 서버제작, PC를 위한 앱 / 프로그램을 만들 수 있는 범용적인 프로그램
다양한 CSS 셀렉터 규칙을 이해할 수 있습니다.레이아웃을 위한 HTML을 만들 수 있습니다.얼마만큼 늘릴 것인가? : flex-grow플랙스를 줄일수 있을것인가? : flex-shrink얼마만큼의 크기를 갖는가?: flex-basis한번에 입력 : flex수평 정렬:
HTML로 구조를 만들기CSS로 진짜 트위터처럼 꾸미기자바스크립트로 기능 보완하기이번주에 배웠던 내용들을 전체적으로 복습하는 느낌으로 진행하였습니다. 그리고 페어프로그래밍이라는 형식으로 진행하였는데 두사람이 짝을 지어 번갈아 가며 네비게이터와 드라이버역할을 맡아 개발을
오늘의 목표 GUI로 실행 (중요하진 않음) 기본적인 명령어 (중요) 경로(상대경로, 절대경로) nano 권한 환경변수 내용 GUI로 실행 (중요하진 않음) GUI로 실행하기 위해선 WSL -> 우분투로 실행하는 환경이므로 GUI 따로 열어줄 Xserver가 필
Git 설치, ssh타 레포지토리 가져오기협업 하기IntelliJ에서 관리 및 비슷한 명령어자신만 알도록 백업해 두면 웹하드 서비스를 사용하면 됩니다. 하지만 불특정 다수의 다른 사람들과 공유하고, 또 여러명이서 함께 제작하고 싶다면 버전관리를 통하여 오픈 소스화 시킬
타입문자열StringTokenizerStringBuilderStringBuffer변수,상수,타입변환연산자콘솔Long데이터 형식 사용시 8Byte의 데이터 값이라는 것은 컴파일러에 알려주기 위한 목적으로 L을 붙여줍니다. L은 int범위를 벗어날 때 붙인다고 이해하면 됩
조건문반복문if문의 소괄호 안에는 boolean값으로 평가도리 수 있는 조건식을 넣어주고 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 됩니다.순서대로 if문의 조건식이 참이면 if문을, 거짓이면 else if문의 조건식을 비교합니다. e
1차원 배열2차원 배열문자열 배열배열의 길이와 인덱스배열 복사 관련 메서드배열은 크게 1차원 배열고 ㅏ다차원 배열, 두가지로 나뉠 수 있습니다.배열을 활용하면 모든 값을 하나의 변수에 넣을 수 있습니다.배열이 가진 각각의 값을 요소 또는 원소라고 합니다. 배열의 요소에
객체지향 프로그래밍(OOP)클래스(Class)객체(Object)필드static메서드오버로딩OOP == 객체지향 프로그래밍방법론 == SW를 어덯게 개발할지?구조체 프로그래밍 -> 순서대로 계층적으로 설계객체 지향 프로그래밍 -> Object를 통해 설계애자일, 스크럼,
생성자this.와 this()생성자는 new키워드가 인스턴스를 만들면 필요한 멤버 변수들을 초기화 하는 역할을 수행하는 특수한 메서드 입니다. 그리고 생서자는 2가지 규칙이 존재합니다.리턴타입을 명시하지 않습니다.(void 사용 안함)반드시 클래스명과 동일하게 메서드명
상속포함관계오버라이딩super, super()Object캡슐화패키지접근제어자setter(), getter()상속 : 부모가 자식에게 물려주는 것과 마찬가지로 상위클래스(부모클래스)가 하위클래스(자식클래스)에게 멤버들을 물려주어 상속받은 하위클래스가 멤버들을 그대로 사용
다형성타입 변환(캐스팅)instance of다형성 활용추상화abstract추상 클래스final인터페이스인터페이스 활용다형성(polymorphism) : 여러개를 의미하는 poly와 형태를 의미하는 morphism을 결합하여 여러가지 형태라는 의미를 가집니다.자바에서 다
GenericGeneric 클래스 정의Generic 메서드Collection FrameworkList<>Set<>Map<>Generic은 클래스에서 사용할 데이터 타입을 외부에서 지정하면서 데이터 타입을 일반화 합니다.각각의 자료형(int,float,d
내부 클래스인스턴스 내부 클래스정적 내부 클래스지역 내부 클래스익명 내부 클래스내부 클래스(Inner Class)는 클래스 내에 선언된 클래스 입니다. 주로 외부 클래스와 연관되어 있을 때 사용되며, 내부 클래스는 외부클래스의 멤버들을 쉽게 접근 할 수 있습니다.cla
Enum에노테이션람다식람다식 기본 문법함수형 인터페이스메서드 레퍼런스스트림파이프라인 구성(.)Optional<T>Enum은 열거형으로 서로 관련있는 것들을 모아 번호를 모아 놓은 것을 의미합니다. 관련잇는 것들은 열거형으로 만들 수 있습니다.한식, 일식, 중식,
InputStream / OutputStreamFileReader / FileWriterFile스레드(Thread)자바에서는 입출력을 다루기 위한 InputStream, OutputStream을 제공합니다. 스트림은 단방향으로만 데이터를 제공할 수 있어서 입력과 출력이
학교 수업을 듣거나 온라인 인터넷 강의를 들으며 공부하던 내가 부트캠프가 처음인 것은 물론이고 140명이 넘는 온라인 Zoom 회의, 또 타 수강생과 함께 진행하는 페어프로그래밍...등.. 살아 오면서 처음 접하는 방법의 학습활동이 매우 많았다.수업 내용이 엄청 어려웠
재귀함수란 어떤 것인가재귀함수가 유리할 때재귀함수의 템플릿예를 들어 배열에 있는 숫자들을 더해서 합을 구하는 메서드를 작성한다고 하면 일반적으로 합을 저장할 sum변수를 for문이나 while문등으로 반복적으로 배열의 요소들을 더할 것입니다.위와 같이 하나의 함수안에서
JSON재귀적으로 JSON 구현하기자바스크립트와 자바, 파이썬, C, C++등 다른 언어간 통신,즉 구성된 각각의 클라이언트와 서버간의 데이터 통신에서 자바스크립트의 데이터와 다른 프로그래밍언어에서의 데이터 처리가 다름으로, 이 차이를 통일시키기 위해 사용되는 것이 J
StackQueueDequeLinkedListHashTableTreeSet스택은 FILO(First In Last Out) 구조로 가장 먼저 들어온 데이터가 가장 나중에 나가고, 가장 나중에 들어온 데이터가 가장 먼저 나갑니다.즉 입력방향과 출력방향이 한 방향인 방향이
TreeGraphBinSearchTreeTree는 최상위 노드인 root에서 부터 사방으로 뻗어나가는 형태가 나무와 많이 닮아 있다고 하여 트리 구조라고 부릅니다.최상단의 1개의 노드를 root, 마지막에 위치한 노드들을 leaf라고 부르고 root에서 leaf로만 움
DFSBFSDFS재귀DFS는 깊이 우선 탐색입니다. 스택을 이용하여 sibling보다 child를 우선시 하는 탐색 방법입니다. 예를 들어 이번차례에 노드A를 방문하였다면 다음차례는 동일한 부모를 둔 노드B보다 노드A의 자식 노드C가 우선순위를 가집니다. 그래프에서 본
수도코드시간복잡도탐욕 알고리즘(Greedy)완전탐색(Brute-Force)이진탐색(BinarySearch)수도코드(의사코드)는 실제 소스코드를 작성하기전에 자연어나 자연어와 프로그래밍 언어를 섞은 언어를 먼저 로직에 따라 작성해 보는 코드를 의미합니다. 딱히 정해진 문
오늘의 목표 순열 재귀 순열 조합 재귀 조합 GCD LCM 내용 순열 순열은 순서가 있는 선택의 경우의 수 입니다. 예를들어 A, B, C, D중 3개를 선택한다고 가정하면 A,B,C와 B,C,A는 순서가 다르기 때문에 다른 경우의 수로 각각 카운트 합니다.
클라이언트-서버 아키텍쳐URI,URLIP와 PORT도메인과 DNSHTTPAJAXSSR vs CSR클라이언트와 서버는 서로 물리적으로 떨어진 위치에서 서버는 불특정 다수의 클라이언트를 비동기방식으로 상대해야 합니다. 클라이언트는 서버 내부에서 어떤 작업을 수행하는지 알
오늘의 목표 Rest-API Postman 내용 Rest-API 웹 애플리케이션에서는 HTTP메서드를 이용해 서버와 통신합니다. GET을 통하여 데이터를 요청하고, POST를 통하여 데이터를 전송합니다. 어떤 요청을 하느냐에 따라 HTTP 메서드의 사용이 달라집
SQL이란?SELECT문함수subQueryJOININSERTUPDATEDELETEDDLDCL데이터를 메모리에 저장하거나 파일 시스템으로 사용중인 pc의 파일로 저장할 경우 각각 큰 단점이 존재합니다.첫번째로 메모리 상에 데이터를 저장할 경우, 프로그램 종료시 해당 데이
용어 정리관계 3가지테이블 만들어 보기데이터 베이스를 설계하기 위해선 먼저 데이터베이스의 구조를 알아보았습니다. 정확히 구조에 각 해당하는 용어들을 알고 있어야 설계시 혼돈이 없을 것입니다.테이블 = 릴레이션 : 관계형 데이터베이스에선 데이터를 테이블 형태로 저장합니다
ERD(조금)정규화비정규화테이블을 만들 때 흔히 제약조건으로 값을 어떻게 지정할 지가 몇가지 방식이 있습니다.STORED : 기존의 방식으로 데이터 값을 저장합니다.VIRTUAL : 기존의 방식과는 다르게 데이터를 저장하지 않고 정의만 저장합니다. 해당 칼럼을 읽으려고
POJOIOC/DIAOPPSA스프링은 웹 개발에 필요한 자바 프레임워크입니다. 스프링의 핵심개념들을 POJO라고도 합니다. POJO는 IOC/DI , AOP, PSA를 모두 구현함으로써 달성할 수 있습니다.우선 JO부터 살펴보겠습니다. JO는 객체와 객체가 관계를 맺을
아키텍처스프링 모듈스프링 부트아키텍처는 구조적이라고 볼 수 있습니다. 가장 큰 그림으로 시스템 아키텍처를 표현하고 시스템은 다시 하드웨어 아키텍처 와 소프트웨어 아키텍처로 나뉘어 집니다. 또 소프트웨어 아키텍처는 여러 소프트웨어의 종류에 따라 나뉘어 질 수 있고 소분류
의존성 주입컨테이너빈 @Bean@Configuration현재 클래스 100곳에서 CurrentDiscountInfo클래스의 객체를 쓰던중이었지만, 요구사항이 바뀌면서 RateDiscountInfo라는 새로운 클래스를 선언하여 기존의 CurrentDiscountInfo
오늘의 목표 의존 주입 방법 Component 내용 의존 주입 방법 의존관계 주입 방법은 4가지가 존재합니다. 생서자 주입 수정자(Setter) 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법입니다. @Compone
AOPAdvicePointCut애스팩트(Aspect)부가 기능과 해당 부가 기능을 어디에 적용할지 정의한 것입니다. 합해서 하나의 모듈로 만든 것입니다.애플리케이션에서 공통적으로 사용되는 공통기능들 하나의 기능으로 보는것이 아닌, 횡단 관심사(cross-cutting
JoinPointAOP애너테이션AOP는 어떤 어드바이스를 적용시킬 것인지도 중요하지만 어느 위치에 적용할 것인지도 매우 중요합니다. 생성자, 필드 값 접근, static 메서드, 일반 메서드 등에서 실행가능 하며, AOP를 수행하는 메서드는 JoinPoint(@Arou
Spring MVCSpring MVC 구성요소Handler MethodResponse EntitySpring MVC는 스프링의 처리 과정을 3단계로 나누어서 처리한다는 계념입니다. Spring MVC프레임 워크라고도 부릅니다.MVC = Model + View + Con
DTO유효성클라이언트에서 제공하는 JSON데이터를 서버에서 쉽게 처리하기 위해서 json을 객체로 만든 객체를 DTO라고 합니다. DTO는 필드, getter, setter로 구성됩니다.클라이언트에서 서버로 전송되는 파라미터들을 @RequestParam("파라미터")
서비스 계층 연동매퍼(Mapper)서버의 구조는 API 계층, 서비스 계층, 데이터 접근 계층으로 3층의 구조로 계층화 되어 있습니다. 계층간에도 데이터 전달이 필요합니다.API계층을 구현한 @Controller클래스와 서비스계층을 구현한 @Service클래스가 메서드
@ExceptionHandler@RestControllerAdvice예외발생시 ResponseBody에 에러메시지가 포함되어 클라이언트에게 전송됩니다. 하지만 클라이언트는 전송된 에러메세지만 보고 어디어 어떤 예외가 발생한 에러인지 알 수가 없기 때문에 서버측에서 에러
비즈니스 예외 던지기(throw)사용자 정의 예외체크 예외(Checked Exception) : 예외를 catch해서 체크한후 복구 및 회피등 처리를 해야 하는 예외입니다.언체크 예외(Unchecked Exception) : 어떤 처리를 할 필요가 없는 예외를 의미합니
JDBCDDDJDBC는 자바의 초창기 부터 제공되는 데이터베이스 엑세스를 위해 제공되는 API이며, 여러 데이터베이스와 연결될 수 있습니다.JDBC API를 이용하기 위해선 JDBC 드라이버로 데이터베이스를 먼저 로딩해야만 사용할 수 있습니다.드라이버는 각종 데이터베이
도메인 엔티티 클래스 정의서비스, 레포지토리 구현이전의 DDD설계에서 도메인, 에그리게이트, 에그리게이트 루트에 대해서 알아보았습니다. DDD설계를 객체지향의 클래스와 데이터베이스의 테이블로 각각 동일하게 변환시킬 수 있어야 합니다. Spring Data JDBC는 O
페이지 네이션이란?PageMapper페이지 네이션이란 서버에서 클라이언트로 전송해야할 목록이 수천개, 수만개, 수십만개 등 엄청나게 많을 때 데이터들을 한번에 모두 전송하는 것은 리소스 낭비도 심하고 시간도 오래 걸릴 것입니다.데이터를 정해진 몇개만 보내고, 추가 요청
JPA(Java Persistence API)엔티티 매핑JPA(Java Persistence API)는 JAVA에서 사용하는 ORM기술의 표준 사양 입니다.JPA표준 사양을 구현한 구현체로는 Hibernate ORM, EclipseLink, DataNucleus등이 있
연관 관계 매핑연관 관계 매핑이란 엔티티 클래스 간의 관계를 만들어 주는 것입니다.Spring Data JDBC에서의 클래스 간의 관계를 매핑해주는 점은 동일하지만 JPA방식으로 정의를 해야 합니다.엔티티 간의 관계는 참여하는 객체의 수에 따라 일대일(1:1), 일대다
Spring Data JDBC -> Spring Data JPASpring Data JDBC 와 Spring Data JPA는 사람으로 치면 성이 Spring Data고 이름이 JDBC냐 JPA냐 와 마찬가지입니다. Spirng Data패밀리 기술 중 하나로써 실제 구
트랜잭션에너테이션 트랜잭션AOP 트랜잭션트랜잭션이란 여러개의 작업들을 하나로 뭉쳐서 하나의 단위로 생각하는 것입니다.하나의 작업단위 안의 여러 작업들을 모두 성공하든가 모두 실패하든가(All or Nothing)중 둘중 하나만 처리되는것이 보장 되어야 합니다.비즈니스
ApplicationEventPublisherApplicationEvent@EventListener@EnableAsync, @Async우선 이벤트에 관하여 이해를 해야 스프링에서 제대로 이용하여 데이터를 주고 받을 수 있을 것입니다.이벤트는 크게 2가지로 구분 됩니다.
단위 테스트JUnitHamcrest에플리케이션 테스트란 특별한 또 다른 과정이 아니라, 스프링을 만들어보고 예제를 실행해 가면서, 출력 로그, HTTPResponseBody확인,데이터베이스 테이블 확인등 구현한 애플리케이션이 예상한 값을 출력하는지 확인하는 모든 과정을
API계층 테스트테이터엑세스계층 테스트애플리케이션은 3개의 계층으로 나뉘어 져 있고 각 계층별로 역할이 다르며, 서로 연동되기 때문에 계층별로 문제가 없는지 확인하는 테스트 작업이 필요합니다.단위 테스트 만으로는 특정 모듈이나 기술에 의존적인 애플리케이션의 모든 기능이
MockitoTDDMock은 개발에서 뿐만아니라 실 생활에서도 많이 사용됩니다. 몇번은 들어봤을 단어 Mock-up(목업)이 대표적인 예 입니다. 전시용 휴대폰을 목업 휴대폰이라고도 합니다. 실제 처럼 생겼지만 실제의 기능을 모두 가지지 않은 테스트용, 전시용으로 많이
SwaggerSpring Rest DocsAPI 문서라는것을 먼저 알아야 할 것 같습니다.Spring의 API 계층에서 HTTP request URL을 클라이언트의 요청을 통하여 전달받고 API계층 -> 비즈니스 계층 -> 데이터 엑세스 계층 -> 비즈니스 계층 ->
Asciidocdocument()Asciidoc은 Spring Rest Docs를 통해 생성되는 텍스트 기반 문서입니다.Asciidoc은 기술 문서 작성을 위해 설계된 마크다운 언어입니다. HTML, PDF, EPUB 등 다양한 형식으로 변환될 수 있습니다.asciid
build프로파일Spring으로 만든 웹 애플리케이션은 코드만 작성한다고, 또는 IDE에서 실행만 한다고 작성 되는 것은 아닙니다..jar실행 파일로 만들고 실행파일을 서버에서 실행시켜야 진정한 웹 서버가 완성이 됩니다.애플리케이션을 로컬 환경이 아닌 서버 환경에서 실
DTO클래스의 RequestBody에 대한 유효성 검증ORM트랜잭션우선 DTO 클래스를 왜 사용하는지 부터 정리할 필요가 있습니다. DTO클래스는 두가지의 역할을 수행합니다. 첫번째로 Spring내의 API계층과 서비스 계층간의 분리를 위해 API계층에서만 사용되도록
HTTPSCookieSessionSQLInjectionCSRFHTTPS 는 Hyper Text Transfer Protocal Secure Socket layer의 약자입니다. HTTP + Secure이라 생각하시면 될 것 같습니다. HTTPS는 HTTP요청을 SSL
Spring SecurityFilterDelegatingPasswordEncoderSpringSecurity는 스프링 기반 웹 애펄리케이션의 인증(Authentication)과 인가(Authorization) 기능을 가진 프레임워크 입니다.스프링 기반 애플리케이션의 보
SpringSecurity 흐름Authentication FilterAuthenticationAunthentication ManagerAuthentication ProviderSecurityContext클라이언트로 부터 http 요청이 오면 FilterChainProx
Authorizaiton 절차AccessDescisionManagerAccessDescisionVoter표현식 기반 접근 제어사용자가 HTTP요청을 보냅니다.FilterSecurityInterceptor는 SecruityContextHolder로 부터 Authentic
JWT 개념JWT SecurityJWT BearerJWT(JSON Web Token)은 무연결성을 지키면서도 사용자의 인증 절차를 세션처럼 한번 수행하면 계속 인증된 정보를 사용하기 위해 사용합니다.JWT는 세션과 다른 큰 차이점이 하나 존재하는데, 그건 서버에 인증
JWT유저인증JWT토큰이용FilterChain에 추가UserDetails를 구현한 클래스와 JpaRepository를 상속하고 findByUsername(String member)를 정의한 레포지토리, UserDetailsService를 구현한 서비스가 필요합니다. 해
오늘의 목표 OAuth란? Google API SpringSecurity OAuth PrincipalDetails 내용 Oauth란? >Oauth는 웹 애플리케이션이 사용자에게 직접 회원가입 등 사용자 신원정보를 요구하기 보단, 대중적으로 이미 많이 사용 중인
복습 중에 잘 몰랐거나 잊어버렸거나 잊기 쉽다고 생각하는 클래스나 메서드를 적어 보았습니다.HttpSecurity.formLogin() : form로그인 기능 동작 시작HttpSecurity.loginPage("로그인페이지") : 인증이 필요한 경우 사용자 정의 로그인
AWSEC2S3RDS4차 산업혁명의 주축 중 하나로 클라우드 컴퓨팅을 뽑을 수 있습니다. 기존의 물리적인 공간에서 성능이 뛰어나거나 여러대의 서버용 컴퓨터로 구축하고 서비스를 제공하는 회사가 직접 사용하던 전통적인 서버와 달리, 클라우드 컴퓨팅은 아주 큰 공간의 데이터
제 개인 계정이 아닌 AMI 계정으로 제한된 설정 실습만 하여 보안이 필요한 정보 상 블로깅 할 수 없는 점 죄송합니다.
오늘의 목표 Docker 컨테이너 실행 이미지로 만들기 docker-compose 내용 Docker Docker 사용 이유 수십억대의 컴퓨터(클라이언트, 서버 각각)들은 의도적으로 같은 환경을 구성할 수는 있겠지만 그러기 매우 힘듭니다. 따라서 다른 실행 환경
배포 자동화란?파이프라인 구축많은 개발자들이 github에 기존 서버의 변경사항을 저장할 것입니다. 만약 배포 자동화가 없다면 서버에 원격접속하여 github를 다시 내려받고 서버를 중단한 뒤 다시 빌드하여 서버를 구동해야 하는 번거로움이 있습니다. 하지만 배포 자동화
GitHubActionsGitHub ActionsGitHub Actions는 설정 파일에 따라 GitHub Repository에 특정 변동사항을 트리거로 작동됩니다. 기본으로 main브랜치가 push동작을 수행할 경우 트리거가 작동됩니다.GitHub Ations는 Gi
프록시 서버Auto ScalingJettyNGINXVPC프록시 서버는 서버와 클라이언트가 통신할 때 클라이언트가 서버에 바로 접근하지 않고 프록시 서버를 통해 서버를 접근할 수 있도록 대리 역할을 수행합니다.프록시 서버는 클라이언트에 가까이 있는지와 서버에 가까이 있는
리액티브 정의리액티브 스트림즈리액티브 프로그래밍 구조리액티브 프로그래밍이란 클라이언트의 요청에 반응을 잘 하는 프로그래밍을 의미 합니다. 리액티브(Reactive)는 반응을 잘하는 인데 살짝 모호해서 리액션(Reaction)이 좋은 으로 조금 다르게 해석 하는 것도 개
WebFlux 개념WebFlux 구현Spring5 버전에서 새롭게 추가된 기술 스틱이 바로 리액티브(Reactive)스택이자 웹 프레임워크입니다.Flux는 Reactor의 Mono와 함께 사용되는 N개 이상의 데이터를 emit하는 publisher가 맞습니다.Sprin
API 문서 설명소스 코드작성한 API 문서애플리케이션이나 프로그램, 시스템을 개발할 때 한가지 분야의 소수 개발자만 참여한다면 그때 그때 직접적으로 논의하고 수정해 나갈 수 있지만, 개발의 범위가 커지고 인원이 많아진다면 필요할 때 마다 논의하는 것이 힘들어 질 것이
DB 테이블 구성ERD이전 API 문서화는 https://velog.io/@ds02168/76일차SoloProject-1 에 있습니다.API 문서화에 사용되었던 테이블들과 테이블들의 관계를 정의합니다.사업주들의 정보를 담는 MEMBER테이블, 업종 정보를 담는
Today I Learned의 줄임말로 오늘 내가 배운 내용을 블로그에 정리하는 것입니다.그 날 배운 학습자료를 배포된 코드나 주어진 상황에 맞춰 기억하는 것보다 좀 더 범용적으로 개념을 재구성하여 정리하면 나중에 어떤 상황에서라도 사용하기 용이할 것이라 생각이 되어