반응형

개발 창고/NodeJS 35

[알고리즘] 이진트리 (B-Tree)

function findNumber(list, value){ var searchCnt = 0; var bTree = function(list, value){ // Step. 탐색 횟수 체크 console.log("탐색 중"); // Step. 목록 이 0개 또는 지정되지 않은 경우 -1 리턴 if(list == null || list.length == 0) return -1; // Step. 중간값 조회 var nIdx = Math.floor(list.length / 2); // 현재 검색할 Index var nValue = list[nIdx]; // 현재 값 // console.log(nIdx); // console.log(nValue); // console.log(list); if(nValue == ..

[VanillaJS] 변수 JSON 변환 가능 여부 체크

/** * 파라미터가 Json으로 된 string인지 여부 * @param value 검사할 string값 */ function isJsonString(value){ try{ // Cond. value의 데이터 타입이 string인 경우 if(typeof value == "string"){ // Cond. Json으로 Parsing이 정상적으로 된 경우 if(typeof JSON.parse(value) == "object"){ return true; // Cond. Json으로 Parsing이 정상적으로 되지 않은 경우 }else{ return false; } // Cond. value의 유형이 string이 아닌 경우 // :: Json형태의 string이 아니므로 }else{ return false;..

[ExcelJS] 내용 덮어 씌우기

const path = require("path"); // 디렉토리 경로 const exceljs = require("exceljs"); // 엑셀 관련 API (async() => { try{ const filename = "excelappend.xlsx"; // 파일명 const template = path.join(__dirname, filename); // 템플릿 파일 위치 const workbook = new exceljs.Workbook(); // Step. Excel Template 파일 Read workbook.xlsx.readFile(template) .then(() => { // Step. 해당 템플릿 엑셀에서 Sheet1번 Sheet를 불러옴 const sheet = workbook...

[Javascript] split - 정수 배열 만들기

var list = "1,2,3,4,5,6,7,8".split(",").map(function(num){ return parseInt(num); }); 일반적으로 문자열값을 배열로 만들 때 사용하는 함수는 split입니다. 하지만 이때 split는 문자열 기준이기 때문에, 결과가 문자열 기준으로 반환됩니다. 하지만 이 결과는 개발자가 원하지 않는 결과를 가져오기도 합니다. 만약, 해당 split된 배열중에서 4가 몇 번째 순번에 있는지 indexOf 함수를 사용하여 확인하려고 한다면, 결과가 위와 같이 -1이 반환됩니다. 이유는 list에 있는 4는 문자열이고, 비교 대상인 x값 4는 정수이기 때문입니다. 아무리 변수 속성을 보지 않는다는 javascript이지만, 이렇게 문자열이냐 정수냐를 비교하고는 ..

[Mail] nodemailer - 메일 발송하기

// npm install nodemailer const nodemailer = require("nodemailer"); (async() => { const host = "smtp.naver.com"; const sender = {이메일주소}; const senderPwd = {이메일비밀번호}; const emailTo = [{받는 사람 이메일 #1}, {받는 사람 이메일 #2}, ...]; const subject = {메일 제목}; const contents = {메일 내용}; // Step. 메일 전송 옵션 설정 let transporter = nodemailer.createTransport({ host : host , port : 587 , secure : false , auth : { user:..

[Scheduler] node-scheduler

npm i --save node-schedule const schedule = require("node-schedule"); const job01 = schedule.scheduleJob("10 * * * * *", () => { console.log("[job01] 매 분 10초마다 실행 > " + new Date()); }); const job02 = schedule.scheduleJob("*/10 * * * * *", () => { console.log("[job02] 매 10초마다 실행 > " + new Date()); }); node를 사용하다 보면, 특정 시간마다 반복적으로 작업되도록 기능을 추가하고 싶을 때가 있습니다. 이 경우 node-schedule를 활용하면 가능합니다. 먼저 아래와 같..

PDF 이미지 추출하기

※ 해당 글은 아래 Library를 참조하여 작성되었습니다. https://github.com/mablay/pdf-export-images GitHub - mablay/pdf-export-images: Export images from PDF files via CLI Export images from PDF files via CLI. Contribute to mablay/pdf-export-images development by creating an account on GitHub. github.com /** * @file index.js * @install npm i pdf-export-images * @desc PDF에서 이미지 추출 */ // Step. PDF 이미지 추출 라이브러리 선언 (Impo..

[React] Component에서 useParams 사용하기

import React, { Component } from "react"; import { useParams } from "react-router-dom"; function withParams(Component) { return (props) => ; } class CustomComponent extends Component { constructor(props){ super(props); const val1 = props.params.val1; // useParams()로 넘어온 val1 const val2 = props.params.val2; // useParams()로 넘어온 val2 this.state = { val1:val1, val2:val2 }; // Component state에 저장 } r..

[React] String to Html 렌더링

import React from "react"; class App extends React.Component { render(){ let html = "Hello, World"; return ( 그냥 넣는 경우 {html} dangerouslySetInnerHTML을 적용한 경우 ) } } export default App; React에서는 XSS 공격을 막기 위해 일반적으로 사용되는 {} 형태의 렌더링 시에 HTML을 단순 텍스트 형태로만 출력합니다. 때문에, 태그에 사용된 것처럼 dangerouslySetInnerHTML를 활용해줘야 html 태그를 적용하여 표현해 줄 수 있습니다. 이는 db에서 불러오는 html형태의 태그를 불러올 때 활용가능하며, span 대신에 다른 element를 활용해도 상..

[React] 절대경로 사용하기

// jsconfig.json { "compilerOptions": { "baseUrl": "src" } } 프로젝트의 root에 jsconfig.json을 만들고 위 소스를 입력해준다 CRA (Create React App)을 하다 보면 아래와 같이 트리구조의 폴더로 파일들이 관리되는 경우가 많습니다. 만약 pages > common > SearchAddress라는 파일에서 utils > CommonUtils의 파일을 활용하려면 별도의 설정이 없는 경우 아래와 같이 import 해야 합니다. 3번 라인처럼 선언한 경우 위와 같은 탐색 순서대로, CommonUtils를 찾게 된다. 하지만 만약 폴더의 깊이가 더 깊어진다면, ex) src > pages > common > search > addres > ..

반응형