til

    [TIL] DAY 34 & 35

    주말 할 일 잠 많이 자기 강의 듣기 1일 1 알고리즘 풀기 TIL 웹 프로토콜 웹에는 많은 리소스가 퍼져있는데 HTTP, URI, HTML 이 3가지를 사용해 웹 기술을 사용할 수 있는 근간이 된다. (1) URI(Uniform Resource Identifier) 리소스를 식별하기 위한 자원 식별자로 웹에 존재하는 자원에 접근하기 위해 꼭 필요한 식별자다. 특정 문법을 따르고 있는데, 인터넷을 사용해본 사람이라면 금방 이해할 수 있다. http://hide:pass@org.package.com:8080/search?q=test&debug=true URI Scheme : http 사용자 : hide:pass 호스트명 : org.package.com 포트번호 : 8080 path : /saerch 쿼리 ..

    [TIL] DAY 33

    오늘 할 일 강의 듣기 알고리즘 풀기 TIL AOP(Aspect Oriented Programming) 관점 지향 프로그래밍!이라고 처음에 접했을 땐 이게 무슨 말인가 싶었다. 조금만 풀어 쓰자면 프로젝트에 많은 로직들이 있을 텐데 이 중 특정 로직을 기준으로 잡아 핵심 관심 사항과 공통 관심 사항으로 분리해서 바라보고 각각 모듈화시키는 것이다. 이전에도 작성했었지만, 모든 로직에서 프로그램 동작 시간을 측정해야 하는데 핵심 비즈니스 로직과 분리하기 어려울 때 AOP를 사용하면 간단하게 분리해 모든 로직에서 사용할 수 있다. 현재는 간단한 코드만 실습해봐서 클래스나 메소드로 분리하는 것과 큰 차이를 모르겠지만, 코드량이 방대해진다면 실감할 수 있을 거라고 생각한다. 다시 한 줄로 요약하자면, 반복되는 코..

    [TIL] DAY 32

    오늘 할 일 실전 자바 SW 개발 스터디 준비 팀 라이브 코딩 참여 강의 듣기 알고리즘 풀기 TIL 1. 통신 방식 (1) 풀 기반(Pull-Based) 통신 점대점 통신 형식으로 클라이언트가 서버로 정보를 요청한다. 보통 클라이언트가 로딩할 정보를 결정하는 상황에서 유용하게 사용된다. (2) 푸시 기반(Push-Based) 통신 이벤트 주도 통신으로 일대일과 일대다 통신을 지원한다. 하나가 아닌 여러 컴포넌트 간에 발생하는 다양한 이벤트에서 의사소통이 발생하는 상황에서 유용하다. 2. 육각형 아키텍처 핵심(코어) 로직과 다양한 구현을 분리하기 위해서 포트를 이용한다. 외부의 이벤트는 포트를 통해 전달되는데, 이때 비즈니스 로직으로 전달된다. 포트와 어댑터의 목표는 코어의 구현과 어댑터 구현의 결합을 제..

    [TIL] DAY 29 & 30 & 31

    오늘 할 일 알고리즘 풀기 과제하기 TIL Enum을 사용해 전략패턴 구현하기 이번 과제를 진행하면서 기능에 필요한 모든 구현을 한 클래스에 작성했었기 때문에 분리하기 위한 방법을 고민했다. 이 과정에서 if문을 없애기 위해 추천받은 방법이 Enum을 사용해 전략패턴을 구현하라는 것이다. 나는 Enum을 사용하는 이유가 되지 않았지만, 일단 도전했다. 내가 알고있던 이놈(Enum)의 개념은 "상수들을 열거해놓은 집합"이었다. 그래서 상수들만 선언해놓고 변수를 상수로 변경하는 것뿐인데 어떻게 분리를 하는 거지?라는 생각이 들었다. 위에서 Context부분을 Enum이라고 생각하고 Strategy 인터페이스를 중간에 두고 각각 행동에 따라 클래스를 구현해 전략을 구현하는 방식으로 진행했다. 하지만 여기서 또..

    [TIL] DAY 27 & 28

    주말 할 일 알고리즘 풀기 김영한 님 기초 강의 끝내기 W3D4 강의 듣기 TIL 1. JPA 기초 강의에서 어떻게 사용하는지 맛만 보았다. 반복 코드들과 기본 SQL을 직접 만들어서 실행해 주는 것이다. 그래서 코드를 객체지향 중심으로 설계하는데 집중할 수 있어 개발 생산성을 높여준다. 2. 스프링 데이터 JPA JPA를 더욱더 편하게 사용할 수 있도록 도와주는 기술로 Repository에 인터페이스만 사용해 개발을 진행한다. 기본 CRUD 기능도 제공되기 때문에 핵심 비즈니스 로직을 작성하는데 시간을 더 투자할 수 있다. 기본은 어디까지나 기본적인 것이기 때문에 동적으로 변하는 쿼리는 사용하기 어렵다. 3. AOP(Aspect Oriented Programming) 공통 관심 사항과 핵심 관심 사항을..

    [TIL] DAY 26

    오늘 할 일 알고리즘 1문제 풀기 W4D4 강의 수강 김영한 님 강의 수강 앨런 팀과 미팅 TIL 작성 TIL 1. 임베디드 DB 현재 도커 컨테이너를 mysql로 만들어 접속해 사용하고 있는데, 만약 도커 같은 외부환경에 문제가 생기면 DB를 사용할 수 없다!! 만약 실제 서비스를 제공하고 있다면 손해가 무지막지할 것이다. 코드를 테스트해야하는 개발자 입장에서도 일의 진행이 원활하지 못하다. 이러한 상황을 피하기 위해 임베디드 DB를 사용한다. h2, embedded로 사용할 수 있는데 가벼운 프로젝트는 h2로 충분하다. 2. 스프링 빈 등록방법 (1) 컴포넌트 스캔 이전에도 살펴보았지만, 추가로 알아가는 게 있어서 작성한다. 컴포넌트 스캔을 사용하면 기본적으로 @Component 애노테이션이 있으면 ..

    [TIL] DAY 25

    오늘 할 일 알고리즘 1문제 풀기 W4D3 강의 수강 김영한 님 강의 수강 TIL 작성 TIL 1. DataSource Database Connection Pool(DBCP)을 관리하는 객체이다. 이 DataSource를 이용해 Connection을 가져오고 반납하는 행동을 반복하게 된다. DataSource의 close()는 Connection을 끝내는 게 아니라 반환하는 것이다. 2. Database Connection Pool(DBCP) 데이터베이스와 연관된 Connection을 미리 만들어두고 Pool에 저장해두었다가 필요할 때마다 가져와서 쓰고 반환하는 방법이다. 매번 Connection을 수행하기에는 이에 따른 손해비용이 크기 때문에 Pool에 저장하고 꺼내쓰는 방식을 사용하는 것이다. 내일 ..

    [TIL] DAY 24

    오늘 할 일 알고리즘 1문제 풀기 과제 계속 진행 김영한 님 강의 수강 TIL 작성 TIL 1. 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC에서의 컨트롤러 역할을 담당한다. 서비스 : 핵심 비즈니스 로직을 구현한다. 리포지토리 : DB에 접근하고, 도메인 객체를 DB에 저장하고 관리한다. 도메인 : 비즈니스 도메인 객체(회원, 주문 등 주로 DB에 저장하고 관리된다.) 2. 정적 콘텐츠 vs MVC와 템플릿 엔진, API (1) 정적 컨텐츠 정적 파일 그대로 웹 브라우저에 나타나도록 전달하는 것이다. 파일이 동적이지 않다. 파일 이름을 그대로 주소에 사용하면 해당 파일 내용이 화면에 보인다. (2) MVC와 템플릿 엔진 템플릿 엔진을 Model, View, Controller로 나누고 View를 템..