내가 처음 영속성 컨텍스트라는 단어를 접했을 때 해당 용어가 의미하는 바를 정확히 이해하지 못하였다."영속성" + "컨텍스트" 두 단어의 조합으로 이루어진 용어인 것 같은데단어 하나하나를 따져보면 영속성은 오래도록 계속 유지되는 성질을 의미하고컨텍스트는 저장소로써 어떤 정보들을 저장하고 관리하는 용도로써 많이들 생각한다. 영속성 컨텍스트 = "오래도록 계속 유지되는 성질들을 저장하고 관리" 라고 정의할 수 있겠는데...이게 뭔 소린가?오래도록 계속 유지되는 성질이라니.. 여튼 용어가 전달하는 의미를 내 나름대로의 해석을 통해 이해해 보려고 했다.그래서 생각해 낸 것이 JPA에서 사용되는 엔티티라는 단어이다."엔티티를 저장하고 관리"사실 JPA를 처음 접하는 분들은 엔티티가 뭔지 궁금해 할 것이다.Enti..
테스트는 JPA 구현체인 하이버네이트를 주로 다룰 것이고 Spring Boot 기반에서 진행할 예정이다.Spring Boot에 대해서 논하기에는 이 또한 분량이 적지 않아 나중에 정리할 예정이다. SPRING INITIALIZR(https://start.spring.io) 에서 기본적인 프로젝트 구성을 다운 받아 다음과 같이 구성하였다. [JPA 테스트 버전]123JPA : 2.1hibernate : 5.0.12spring data jpa : 1.11.1cs pom.xml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707..
이전 프로젝트에서 처음으로 JPA를 사용해 보았다.실무에 적용하기 전에는 JPA가 무엇인지 궁금하여 테스트 삼아 몇 번 공부한게 전부였다.허나 실무에서 직접 사용하려고 했을 때의 중압감은 사뭇 다르다는 것을 느꼈다.이유인 즉슨, 다음의 항목들에 대해서 이해를 하고 있어야 실무에 도입해도 큰 문제가 없다고 들었기 때문이다.JPQL 이란?즉시, 지연 로딩 전략영속성 컨텍스트에 대한 이해자동 변경 감지언제 영속성 컨텍스트가 flush 되는가?연관관계 매핑중에 mappedBy, inverse 이해OSIV 란?N+1 질의 문제 (query)쓰기 지연 솔직히 위의 항목 중 어느 한 가지도 제대로 이해하지 못한 상태였다.그렇게 JPA에 대한 상세 지식이 없는 상태에서 개발을 진행하게 되었고, 어찌됐든 개발이 완료되기..
kubernetes는 배포, 확장 및 운영을 자동화하는 컨테이너 관리툴이다. kubernetes가 왜 필요한지에 대해서 알아보자.kubernetes없이 Docker를 이용하여 애플리케이션을 서버에 배포하고 운영 하려면 shell script를 작성하거나 별도의 툴을 사용해야 한다.shell script를 이용한 배포를 예로 들면 docker image registry에서 애플리케이션이 포함되어 있는 custom docker image를 다운로드 받고 이를 각 서버에 배포하고 실행하는 수준이 될 것이다.이와 같은 배포는 최초 환경 구성 시 빡시게 하면 된다.단, 서비스 운영을 하면서 과도한 사용자 요청이 있을 경우 성능 저하가 발생하게 되는데 그때서야 부랴부랴 서버를 확장하고 애플리케이션을 각 서버에 적절..
Ubuntu 14.04 LTS, Kubernetes 1.5.1 버전을 기준으로 작성한다.Kubernetes 설치를 위한 호스트 정보는 다음과 같다. master 192.168.50.11 node(minion) 192.168.50.2 node(minion) 192.168.50.11 1.root로 로그인 2.모든 호스트에 docker 설치http://lng1982.tistory.com/268 3.kubernetes pods 내부의 컨테이너 관리를 위해 설치# apt-get install bridge-utils 4.git 설치 및 kubernetes clonemaster 노드에만 설치한다.# apt-get install git -y# git clone https://github.com/kubernetes/ku..
[설치 - Ubuntu 14.04]Docker를 설치하기 위해서는 64bit 리눅스 운영체제 및 커널 버전이 3.10 이상이어야 한다.uname -r 명령어를 통해 커널 버전을 확인할 수 있음 Ubuntu 14.04 버전에는 기본적으로 1.5.0 버전의 Docker가 설치되어 있는 것을 확인할 수 있었고, 최신 버전으로 업그레이드 하기 위해서 다음과 같이 진행하였다.패키지 인덱스 정보 업데이트$ sudo apt-get update 패키지 설치$ sudo apt-get install apt-transport-https ca-certificates apt 매니저 키 등록$ sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-..
이클립스 NEON 버전 설치 후 사용해 보고 있는 중이다.여러 가지 기능들 중 가장 기억에 남는 것들만 정리해 본다. Word wrap in text editorsAlt + Shift + Y소스 코드가 길어서 editor 화면을 넘어가면 개행해 준다. Commands and shortcuts to zoom in text editorsCtrl + 더하기, 빼기소스 코드의 font 사이즈를 조절할 수 있음 Automatic Save of dirty editorsPreferences > General > Editors > Autosave소스 코드 자동 저장 기능5초로 설정하고 소스 코드를 수정한 후 저장하지 않으면 5초가 되었을 때 자동 저장된다.자동 저장하는 것은 좋으나 실수로 타이핑되는 코드 까지도 저장 ..
태그를 자꾸 까먹어서 기록한다. 글쓰기 -> HTML 체크 -> 아래 엘리먼트 추가 HTML 체크 해제 후 코드를 추가해 주면 된다. org.hamcrest hamcrest-core 1.3
Spark framework는 가벼운 웹 프레임워크이고 JVM 기반에서 실행 가능하다. jetty 서버가 내장되어 있으며 2.x 버전부터 람다를 사용하고 있어 자바8이 설치되어 있어야 한다. spark 사용 빈도를 조사한 자료를 보니 1위가 개인 프로젝트였고, 2위가 REST API를 제공하기 위한 용도로 많이 사용한다고 한다. 확실히 프로젝트 셋팅하고 REST API를 만드는데 10분도 걸리지 않았기에 dummy API를 제공할 때 사용하면 될 것으로 보이기도 하다. [spark 셋팅] 1. 이클립스에서 gradle 프로젝트 생성 (gradle plugin 설치 필요) 2. build.gradle 파일에 다음의 설정 추가 plugins { id "java" id "application" } group ..
jquery_191_min.js:4 Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://a.test.com" from accessing a frame with origin "http://a.test.com". The frame requesting access set "document.domain" to "test.com", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access. iframe 에..
회사에서 자바스크립트 강의를 듣고난 후 많은 것을 알게 되어 이곳에 정리한다. { var foo = 1; console.log(foo); } console.log(foo); 위의 코드를 실행하면 어떤 값이 찍힐까? 결과는1 1 1 이렇게 두 번 찍힌다. 블럭안에 있는 foo 변수를 블럭 밖에서 사용하지 못할 것으로 예상되지만 Javascript에서 위의 블럭은 아무런 의미가 없다. function bar() { var foo = 2; console.log(foo); } bar(); console.log(foo); { } 블럭은 아무런 의미가 없다고 했는데 function() { } 블럭은 어떨까? 위의 코드를 실행하면 다음과 같이 출력된다. 2 Uncaught ReferenceError: foo is n..
2016/07/01 09:14:00 [crit] 1938#0: *4 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "localhost:20000" 위의 오류는 Nginx에서 네트웍 자원을 엑세스 하지 못해 발생하는 문제인데 다음의 rule을 추가해 주면 Nginx에서 tomcat으로의 네트웍 접근이 가능하게 된다.# setsebool -P httpd_can_network_connect 1 -P 옵션을 주게 ..
https://docs.docker.com/toolbox/toolbox_install_windows/virtual machines 의 라이프 사이클을 관리 vagrant를 사용하지 않는 상황에서는 버츄얼 머신 툴을 이용하여 VM을 생성하고 해당 VM에 OS를 설치해야 하는 반복적이고 지루한 작업들을 해야 한다.허나 vagrant는 이런 반복적인 작업들을 자동화 할 수 있게 제공해 주고 있고 VM의 생성과 시작 그리고 삭제를 편리하게 해준다. 대게 vagrant를 사용하는 가장 큰 이유는 각 개발자간 일치하지 않는 작업 환경을 동일하게 구성하여 일관성을 유지하고 환경 구성으로 인한 작업 시간을 최소화 하기 위해서 사용이 되는데 나는 다음의 3가지 목표를 위해서 vagrant를 선택하게 되었다. 목표 - I..
리눅스 시스템에서 운영을 할 때 필요한 파이썬 유틸을 만들기 위해서내 로컬에 리눅스 명령어가 동작할 수 있는 환경을 만들 필요성이 있었다.찾아보니 Gow 라는 오픈 소스가 있는 것을 확인하였고 이를 사용하기로 하여 정리해 본다. 설치는 https://github.com/bmatzelle/gow 페이지에서 하면 되고 설치 후에 window command 창에서 gow를 치면 다음과 같은 옵션 항목들이 나온다. gow -l 을 입력하면 130여개의 리눅스 명령어들이 존재하는 것을 확인할 수 있다.이제 로컬에서 리눅스 명령어를 사용할 수 있는 환경을 구축했으니 파이썬을 이용해서 다양한 유틸을 만들어 보자.
fork되어진 repository들을 중지하기 위해서는 다음과 같이 진행한다. 1. fork된 repository 클릭 2. Settings 클릭 3. Danger Zone에서 "Delete this repository" 버튼 클릭