본문 바로가기

전체 글133

Elasticsearch 기본 Elasticsearch란? 엘라스틱서치는 아파치 루씬(Apache Lucene) 기반의 오픈소스 검색 엔진으로 아파치 루씬이 가진 한계를 보완하기 위해 개발되었습니다. 엘라스틱서치는 루씬 엔진을 확장하고 관리하기 위해 Java 언어와 JVM을 활용합니다. 엘라스틱서치는 NoSQL 데이터베이스 중 하나로서, 기존의 관계형 데이터베이스(RDBMS)와는 다르게 엘라스틱서치는 JSON 형식의 문서(document)를 저장하며, 각 문서는 고유한 식별자와 그에 따른 데이터를 가집니다. 이러한 문서들은 인덱스(index)내에 저장되어 있으며, 이를 통해 빠른 검색 및 분석을 수행할 수 있습니다. 대량의 데이터를 빠르게 저장, 검색 및 분석할 수 있기 때문에 주로 로그 및 이벤트 데이터 저장, 웹 사이트 검색, 모.. 2023. 5. 17.
SOLID 원칙 SOLID 원칙 SOLID 원칙이란 유지 관리가 가능하고 유연한 소프트웨어 시스템을 개발하는 데 도움이 되는 일련의 설계 원칙입니다. 모듈화되고 재사용 가능하며 쉽게 유지 관리할 수 있는 코드를 장려합니다. 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개하였습니다. SRP 단일 책임 원칙 (Single responsibility principle) : 한 클래스는 하나의 책임을 가져야 한다. OCP 개방-폐쇄 원칙 (Open/closed principle) : 소프트웨어 엔터티가 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. LSP 리스코프 치환 원칙 (Liskov substitution principle) : 프.. 2023. 5. 17.
[C++] 중복된 문자 제거, 가장 큰 수 찾기 중복된 문자 제거 문자열이 매개변수로 주어질 때, 문자열에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열 return #include #include #include using namespace std; string solution(string my_string) { string answer = ""; vector str; for(int i=0; i < my_string.size(); i++){ if(find(str.begin(), str.end(), string(1, my_string[i])) == str.end()){ answer += string(1, my_string[i]); } str.push_back(string(1, my_string[i])); } return answer; } 가장 큰.. 2023. 5. 17.
[C++] (대소문자 범위) 문자열안에 문자열, 숨어있는 숫자의 덧셈 (1) 문자열에 문자열 문자열 str, str2가 매개변수로 주어지면 str2가 str1에 포함되는지 판별하는 문제입니다. string의 find() 함수를 이용합니다. str2 가 str1 안에 포함된다면 string::npos을 반환합니다. #include #include using namespace std; int solution(string str1, string str2) { if (str1.find(str2) != string::npos){ return 1; } return 2; } 숨어있는 숫자의 덧셈 (1) 문자열 my_string이 매개변수로 주어질 때, my_string안의 자연수들의 합을 반환하는 문제입니다. 문자의 아스키코드 값으로 접근할 수 있는 문제입니다. #include #includ.. 2023. 5. 16.
[알고리즘] Isolation Forest Isolation Forest 정상 데이터로부터 학습한 모델을 기반으로 각 객체의 정상/이상 여부를 판단하는 방법론입니다. 이상치 데이터를 라벨링하지 않고, 정상 데이터만으로 이상탐지 모델을 학습할 때 사용하기도 합니다. 2008년 제안된 알고리즘이지만 현재까지도 이상치 탐지에 높은 성능을 보여 유용하게 사용됩니다. 알고리즘 포인트를 분리하기 위해 알고리즘은 속성을 무작위로 선택한 다음 해당 속성에 허용되는 최소값과 최대값 사이의 분할 값을 무작위로 선택하여 샘플에서 반복적으로 파티션을 생성합니다. 이렇게 여러 번 분할한 공간을 의사결정나무 (Decision Tree) 형태로 표현할 수 있습니다. 정상치일수록 완전히 고립시킬 수 있을 때까지 의사결정나무를 깊숙하게 타고 내려가야 합니다. 반대로 이상치의 .. 2023. 5. 9.
[HTML] <a href > 새 탭에서 링크 열기 태그안에 target='_blank' 속성을 추가해주면 링크를 클릭했을때 새탭에서 열 수 있습니다. See the Pen Untitled by Su Yong Park (@parkkingcar) on CodePen. 2023. 4. 12.
[Docker] 도커 네트워크 (Docker Network) 도커 네트워크 도커 네트워크는 격리된 컨테이너들 사이의 통신을 돕는 가상 인터페이스입니다. 이를 통해 가상 네트워크 토폴로지를 구축할 수 있습니다. 도커는 각 컨테이너에 172.17.0.X 의 IP를 순차적으로 할당합니다. 이 IP는 내부 IP이기 때문에 컨테이너 내부에서만 사용할 수 있습니다. 이때, 호스트에서 ifconfig명령을 실행해보면 veth라는 네트워크 인터페이스가 있습니다. 이것이 바로 도커가 생성하는 가상 인터페이스 입니다. 도커 데몬을 실행하면 다음과 같은 네트워크들이 기본적으로 생성됩니다. $ docker network ls 를 통해 현재 생성되어있는 네트워크 목록확인할 수 있습니다. 컨테이너를 실행할 때 따로 옵션을 설정하지 않는다면 기본적으로 디폴트 브릿지 네트워크에 자동 연결됩니.. 2023. 4. 12.
[Linux] 우분투에서 사용중인 포트 확인 우분투에서 사용하고 있는 포트를 확인합니다. 아래 명령을 통해 현재 사용하고 있는 포트를 확인할 수 있습니다. $ netstat -tnlp | grep "LISTEN" netstat -tnlp | grep "LISTEN" 하지만 netstat 명령이 설치되지 않은 경우 아래 에러가 발생합니다. Command 'netstat' not found, but can be installed with: sudo apt install net-tools 아래 명령을 통해 설치합니다. $ sudo apt-get install net-tools 2023. 4. 12.
[Logstash] 로그스태시 파이프라인, 필터 이 글에서 다루는 내용들은 ELK stack이 구축되어 있다는 가정하에 작성하였습니다. 로그스태시는 플러그인 기반의 오픈소스 데이터 처리 파이프라인 도구입니다. 다소 복잡하고 귀찮은 데이터 전처리 과정을 별도의 어플리케이션 작성 없이 비교적 간단한 설정만으로 수행할 수 있습니다. 로그스태시는 ELK stack에서 데이터를 수집 - 변환 - 저장 - 시각화 하는 서비스를 구성할 때 로그스태시는 데이터를 수집하거나 원하는 형태로 가공하는 역할을 합니다. 비츠를 포함한 여러 소스 파일을 입력으로 받을 수 있고 데이터를 수정/삭제/추가해 엘라스틱서치나 다른 시스템으로 데이터를 전송할 수 있습니다. 로그스태시에서 가장 중요한 부분은 파이프라인입니다. 파이프라인은 데이터를 입력받아 실시간으로 변경하고 이를 다른 시.. 2023. 4. 11.