분류 전체보기 178

스프링 중복 로그인 방지하기

스프링 프레임워크를 사용하면서 중복 로그인을 막는 가장 쉬운 방법은 스프링 시큐리티의 중복 로그인 방지 기능을 사용하는 방법이다. 스프링 시큐리티의 중복 로그인 방지 설정 http.sessionManagement() .maximumSessions(1) .maxSessionsPreventsLogin(false) .expiredSessionStrategy(this.securitySessionExpiredStrategy()) .sessionRegistry(this.sessionRegistry); 설정을 간단하게 설명하면 maximumSessions 갯수를 1개로 지정하여 2개 이상 세션이 생성되지 않도록 한다. 이 설정을 사용하면 중복 로그인을 어느정도는 막을 수 있으나 톰캣에서 세션을 관리하는 어플리케이션에..

개발 2020.11.29

안드로이드/ios webview 자바스크립트로 뒤로가기 감지하기

안드로이드/ios의 webview에서 자바스크립트로 뒤로가기를 감지하는 방법 * 앱에서 뒤로가기가 시작되면 자바스크립트에서 뒤로가기 이벤트를 블로킹 할 수는 없습니다. * 아래 코드를 사용하면 뒤로 가기 이벤트를 감지 해서 앱에서 제공하는 javascriptinterface를 호출하는 방식으로 중간에 코드를 실행할 수 있습니다. 아이폰에서 뒤로 가기 감지 // 뒤로가기 이벤트 감지 - ios 전용 window.onpageshow = function (event) { if (event.persisted || (window.performance && window.performance.navigation.type == 2)) { // 실행할 이벤트 - javascriptinterface 호출 등... } } ..

개발 2020.11.27

톰캣에서 HTTP Method 설정하기

