[Spring Boot] ELK 스택 구축 - 3. logstash 설치
·
Web Development/BackEnd
logstash란?logstash 는 데이터 수집, 처리 및 변환을 하기 위한 오픈소스 도구이다, 주로 로그 데이터나 이벤트 데이터를 수집하며, 수집한 데이터를 엘라스틱서치에 전송한다. 데이터베이스, 메시지 큐, 소켓 등에서 데이터를 가져올 수 있으며, 데이터를 가공하여 원하는 형식으로 변환할 수 있다.로그스태시는 input, filter, output을 조합하여 데이터 파이프라인을 구성할 수 있다. 이는 logstash.conf 파일을 통해 정의된다.logstash 설치services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3 container_name: elasticsearch environm..
[Spring Boot] ELK 스택 구축 - 2. kibana 설치
·
Web Development/BackEnd
Kibana란?kibana 는 엘라스틱서치와 함께 사용하는 데이터 시각화 및 분석 도구이다. 엘라스틱서치 내에 존재하는 데이터를 시각화할 수 있으며, 여러 플러그인을 통해 기능을 확장할 수 있다.kibana 기능DiscoverDiscover는 엘라스틱서치 인덱스의 데이터에 대한 검색 기능을 제공한다. 쿼리를 통해 데이터를 필터링하고 조건에 맞는 결과를 탐색할 수 있다. 결과를 테이블 형식으로 미리 보거나, 특정 기간의 데이터를 집중적으로 분석할 수 있다.Visualize키바나는 바 차트, 라인 차트, 파이 차트, 히트맵 등과 같은 여러 형태의 시각화 차트를 제공한다. 또한 사용할 데이터 필드를 선택하고 집계 방식으로 설정하여 원하는 정보만 따로 시각화할 수 있다.메트릭 집계 : 합계, 평균, 최대 및 최..
[Spring Boot] ELK 스택 구축 - 1. Elasticsearch 설치
·
Web Development/BackEnd
초기 세팅Spring Initializr먼저 Spring Initializr를 통해 프로젝트를 생성한다. Docker를 사용하여 ElasticSearch를 설치할 예정이다. Spring Boot와 ElasticSearch와의 통합을 위한 의존성도 추가한다.services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3 container_name: practice_elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false ports: - "9200:9200"compose..
[백준] 1328번: 고층 빌딩
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/1328설명접근 방법만 잘 찾으면 어렵지 않은 문제라고 생각한다. 개인적으로 bottom-up 접근법보다 top-down 접근법으로 생각하는 것이 도움이 되었다. 물론 후술할 풀이는 bottom-up으로 접근하던 top-down으로 접근하던 충분히 떠올릴 수 있는 풀이이다. 단, 높이가 N인 빌딩보다 1인 빌딩을 움직이는 것이 도움이 될 것이다.N개의 빌딩이 랜덤하게 배치되었다고 가정하자. 왼쪽에서 봤을 때 빌딩의 수를 L, 오른쪽에서 봤을 때 빌딩의 수를 R이라고 하자. 이제 높이가 1인 빌딩을 제외하자. N은 N - 1이 될 것이며, L, R은 높이가 1인 빌딩에 기존에 어디에 있었는지에 따라 달라진다.높이가 1인 빌딩이 가장 왼쪽에 위치했..
[Network] Polling, Long Polling, SSE, Websocket이란?
·
Web Development/BackEnd
Pollingpolling은 클라이언트가 주기적으로 서버에 요청을 보내고, 서버는 클라이언트의 요청에 대한 응답을 리턴하는 방법이다. 구현이 간단하고 HTTP 프로토콜을 사용하므로 호환성이 좋다.서버는 클라이언트의 요청에 매번 응답을 전송해야 한다. 따라서 특수한 상황이 아니면 대부분의 요청이 불필요한 경우가 될 수 있다. 또한 클라이언트의 요청이 많아질수록 서버에 부하가 증가할 수 있다. 또한 데이터가 변경되어도 클라이언트가 새로운 데이터를 받기까지 시간이 걸리므로 실시간성이 떨어진다.Long Pollinglong polling은 클라이언트가 서버에 요청을 보낸 후 서버가 새로운 데이터가 준비될 때까지 요청을 유지하는 방식이다. 다시 말해 서버로부터 응답을 받을 때까지 클라이언트는 대기한다. 데이터가 ..
[백준] 3665번: 최종 순위
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/3665설명 위상 정렬 알고리즘을 사용해야 하며, 각 팀의 순위에 대한 선후 관계를 어떻게 관리할지, 상대적인 등수가 바뀐 팀들을 어떻게 처리할지, 확실한 순위를 찾을 수 없거나 순위를 하나로 정하지 못하는 경우는 어떤 경우인지 고려해야 한다.  첫 번째 예제를 통해 살펴보자. 팀의 수 n은 5이고, 작년 팀의 순위는 5, 4, 3, 2, 1이다. 한 번 팀의 관계를 그래프로 나타내보자.  위와 같이 팀의 관계를 그래프로 표현하였다. a->b는 a 팀이 b 팀보다 순위가 더 높다는 것을 의미한다. 첫 번째 예제에서 상대적인 등수가 바뀐 팀들은 (2, 4), (3, 4)이다. 먼저 단순히 두 팀의 위치 관계를 바꿔보는 것으로 생각해보자.  2번 ..
[백준] 1194번: 달이 차오른다, 가자.
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/1194설명 전형적인 BFS 문제이나, 고려할 점이 많다. 미로에는 벽이 존재하며, 이 곳에는 이동할 수 없다. 추가로 열쇠와 문도 존재하는데, 열쇠는 소문자, 문은 대문자로 표시된다. 열쇠와 대응하는 문에 도달하면 지나갈 수 있다. 예를 들어 'a'를 가지고 있으면 'A'로 이동할 수 있다. 열쇠는 'a'부터 'f'까지 존재하며, 문 또한 'A'부터 'F'까지 존재한다. 시작 좌표는 0, 도착 좌표는 1로 표시된다. 1은 최소 한 개 존재하며, 여러 개 존재할 수 있다. visited 배열에 이동 횟수까지 기록하여 구현할 예정이다. 단순히 이차원 배열로 visited를 선언해도 될까? 그렇지 않다. 열쇠를 얻기 위해 중복 좌표를 방문해야 할 ..
[백준] 1640번: 동전 뒤집기
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/1640설명 N * M 크기로 동전을 배치한다. 앞면을 0, 뒷면을 1이라고 할 때, 행 또는 열에 있는 동전들을 뒤집어서 행과 열에 위치한 모든 동전의 뒷면(1)의 개수를 짝수로 바꾸는 최소 횟수를 구하는 문제이다. 처음에는 무슨 알고리즘을 써야 할지 감이 안 잡혔는데, 역시 애드 혹 문제였다.코드더보기#include #include #include using namespace std;int col[1001];int row[1001];// 1. 행 또는 열을 짝수 또는 홀수로 통일한다.// 2. 홀수 개로 통일한 경우 다른 행 또는 열의 짝수 개를 뒤집는다.// 3. 짝수 개로 통일한 경우 그 반대int main() { int n, m; ci..
[백준] 17298번: 오큰수
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/17298설명 수열의 각 원소에 대하여 오른쪽에 있으면서 현재 원소보다 큰 수 중 가장 왼쪽에 있는 수(오큰수)를 찾는 문제이다. 이중 for문으로 풀 수 있으나 TLE이 발생한다. 더 효율적으로 찾는 방법을 구상해야 하는데, 스택을 사용한다.코드더보기#include #include using namespace std;int ans[1000001];int arr[1000001];int main() { int n; cin >> n; stack s; for (int i = 0; i > arr[i]; } for (int i = n - 1;i >= 0;i--) { while (!s.empty() && s.top() for (int i = n - 1..
[PySpark] PySpark vs. Pandas 속도 비교
·
Databases/Data Engineering
서론 PySpark를 통해 대량의 데이터를 빠르게 처리할 수 있다. 또한 디스크 기반이 아닌 메모리 기반 처리를 통해 반복적인 계산이 많은 경우에 장점을 가진다. PySpark를 사용하는 경우, 사용하지 않는 경우(Pandas) 처리 속도가 어느 정도 차이가 나는지 간단히 확인해보고자 한다.코드# 예제 데이터 생성names = [f'Name{i}' for i in range(1, 101)]mbti_types = ['INTJ', 'ENTP', 'INFJ', 'ENFP', 'ISTJ', 'ESFP', 'ISFJ', 'ESTP', 'INTP', 'ENTJ', 'ISTP', 'ENFJ']data = { 'Name': names, 'MBTI': [random.choice(mbt..