Languages | Frameworks

    [Springboot] Spring-security 적용기(1) - 일반로그인

    Springboot Maven 환경에서 간단하게 적용하는법을 노트하였습니다. 1. pom.xml 에서 아래 코드를 추가해준다(필자는 security, jpa, mysql, lombok, Mustache 라이브러리를 사용함) org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-jpa com.mysql mysql-connector-j runtime org.projectlombok lombok true org.springframework.security spring-security-test test org.springframework.boot spring-boot-starter..

    JPA, JPQL

    1. JPA와 JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발하는데, 단건으로 가져오기에는 매우 편하다. 하지만 문제는 검색 쿼리쪽인데, 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색한다. 그에 따라, 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하고 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공하는데, SQL과 비슷한 문법, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다. JPQL은 엔티티 객체를 대상으로 쿼리하고, SQL은 데이터베이스 테이블을 대상으로 쿼리한다. SQL을 추상화해서 특정 데이터베이스 SQL에 의..

    암호화 알고리즘 종류와 추천(SHA, PBKDF2, Bcrypt) + Java 적용 샘플

    암호화의 종류 SHA-2(Secure Hash Algorithm 2) 미국 NSA에서 설계한 암호화 해시 함수. digest size는 224, 256, 384or512 bit로 6개의 해시함수로 구성되어졌음. GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호화에 권장되지 않음 GPU 연산속도가 빠를수록 공격자의 하드웨어를 통한 오프라인 brute force에 더 취약하다. 빠른 해시를 사용하여 암호화를 진행시 공격자는 오프라인 공격으로 초당 수십억개의 해시를 계산할 수 있다. PBKDF2(Password-Based Key Derivation Function) pbkdf2_hmac(해시함수(sha256..), password, salt, iteration, DLen) 해시함수의 컨테이너..

    게시판 글이 중간에 삭제시 > 번호 초기화후 인덱싱 하는 방법

    하지만 이 방법은 DB의 seq를 변경하기 때문에, 다른 방법을 알아보았다. 이렇게 사용자들에게 글 번호를 순차적으로 보여주고 싶을 때, DB의 seq를 뿌려주는 것이 아니라 DB에서 가져온 데이터 개수를 세어서 1부터 순차적으로 리스팅 하는 방법으로 해보았다. 먼저 아래와 같이 pageIndex(페이지 번호)와 pageUnit(한 페이지당 보여줄 글 갯수)등을 저장한 BaseSearchVO를 상속받는다. BaseSearchVO protected int pageIndex = 1; protected int pageUnit = 20; public BaseSearchVO() { } public BaseSearchVO(BaseSearchVO vo) { copy(vo); } public void copy(Base..

    docker run 옵션중 -d --rm

    -d옵션은 데몬(백그라운드)모드로 실행한다는 것이고, --rm옵션은 컨테이너 실행을 종료시키면 컨테이너가 삭제되는 옵션인데 두개의 옵션을 같이주고 docker ps를 하면 컨테이너는 실행되고 있다. 하지만 stop 옵션을 통해 컨테이너를 중지시키고 docker ps -a 옵션을 통해 docker container 전체 리스트(중지된 것까지)를 확인해보면 해당 docker container가 없는 것을 볼 수 있다. => -d --rm 옵션을 같이 주게 되고, docker stop 명령어를 통해 중지시키면 해당 컨테이너가 삭제된다