본문 바로가기

전체 글455

[JS] setInterval, setTimeout 자바스크립트에서는 setInterval, setTimeout 함수를 통해 스케줄러를 지원한다. 두 함수의 차이는 아래와 같다. setInterval : 지정된 주기로 특정 코드를 실행한다. setTimeout : 지정된 초가 지난 후 특정 코드를 1회 실행한다. 즉 setInterval은 주기적으로 지정된 코드를 계속 실행하고, setTimeout은 한 번 실행 후 멈추게 된다. F12를 누른 후 아래 코드를 복사하여 실행해보면 차이를 명확하게 알 수 있다. setTimeout(function() { console.log('timeout'); }, 1000); setInterval(function() { console.log("interval"); }, 1000); 위 코드 실행 시 timeout이라는 .. 2022. 7. 26.
JPA 페이징 게시판에 약 100,000개의 게시글들이 등록되어 있다고 가정한다. 이 경우 굳이 사용자에게 100,000개의 게시글들을 전부 제공해야 할까? 만약 그런다면 속도가 느린 것은 당연하고, 한 페이지 내에서 모든 게시글들을 보여주기 어려워 사용자 편의성이 크게 떨어질 수 있다. 페이징이란 이러한 경우 사용하는 것으로, 게시판을 페이지 단위로 나누어 사용자게에 제공하는 작업이다. 페이징은 원래대로라면 DB 파라미터에 LIMIT 등의 조건을 추가하면 구현할 수 있다. 하지만 DB마다 조금씩 그 방식에 차이가 있기 마련인데, ORM인 JPA는 이러한 페이징도 DB의 종류에 관계없이 쉽게 구현할 수 있도록 Pageable이라는 클래스를 제공한다. 즉 JPA는 Pageable이라는 클래스를 파라미터로 주고받으며 위의.. 2022. 7. 25.
application.properties (yml) 암호화 신입사원분을 대상으로 하는 OJT 과정 중 "Spring Boot 기반 개발" 과정을 담당하게 되었다. 이에 간단한 자료와 예제 프로젝트를 작성하여 OJT를 진행하였다. application.properties (yml)에 대한 설명을 하던 중 다음과 같은 질문을 받았다. "저 application.properties 내 DB 정보는 외부에 유출이 되면 안될텐데, 저걸 저렇게 그대로 작성해도 괜찮나요?" application.properties 내 정보는 특정 라이브러리를 사용하면 암호화할 수 있다는 것 정도는 알고 있었다. 하지만 그 라이브러리가 무엇인지, 어떻게 사용할 수 있는지는 미처 알지 못했었다. 그래서 위 질문에 제대로 된 답변을 내놓지 못했다. OJT가 끝난 후 위에서 받은 질문은 언제든지 .. 2022. 7. 25.
JDBC 사용법 DB내 특정 테이블을 다른 DB내 테이블과 동기화시켜야 하는 요구사항이 발생했다. 해당 기능의 구현을 위해서는 Spring의 DataSource를 두 개로 설정해서 개발해도 되지만, "고작 테이블 하나를 퍼오는 작업에 굳이 그 정도의 노력을 감수해야 할까?" 하는 생각이 들었다. 결과적으로 그 정도의 노력을 감수하고 싶지 않았고, 해당 기능은 일반 JDBC로 사용하기로 결심했다. 그러나 JPA에 너무 익숙해진 탓에 일반 JDBC를 사용하는 방법을 잊어먹어버렸고, 똑같은 상황이 발생할 경우 언제든 다시 사용할 수 있도록 코드를 저장해놓고자 한다. import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStateme.. 2022. 7. 25.
Spring WebFlux Filter 처음으로 Spring Webflux를 이용한 프로젝트에 투입되었다. 해당 프로젝트의 요구사항 중에는 Request의 특정 Header에 URL이 들어오는데, 해당 URL에 접속하여 그 안의 정보를 파싱해서 DB에 유지해야 하는 요구사항이 존재했다. 이 요구사항을 식별했을 때 "이 정도면 Filter를 사용하면 쉽게 해결되겠는데?" 라는 생각이 들었고, 평소와 다를 것 없이 Filter를 작성하려고 했으나 실패했다. Spring Web과 달리 Spring Webflux는 별도의 방식으로 Filter를 제공하기 때문이았다. Spring Webflux에서 Filter를 사용하기 위해서는 org.springframework.web.server.WebFilter를 상속받은 클래스를 생성해야 한다. 해당 클래스는 .. 2022. 7. 25.
Spring Security rememberMe (자동 로그인) 웹 사이트들을 보면 종종 로그인 정보 저장, 내 정보 저장 등 사용자의 정보를 기억하고 추후 웹 사이트 재방문 시 별도의 로그인 과정 없이 인증이 수행되도록 하는 기능이 존재한다. 문득 Spring의 인증/인가를 담당하는 Spring Security도 위의 기능을 제공하는지 궁금해졌고, 찾아본 결과 rememberMe라는 이름으로 해당 기능을 간편하게 구현할 수 있도록 제공한다는 것을 알아냈다. 그래서 해당 기능을 공부해보았고, 추후에 있을 프로젝트에서 언제든지 해당 기능을 쉽게 구현할 수 있도록 코드와 사용법을 정리해놓으려고 한다. 메인 주제가 Spring Security이기에 이전에 작성한 Spring Security 포스팅에서 이어서 작성한다. 가장 먼저 해야할 일은 HTML에 자동 로그인을 위한 .. 2022. 7. 25.
리눅스 OS에 명령어 보내기 Java 프로그램이 OS내 자원을 주기적으로 관리해야 하는 요구사항이 생겼다. 이에 해당 요구사항 구현을 위해 구글링을 해본 결과 ProcessBuilder를 사용하는 것이 간편해보여 이를 통해 구현을 완료했고, 언제든 사용할 수 있도록 해당 내용을 저장하고자 한다. import java.io.BufferedReader; import java.io.InputStreamReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; = @Service public class SomeService { Logger logger = LoggerFactory.getLogger(S.. 2022. 7. 21.
Docker 기본 명령어 (계속 추가) Community Edition 설치 yum -y install yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin Docker 명령어 사용 시 탭 사용 # yum install bash-completion # curl https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/doc.. 2022. 7. 13.
컨테이너 설치 및 실행 (계속 추가) MariaDB Docker Container 이미지 설치 # docker pull mariadb 컨테이너 실행 # docker run \ -p 3306:3306 \ -v {로컬 custom.cnf 파일}:/etc/mysql/conf.d/custom.cnf \ -v {로컬 초기 설정 sql문이 포함된 디렉토리}:/docker-entrypoint-initdb.d/ \ -v {데이터를 저장할 로컬 디렉토리}:/var/lib/mysql/ \ -v {로그를 저장할 로컬 디렉토리}:/var/log/ \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_ROOT_HOST=%\ -e TZ=Asia/Seoul \ --restart=always \ --name=mariadb \ -d \ mari.. 2022. 6. 26.
04. 머신러닝 핵심 알고리즘 (4) 출처 : https://book.naver.com/bookdb/book_detail.nhn?bid=21488029 공개적 빅데이터분석기사 실기 본 도서는 한국데이터산업진흥원에서 실시하는 빅데이터분석기사 국가기술자격 실기시험 대비 도서입니다.본 교재는 PYTHON을 활용하여 쉽고 빠른 자격증 취득으로 이어질 수 있도록 도움을 줄 book.naver.com *해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다. 상세 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다. 군집분석 군집분석은 개체들의 특성을 대표하는 몇 개의 변수들을 기준으로 몇 개의 그룹(군집)으로 세분화하는 방법이다. 즉 개체들을 여러 변수들을 기준으로 다차원 공간에서 유사한 특성을 가진 개체.. 2022. 6. 8.
04. 머신러닝 핵심 알고리즘 (3) 출처 : https://book.naver.com/bookdb/book_detail.nhn?bid=21488029 공개적 빅데이터분석기사 실기 본 도서는 한국데이터산업진흥원에서 실시하는 빅데이터분석기사 국가기술자격 실기시험 대비 도서입니다.본 교재는 PYTHON을 활용하여 쉽고 빠른 자격증 취득으로 이어질 수 있도록 도움을 줄 book.naver.com *해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다. 상세 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다. 선형회귀모델 연속형 원인변수가 연속형 결과변수에 영향을 미치는지를 분석하여 레이블 변수를 예측하는 모델 회귀모델은 실제값과 예측간 값의 일치정도 및 차이정도를 계산하여 모델 성능 지표로 삼는다... 2022. 6. 7.
04. 머신러닝 핵심 알고리즘 (2) 출처 : https://book.naver.com/bookdb/book_detail.nhn?bid=21488029 공개적 빅데이터분석기사 실기 본 도서는 한국데이터산업진흥원에서 실시하는 빅데이터분석기사 국가기술자격 실기시험 대비 도서입니다.본 교재는 PYTHON을 활용하여 쉽고 빠른 자격증 취득으로 이어질 수 있도록 도움을 줄 book.naver.com *해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다. 상세 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다. 투표기반 앙상블 투표기반 앙상블은 여러 분류기를 학습시킨 후 각 분류기의 예측 중 가장 많이 나온 범주를 선택하는 방법이다. 다수결의 원리와 유사하며, 보다 좋은 분류와 회귀 예측이 가능하다. .. 2022. 6. 6.