2018년 5월 31일 목요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 37일차(RabbitMQ, WebSocket)

RabbitMQ Queue형식이고 FIFO다. 이벤트 프로그래밍에서 주로 사용된다. 여러가지 방식이 있다. publis / Subscribe(발행자,구독자) 패턴: 구독하고 있는 사람들에게 모두 발송한다. topics 패턴 : 패턴에 의해 읽어간다.(한큐에 같은 패턴의 여러 클라이언트가 붙어있을 경우는 먼저 호출한 클라이언트에게만 발송된다.) WebSocket 어떤 브라우저에서는 WebSocket을 지원 안할수 있다. 그래서 SockJS를 사용한다. 연결 흐름은 HTTP연결후 WebSocket연결을 한다. 크롬 요소검사에서 Network - WS - Frame 메뉴에서 통신하는 메시지를 볼수 있다. 오래동안 사용하지 않으면 연결이 끊길수 있다. 백그라운드에서 특정 주기마다 통신해야한다. Srping...
Share:

2018년 5월 28일 월요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 35일차(Test, 공부방법)

Controller 테스트 @RunWith(SpringRunner.class) @WebMvcTest(BoardController.class) RunWith는 Runner를 구현한 객체를 이용해서 Test를 수행한다. SpringRunner는 내부적으로 ApplciationContext를 가지고 있고, 해당 Test객체도 Bean으로써 등록된다. @WebMvcTest : Spring MVC를 테스트를 사용하기 위한 애노테이션이다.Controller는 여러개의 Service를 사용한다. Service의 구현과 상관없이 Controller를 테스트해야한다.이것이 올바른 Controller의 단위테스트가 된다.@WebMvcTest(BoardController.class) : BoardController를 테스트하겠다. @Autowired private...
Share:

2018년 5월 22일 화요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 32일차(Exception처리)

Exception 화면 Exception이 발생하면 사용자에게 에러화면을 보여줘야 한다. Exception 처리 처리하는 메소드에서 try cath문을 통해 처리하면 프로그램이 죽지않지만 잘못된 값을 가질수 있다.  메소드에서 throws Exception명을 통해 Exception을 넘겨줘서 호출한 곳에서 try - catch 처리를 한다. Controller, Service, Repository에 throws Exception명을 처리하여 Dispatcherservlet에 에러 처리를 넘긴다. ExceptionHandler를 이용해 에러 처리를 한다.(Web api와 일반 호출하는 방법에 대해 최소 2개이상 에러 처리를 해야한다.) Excpetion처리를 위한 에러 처리를 하는 전용 클래스를...
Share:

2018년 5월 17일 목요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 30일차(Test)

1. Test Spring Boot는 격리시켜서 테스트 한다. 1번째 방법 설정파일에 설정된 모든 빈들을 읽어서 사용한다. @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class UserRepositoryTest 2번째 방법 @Repository와 @Entity만 생성한다. @SpringBootApplication에서 @Autowired가 있으면 주입이 안될수도 있다. @Autowired(required = false)로 지정해주면 된다. @RunWith(SpringRunner.class) @DataJpaTest public class UserRepositoryTest 2. Jenkins(CI) https://jenkins.io/ java와...
Share:

Spring boot에서 @SpringBootTest와 @DataJpaTest 차이점

Test Spring Boot는 격리시켜서 테스트 한다. 1번째 방법 설정파일에 설정된 모든 빈들을 읽어서 사용한다. @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class UserRepositoryTest 2번째 방법 @Repository와 @Entity만 생성한다. @SpringBootApplication에서 @Autowired가 있으면 주입이 안될수도 있다. @Autowired(required = false)로 지정해주면 된다. @RunWith(SpringRunner.class) @DataJpaTest public class UserRepositoryTest...
Share:

2018년 5월 15일 화요일

Docker 정리

