본문 바로가기

반응형

전체 글

ElastAlert ElastAlert란?Elasticsearch의 데이터에서 작성한 규칙에 따라서 알림을 전송하는 프레임워크.Elasticsearch에 실시간으로 데이터를 기록하고 있고 해당 데이터가 특정 패턴(규칙)과 일치할 때 알림을 받고 싶을 때 사용할 수 있음.ElastAlert 작동 방식데이터 소스를 주기적으로 쿼리 → 정의한 규칙 유형에 일치하는 지를 검사 → 일치한다면 정의한 방법으로 alert 발ElastAlert 규칙 구성name : 규칙의 고유한 이름. 동일한 이름이 2개 이상일 경우 ElastAlert가 시작되지 않는다.index : 쿼리할 데이터 소스의 위치. 와일드 카드, 여러개 사용 가능index: topbeat-*,packetbeat-*type : 규칙의 유형. type에 따라 다양한 방법으.. 더보기
바람직한 설계의 특징: Code Complete 2 Code Complete 2에서 5장 구현 설계를 읽으면서, 소프트웨어 설계란 무엇이고, 더 좋은 설계를 하기위해서는 어떤 점을 고려해야하는지에 대해 정리해보았다.설계의 필요성구현(코드 작성)단계에서 문제를 발견하고 수정하는 것보다 설계 단계에서 문제를 발견하고 수정하는 것이 훨씬 더 비용이 적게든다.따라서 설계 단계에서 더 많은 문제를 발견하고 수정해야 하지만 완벽한 설계란 존재할 수 없다는 점을 말해준다. 설계 단계에서 더 많이 생각하고, 더 많이 수정할 수록 구현(코드 작성)단계에서 문제를 발견하여 수정하는 일을 최소화할 수 있기에 왜 완벽한 설계란 없는 것인지, 완벽한 설계는 아니지만 바람직한 설계를 하는 방법이 무엇인지에 대해서 정리해보려고 한다.소프트웨어 설계란?“소프트웨어 설계”는 컴퓨터 소.. 더보기
웹서버(Web Server)와 웹 어플리케이션 서버(Web Application Server) 웹 서버? 웹 어플리케이션 서버? 웹 서버에 대해 공부하면서, 웹 서버와 웹 어플리케이션 서버로 구분된다는 사실을 알게되었고, 잘 정리가 된 블로그를 읽고 나름대로 정리(?)를 해보려고 한다. 웹 서버와 웹 어플리케이션 서버의 차이점을 정리하기에 앞서, 웹 서비스는 어떤 구조로 이루어져 있고, 웹 서비스를 이루고 있는 웹서버와 웹 어플리케이션 서버가 무엇인지를 정리해 보려고 한다. 웹 서비스 구조 Client → 웹 서버 → DB Client → 웹 어플리케이션 서버 → DB Client → 웹 서버 → 웹 어플리케이션 서버 → DB 웹 서비스는 위처럼 다양한 구조를 가질 수 있다. 웹 서버만 사용할 수도, 웹 어플리케이션 서버만 사용할 수도, 둘 다 사용할 수도 있다. 이러한 구조를 쉽게 이해하기 위해.. 더보기
Spring Boot & MariaDB & JPA 세팅 Spring Boot 프로젝트 생성 spring initializr (https://start.spring.io/) 접속해서 왼쪽 화면에서 Spring Boot 버전, Java 버전 및 프로젝트 기본 설정을 선택합니다. 오른쪽 화면에서는 프로젝트에서 사용할 Dependency들을 선택합니다. 뷰에서 Thymeleaf, DB는 MariaDB를 사용하기 위해서 아래와 같이 선택했습니다. 이후 Generate를 하면 세팅된 프로젝트 파일을 다운로드 받을 수 있습니다. Maria DB 세팅 우선 Maria DB를 다운로드해야 하는데, 아래 링크를 참고해서 다운로드를 했습니다. https://mariadb.com/kb/ko/installing-mariadb-on-macos-using-homebrew/ Maria .. 더보기
[Algorithm/Java][백준] 2775번 부녀회장이 될테야 [BOJ] 2775번 부녀회장이 될테야 https://www.acmicpc.net/problem/2775 문제 접근 백준에서 에제로 준 입력과 출력을 하나씩 쓰다보면 규칙이 보이게 된다. 000 -> 0 001 -> 1 002 -> 2 003 -> 3 100 -> 0 101 -> 1 102 -> 3 103 -> 6 200 -> 0 201 -> 1 202 -> 4 203 -> 10 이때 103호에는 003호와 102호를 합친 값이 있고, 203호에는 103호와 202호를 합친 값이 있다. 이를 점화식으로 바꿔보면 (k0n)호 = k-10n호 + k0n-1호 코드로 바꿔보면 dp[floor][room] = dp[foor-1][n] + dp[floor][n-1]이 된다. 이를 코드로 바꾸면 다음과 같다. Co.. 더보기
Slack으로 OAuth 사용하기 OAuth란? OAuth는 자원 소유자(구글, 카카오, 페이스북, 슬랙)와 HTTP 서비스 간의 승인 상호 작용을 조정하거나 제 3자 애플리케이션이 스스로 액세스를 얻음으로써 자원 소유자의 서비스에 대한 제한된 액세스를 얻을 수 있는 인증 프레임워크이다. 흔히 볼 수 있는 구글 로그인, 카카오 로그인은 OAuth를 통해서 해당 서비스에 가입한 사용자의 정보를 일련의 과정을 통해서 제 3자 애플리케이션이 접근할 수 있도록 해서 회원가입을 생략하고 서비스를 이용할 수 도 있다. 또한 OAuth와 슬랙에서 제공하는 api를 사용하여 슬랙이 아닌 내가 만든 웹에서 슬랙에 메세지를 보내는 등 자원 소유자가 제공하는 서비스를 제 3자 애플리케이션에서 사용할 수도 있다. OAuth는 크게 Access Token과 S.. 더보기
[Algorithm/Java][백준] 14226번 이모티콘 [BOJ] 14226번 이모티콘 https://www.acmicpc.net/problem/14226 문제 접근 화면에 있는 이모티콘을 S개 만드는 최소 시간을 구하는 문제이다. 화면에 있는 이모티콘 개수와 클립보드에 있는 이모티콘 개수 그리고 시간 정보를 저장할 수 있는 Emoticon 클래스를 만들고 isVisited 배열을 화면에 있는 이모티콘 수와 클립보드에 있는 이모티콘 수를 고려할 수 있도록 2차원 배열로 만들었다. 그리고 BFS를 이용해서 화면에 있는 이모티콘을 클립보드에 저장하는 경우, 화면에 있는 이모티콘 한개를 제거하는 경우, 클립보드에 있는 이모티콘을 붙여넣는 경우 세가지를 고려해서 문제를 해결했다. 문제를 보고 이차원 배열로 해결할 생각을 하지 못해서 푸는데 꽤나 오래걸렸다...근데 .. 더보기
[Algorithm/Java][백준] 2252번 줄 세우기 [BOJ] 2252번 줄 세우기 https://www.acmicpc.net/problem/2252 문제 접근 위상 정렬을 통해서 쉽게 푼 문제이다. 위상 정렬이란 순환이 없는 그래프에서 정점간의 순서를 구할 수 있는 알고리즘이다. 각각의 학생들을 정점이라고 생각하고, 입력으로 들어오는 순서들을 그래프들의 간선이라고 생각하면 쉽게 문제가 풀린다. 위상 정렬이란 우선 들어오는 간선의 개수를 세는 linkCnt의 값이 0인 정점들을 큐에 넣고, 하나씩 큐에서 빼면서 해당 정점과 연결된 정점들에 대해서 linkCnt를 -1 해주고 다시 linkCnt의 값이 0인 정점들을 큐에 넣는 방식으로 진행된다. Code import java.util.ArrayList; import java.util.LinkedList; .. 더보기