서론현재 대다수의 SNS와 그외 많은 서비스들은 사용자들이 올리는 글 또는 사용자들의 사용패턴을 실시간으로 분석하고 그 과정을 통해 의미있는 데이터를 추출해내고 있다. 이와 같이 기업 입장에서는 실시간 데이터를 실시간으로 분석해내는 것이 중요한것 처럼 사용자는 자신이 쓴글이 누군가에게 실시간으로 알려지고 자신은 다른 사람들이 쓴 글의 정보를 실시간으로 받는 것을 원한다. 예를 들어 페이스북은 사용자가 게시글에 좋아요를 누르면 게시글을 작성한 사람에게 "누군가 자신의 글에 좋아요를 눌렀다" 라는 정보가 바로 알려지게 된다. 이런 기능을 푸시알림이라고 하며 푸시를 하기 위해서는 많은 기법들이 존재한며 해당 기법에 대해서 설명한다. HTTP의 한계우선 적으로 사용자 브라우저와 서버간에 정보를 주고 받기 위해서..
서론 웹 어플리케이션을 만들다 보면 한 어플리케이션이 여러 개의 데이터베이스 혹은 여러개의 스키마에서 정보를 가져와서 서비스를 만들어야 하는 경우가 있을 수 있다. 이번에 나같은 경우는 조회 서비스인데 연도를 기준으로 스키마를 나눠서 데이터를 저장하게 되며 해당 연도별 스키마는 서로 합쳐져 조회될 경우 없고 각 스키마에 존재하는 테이블들은 모두 동일한 상태라는 요구사항이 있었다. 이와 같은 경우에 생각 할 수 있는 부분은 당연히 여러개의 DataSource를 생성해야 한다는 것인데 그 이유는 DataSource를 사용하기 위해 사용하는 Database URL정보가 Schema기준이라는 점에서이다. (ex. jdbc:mysql://localhost:3306/2015 -- 2015 schema) 또한 사용자..
서론요즘 Fron-End와 Back-End가 나눠지면서 개발이 되면서 서로 다른 도메인간에 발생하는 Cross-Orign Resource Sharing(이하 CORS) 문제를 해결을 해야한다. 기존의 스프링 같은 경우는 web.xml에 apache tomcat에서 만들어 놓은 필터를 바로 적용할 수 있지만 SpringBoot의 경우 web.xml 파일이 없어서 제공되는 필터를 적용하지 못한다. 그렇다면 스프링 부트에서는 어떻게 CORS문제를 해결하는지 포스팅 한다. SpringBoot CORS Filter적용하기SpringBoot에서 CORS를 해결하기 위해서는 기본 Spring과 마찬가지로 Filter를 사용한다. 하지만 web.xml 파일이 존재하지 않는 SpringBoot에 어떻게 Filter를 적..
서론 프로그램을 작성하면서 단위테스트를 진행하는 것은 견고한 프로그램을 만듬에 있어서 상당히 중요하다. 기본적으로 JUnit은 Spring과 함께 동작하지 않기 때문에 Spring Test를 이용해서 테스트를 진행하고자 하는 Class와 연결을 시켜주어야 한다. 이번 포스팅에서는 JUnit과 Spring을 연동하는 법에 대해서 기록한다.이 글을 쓰는 시점에서의 Spring버전은 4.3.4.RELEASE, JUnit 버전은 4.1.2.RELEASE이다. Spring Test에서 제공하는 어노테이션을 추가하여 JUnit Test Class만들기 JUnit Test Class를 스프링으로 구동을 하려면 Spring Test에서 제공하는 어노테이션과 SpringJUnitClassRunner.class를 사용해서..
서론Spring과 같이 Java 프레임워크로 웹을 개발하다보면 불편하면서 비효율적이라고 들었던 생각이 소스의 사소한 부분의 수정 조차도 서버의 재기동이 필요하다는 것이었다. 크기가 크지않은 프로젝트의 경우 올렸다 내렸다를 반복해도 귀찮음만 참으면 되지만 서버가 올라가는데 길게는 시간단위 짧게는 십분단위의 시간을 소요하게 된다면 참으로 난감한 상황에 부닥치게 된다. 이번에 SpringBoot를 처음 공부하면서 Boot를 사용하면 초기 설정이 필요 없다는 것과 동시에 가장 인상 깊었던 것이 SpringLoaded를 이용하여 소스 수정 시에도 서버의 재시작 없이 변경된 내용을 확인 할 수 있는 것이었다.이번 포스팅에서는 SpringBoot에 대한 간략한 설명 Spring프로젝트와 SpringBoot프로젝트 구..
이번 포스팅은 Proxy Pattern에 대한 내용이다. 모든 사람들이 Proxy Pattern에 대해서 설명할 때 Proxy라는 단어를 먼저 설명하면서 시작하듯이 나 또한 Proxy라는 단어의 뜻을 설명하자면 대리인, 대리자라는 뜻이라는 것으로 설명하려 한다. 단어의 뜻도 중요하지만 디자인패턴을 공부하면서 중요하게 생각해야 할것이 이 Pattern을 어디에 사용하고 사용했을때의 장점은 무엇인지에 대해서 생각하는 것이 매우 중요한것 같다.그래서 스프링에서는 Proxy Pattern을 어떻게 사용하는지 찾아 보던 중 잘 정리해주신 분의 글을 보았다.http://aretias.egloos.com/708477 링크에 설명된 내용을 요약하자면 이러하다. 스프링에서는 @Transaction 어노테이션을 사용할 수..
스프링에서는 기본적으로 Singleton (이하 싱글톤) & Prototype(이하 프로토타입)의 빈 스코프를 지원한다. 웹 어플리케이션일 경우 추가적으로 요청, 세션, 전역 세션에 대해서 지원하지만 이번 포스팅에서는 싱글톤과 프로토타입에 대해서 언급하며 싱글톤 스코프의 빈이 프로토타입 스코프의 빈을 Autowired 할 경우와 프로토타입 스코프 빈이 프로토타입 빈을 Autowired 할 경우 어떤 일이 발생하는지에 대해서 설명한다. 싱글톤 빈 스코프는 XML설정 파일이나 어노테이션 설정 시 별 다른 설정이 없으면 Default로 잡히는 스코프이다. 싱글톤 스코프는 스프링 컨테이너가 생성 될 때 생성되고, 스프링 컨테이너가 내려가면 같이 없어지는 라이프 사이클을 가진다. 프로토타입 스코프의 경우에는 스코..
맨 처음 Spring을 접했을 때 자동으로 만들어지는 프로젝트 구조에 대해서 분석하고 Spring을 시작을 했었듯이 이번에도 기본으로 만들어지는 Play의 프로젝트 구조를 파악한 다음 어떻게 아래와 같은 화면이 나타나게 되었는지에 대해서 알아본다. 1. 프로젝트 분석 맨 처음 프로젝트를 생성하게 되면 위와 같은 형태의 프로젝트 골격을 가지게 된다. 우선 추후에 계속 설명하게 될 폴더는 열어 놓은 상태이며 하나씩 설명하면 다음과 같다. PostingProject -> .idea는 inteliJ에서 만들어놓는 폴더 구조이며 PostingProject -> app은 Scala 혹은 Java소스와 ViewTemplate인 *.scala.html 파일들을 생성하게 되는 곳이다.PostingProject -> co..
1. 개요하이차트를 보면 나오는 차트를 사용자들이 내려 받을 수 있는 기능을 제공한다. 이 기능을 어떻게 구현을 했을지 생각을 해보았고 따라 해보기로 했다. 처음에는 Front-End단에서 해당 기능을 구현을 하려고 했다. 그래서 찾아본 것이 html2canvas라는 녀석이 였고 크롬에서 svg를 이미로 만들어 내는데 성공하였다. 그래서 FireFox에서 테스트를 진행 동작하지 않음, IE에서 테스트 진행.... 동작하지 않음, 사파리 마찬가지.....동작하지 않았다...html2canvas에 대해서 자세히 조사하지 않은 나의 잘못이었다. html2canvas가 이미 FireFox등 몇몇 브라우저에서는 몇가지 문제가 있다는 글들이 있었던 것이다. 근데 또 순수 이미지만 내려 받는건 잘 되었다. 위 처럼 ..
1. Play란Spring이라는 웹개발 프레임워크가 있는데 Play도 웹개발 프레임워크 중에 하나이다. Play는 1.0버전에서는 자바로 구현이 되었다가 2.0부터는 대부분이 스칼라로 구현되어 있다. 그럼 Spring과 차별성을 가지는 부분은 무엇일까?? 스프링은 Blocking I/O 이지만 Play는 Non-Blocking I/O를 기반으로 동작한다. 또한 기능 변경에 의해 소스가 수정되었을 경우 스프링의 경우 WebServer를 재기동하여야 하지만 Play는 재기동이 필요없이 바로 적용된다. 스프링을 주로 쓰고 있는 현재로서 Play의 정확한 기능은 다 모르지만 재기동 없이 바로 적용되는 부분에서는 우와~였다. 2. Play설치 그럼 Play를 설치를 해봐야지?? Play를 설치 하기 위해서는 아래..