728x90

전체 글 503

177일차(모험 86일차) - error: invalid path

코드를 작성하려고 새로운 issue를 생성한 후 branch를 만들었다. 코드를 확인해보니 이 전에 작성한 코드로 올라간 것을 확인했다. ??? 그래서 Github의 Insights를 보니 새로 생성한 section03이 section02보다 뒤에 표시되어있다. (????) main branch에는 가장 최신 commit한 코드로 띄워져 있는데 무슨일인가 하고 main에서 pull을 다시 받아보니 error: invalid path 라는 에러가 띄워져있었고 확인해보니 문제가 되는 파일 이름에 특수문자가 들어가서 그런 것이었다. (특수문자가 들어가서 윈도우 파일 시스템에서 인식하지 못하는 경우에 발생한다고 한다.) 출처: 윈도우에서 git clone 시 invalid path 에러 처리하는 방법 아래와 같..

TIL 2022.03.10

176일차(모험 85일차) - 스터디 4

Ioc, DI, 그리고 컨테이너 ( 이전 글 보충 ) 동적인 객체 인스턴스 의존 관계 ■ 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것을 의존관계 주입이라 한다. (AppConfig) ■ 객체 인스턴스를 생성하고, 그 참조 값을 전달해서 연결된다. ■ 의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다. public DiscountPolicy discountPolicy() { //return new FixDiscountPolicy(); return new RateDiscountPolicy(); } AppConfig - FixDiscountPol..

TIL 2022.03.09

175일차(모험 84일차) - 웹 소켓 구현 공부

웹 소켓 구현하는 방법에 대해서 블로그를 여러군데 찾아봤다. 아래 블로그는 간단하게 구현하는 것 같아서 어떻게 하는지 파악만 된다면 좋을 것 같다. https://devmg.tistory.com/127 스프링 Spring + 웹소켓 WebSocket 채팅 초간단 구현 Spring Tool Suite4 기준으로 메이븐 MVC프로젝트를 생성한다. File > New > Spring Lagacy Project > Templates목록에서 맨 아레 Spring MVC Project 클릭 하고 생성 ※만약에 Spring Lagacy Pro.. devmg.tistory.com 혹시 몰라서 여러 개 블로그도 참고하는 중이다. [Web Socket / Spring] 실시간 채팅 기능 구현 [Web Socket / Sp..

TIL 2022.03.08

174일차(모험 83일차)

Today - 노션 정리 - 프로젝트 front 코드 commit 프로젝트 front 페이징 코드 올리기 완료 front 관련 진행과정 팀 회의 진행 - 팀 회의 진행하면서 나온 ==와 ===의 차이점 : https://lu-delight.tistory.com/323 ( ==에 밑줄 쳐져있어서 팀원이 왜 ==에 밑줄 쳐져 있는건지 물어보길래 til에 적은 기억이 나서 알려줬다.) 앞으로 해야할 일 - 페이징 이쁘게 꾸미기 - 웹 소켓 코드 짜기 웹 소켓 코드는 이 전부터 여러 블로그들을 보면서 찾아보고 있는데 앞으로 몇일 간 TIL은 ~~ 공부했다. 정도로 끝날 것 같다.

TIL 2022.03.07

25주차

좋은 객체 지향 설계의 5가지 원칙의 적용 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. - 구현 객체를 생성하고 연결하는 책임은 AppConfig가 담당 - 클라이언트 객체는 실행하는 책임만 담당 DIP 의존관계 역전 원칙 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 클라이언트 코드가 DiscountPolicy 추상화 인터페이스에만 의존하도록 코드를 변경했다. 하지만 클라이언트 코드는 인터페이스만으로는 아무것도 실행할 수 없다. AppConfig가 FixDiscountPolicy 객체 인스턴스를 클라이언트 코드 대신 생성해서 클라이언트 코드에 의존관계를 주입했다. 이렇게해서 DIP 원칙을 따르면서 문제도 해결했다. OCP 소프트..

WIL 2022.03.06

171일차(모험 80일차) - 새로운 구조와 할인 정책 적용

새로운 구조와 할인 정책 적용 정액 할인 정책을 정률% 할인 정책으로 변경하기 FixDiscountPolicy ➡️ RateDiscountPolicy AppConfig의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리 사용 영역과 구성 영역(* pdf 그림 보기!) FixDiscountPolicy ➡️ RateDiscountPolicy 로 변경해도 구성 영역(AppConfig)만 영향을 받고, 사용 영역은 전혀 영향을 받지 않는다 AppConfig가 OrderServiceImpl과 FixDiscountPolicy를 생성했는데 할인 정책의 변경으로 AppConfig가 OrderServiceImpl과 RateDiscountPolicy를 생성한다. ..

TIL 2022.03.04

171일차(모험 80일차) - 스터디 3

[add] AppConfig 리팩터링 [#6] #10 현재 AppConfig를 보면 중복이 있고, 역할에 따른 구현이 잘 안보인다 new가 2번 나와서 중복이다. 이런 것을 리팩토링 할 때 잡아준다. MemoryMemberRepository에 커서를 갖다댄 후에 ctrl + alt + m 단축키를 누르면 Extract method가 실행된다. return타입은 구체클래스를 선택하면 안되고 인터페이스를 선택한다. (MemberRepository ⭕, MemoryMemberRepository ❌) 처음에 ctrl + alt + m을 아무리 입력해도 강의와 같이 Extract method가 실행되지 않았다. 그래서 일단 ctrl + alt + m을 실행시키고 보기가 나오는데 보기 중 하나를 엔터 클릭했더니 코..

TIL 2022.03.03

170일차(모험 79일차) - 스터디 2

이 전 글 >>[TIL] - 169일차(모험 78일차) - 스터디 [add] 관심사의 분리 [#6] #9 애플리케이션을 하나의 공연이라 생각하고, 각각의 인터페이스를 배역(배우 역할)이라 생각한다. 실제 배역 맞는 배우를 선택하는 것은 누가할까? 누가 할지는 배우들이 정하는게 아니다. private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); 이전 코드는 마치 로미오 역할(인터페이스)을 하는 철수(구현체, 배우)가 줄리엣 역할(인터페이스)을 하는 영희(구현체, 배우)을 직접 초빙하는 것과 같다. 철수는 공연도 해야하고 동시에 여자 주인공도 공연에 직접 초빙해야 하는 다양한 책임을 가지고 있다. 관심사를 분리한다. - 배우는 본인의 역할..

TIL 2022.03.02

169일차(모험 78일차) - 스터디

[add] 새로운 할인 정책 적용과 문제점 [#6] #8 할인 정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야 한다. // 고정 할인 정책 //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); // 새로운 할인 정책 적용 private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); 문제점 - 추상과 구체 둘다 의존 → DIP 위반 - FixDiscountPolicy를 RateDiscountPolicy로 변경하는 순간 OrderServiceImpl의 소스 코드도 함께 변경해야 한다 → OCP 위반 해결하기 인터페이스에만 의존하도록 설계를..

TIL 2022.03.01

168일차(모험 77일차) - 프로젝트(페이징 문제 해결😂)

페이징 문제가 안풀려서 답답했는데 드디어 사이다를 마셨다. 이 전에 개의 글을 작성하면 space.html에서는 7개의 글이 모두 띄워지고 space/1로 하면 6개의 db가, space/2에서는 1개의 db가 띄워진다. 라고 글을 적었었는데 오늘에서야 해결할 수 있었다. >> [TIL] - 164일차(모험 73일차) - 프로젝트 참고로 space.html에서는 7개의 글이 띄워진 이유는 페이징이 안되서 이 전에 작성한 작성한 글 모두 띄우기 controller때문에 띄워진 것이고 space/1로 하면 6개의 db가, space/2에서는 1개의 db가 띄워지는 것은 페이징 controller를 따로 작성했기 때문인데 어차피 페이징이 안되서 2개를 실행시킨 것이다. 그래서 다른 블로그들을 보면서 새로운 페..

TIL 2022.02.28