Docker 명령어 https://docs.docker.com/get-started/ #도커 이미지 목록 docker images #도커 컨테이너 전체 목록 docker container ls -all #도커 실행중인 목록 docker ps #도커 컨테이너 전체 목록 docker ps -a #도커 죽이기 docker kill 컨테이너id #도커 삭제하기 docker rm 컨테이너 id #도커 이미지 삭제하기 docker rmi 컨테이너 id #Compose 파일로 컨테이너 생성(-d : 백그라운드 실행), docker-compose.yml파일이 있는곳 실행 docker-compose up -d #Compose 파일에 정의 된 서비스 용 컨테이너 제거 docker-compose down #도커...
Share:

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 29일차(docker)

Docker 명령어 https://docs.docker.com/get-started/ #도커 이미지 목록 docker images #도커 컨테이너 전체 목록 docker container ls -all #도커 실행중인 목록 docker ps #도커 컨테이너 전체 목록 docker ps -a #도커 죽이기 docker kill 컨테이너id #도커 삭제하기 docker rm 컨테이너 id #도커 이미지 삭제하기 docker rmi 컨테이너 id #도커 이미지 생성 및 태그 부여(현재지점) #tag명:버전 (입력하지않으면 latest로 입력되고 생성할대 마다 이미지가 계속 쌓인다) docker build -t 태그명 . #도커 이미지 실행 #-d : 백그라운드 실행 docker run -p 내컴퓨터포트:도커연결할포트...
Share:

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 28일차(docker)

Docker 도커이미지 : 도커에 의해서 설치되는 것 명령어 docker images : 도커 이미지 목록 설정 https : 443포트사용 links : 도커의 아이피는 항상 변경되서 다른 도커를 연결할때 links라는 옵션을 사용한다. volumes : 설정파일을 도커안에 복사해서 사용한다. docker-compose.xml : 어떻게 실행할지 아는 파일...
Share:

2018년 5월 14일 월요일

2018년 5월 13일 일요일

패스트캠퍼스 개발자 커리어 컨퍼런스

이직을 꿈꾸는 개발자들에게 선배 개발자들이 진솔하게 전하는 개발자 이야기 # 인사 담당자가 말하는 개발자 채용 # 개발자로서의 성장 # 한국 개발 커리어의 현실 에 대한 내용을 얘기해보는 컨퍼런스다. Session 1. 인사담당자가 말하는 개발자 채용 1.1 개발인력의 공통특징/특성 및 채용관점에서 본 개발인력에 대하 요구역량/성장경로 시간이 지날 수록 아래로 가서 역량을 펼쳐라 본인이 가치창출, 희소성, 모방의 어려움, 비 대체성이 있는지 확인하라(by 제임스반) 30대 중반부터 생산성이 하락 요즘은 역량기반으로...
Share:

2018년 5월 12일 토요일

github에서 특정 파일 삭제 하기

특정파일(yml파일) 모든곳에서 히스토리 삭제 git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.yml' --prune-empty -- --all # 모든 히스토리에서 해당 파일 삭제 git push origin --force --all 원격 저장소와 로컬 저장소에 있는 파일을 삭제 git rm file1.txt git commit -m "remove file1.txt" git push 원격 저장소의 파일 삭제 git rm --cached file1.txt git commit -m "remove file1.txt" git push * 참고 사이트 https://help.github.com/articles/r...
Share:

AWS Linux에서 JDK 1.8 , Tomcat 8.5 , Maven 설정하기 (mac기준)

1. 인스턴스 생성 Linux를 선택하고 기본으로 셋팅하고 만든다.(고정 아이피도 설정) 보안그룹에서 8080, 22, 80번 포트를 열어둔다. 2. 터미널에서 키에 대한 권한설정(ec2-user계정) #파일권한 변경 chmod 400 키파일디렉토리/lalwrj.pem AWS에 접속하기 ssh -i ~/키파일디렉토리/pem키파일 ec2-user@아이피주소 아이피주소 : IPv4 Public IP 3. 루트계정 만들기(ec2-user계정) 3.1. 루트관리자 계정 만들기(root) sudo passwd 처음엔...
Share:

2018년 5월 10일 목요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 26일차(Web API, 소켓)

