분류 전체보기 70

[java] jump game 2

[참고 문제] : https://leetcode.com/problems/jump-game-ii/ Jump Game II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀이 생각의 흐름 - DP Jump 하여 다음에 갈 위치와, 현재의 Score를 계산하는 방식이 필요할 것이라고 생각했다. 고로, DP로 풀이가 가능할 것이라고 판단 생각의 흐름 - 메모이제이션 무엇을 저장해야 할까가 그 다음 스텝이였다. 위에서 Score를 떠올렸으므로 nums와 같은 길..

Algorithm 2022.06.22

Serialize(직렬화)는 언제 쓰는걸까?

목표 : Serialize(직렬화)는 언제 쓰는건지 알아보자! 오늘의 목표에 따라, Serialize에 대해 알아보자. Java를 사용할 때, 정확하게는 Spring boot 로 서버개발을 하고 JPA 등 객체에 대한 연동을 할 때 Serialize는 언제 어디선가 보고 듣는다. Node.js의 Express로 서버를 배울 때는 JSON 규격만 신경을 썼고, Flask로 서버를 공부할 때도 별로 신경쓰지 않던 부분이지만 최근 Spring boot 로 개발하는 일이 잦아지면서, Serialize에 대한 개념이 어떤지에 대해 궁금해졌다. 특히, 최근에 실시간 음성 스트리밍에 대한 업무를 진행하면서, 다음 질문을 받았다. "혹시 JAVA로 개발하시나요? JSON이 아니라, Byte Array로 Serialze..

Programming/Java 2022.04.01

Spring Framework 아주 조금만 알아보자 - SpringMVC

Annotation Spring 을 공부하면서 가장 러닝커브가 높았던 것이 Annotation이었다. Annotation을 쓰지 않던 (현재는 지원하는 것도 많지만) 언어를 먼저 공부하기도 했고, 의존성 주입이나, 작성한 Configuration을 Framework가 알아서 가져와 사용한다는 개념이 익숙지 않았었다. 그래서 항상 기본 도서를 보고, 실무에 사용된 코드를 보면서 기능은 알겠는데, 명확한 차이를 몰라 익숙한대로 써왔었는데, 하나씩 포스팅하며 정리해보도록 하겠다. XML 아직 XML을 사용하는 곳은 많다. 시스템 전체에 영향을 주거나 이후에 변경 가능성이 있는 내용은 XML로 정의하면서 결합도를 낮추고 유지보수성을 높여준다. 다만, 너무 내용이 많아지면 오히려 유지보수성이 낮아지는 상황도 발생..

Framework/Spring 2020.12.01

Spring Framework 아주 조금만 알아보자 - INTRO

INTRO 몇몇 컨셉이나, 프로그래밍을 통해 몇가지 개발을 진행해 본적은 있다. 다만, 최근의 방향, 부가적인 컴포넌트들, 핵심이 되는 컨셉등을 알아가기에는 조금 힘든감이 있어, 조금씩 공부해보기로 했다. 선택한 책은 다음과 같다. 제목 링크 토비의 스프링 www.yes24.com/Product/Goods/7516911 실전! 스프링 5와 Vue.js 2로 시작하는 모던 웹 애플리케이션 개발 http://www.yes24.com/Product/Goods/86038744 사실 몇가지 책이 더 있지만, 그건 그 때가서 보도록 하겠다. 기본적으로, Spring 만 공부할 것은 아니라, Javascript나 Vue에 대한 내용도 포함해서 공부할 예정이라, 해당 내용도 추가로 따로 작성할 예정이다. Spring의..

Framework/Spring 2020.11.19

Elastic Stack 아주 조금만 알아보자 - LogStash 실습 1

인구분석 실습 인구 분석 데이터를 가져와, Kibana까지 이어지는 흐름을 한번 만들어 보자. 데이터의 위치는 다음과 같다. (인프런 강의 내용) https://github.com/minsuk-heo/BigData/blob/master/ch06/populationbycountry19802010millions.csv minsuk-heo/BigData Contribute to minsuk-heo/BigData development by creating an account on GitHub. github.com 위 데이터는 1980년부터 2010년까지 이어진 나라별 인구분포를 모아둔 데이터이다. 일단 LogStash를 실행하기전에 ElasticSearch와 Kibana가 정상적으로 구동중인지 먼저 확인하자. ..

Architecture/ELK 2019.12.13

