본문 바로가기

728x90

분류 전체보기

(184)
[JAVA] Mysql GROUP_CONCAT 데이터 int 타입으로 변경하기 마이바티스 환경에서 데이터를 GROUP_CONCAT을 사용하여 조회하면 데이터는 문자열 (String) 형태로 데이터를 받게 된다 해당 데이터를 형 변환하는 방법이다 해당 예제에서는 team_id를 기준으로 팀에 속해있는 사용자 번호를 GROUP_CONCAT하여 조회하는 데이터다. 먼저 데이터베이스를 조회하는 쿼리이다. SELECT team_id, team_name, GROUP_CONCAT(user_id) AS "userArr" FROM tb_student GROUP BY team_id; 위와 같이 데이터를 조회하게 되면, team_id team_name userArr 1 청팀 1,2,3,4,5 2 백팀 6,7,8,9,10 이런 식으로 데이터가 조회된다. 마지막 컬럼은 user_id 데이터가 모여있는 ..
[SpringFramework] 마이바티스 환경에서 INSERT,UPDATE 무시하기 스프링 프레임워크 환경에서 개발을 진행할 때, 서비스를 생성하여 데이터를 [등록] 하거나 [수정]하는 경우들이 있다. 하지만 해당 API를 요청하더라도 데이터를 등록하거나 수정하지 않도록 무시하고 싶은 경우가 있을 수 있다 이 방법을 사용하여 구현해 놓으면, 해당 서비스가 실행되어도 데이터베이스에서는 쿼리가 실행되지 않아서 등록되지 않는 현상을 볼 수 있다 구현 우선 해당 기능을 구현하기 위해 데이터베이스에서는 유니크한 인덱스를 생성해야한다. 생성한 유니크 인덱스 값을 통해 중복된 값이 들어오면 무시하도록 구현할 생각이기 때문이다 예를들어서, 책을 빌린 이력을 데이터베이스에 한 개의 row만 저장하고 싶다 그러면 책 빌린 이력테이블에 유니크 인덱스를 생성해준다 CREATE UNIQUE INDEX "id_..
[Mysql] limit 페이징에서 쿼리 조회 건 수 구하기 SQL_CALC_FOUND_ROWS 백엔드에서 Paging을 구현할 때, limit offset 구조로 제한된 row의 개수를 가지고 온다 여기서 페이징을 구현을 위한 계산을 하기 위해 조회된 row 의 전체 건 수가 필요하게 되는데, 언제나 완벽한 쿼리를 작성할 수 없기 때문에, 성능적으로 좋지 않은 경우가 있다 이런 경우, limit로 제한한 데이터의 건수와 전체 데이터 건 수를 각각 호출하여 데이터를 불러올 때, count() 함수를 이용하여 데이터를 가져오면 데이터를 가져오는 시간보다 타임아웃이 더 길게 걸릴 수 있다 물론 쿼리 튜닝을 진행하면 좋겠지만, 상황 상 튜닝을 할 여유가 없다면 해당 방법으로 전체 건수를 가져오는 것도 좋은 방법이라고 생각한다 이번 포스팅에서는 Mybatis 환경에서 페이징 처리를 하는 데이터의 전체 건..
[Ubuntu] 서버 Tomcat 꺼지면 재시작하는 스크립트 작성하기 [서버 관련 포스팅 글] https://hdhdeveloper.tistory.com/106 [Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기 [서버 관련 포스팅 글] https://hdhdeveloper.tistory.com/104 [Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중.. hdhdeveloper.tistory.com https://hdhdeveloper.tistory.com/104 [Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 sudo vi /etc/fail2ban/jai..
[Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기 [서버 관련 포스팅 글] https://hdhdeveloper.tistory.com/104 [Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중요성에 대해 실전에서 배웠다 클라우드 서버를 운영하면서 소위 무작위 대입 공격이라고 불리는 Brute Force 공격으로 인해 root 계정이나 서버에 hdhdeveloper.tistory.com https://hdhdeveloper.tistory.com/100 Linux Ubuntu 톰캣 서버 구축 [1] Ubuntu 는 Linux 커널에서 사용하는 OS다 이번 포스팅에서는 Ubuntu 운영체제에서 Tomcat (WAS) ..
[SpringFramework] 게시판 페이징 기능 예제 ,쉽게 페이징을 구현하자 이번 포스팅에서는 게시글의 생성일을 파라미터로 이용해서 간단한 게시판 페이징 (Paging) 기능을 구현하는 API를 만들려고 한다 Paging ? 게시판 글을 page 단위로 나누는 작업이다 한 page에 몇개의 데이터를 보여줄 건지도 개발자가 직접 정할 수 있도록 구현할 예정이다 API를 개발하기 위해 각각의 Controller,Service,DAO를 생성한다 사전작업 먼저, VO를 생성해서 구현했기 때문에, 해당 요청들에서 필요한 VO를 먼저 정의한다 [SearchVO] 게시글 리스트를 조회하기 위한 요청 파라미터 VO user_no : 어떤 사용자가 조회했는지 확인하기 위한 사용자 번호 last_grid_date : 마지막에 보여진 게시글 length : 보여질 게시글 숫자 public class..
[Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중요성에 대해 실전에서 배웠다 클라우드 서버를 운영하면서 소위 무작위 대입 공격이라고 불리는 Brute Force 공격으로 인해 root 계정이나 서버에 설정해놓은 배치파일 등 제어할 수 없는 상태가 되어 구축했던 서버를 재구축하는 일이 발생했다 전혀 예측할 수 없었던 일이었지만, 이 일로 인해 공격에 대해 예방을 해놓아야 한다고 생각했다 심지어 서버 이미지를 무중단 배포나 로그 관리 배치 파일등을 설정하기 이전에 버전으로 백업해 두어서 거의 처음부터 서버 설정을 다시했다 .. 1 SSH 무작위 대입 공격은? 일단 Brute Force 공격은 특정 서버가 아닌 여러 서버에 대해, SSH 원격 접속 시도를 비밀번호를 마구잡이로 ..
[안드로이드 에러 해결] SDK location not found [ SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at '/Users/walkydoggy/git/dogmaster_app/android/local.properties'. ] 해당 에러는 안드로이드 스튜디오를 이용해서 시뮬레이터 및 기기를 연결해서 프로젝트를 실행할 때, 안드로이드 SDK 설정이 잘못되어있으면 발생하는 에러다 이번 포스팅에서는 해당 에러를 해결하는 방법을 포스팅한다 1 안드로이드 SDK 경로 확인 안드로이드 스튜디오 진입 페이지에서 [SDK Manager] 선..

728x90