StarUML에서 시퀀스다이어그램을 그릴 때 몇 가지 셋팅이 필요한데 매번 까먹어서 이곳에 정리한다. 시퀀스 다이어그램을 그리기 위해서는 다음과 같이 진행Model Explorer 에서 클릭 오른쪽 마우스 Add Diagram -> Sequence Diagram 생성 UML 파일 생성 후 수정을 하게 되면 backup 파일이 생기게 되는데 안 생기게 하기 위해서는 다음과 같이 한다.자동 백업파일 생성 해결은 Option -> General -> Create backup file의 체크를 해제
369 게임 알고리즘을 작성해 보았다. 문제는 우리가 아는 게임과 동일하다. 3 이라는 숫자를 부르면 박수 한 번.6 이라는 숫자를 부르면 박수 한 번.9 이라는 숫자를 부르면 박수 한 번.33 이라는 숫자를 부르면 박수 두 번.369 라는 숫자를 부르면 박수 세 번. 위의 문제에 대한 알고리즘은 무엇일까? 주어진 숫자의 자릿수마다 3, 6, 9라는 값이 포함되어 있는지 확인 후 count를 하면 된다. String의 indexOf를 이용하여 값의 포함 여부를 확인하려고 했지만 너무 쉬운 것 같아 다르게 문제를 풀어보았다.
몇일전에 클러스터드 인덱스와 넌 클러스터드 인덱스에 대해서 나에게 물어보신 분이 계셨다.헌데 내 기억 속에는 클러스터드 인덱스는 테이블 당 1개만 생성할 수 있다는 것만 기억날 뿐 다른 것은 기억나지 않았다. 그래서 내 기억 속에 오랫 동안 자리 잡기를 바라는 마음으로 이곳에 정리한다. 클러스터드 인덱스와 넌 클러스터드 인덱스는 간단하게 다음과 같이 정리할 수 있다. 클러스터드 인덱스 넌 클러스터드 인덱스 차이 물리적으로 행을 재배열 물리적으로 재배열 하지 않는다. 크기 인덱스 페이지 용량이 넌 클러스터드 인덱스 페이지 용량보다 작다. 클러스터드 인덱스 페이지 용량보다 크다. 선택도 30% 이내에서 사용해야 좋은 선택도 3% 이내에서 사용해야 좋은 선택도 최대 갯수 테이블당 1개 테이블당 249개 위에서..
웹 애플리케이션을 개발할 때 세션을 이용하여 사용자 로그인 정보를 저장하고, 사용자의 로그인 상태를 유지할 수 있게 개발하는 방법은 많은 개발자가 알고 있다.하지만 로그인 상태를 유지하기 위해서 서블릿 컨테이너인 tomcat이 내부적으로 어떻게 동작하는지 모르는 분들이 계셔서 이곳에 정리를 해보려고 한다. 로컬에 톰켓 설치 후 구동 HTTP request, response 헤더를 확인해야 하기 때문에 크롬의 개발자 도구를 이용한다. 크롬 개발자 도구의 Network 탭을 선택한 후 http://localhost:8080/login.jsp 접속 HTTP 헤더 정보를 보면 Response Headers에 쿠키 정보를 client로 전달한 것을 볼 수 있다. JSESSIONID 값이 톰켓에서 발급하는 쿠키 정..
자바의 접근 제어자는 다른 클래스로부터 정보와 데이터의 접근을 제어한다.public : 어떤 클래스에서도 접근이 가능private : 외부의 어떤 클래스에서도 접근이 불가능protected : 같은 패키지 및 상속 받은 클래스에서 접근 가능.default : 같은 패키지에 있는 클래스에서만 접근 가능 여기서 protected, default 접근제어자를 사용할 때 주의해야 할 점은 꼭! 같은 패키지여야만 한다는 것이다.예를 들어 A 패키지에 존재하는 Board 클래스에 default 접근제어자로 선언되어 있는 add 메소드가 존재하고, A 패키지 하위에 B 패키지가 존재한다면. B 패키지 안에 있는 NoticeBoard 클래스에서 A 패키지에 있는 Board 클래스의 add 메소드에 접근할 수 없다. 즉..
정규표현식은 특정한 규칙을 가지는 문자를 표현하는데 사용하는 형식 언어이다.정규표현식을 잘 모를 때에는 validation 체크가 상당히 고단하고, 지루했지만 정규표현식을 자유 자재로 다룰 줄 알게 되면 상당한 시간을 단축할 수 있고, 유용하며 코드가 깔끔해 진다. 가끔 표현식을 까먹는 경우가 있어 이곳에 표로 정리를 하고, 각 표현식에 대한 테스트 케이스를 만들어 보았다. 표현식 설명 ^ 문자열의 시작 $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나있음 [] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 ..
XSS (Cross Site Scripting) 공격을 통해 웹 사이트의 보안을 취약하게 할 수 있는 툴이 있다.Burp Suite 라는 툴인데, 이 툴을 이용하게 되면 javascript를 이용한 validation체크를 우회할 수 있다.이 말은 웹 사이트의 보안을 유지하려면 client단에서의 javascript 유효성 체크뿐만 아니라 서버단에서의 유효성 체크도 해야 한다는 것이다. 간혹 우리 개발자들은 바쁘고 시간이 없다는 이유로 클라이언트의 유효성 체크만 하고 넘어가는 경우가 비일비재하다. 물론 나 또한 그런 경험이 있다. Burp Suite의 동작 원리는 간단하다.1. local PC 웹 브라우저에서 naver.com HTTP request2. proxy server(Burp Suite)3. 네..
개인 프로젝트인 스프링 3.1 기반의 웹 애플리케이션에 시큐리티를 추가해 보기로 했다. 최종 구현 목표는 DB로 인증 및 URL 관리를 하는 것이며 일단 단계적으로 시큐리티가 어떤 기능을 지원하는지를 알아가기 위해서 오늘은 프로퍼티를 이용한 인증 및 권한 부여 방법에 대해서 설명하려고 한다. 먼저 스프링 시큐리티를 적용하기 위해서는 pom.xml에 라이브러리를 추가한다. org.springframework.security spring-security-core ${spring.security.version} org.springframework.security spring-security-config ${spring.security.version} org.springframework.security spri..
maven package를 실행했는데 JUnit으로 만든 테스트 케이스를 실행하지 못하는 현상이 있었다.혹시 @Ignore 애노테이션이 붙어 있어서 그런 것일까?아님 컴파일된 테스트 클래스가 test-classes에 없어서?이클립스 설정 문제 때문에? 발생 가능한 모든 상황들을 다 확인해 보았지만 위의 문제로 인한 것은 아니고, pom.xml에 dependency로 JUnit이 정의되어 있지 않아서 였다. Java Build Path에는 JUnit 라이브러리가 추가되어 있는데 왜 pom.xml에 JUnit 라이브러리를 추가해야 하는지 의문이 들었지만 곧 해답을 찾을 수 있었다. 이클립스의 메이븐 플러그인은 Java Build Path의 라이브러리를 참조하지 못하고, pom.xml에 정의되어 있는 라이브러..
FTP 모듈을 사용하게 될 일이 생겨 예전에 만들었던 FTP 프로그램을 메이븐 프로젝트로 옮기게 되었다. 내가 만든 FTP 모듈은 NetComponents-1.3.8.jar 라이브러리를 필요로 하는데 메이븐 중앙 리포지토리에서는 해당 라이브러리를 관리 안하고 있었다. 결국 아래와 같은 명령어를 이용하여 .m2\repository 디렉토리에 NetComponents-1.3.8.jar를 추가하여 문제를 해결 할 수 있었다. mvn install:install-file -Dfile=C:\NetComponents-1.3.8.jar -DgroupId=com.oroinc -DartifactId=NetComponents -Dversion=1.3.8 -Dpackaging=jar -DgeneratePom=true 빨간색..
차기 프로젝트에서는 CI 툴을 사용하고자 Jenkins 사용법에 대해서 알아봤다.빌드 방법은 maven을 이용해 war 생성 후 tomcat manager를 통해 war를 업로드 하는 식이다. 1. 먼저 Jenkins를 설치한 후 웹 사이트에 접속한다. 2. 시스템 설정Jenkins 관리 > 시스템 설정 메뉴 접속 후 다음과 같이 JDK, Maven, 이메일, SVN 버전 설정을 한다.이메일 서버는 gmail을 이용하였다. 3. 새로운 Job을 클릭Job 이름 입력 후 Build a maven2/3 project 라디오 버튼 클릭 4. 소스 코드 관리 설정은 다음과 같이 한다.나는 naver SVN 저장소를 이용했다. 사실 우리 회사 SVN 서버가 가끔씩 말썽을 일으키는 경우가 있는데 회사 프로젝트도 네..