분류 전체보기 22

Elastic Stack 개요 (ELK, Elasticsearch, Kibana, Logstash)

Elastic Stack 빅데이터 파이프라인을 구성하는 플랫폼 Flow 엘라스틱 스택의 구성 엘라스틱서치 : 분산 검색 엔진 검색 엔진 + 데이터베이스 일반적인 검색 엔진(구글, 네이버)과는 다른 검색 엔진 일반적으로 검색 엔진은 내부적으로 각 도큐먼트를 인덱싱하고 빠르게 검색하는 데 사용하는 기술 엘라스틱서치는 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리 일반적인 데이터베이스와 마찬가지로, 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환 일종의 NoSQL 데이터베이스라고 생각 빠른 검색 및 집계 성능 엘라스틱서치는 텍스트나 도큐먼트의 경우 인덱싱 시점에 분석을 거쳐 용어 단위로 분해되고 역인덱스 사전을 구축 숫자나 키워드 타입의 데이터들은 엘라스틱서치의 집계를 위해 집계에 최적화된 컬럼 기반..

카테고리 없음 2022.12.31

MySQL IN 조건 순서대로 정렬하기 (ORDER BY FIELD)

상황 MySQL에서 IN 절 안에 조회하고 싶은 컬럼의 리스트를 넣은 후 조건으로 설정한 리스트의 순서대로 반환받고 싶을 때 ex. 조회해야 하는 Member들의 id와 반환되어야 할 순서로 정렬된 리스트를 입력받는다. Member를 조회하고, 입력받은 순서에 맞게 정렬해서 Member List를 리턴한다. @Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; // Example 1 public List getMembers1(List memberIds) { List members = memberRepository.findAllById(memberIds); //..

DB/MySQL 2022.12.30

[GraphQL] Query & Mutation

Query 구현 - Code Query : 데이터 조회 Mutation : 데이터 추가, 수정, 삭제 Query 루트 타입 type Query { teams: [Team] } 자료요청에 사용될 쿼리들을 정의 쿼리 명령문마다 반환될 데이터 형태를 지정 Type type Team { id: Int manager: String office: String extension_number: String mascot: String cleaning_duty: String project: String } 반환될 데이터의 형태를 지정 자료형을 가진 필드들로 구성 Resolver const resolvers = { Query: { teams: () => database.teams } } Query란 object의 항목들로 ..

GraphQL 2022.12.26

[GraphQL] Apollo 서버 구축

Apollo 서버 구축 npm i graphql apollo-server # ApolloServer # - typeDef와 resolver를 인자로 받아 서버 생성 # typeDef # - GraphQL 명세에서 사용될 데이터, 요청의 타입 지정 # - gql(template literal tag)로 생성 # resolver # - 서비스의 액션들을 함수로 지정 # - 요청에 따라 데이터를 반환, 입력, 수정, 삭제 설치 npm i graphql apollo-server Code const database = require('./database') const { ApolloServer, gql } = require('apollo-server') const typeDefs = gql` type Query ..

GraphQL 2022.12.26

[GraphQL] GraphQL & Apollo

GraphQL GraphQL의 장점 1. 필요한 정보들만 선택하여 받아올 수 있음 - Overfetching 문제 해결 - 데이터 전송량 감소 2. 여러 계층의 정보들을 한 번에 받아올 수 있음 - Underfetching 문제 해결 - 요청 횟수 감소 3. 하나의 endpoint에서 모든 요청을 처리 - 하나의 URI에서 POST로 모든 요청 관리 실습 - Code 환경 설정 # 프로젝트 모듈 설치 npm i # 프로젝트 실행 명령어 (해당 프로젝트 폴더에서) nodemon index.js # 브라우저에서 localhost:4000 으로 확인 팀 정보 받아오기 query { teams { id manager office extension_number mascot cleaning_duty project ..

GraphQL 2022.12.26

[GraphQL] REST API 한계와 GraphQL 사용 이유

