메이븐 의존 라이브러리 주입 javax.validation validation-api 1.1.0.Final org.hibernate hibernate-validator 5.2.2.Final org.hibernate hibernate-validator-annotation-processor 5.2.2.Final @Valid를 사용하기 위하여 스프링 컨테이너에 빈 등록 모델클래스에 어노테이션 기반의 검증 코드 작성 컨트롤러단에 적용@ModelAttribute 로 받은 모델 객체가 @Valid 적용이 되어 있다면 수행BindingResult 타입으로 성공 실패 여부 판단
몇일전에 디도스 공격을 당해서 클라우드 호스팅중인 업체에서 하룻동안 서버를 정지시켰다. 공부겸 사이트를 만드는 것이라 누가 접속할 것이라고는 생각도 못했다. 그래서 톰캣에 로그를 남기고 비정상적으로 많은 접속을 하는 아이피를 차단하기 위해 톰캣차원에서 로그를 남기기로 했다. centos 기준...톰캣에 로그기록을 남기기 위한 설정은 다음과 같다./etc/tomcat6/server.xml 파일 내용 중 아래 부분(Valve엘리먼트)의 주석을 제거한 후 Tomcat을 재시작하면 된다. (초기에는 주석처리가 되어있다.) 아래와 같이 수정했다.(아래의 엘리먼트가 위치할 곳은 Engine엘리먼트 내부이다.) 참조: http://tomcat.apache.org/tomcat-5.5-doc/config/valve.ht..
File newFile = new File(path, fileName); if(!newFile.exists()){ newFile.mkdirs(); newFile.createNewFile(); } 리눅스에서는 파일에 생성에 대한 기본권한이 644 이다. (폴더의 기본 권한은 755) umask 라는 커맨드에서 초기값이 022로 되어있는데..이것을 토대로 폴더(디렉토리)는 777-022 = 755파일은 666-022 = 644파일이 666인 이유는 etc쪽의 설정파일에서 설정 값을 잡고 있는 듯 하다. 644란100의 자리 숫자인 6은 root사용자의 권한을 나타내고10의 자리 숫자인 4는 그룹에 속한 사용자를 나타낸다.그리고 1의 자리 숫자인 4는 그 외의 사용자를 지칭한다. 파일이나 폴더에 대한 허가권으..
cnetos를 사용중인데 사이트를 배포하고 접속해서 로그인을 해보니 처음엔 글자가 깨지더니 두번째로한글을 인서트하니 데이터베이스 에러를 내뿜었다. show create table 테이블이름;테이블의 정보를 보는 것으로 결과의 마지막에 charset이 라틴어로 되어있어서 한글을 처리하지 못한 것이다. 테이블을 생성할 때 디폴트 캐릭터셋을 설정하기 위해서는 다음 경로의 파일을 수정한다.# vi /etc/my.cnf 파일을 열었으면 아래와 같이 수정한다.[client]default-character-set = utf8 [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recomm..
1. 우선 구글 계정 가입을 한다. 2. https://www.google.com/settings/u/1/security/lesssecureapps 이곳에 가서 보안 수준을 사용으로 한다. 3. spring에서 메일 관련 라이브러리를 pom.xml에 의존성 주입 - javax.mail mail - org.springframework.integration spring-integration-mail 4. 스프링 컨테이너인 root-context.xml에 관련 빈을 정의한다. helpMailSendableJavaMailSenderImpl을 주입받고 실제로 메일을 보내는 일을 담당하는 사용자 정의 인터페이스 JavaMailSenderImpl메일을 보내기 위하여 여러가지 값을 설정, 제공하는 인스턴스 smtp.g..
테이블에 새로운 칼럼 추가 alter table 테이블명 add column 추가칼럼명 타입선언 not null; 테이블의 칼럼타입 변경 alter table 테이블명 modify column 칼럼명 변경할타입선언 ; 테이블의 칼럼이름 변경 alter table 테이블명 change column 기존칼럼명 변경칼럼명 타입; 테이블 칼럼 삭제 alter table 테이블명 drop column 칼럼명; 칼럼에 인덱스 선언 alter table 테이블명 add index 부여하고싶은인덱스명( 칼럼명1, 칼럼명2, ........ ); 칼럼 인덱스 삭제 alter table 테이블명 drop index 인덱스명; 테이블명 변경 alter table 원본 테이블명 rename 새로운 테이블명; 테이블 엔진 및 ..
먼저 yum 패키키 설치 명령어로 svn 패키지를 설치합니다.# yum -y install subversion 저장소로 사용할 디렉토리를 생성합니다. (저는 root경로에 web디렉토리를 저장소로 하겠습니다.) # mkdir /svn# cd /svn# svnadmin create 만들저장소명저장소를 위치시킬 디렉토리를 하나 만들고, 만든 디렉토리로 이동 후 svnadmin 명령으로 저장소를 만듭니다. 이제 /svn/저장소명 경로에 svn에 설정 폴더들이 생기게 됩니다.그중에서 conf디렉토리에 있는 svnserve.conf 파일을 vi로 열어서 다음항목의 주석을 해제합니다,anon-access=readauth-access=writepassword-db=passwd여기서 중요한 부분은 각 항목의 앞부분에 ..
clone()은 최고 조상인 Object클래스에 정의된 멤버이다. 이것이 하는 일은 생성된 객체와 똑같은 값을 가지고 있는 복사본의 인스턴스를 생성하는 일을한다.변경되기 전의 값을 참고해야할 때 또는 원래의 값으로 돌려 넣고 싶을 때 이용하면 도움이 될 것이다. 이 clone()를 객체를 상대로 사용하기 위해서는 해당 객체에 Cloneable이라고 하는 인터페이스 구현체를 implements 해줘야한다.그리고 해당 clone()를 오버라이딩 해 해당 객체를 복사하는 코드를 기술해야 한다. clone()은 구현되는 사용자 클래스의 객체멤버에 대한 완전한 값복사를 지원하지 않는다. 참조복사라고하고 얕은복사라고도 하는 주소복사가 이뤄지기 때문에 복사본의 객체에 참조형 멤버변수가 존재한다면 그 값의 변경이 원본..
tomcat을 yum 패키지를 이용해서 설치 하였으며. tomcat의 기본 위치는 /usr/share/ 경로에 있다. 아래는 tomcat의 server.xml 파일의 내용 server.xml을 살펴보면 host엘리먼트에 appBase속성이 tomcat의 진입점을 나타낸다 설정을 안했을 때는 기본경로로 webapps 를 잡고있다. 기본적으로는 위처럼 명시 되어있으며, 실제경로는 catalina_home변수/webapps/ROOT를 가리킨다. 이제 톰캣의 기본 진입 경로인 root경로를 바꾸기 위해서는 host엘리먼트의 속성인 appBase의 경로를 변경하고 이를 적용시키기 위해서 Context엘리먼트를 host엘리먼트 내에 위치시킨다. 변경된 server.xml이 위에 보이는것이다. Context엘리먼트의..
호스트OS인 윈도우에서 NAT환경의 게스트OS인 리눅스에 접속하는 방법 우선 NAT환경으로 리눅스에 셋팅되어 네트워크 연결이 가능하다는 가정하에 정리한다. Edit - Virtual Network Editor - Nat Settings.. 에서 Port Forwarding에 추가를 해야한다.타입은 TCP로 호스트 포트는 윈도우에서 접속할 포트를 적어준다. 1024이상을 적는다. 나는 9999포트를 넣었다. 아이피는 해당 게스트OS 리눅스의 ifconfig의 ip를 적는다. 버츄얼 머신 포트는 게스트OS로 접속될때 포워딩 될 포트를 적는다. SSH의 포트인 22를 넣었다. 이제 호스트OS인 윈도우의 방화벽 포트를 열어줘야 된다. NAT Settings..에서 설정한 포트인 9999를 열어준다.제어판 - 방..
자바 7 (Diamond)지시자 제네릭스를 사용할 때 기존의 list1변수처럼 인스턴스 생성을 해왔지만, 자바7 부터는 지시자로 new연산자 부분을 함축할 수 있게 되었다. 자바7 부터는 정수형․실수형 리터럴에 _구분자를 넣을 수 있게 되어 숫자를 구분하기가 수월해졌다. switch문의 인자로 String타입의 값을 사용할 수 있게 되었다. try~catch문의 catch문에서 익셉션타입을 여러개 정의 할 수 있게 되었다. 기존에 파일 입출력을 사용하기 위해서는 자원을 가져다 쓰고 나면 finally부분에서 자원을 해제해줘야만 했다. 자바 7부터는 위와 같은 표현이 가능하다 try키워드문의 인자에 자원을 할당하는 코드를 생성하면 자원해제는 자동으로 관리해준다. try블록에 존재하는 기능이 한번에 자동으로..
animate함수는 요소에 대하여 애니메이션 효과를 지정하여 보여줄 수 있도록 합니다. animate의 함수 형태1234$(선택자).animate(object);$(선택자).animate(object, speed);$(선택자).animate(object, speed, easing);$(선택자).animate(object, speed, easing, callback);csobject는 객체타입으로 속성을 지정한다.speed는 밀리초를 지정하여 애니메이션이 수행될 시간을 지정한다. (1000은 1초)easing은 애니메이션의 부드러운 효과를 나타낼 때 사용한다.callback은 콜백함수로써 애니메이션이 끝난 후 수행될 함수를 지정한다. animate에 지정할 수 있는 효과 속성opacity, top, lef..
Templeate method패턴은 추상메서드를 사용한 패턴으로써 메소드의 실행 알고리즘은 추상클래스에서 담당하고, 이 추상클래스를 상속받는 클래스는 추상클래스의 추상메서드를 구현하는 패턴입니다. 이 패턴을 사용함으로써 생기는 이점은 알고리즘의 변경사항이 생길 때, 각각의 클래스에 대한 변경을 추상클래스 하나의 변경으로 축소함으로써 일일이 변경해야되는 막가파식 코딩을 막을 수 있습니다. //템플레이트 메소드 패턴 abstract class LotteWorld{ int token; abstract int 표내기(); abstract void 타기(); protected void 체험(){ int currentToken = 표내기(); //System.out.println(currentToken); if(c..
Array객체의 선언 방법var array1 = [1,2,3,4,5];var array2 = new Array();var array3 = new Array(10);var array4 = new Array(5,4,3,2,1); /* Array객체 */ arr = new Array(5,4,3,2,1); console.log('배열의길이>>>>>'+arr.length); console.log('Array.join()>>>>>'+arr.join()); //배열을 문자열로 리턴 console.log('Array.pop()>>>>>'+arr.pop()); //배열의 마지막요쇼를 제거 후 마지막요소 리턴 arr.push({이름:'남궁춘'}); //배열의 마지막에 새로운 요소 추가 console.log('Array.j..