nodejs 23

[NodeJS] ElasticSearch API getTemplate(index_template)

인덱스 템플릿(index_template)? 인덱스를 생성할 때 맵핑 정보를 입력해서 생성해야 한다. 맵핑 정보 입력 없이 그냥 생성하고 데이터를 넣으면 필드 맵핑이 이상하게 만들어져서 데이터 조회나, 어그리게이션 등이 정상적으로 되지 않는다. 매번 인덱스를 생성할 때 셋팅 정보, 맵핑 정보 입력하는 게 정말 귀찮다. 이런 불편한 점을 해결하는데 인덱스 템플릿을 사용하면 좋다. https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html Index templates | Elasticsearch Guide [7.16] | Elastic This topic describes the composable index tem..

Node.js 2022.01.03

[NodeJS] bulk 데이터 파일 읽어서 ElasticSearch에 등록하기

https://minu0807.tistory.com/114 여기랑 이어지는 내용이기도 함. const fs = require('fs'); const es_client = require('./client'); async function asyncForEach (array, callback) { for (let index = 0; index { console.log(name); let data = fs.readFileSync('./_bulk/' + name, 'utf8'); let bulk = await es_client.bulk({ body: data }) console.log(bulk); }) } catch (err) { console.error(err); } } run(); _bulk 디렉터리에 벌크 ..

Node.js 2021.11.25

[NodeJS] Multer를 이용해 파일 ElasticSearch에 등록하기

https://minu0807.tistory.com/111 [VueJS] NuxtJS+VuetifyJS 파일 업로드 기능 만들어보기 NuxtJS와 VuetifyJS를 이용해 만들었습니다. 최종 목표는 1. NuxtJS 웹에서 첨부한 파일을 Express로 넘겨준다. 2. Express에서 Multer를 이용해 ElasticSearch에 데이터를 생성한다. 이렇게이고, 이 글에서는 1번.. minu0807.tistory.com 이 글의 2번째 목표에 해당하는 글입니다. 우선 엘라스틱에 데이터를 넣기 위해 만든 인덱스의 맵핑 정보. file_content : 파일 바이너리 값 file_mk_dt : 파일 등록일 file_name : 파일명 file_size : 파일 사이즈 여기서 알아두어야 할게 file_c..

Node.js 2021.11.20

[NodeJS] child_process exec 한글 깨짐 해결하기

노드로 ping이나 traceroute 요청에 대해 전달 받은 ip로 결과 값을 전달해줘야 하는 API를 만드는 게 있었다. 노드에서 제공하는 cild_process의 execSync를 사용하면 되는 거라 만드는 거 자체는 어렵지 않았는데 문제는 한글이 깨지는 현상이었다. 기본 디코딩 자체가 utf8인데 euckr은 먹히지도 않아서 찾다 보니 iconv-lite를 사용하면 된다고 해서 적용해봤다. 먼저 iconv-lite를 사용하지 않고 그냥 했을 때 한글 깨지는 것부터 보면 이렇다. const exec = require('child_process').execSync; const cmd = 'ping -n 4 8.8.8.8'; let rs = exec(cmd); rs = rs.toString(); con..

Node.js 2021.08.18

[NodeJS] crypto를 이용한 단방향 암호화(해시 함수) 만들기

비밀번호 같은 데이터는 보통 단방향 암호화 알고리즘을 사용해서 암호화한다. 단방향 암호화란 암호화된 문자열을 다시 원래 문자로 복호화를 할 수 없는 암호화다. 다시 복호화할 수 없어서 해시 함수라고 부르기도 한다. 해시 함수에 대해선 minu0807.tistory.com/45 해시 함수 (hash function) 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수. 소프트웨어의 성능과 보안을 책임지는 중요한 요소 중 하나이다. 해시 함수를 사용하면 데이터양이 많아져도 일괄된 성능을 보 minu0807.tistory.com 전문적으로 상세하게 작성한 글은 아니지만 해시함수에 대해 간략하게 작성은 해두었다. 사용방법은 간단하다. 노드에서 제공하는 crypto를 가져와 쓰면 된다. 사용 방식은 co..

Node.js 2021.04.24

[NodeJS] async 와 await

길벗 출판사의 Node.js 교과서 개정2판에서 설명해준 내용 중 일부입니다. 노드 7.6 버전부터 지원되는 기능이다. ES2017에서 추가되었으며, 알아두면 정말 편리한 기능이다. 특히 노드처럼 비동기 위주로 프로그래밍을 해야 할 때 도움이 많이 된다. 프로미스가 콜백 지옥을 해결했다지만, 여전히 then과 catch가 계속 반복되기는 한다. async/await 문법은 프로미스를 사용한 코드를 한 번 더 깔끔하게 해준다. 책도 읽고 소스도 따라 쳐보고, 구글링해서 설명과 소스를 봤었는데 처음에 이해하는데 좀 오래걸렸었다. const time = 1; function sleep (t) { //슬립용 return new Promise( (resolve, reject) => { const time = t ..

Node.js 2021.04.03

[NodeJS] node 파일 모듈화와 비구조화 할당

노드는 코드를 모듈로 만들 수 있다. 너무 어렵게 생각할 필요는 없고 그냥 "특정한 기능을 하는 함수", "변수들의 집합", "필요한 코드들을 모아서 만든" 파일 1개가 그냥 모듈이고, 이 자체가 한 개의 프로그램이고 다른 곳에서 이걸 재사용할 수 있다. 소스는 보통 이런식이다. const a = 'a'; const b = { bb: 'bb', cc: 'cc' } function c () { console.log('cc'); } function d (val) { console.log(val); } module.exports = { a, b, c, d } 변수나, 객체, 함수 등 필요한 소스 코드를 작성하고 마지막에 module.exports 사용하면 모듈화가 끝이다. 저 파일명이 md.js라고 치고 저 ..

Node.js 2021.04.03