웹서버는 HTTP 통신 방식에 따라 GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE 메서드를 제공합니다. 이러한 메서드를 모두 사용 가능하게 할 경우 보안상 문제가 발생함으로 GET, POST 이외에는 사용하지 못하도록 설정을 해야 합니다. 다음은 톰캣에서 HTTP Method 설정 방법입니다. Tomcat으로만 vi /usr/local/tomcat/conf/web.xml 아래 내용을 추가해줍니다. 예를 들어 PUT, DELETE, TRACE, OPTIONS 외부 질의 시 거부하도록 설정하는 구문입니다. Forbidden Forbidden /* PUT DELETE TRACE OPTIONS web.xml에 설정을 추가한 후 telnet localhost 8080을 입력합니다..

개발 2020.08.16

리눅스에서 apache + tomcat 연동 방법

1. Tomcat 설치 먼저 톰캣을 다운로드한 후 리눅스 서버에 업로드합니다. 업로드한 톰캣은 /usr/local/src로 이동합니다. 톰캣 압축 해제 후 심볼릭 링크를 설정합니다. cd /usr/local/src tar zxvf apache-tomcat-8.5.57.tar.gz mv apache-tomcat-8.5.57 /usr/local ln -s apache-tomcat-8.5.57 tomcat 톰캣 폴더 안에 있는 bin 폴더에서 startup.sh 스크립트를 실행합니다. 권한이 없을 경우에는 아래 명령어를 실행합니다. chmod 755 startup.sh 정상적으로 실행되면 에러 없이 아래와 같이 표시됩니다. Using CATALINA_BASE: /usr/local/tomcat Using CAT..

개발 2020.08.16

해시(Hash) 기본 개념과 구조

1. 해시(Hash) 정의 - 배열은 검색 속도가 빠르나 데이터 삽입/삭제 시 속도가 느립니다. - 링크드 리스트는 삽입 삭제시 인근 노드의 참조 값만 수정해서 속도가 빠르나 순회 검색만 가능하여 데이터가 많아질수록 속도가 느려집니다. - 이러한 한계를 극복하기 위해 제시된 방법이 해시(Hash)입니다. 2. 특징 - 내부적으로 배열을 사용하여 데이터를 저장하여 검색 속도가 빠릅니다. - 데이터의 삽입/삭제 시 해시 알고리즘을 이용하여 데이터와 연관된 고유한 숫자를 만들어 인덱스로 사용합니다. - 해시가 내부적으로 사용하는 배열을 Hash Table 이라고 하며 크기에 따라서 성능 차이가 납니다. 3. 해시 메서드(Hash Method) - 해시는 Hash Table을 사용하여 데이터를 저장합니다. - ..

개발 2020.08.13

JVM 메모리 구조 및 JVM 튜닝

jvm 튜닝에 앞서 jvm 메모리 구조에 대해 먼저 알아보겠습니다. 1. Method Area (메서드 영역) - 클래스 멤버 변수의 이름, 데이터 타입, 접근 제어자 정보, 필드 정보, 메서드의 이름, 리턴 타입, 파라미터 등의 변수 등이 생성되는 영역 2. Heap Area(힙 영역) - new 키워드로 생성된 객체와 배열이 생성되는 영역 - 메서드 영역에 로드된 클래스만 생성이 가능하고 Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역 3. Stack Area(스택 영역) - 지역 변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값 등이 생성되는 영역 4. PC Register (PC 레지스터) - Thread가 생성될 때마다 생성되는 영역으로 Program Coun..

개발 2020.08.13

Centos7 jdk 1.8 설치

centos7에서 jdk 1.8버전 설치에 대해 알아보겠습니다. 1. jdk 1.8 다운로드 - oracle jdk(https://www.oracle.com/kr/java/technologies/javase/javase-jdk8-downloads.html)를 다운로드 합니다. 2. open jdk 삭제 - 설치하기전에 open jdk가 설치 되어 있는지 확인해야 합니다. rpm -qa | grep jdk - 만약 설치되어 있으면 다음과 같이 콘솔에 표시됩니다. java-1.6.0-openjdk-1.6.0.0-1.48.1.11.3.el6_2.x86_64 - 삭제하기 위해 아래 명령어를 실행합니다. yum remove java-1.6.0-openjdk-1.6.0.0-1.48.1.11.3.el6_2.x86_6..

개발 2020.08.10

리눅스 mysql(5.5.9) 설치 방법

리눅스에 mysql을 설치할 때 버전마다 설치 방법이 다릅니다. 이 포스팅을 참고하면서 mysql을 설치할 때 꼭 mysql 5.5.9(https://downloads.mysql.com/archives/community/) 버전을 다운받아서 진행해야 문제가 발생하지 않습니다. * 리눅스는 centos 7 버전에 설치를 진행합니다. 1. mysql 다운로드 - mysql 사이트에서 (https://downloads.mysql.com/archives/community/) tar.gz 파일로 5.5.9 버전을 다운받습니다. - 다운받을 파일을 리눅스 서버의 /usr/local/src 폴더에 업로드 합니다. 2. 미리 설치 되어 있는 mysql 삭제 - yum으로 미리 설치되어 있을 수 있는 mysql을 삭제해..

개발 2020.08.08

DB virtual table (데이터베이스 가상 테이블)

1. 가상 테이블 - 트랜잭션이 끝나거나 세션이 끝나는 시점에 초기화된다. - 다른 사용자와 테이블 공유가 불가능하다. - ON COMMIT DELETE ROWS : 커밋되면 모두 삭제되는 옵션 - ON COMMIT PRESERVE ROWS : 세션이 종료되어야 테이블의 데이터가 삭제 CREATE GLOBAL TEMPORARY TABLE TEMP01 ( NO NUMBER, NAME VARCHAR2(10) ) ON COMMIT DELETE ROWS; 2. 테이블 모든 컬럼 복사해서 생성하기 CREATE TABLE DEPT3 AS SELECT *FROM DEPT2; 3. 테이블 특정 컬럼 복사해서 생성하기 CREATE TABLE DEPT4 AS SELECT DCODE, DNAME FROM DEPT2; 4. ..

DB Constraint(데이터베이스 제약 조건)

1. 참조키 인덱스 - 만약 부모테이블에 데이터가 1억건 있고 자식 테이블에 데이터를 1건 입력하려면 부모테이블에 1억건의 데이터를 전부를 검색합니다. - 부모 테이블 컬럼과 자식 테이블 컬럼 양쪽에 적절한 인덱스가 생성되어 있어야 참조키 제약 조건의 성능이 좋아집니다. 2. 제약 조건 생성 CREATE TABLE EMP3 ( NO NUMBER(4) CONSTRAINT EMP3_NO_PK PRIMARY KEY, NAME VARCHAR2(10) CONSTRAINT EMP3_NAME_NN NOT NULL, JUMIN VARCHAR2(13) CONSTRAINT EMP3_JUMIN_NN NOT NULL CONSTRAINT EMP3_JUMIN_UK UNIQUE, AREA NUMBER(1) CONSTRAINT EM..