Web API RestTemplate WebClient(qlehdrl) 소켓 HTTP통신으로는 안되고 웹소켓을 사용해야 한다. websocket, stomp, sock.js 웹소켓을 지원해주지 않는 브라우저를 위해 라이브러가 있다.자바스크립트 라이브러리 : socket.io스프링 라이브러리 : sock.js subscribe는 서버에게 특정 주소로 구독을 요청한다. 서버는 클라이언트가 요청한 주소를 알고있다. 서버한테 특정 주소로 메시지가 오면 구독한 클라이언트에게 전송한다. spring에서 /app 경로는 생략한다. SimpMessagingTemplate는 메시지를 보내기위한 객체 채팅방에 접속할때 연결되고 나가면 연결이 끊긴다. 페이지를 나가도 연결을 유지하려면 원페이지로 만들어야 한다.(프론트...
Share:

2018년 5월 9일 수요일

Spring JPA

EntityManager EntityManager는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는다. 트랜잭션을 시작할 때 커넥션을 획득한다.(@Transactional이 없으면 EntityManager를 관리하지 못한다.) 하이버네이트를 포함한 JPA구현체들은 EntityManagerFactory를 생성할 때 커넥션 풀도 만든다. 스프링 부트에서는 필터(OSIV) - DS - C - S - R - DB 순으로 처리된다.필터(OSIV) - DS - C 에서는 트랜잭션이 ReadOnly이다.S - R - DB 단계에서는...
Share:

스프링에서 검증 @Valid 와 BindingResult

@Valid Dispatcherservlet이 메소드안에 선언된 객체를 만들어주고 값을 넣어준다. @Valid선언된객체에 설정을 바탕으로 검사후 BindingResult에 담아준다. 에러를 발생하려면 FieldError객체를 만들어서 BindingResult에 넣어준다. 태그에서 object에 담긴 객체의 프로퍼티를 filed *{필드이름} 형식으로 사용한다 errors는 BindingResult에 있는 에러값을 출력해준다. BindingResult.hasErrors : 에러가 있는지 검사한다. lombok, thymeleaf를 사용하여 사용한 예제이다. @Setter @Getter @ToString public class UserJoinForm { @NotNull @Size(min...
Share:

2018년 5월 8일 화요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 25일차(JPA, Valid)

데이터베이스를 많이 사용하는 사이트는 어떤 곳일까? 정적 데이터(사진사이트) 비지니스 로직(은행) DATA 비지니스 로직이 많을때 여러개의 WAS를 사용 L4스위치를 통해 하나의 WAS를 통해 사용가능하게 할 수 있다.(비싸다) 브라우저와 WAS사이에 nginx, 웹서버를 두어서 라운드 로빈방식으로 구현 요청이 올때마다 하나의 WAS에 연결해준다. 세션은 WAS남기 떄문에 문제가 있다. 그래서 세션정보를 공유하는부분을 만들어야한다. Spring Session을 통해 Redis에 저장할 수 있다. Nginx는 재시작을 해도 기존 사용자가 있다면 프로세스를 다 쓸때까지 종료되지 않는다. 새로 추가된 Nginx는 추가된 WAS에 연결되고 사용자가 사용하던 Nginx는 기존사용 종료후 재시작 되서...
Share:

2018년 5월 7일 월요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 24일차(Spring Security Filter,Spring Boot Resource)

Spring Security Filter 필터에서 인증처리를 한다. WebSecurity는 HttpSecurity를 통하지 않고 DispatcherServlet로 전송하고 싶을때 사용한다. HttpSecurity는 인증처리를 실행한다. addFilterBefore : 시큐리티 필터처리 되는 부분에서 중간에 필터를 넣는다. 소셜 로그인 소셜로그인 정보로 저장된 정보가 있는지 판단 있다. 인증정보 설정(Redirect) 없다 이미 이메일로 가입된 경우 아이디, 패스워드로 로그인, 인증정보제거 이메일이 없는 경우 유저정보 저장, 유저커넥션 정보 저장, 인증정보 저장 이미 로그인 상태 유저커넥션정보 저장 Spring Boot 2.0 Spring Boot에서는 resources/static/...
Share: