본문 바로가기

Junior 사내스터디17

git과 svn의 차이, rebase와 merge의 차이 GIT과 SVN의 차이점 SVN은 중앙집중관리방식이고 GIT은 분산관리방식을 사용한다. SVN 은 내 로컬PC 에서 Commit을 하면 바로 중앙저장소에 반영이 되는 반면 GIT 은 내 로컬PC에서 Commit을 하면 로컬 저장소에 반영이 되고 로컬저장소에서 Push를 하면 원격저장소에 반영이 된다. SVN의 장점 SVN은 GIT보다 직관적이다. 모든 사람이 중앙서버에 있는 같은 자료를 받아오고 내가 Commit을 하는 순간 모든 사람에게 공유가 된다. 이러한 방식의 단점으로, 만약 두 사람이 하나의 파일을 동시에 수정하고 커밋하였을 때 충돌이 일어날 확률이 높다. 반면 GIT은 직관적이지 못하고 적응하는데에 시간이 필요하다. 내가 한 작업물을 원격저장소에 올리려면 우선 로컬PC 에서 작업내용을 Comm.. 2019. 11. 13.
스프링부트에서 JdbcTemplate를 직접 사용하여 RestAPI구현하기 스프링부트는 Properties파일에 DBMS에 관한 정보를 따로 작성하는 편리한 기능을 제공하는 것을 잘 알고 있었다. 스프링5에서는 JdbcTemplate사용시 코드상에 DBMS에 관한 정보를 작성해야 했는데, 나는 스프링부트에서 한번도 JdbcTemplate를 직접 사용해 본적 없었고 항상 JPA를 사용했었다. 그래서 스프링부트에서 JdbcTemplate를 사용하는 것은 익숙한 듯 익숙하지 않았던 헷갈리는 부분이 존재했다. JDBC에 자바 상의 DB를 위한 가장 기본적인 기능이 들어있음에도, 기본적인 것을 파헤쳐 보지 않고서 Mybatis이나 JPA같은 툴에 대해서 기술에만 초점에 맞춰서 배우려 한 것은 아닌지 직접적으로 반성하게 되었다. 2019. 11. 13.
DBMS에서 데이버베이스란 용어와 스키마라는 용어 데이터베이스와 스키마는 비슷한 느낌을 준다. 하지만 스키마는 테이블들을 가지고 있다는 고정된 의미인 반면 데이터 베이스는 DBMS 마다 의미가 다소 다르다! 일반적으로는 스키마가 데이터베이스와 같거나 데이터베이스 속에 포함된다. 스키마는 데이터 베이스보다 작거나 같다. 포스트그레스에서 서로 다른 데이터베이스 간에는 쿼리수준에서는 조회할 수 없도록 하였고 이를 물리적인 분리의 개념으로 다루고 있다. 다른 데이터 베이스에 접근하고자 한다면 db link라는 별도의 방법을 사용해야 한다. docker run -d -p 5430:5432 --name postgres_boot -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=sungmin -e POSTGRES_DB=springdata .. 2019. 11. 8.
간략히 REST API는 무엇인가요(어떤 메소드가 있나요)? https://www.youtube.com/watch?v=RP_f5dMoHFc API서버를 제공할 때 풍부한 의미를 갖춘 명세를 담자. 웹을 위한 아키텍처 스타일(api경로, 응답번호, 하이퍼링크 정보) -> 서버와 클라이언트의 버전 상관없이 독립적인 진화를 위해서. 서버의 기능이 변경되어도 클라이언트를 업데이트를 할 필요 없게하자. REST개념을 탄생시킨 로이필딩의 의도와 정의와는 다르게 개발자들이 흔히 실무에서 REST라고 부르는 것에 대해서만 정리하자면 아래와 같이 말할 수 있다. REST란? HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 용도에 맞게 구분해서 사용하며 .. 2019. 11. 8.
Spring DI 의 종류에는 어떤 것들이 있는가? DI 의존성주입의 종류는 3가지 이다. 1. 필드 인젝트 2. 생성자 인젝트 3. 세터 인젝트 여기서 DI를 지난 시간에 배운 전략패턴과 연관지어 생각해 보자. 지난 시간에 나는 전략패턴의 용도는 합성을 이용하여 런타임중에도 원하는 기능을 주입하여 변경이 가능하도록 하기 위해서 사용한다고 했다. DI 세종류를 살펴보자. DI에서 필드 인젝트와 생성자 인젝트는 런타임시에 변경할 수 없다. 세터 인젝트만 런타임시에 변경이 가능하다. 따라서 필드 인젝트와 생성자 인젝트도 전략패턴이냐? "아니다." "세터 인젝트만 전략패턴이다."라고 말할 수 있는 것이다. 세터가 전략패턴이라고 단정 지을 순 없고, 용도에 따라서만 말할 수 있다. 이제 DI와 전략패턴의 차이점이 보인다. 그 차이점은 역시 용도와 밀접하다. DI.. 2019. 11. 8.
전략패턴 모든 디자인 패턴이 만족하는 것은 아니지만, 대부분의 디자인 패턴은 확장에는 열려있고 수정에는 닫혀있는 ocp의 달성을 지향한다. 전략패턴 이란? 여러 알고리즘이 존재할 때 하나의 추상적인 접근점(인터페이스)을 만들어 접근점에서 원하는 알고리즘을 선택해서 문제를 쉽게 해결하기 위한 구조를 마련해주는 패턴이다. ->동일 목적 알고리즘의 선택 적용 문제(패턴을 구분 짓는 것은 구현방법이 아니라 '용도'이다) 전략패턴의 장점 새로운 알고리즘이 개발되더라도 기존에 작성했던 클래스의 코드를 수정하지 않고도 이를 쉽게 추가 적용할 수가 있게한다. (ocp달성과 밀접) 전략패턴의 작은 특징들 1. 동일한 알고리즘이라도 적용대상에 따라 새로운 알고리즘 객체가 생성될 가능성이 크기 때문에, runtime에서 사용되고 있.. 2019. 11. 6.
도커 org.postgresql postgresql 의존성 docker run -d -p 5430:5432 --name postgres_boot -it --rm -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=sungmin -e POSTGRES_DB=springdata postgres 컨테이너 생성(경량 리눅스와 그안에 postgres를 가진형태) docker volume create pgdata docker run -itd -v pgdata:/var/lib/postgresql/data postgres 데이터를 계속해서 유지해야 한다면 Docker 볼륨옵션을 이용해서 한번더 run 시키자 docker exec -it p.. 2019. 11. 6.