Elastic Stack 아주 조금만 알아보자 - LogStash

LogStash LogStash 정의부터 알아보자. LogStash는 오픈 소스 서버의 데이터 처리 파이프라인이며, 다양한 소스에서 동시에 데이터를 수집하여 변환한 후 자주 사용하는 스태쉬(Stash)-보관소(저장소)로 전달한다. LogStash 구조 LogStash의 구조는 크게 3가지, 입력 / 필터 / 출력으로 되어 있으며, 형식이나 복잡성과 관계 없이 데이터를 동적으로 수집, 전환, 전송한다. grok을 통해 비구조적 데이터에서 구조를 도출하여 IP주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키며, 전반적인 처리를 손쉽게 도와준다. 입력 데이터는 여러 시스템에 다양한 형태로 보관된다. 모든 소스, 사이즈, 형태의 데이터 수집을 진행하기 위해, 다양한 입력 Plugin 지원..

Architecture/ELK 2019.12.12

Elastic Stack 아주 조금만 알아보자 - Kibana

Kibana Kibana는 이전 포스팅에도 말했지만, Elastic Search 데이터를 시각화하고, Elastic Stack을 탐색하여 쿼리 부하 추적부터 앱을 통해 요청이 흐르는 방식 등을 진행할 수 있도록 만들어진, 데이터 시각화 플랫폼이다. 바로 설치부터 시작해보도록 하자. 가장 쉽게 설치하는 방법은 DEB 파일을 받아서, 설치하는 것이다. (Ubuntu 기준이며, 운영체제에 따라 차이가 있을 수 있다) https://www.elastic.co/kr/downloads/kibana Download Kibana Free | Get Started Now | Elastic | Elastic Want it hosted? Deploy on Elastic Cloud. Get Started » www.elast..

Architecture/ELK 2019.12.05

Elastic Stack 아주 조금만 알아보자 - Aggregation

Aggregation The aggregations framework helps provide aggregated data based on a search query. It is based on simple building blocks called aggregations, that can be composed in order to build complex summaries of the data. 집계 프레임 워크는 검색 쿼리를 기반으로 집계 된 데이터를 제공합니다. 이는 복잡한 데이터 요약을 작성하기 위해 구성 할 수있는 집계라는 간단한 빌딩 블록을 기반으로합니다. Elastic Search의 Aggregation이라는 컨셉에 대한 내용이며, 정리하여 Elastic Search의 Document안에서 조..

Architecture/ELK 2019.12.04

Elastic Stack 아주 조금만 알아보자 - ElasticSearch 구조

구조 알아보기 앞선 포스팅에서 API 문서를 보려고 했더니, Shard, Node라는 단어들이 나왔다. 이번 포스팅은 이러한 단어까지 하나씩 알아가 보도록 할 것이다. 첫 포스팅에서 간단히 Elastic Search가 무엇인지 알아 보았는데, 좀더 세부적으로 알아가자. Elastic Search 특징 Elastic Search의 내부에는 루씬(Lucene) 이라는 핵심 모듈이 들어있다. 루씬은 안정적이고 무료로 사용할 수 있는 오픈 소스 프로젝트로 만들어진 고성능 정보 검색(IR, Information retrieval) 라이브러리다. IR (Information Retrieval) 문서를 검색하거나, 문서의 내용을 검색하거나, 문서와 연관된 메타 정보를 검색해 가는 과정. 루씬은 자바로 구현되었으며, ..

Architecture/ELK 2019.11.28

Elastic Stack 아주 조금만 알아보자 - ElasticSearch Mapping/Search

Mapping 이란 Mapping은 RDB에서 Schema와 비슷한 역할을 한다. 그러나, 항상 Mapping이 필요한가를 묻는다면, 앞선 포스트에서 진행했듯, 딱히 신경쓰지 않아도 Document 생성/삭제/수정 등이 자유롭다. 그러나, Mapping이 정확하지 않으면 우리가 원하는 데이터의 정합성이 떨어지게 된다. (숫자가 String 으로 저장되는 등) 따라서, Kibana를 이용한다는 등 분석 및 Visualize를 해야할 때 제대로 사용하기 위해서는 꼭 넣어주는 것이 좋다. { "class" : { "properties" : { "title" : { "type" : "text" }, "professor" : { "type" : "text" }, "major" : { "type" : "text" ..

Architecture/ELK 2019.11.27