일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 트랜잭션 격리 수준
- 미니미프로젝트
- RESAPI
- G1GC
- KPT
- 스프링으로하는마이크로서비스구축
- ComponentScan
- Execution Engine
- Java 22
- Solid
- 도커
- DB
- java
- 완벽이해
- docker
- hateoas
- 클린코드
- 자식객체
- pair programming
- TDD
- Runtime Area
- Self Descript Message
- 마이크로서비스디자인패턴
- testdrivendevelopment
- Be
- GC
- Spring/JAVA 서적
- 부모객체
- M:N
- ATDD
- Today
- Total
목록프로 디지털 아카데미 4기 (9)
Programming Summary
1:1과 1:N과 M:N1:11대 1 관계란 어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것을 말한다.예시) Student : Seat왜 1대 1인가?한 명의 학생이 한 개의 자리만 소유할 수 있고, 한 자리는 여러 명의 학생이 소유할 수 없기 때문.1:N1:N 관계는 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미한다.예시) Student : ProjectTeam왜 1대 N인가?팀도 별도의 테이블로 분리해야 하고, 하나의 팀에는 여러명의 Student가 속하고, 하나의 Student는 단 하나의 팀에만 속하기 때문.N:MN:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말한다.예시) Student : StudyGroup왜 M대..
DTO란 무엇일까?DTO(Data Transfer Object)는 프로세스 혹은 모듈 간에 데이터를 전달하는 객체이다. DAO, VO랑 같이 얘기가 많아 나오는데 사실 그 둘과 큰 관련이 없다고 생각한다.Entity 자체를 주고 받는 것은 왜 위험한가?클라이언트와 서버가 데이터를 주고 받을 때, Entity를 사용하는 것은 유지보수적으로나, 보안적으로나 안좋다.(개발자는 편하다) MVC 패턴으로 만들어진 서버와 클라이언트가 통신할 때를 생각해보자. 그리고 DB의 스키마가 변경되어 Entity가 변경된다고 가정하자. 그러면 Entity에 따라 클라이언트에서 주는 Request Body의 형식이 변경되어야 하는가? 만약 그렇다면 너무 대공사이지 않을까? 이번엔 Response 쪽에서 살펴보자. User를 그..
WebServer와 WASWeb Server란?Web Server는 하드웨어 적으로는 Web 서버가 설치되어 있는 컴퓨터를 뜻하고 소프트웨어 적으로는 정적인 컨텐츠를 WAS를 통하지 않고 바로 제공하거나 동적인 컨텐츠를 WAS에게 보내는 역할을 담당한다. 대표적으로 Apache Server와 Nginx 등이 있다.WAS(Web Application Server)란?WAS는 DB 조회나 다양한 로직 처리를 위해 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server이다. 과거 웹 서버의 기능들을 분리하여 처리하고자 하는 목적으로 제시되었으나, 현재는 속도가 빨라져 WAS에서 Web Server 기능을 수행해도 성능 저하가 심하지 않다. 그래서 기존 WAS 부분이 Web Container ..
SOLID 원칙이란?SOLID 원칙은 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍의 다섯가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다.S(SRP : 단일 책임의 원칙)클래스는 하나의 책임을 가져야한다. 이는 조금 추상적인 말이다. 이를 조금 더 구체적으로 말해보자면, 클래스가 변경되어야 하는 이유는 하나여야 한다는 것이다. 이는 해당 모듈이 여러 대상 또는 액터들에 대해 책임을 가져서는 안되고, 오직 하나의 액터에 대해서만 책임을 져야 한다는 것이다. 일 어떤 모듈이 여러 액터에 대해 책임을 가지고 있다면 여러 액터들로부터 변경에 대한 요구가 올 수 있으므로 해당 모듈을 수정해야 하는 이유 역시 여러 개가 될 수 있다.여기서 모듈이라 함은 클래스 혹은 클래스의 모음으..
프로젝트 링크강사님께서 자바에 익숙해지라는 목적으로 우리만의 배달의 민족을 만드는 미니미 프로젝트를 4일간 진행하였다. 해당 프로젝트의 KPT 회고를 진행하려한다.Keep"자바에 익숙해진다” 라는 프로젝트 목표에 맞춰 학습을 중점에 두고 프로젝트를 진행하였다.스프링의 MVC 구조를 참조하여 MVC 분리를 잘했다.재구성하는데 있어 확실한 근거가 있었다.Problem자바가 안익숙한 팀원들도 있어, Spring MVC 구조를 구현하기에는 너무 높은 난이도가 높은 설계였다.재시작한 프로젝트의 구조 설계를 잡기 어려워 Bottom-Up 방식으로 구현 후 설계를 하는 식으로 구현하였다.Try다음부터는 팀원들의 수준을 고려해서 설계를 하도록 하자.테스트 코드를 잘 작성하자.예외 처리를 잘하자.TDD를 연습해보자.
들어가기 전에일단 난 TDD를 할 능력도 안되고, 사수 개발자가 Test를 먼저 짜주어도 그걸 구현할지도 미지수이다.(우테캠 2차 과제테스트때 거의 구현하지 못했다) 그래도 나에게 TDD를 구현할 능력이 충분히 있다면 그때 TDD를 적용시킬 지에 대한 토론을 진행해보고자 한다.TDD 찬성!선배 개발자가 이끌어주기 좋아!잘하는 선배 개발자가 테스트를 만들어주면, 후배 개발자는 이 테스트를 다 통과하는 코드만 작성하면 된다. 바로 알고리즘 구현 문제가 되버리는 거다. 난이도가 아주 높겠지만..테스터의 입장까지 고려해볼 수 있어!코드를 먼저 짜고 테스트를 작성한다면 코더의 입장으로 작성할 수 밖에 없다. 그러나 테스트를 먼저 작성하면 테스터의 입장으로 작성할 수 있어, 더 많은 테스트 케이스를 고려해볼 수 있..
여러분이 가장 좋아하는 언어는?여러분이 제일 좋아하는 언어는 무엇인가. 한국어라고 대답한 사람들은 내 블로그에서 나가주길 바란다.. 농담이다.다만 우리가 주로 사용하는 언어를 왜 사용하고 왜 선택했는지에 대해 고민하면 좋을 것 같다.자바에 절여졌다.나는 자바가 제일 좋다. 왜 자바일까? 사실 자바에 절여진 것 같다. 전엔 자바가 제일 싫었는데.. 일단 print문부터 역겹지 않은가?public static void main(String[] args) { System.out.println("Hello World");}세상에서 제일 길다. 첫인상은 제일 최악인 언어였다. 어쩌다가 자바를 좋아하게 됐을까?왜 난 자바를 좋아하게 됐을까?모든게 객체다.너는 내가 불렀을 때 비로소 객체가 되었다. 옆에 친구..
세가지 질문프로 디지털 아카데미 4기에서 강사님께서 상속에 대해 고민할 수 있는 질문들에 대해 말씀해주셨다. 그 질문은 다음과 같다.1. 상속 관계를 결정하는 클래스는 누구인가요?2. 생성자도 상속되는 걸까요?3. 아래 네모는 객체입니다. A,B중 누가 부모이고, 자식일까요?의사 결정 과정1. 상속 관계를 결정하는 클래스는 누구인가?자식 클래스이다. 이건 큰 이견 없이 모든 사람이 동의한 내용이었다. 어떤 클래스 혹은 인터페이스를 상속받을지 결정하는 곳은 자식 클래스이기 때문이다.2. 생성자도 상속되는걸까?나는 이 부분은 상속되지 않는다고 생각한다. 상속이라 함은 자식에서 재정의할 수 있어야 하는데, public class Child { public Parent() { ... }..
들어가기 전에오늘은 KPT 회고를 활용하여 작성해보려 한다.KPT 회고란?KPT 회고는 다양한 회고 방법론 중 하나이다. Keep, Problem, Try의 약자로 회고 내용을 세 가지 관점으로 분류하여 회고를 진행하는 방식이다. 이를 통해 3가지 관점에서 회고를 진행하여, 꼼꼼하고 효율적인 회고가 이루어질 수 있게 된다.Pair Programming이란?페어 프로그래밍은 애자일 소프트웨어 개발 방법론 중 하나로, 하나의 컴퓨터에서 두 사람의 프로그래머가 작업하는 방법이다.위키 백과에는 이렇게 적혀있다. 페어 프로그래밍은 코드를 작성하는 사람이 진행자(driver)가 되고 다른 한 사람이 관찰자(observer, navigator)가 되어 코드 검토(code review)를 하며 프로그래밍을 작성한다. ..