REST API 소프트웨어 간 정보를 주고받는 방식 GraphQL 이전부터 사용 GraphQL은 '다른' 방식 - 용도와 작업특성에 따라 적합한 것을 사용하기 위해 Data [ { name: '30분짜장', category: 'chinese', tel: '##-####-####', rating: 4.6 }, { name: '피자파자마', category: 'italian', tel: '##-####-####', rating: 3.9 }, { name: '공중떡볶이', category: 'snack', tel: '##-####-####', rating: 4.9 }, ///... ] REST API는 데이터를 주고받을 주체들간 약속된 형식 URI 형식(어떤 정보를) + 요청 방식(어떻게 할 것인가)요청 형식..

GraphQL 2022.12.26

YUV Format (+영상 처리 코드)

1. YUV Format? YUV format 은 RGB(Red, Green, Blue) 3 원색의 format 과 손실없이 1:1 변환(mapping) 빛의 밝기를 나타내는 휘도(Y)와 Chroma Components 로 불리는 2개의 색상 신호(U, V)로 구성한다. 인간의 눈이 색상신호보다 밝기 신호에 민감한 눈의 인지 원리를 이용한다. 밝기를 담당하는 Y sample 은 모두 취하고, 상대적으로 둔감한 색상을 담당하는 U 나 V sample 은 4 개의 픽셀에서 1 개 또는 2 개의 픽셀만 취급하여 저장할 비디오의 용량을 줄일 수 있다. 1-1. YUV Format 종류 YUV format 은 Y, U(Cb), V(Cr)의 비율을 어떻게 하냐에 따라, 즉 샘플링 비율에 따라 YUV 444, YUV..

Video-processing 2022.12.26

[OS] C로 Multi-thread(멀티 스레드) 구현 (Windows / Linux)

예제 코드 설명 하나의 스레드는 전역 변수 target을 계속 더해주고(target++), 다른 하나의 스레드는 target을 계속 빼주는(target--) 멀티 스레드 예제 코드입니다. 스레드 동기화(Thread Synchronization)없이 두 개의 스레드가 경쟁하는 구조입니다. Windows OS : Windows 10 #include // WinAPI 사용 #include int target = 0; int WINAPI addTarget(LPVOID param) { // 파라미터로 원래 LPVOID 타입을 사용하지만 void * 를 사용해도 같음 int limit = *(int *) param; int i=0; for (i=1; i

OS 2022.12.26

윈도우(Windows)에서 특정 포트 검색 및 종료 (netstat, taskkill, find)

개발 도중 사용하고 있던 특정 포트가 종료되지 않아 다시 명령어를 입력했을 때 에러가 발생하는 경우를 한 번씩 겪는다. (ex. node:3000, django:8080, tomcat:8080) 이번 기회에 윈도우에서 명령 프롬프트(CMD)를 통해 특정 포트가 열려있는지 검색하고 해당 포트를 죽이는 명령어에 대해서 정리하고자 한다. 특정 포트 검색 (netstat -ano) 기본 명령어는 netstat 이다. 그런데 이렇게 해서는 우리가 원하는 특정 포트가 현재 사용되고 있는지와 taskkill(특정 포트 종료 명령어)을 사용하기 위해서 알아야 할 pid가 나오지 정확히 나오지 않기 때문에 netstat 명령어에 옵션을 붙여준다. 다양한 옵션에 대한 설명은 netstat help를 통해 알 수 있다. 우..

Tips 2022.12.26

JavaScript로 직접 만드는 QR 코드 생성하기

0. Intro 최근 구상하고 있는 아두이노 프로젝트와 관련하여 아두이노와 모바일 디바이스를 통한 인식을 위해서 여러 가지 방법을 생각하다가 현재 코로나 때문에 우리 학교에서 학교를 출입할 때 사용하는 방식이 생각났다. 학교 애플리케이션에 접속하면 QR코드를 발급해주고 건물 입구에서 해당 QR코드를 통해 사용자를 인식하는 방법이다. 이 방법을 적용해보기 위해 QR코드 관련 사이트와 포스트를 찾아보다 재밌는 사이트를 발견했다. https://www.the-qrcode-generator.com/ 사용자가 입력하는 텍스트, URL, 전화번호 등을 QR코드로 생성해주는 사이트이데 QR코드 생성과 인식을 모두 지원하고 있다. 그래서 프로젝트에 적용해보기 전에 재미로 QR코드를 직접 만들고 인식할 수 있는 웹 사이..

Toy-projects 2022.12.26