반응형

컴퓨터 공학/JavaScript 39

http 서버에서 multipart/form-data에 boundary 넣는 방법

const express = require('express'); const FormData = require('form-data'); let router = express.Router(); router.route('/test').get((req, res) => { let form = new FormData(); form.append('part1', 'part 1 data'); form.append('part2', 'part 2 data'); form.append('part3', 'part 3 data'); res.setHeader('Content-Type', `multipart/form-data; boundary=${form.getBoundary()}`); form.pipe(res); }); module..

Node.js 함수 내 함수를 통한 코드 정리 예시

function test(){ let a = 1; let b = 2; const func1 = () => { if(a == 1){ throw new Error("a = 1"); } console.log('func1 success'); } const func2 = () => { if(b == 2){ throw new Error("b = 2"); } console.log(`func2 success`); } try{ func1(); func2(); } catch(ex){ console.error(`test failed - ${ex.message}`); return; } } test(); 하나의 작업을 수행하는 함수 내에서도 다양한 추상화 수준의 코드들이 존재할 수 있기 때문에 이들을 다시 내부 함수로 분리하여..

N-API 관련 자료 수집

*N-API 공식 홈페이지: https://nodejs.org/api/n-api.html *N-API 관련 예제: https://github.com/nodejs/node-addon-examples *node-gyp 설치: https://github.com/nodejs/node-gyp ◆ 팁 *node 모듈을 실행하기 위해서는 해당 컴퓨터의 터미널에서 "yarn global add windows-build-tools"를 입력하여 윈도우 빌드 툴을 설치해야 합니다. (node-gyp 설치 페이지 참고) *클래스를 생성하기 위해 .cc 파일과 .h 파일을 추가할 경우 binding.gyp에서 targets -> sources에 해당 .cc 파일을 추가해야 합니다. 예를 들어, player 클래스를 추가할 경우..

[초간단] Visual Studio Code에서 Vue.js 설치하기

● vue-cli 설치하기 ▶터미널에서 "npm install -g @vue/cli" 입력 (반드시 @ 붙여야 함) 또는 "yarn global add @vue/cli" 입력 ●vue-cli로 프로젝트 생성하기 ▶터미널에서 "vue create my-project" 입력 ◆Please pick a preset 항목에서 default(babel, eslint) 선택 ▶터미널에서 "cd my-project"를 입력하거나, visual studio code의 폴더를 my-project로 이동 ▶터미널에서 "npm run serve"를 입력하면 웹에서 최종 실행 화면을 볼 수 있음 [오류처리] 터미널에서 "vue create" 명령어 입력시 아래와 같은 오류가 발생할 수 있습니다. vue : 이 시스템에서 스크..

Node.js UTF-8 데이터 CSV 파일 저장시 한글 깨짐 문제

서버로부터 UTF-8 형식의 문자열을 받아 file-saver 모듈을 사용하여 CSV 파일로 저장할 때 엑셀에서 열람하면 글자가 깨지는 현상이 있습니다. 이때 문자열 앞에 BOM을 추가해주면 CSV 파일을 정상적으로 열 수 있습니다. Office 2007 이전에는 ANSI 1252 인코딩을 기본 값을 사용하였습니다. BOM을 추가하면 Office 2007 이후 버전부터 정상적으로 CSV 파일을 열 수 있습니다. var BOM = "\uFEFF"; var csvData = BOM + csvData; var blob = new Blob([csvData], { type: "text/csv;charset=utf-8" }); saveAs(blob, "myFile.csv"); 참조: https://github.co..

Node.js에서 C/C++ 애드온 N-API, 빠르게 시작하기

Node.js에 따르면, Node.js 애드온은 C++에 의해 작성된 동적 링크 공유 객체로, require() 함수를 사용하여 Node.js로 불러올 수 있으며 일반 Node.js 모듈처럼 사용할 수 있습니다. 이 애드온은 C/C++ 라이브러리와 Node.js에서 작동하는 자바스크립트 간의 인터페이스를 제공합니다. nodejs 애드온을 사용하는 이유는 크게 다음과 같습니다. 1. JS 스스로 사용하기 어려운 네이티브 api들에 접근하고 싶을 때 2. C/C++에서 작성된 서드 파티 라이브러리와 통합하고 싶고, 이를 Node.js에서 직접 사용하고 싶을 때 3. 성능 이슈로 인해 C++ 모듈로 재작성하고 싶을 때 이 글에서는 N-API에 대해 설명하고 C/C++ 기반의 NodeJS 애드온을 구축하기 위한..

Vue.js에서 라우터 URI에 파라미터 전달하기

Router 객체에서 /test 라는 라우트 경로를 추가하고 name을 파라미터로 받는다고 가정할 때, router.js 파일에 다음과 같이 코드를 추가합니다. { path: '/test/:name', name: 'test', component: Test } 위 코드에 따르면, 사용자는 http://localhost/test로 접속할 수 있으며, 뒤에 name이라는 변수의 값을 파라미터로 전달할 수 있습니다. 위 라우트 경로의 이름은 test이며, 사용하는 컴포넌트는 Test입니다. 이제, 사용자가 위의 경로로 접속했을 때 파라미터를 받아서 사용하는 코드를 작성합니다. My name is {{name}} 위의 컴포넌트에서 보는 바와 같이, mounted() 콜백함수가 호출되었을 때, $route라는 변수..

Electron-vue 관련 링크 모음

Electron 설치 순서 https://jiwondh.github.io/2017/06/22/Electron1/ electron-vue https://github.com/SimulatedGREG/electron-vue/tree/master/docs/ko Node.js와 Vue.js 간 통신하는 방법 https://itinerant.tistory.com/52 Node.js와 Vue.js 간 통신하는 방법2 https://electronjs.org/docs/api/ipc-main 기타 electron-vue를 설치하기 위해서는 vue-cli 2버전을 사용해야 한다. npm install -g @vue/cli로 vue 3버전 이상을 설치해야 vue add vuetify를 사용할 수 있다. 이를 위해, elec..

[단순코드] Node.js 로거 모듈 winston/winston-daily-rotate-file 초기화

logger.prototype.init = function(){ if(this.writer != null){ return; } this.writer = winston.createLogger({ transports: [ new (winstonDaily)({ name: 'info-file', filename: path.join(utils.LOG_PATH, './server_%DATE%.log'), datePattern: 'YYYY-MM-DD', colorize: false, maxsize: 50000000, maxFiles: 1000, level: 'info', showLevel: true, json: false, timestamp: time_stamp_format, format: winston.format..

반응형