목록분류 전체보기 (89)
설모의 기록
서버와 클라이언트 간 통신할 때 식별하기 어플리케이션 또는 웹페이지를 만들 때 클라이언트와 서버가 통신을 해야하는 경우가 있습니다. 이 때, 어떤 사용자가 서버에게 요청을 걸었는지 알기 위해 사용자마다 식별할 수 있는 정보를 서버에게 넘겨 서버가 사용자에 맞는 정보를 보내주어야 합니다. 그렇게 하기위해 로그인을 하는 것이겠죠? 기본적인 웹페이지 구현에서는 클라이언트와 서버가 각각 쿠키와 세션에 정보를 저장하고, 통신할 때 정보를 주고 받습니다. 사용자가 로그인을 하면 서버에서 세션ID 를 생성해 클라이언트에게 보내주고, 클라이언트는 그 세션ID 를 쿠키에 저장합니다. 쿠키는 서버와 통신을 할 때 request header에 자동으로 넣어져 서버에 전송됩니다. 서버는 클라이언트가 요청을 하면 그 요청의 h..
이번 포스트는 이메일로 메일을 보낼 때 사용하는 nodemailer 모듈에 사용법에 대해 알아보겠습니다. 보통 이메일 인증할 때나 비밀번호 찾기 기능을 구현할 때 이메일로 비밀번호를 보냅니다. node.js 에서는 nodemailer 라는 모듈을 사용해 메일을 보낼 수 있습니다. 우선 모듈부터 깔아볼까요?$ npm install nodemailer 이후, 파일 상단에서 아래와 같이 모듈을 선언합니다.const nodemailer = require('nodemailer'); 이제 메일을 보내볼까요? 저는 구글계정을 사용해 메일을 보내는 것을 예시로 사용하겠습니다. 구글계정을 사용해 nodemailer 모듈을 사용하려고 할 때는 설정해야할 것이 있습니다. 이 모듈을 사용하기 위해서는 2단계 인증 을 허용하고..
cocos-2d js 에서 기본으로 제공하는 js 파일인 CCGeometry.js 파일 내 메소드들에 대해서 알아보겠습니다. 저는 캐릭터의 사각형 충돌체와 장애물의 사각형 충돌체가 겹치는 때를 알기 위해 update 문에서 cc.rectIntersectRect() 메소드를 사용했었는데요. 이처럼 두 점 비교, 점과 사각형 비교, 사각형과 사각형을 비교하는 등의 작업을 할 때 이 파일 내의 메소드를 사용합니다. cc.pointEqualToPoint : 두 cc.p() 의 x, y 값이 같은지를 비교합니다. 123cc.pointEqualToPoint = function (point1, point2) { return point1 && point2 && (point1.x === point2.x) && (poin..
이번에는 비동기적인 코드에서 중첩된 콜백메소드 폭포를 처리해주는 async 모듈에 대해 알아보겠습니다. 아래의 예제는 node.js 프로젝트에서의 예시 코드입니다. Async 모듈 먼저, async 모듈을 사용하지 않고 중첩된 콜백메소드 코드를 보겠습니다. 1234567callback1 (function () { callback2 (function () { callback3 (function () { console.log('세 개의 콜백메소드 수행'); }); });}); 콜백메소드를 3개만 중첩해 놓은 것인데도 코드를 읽기에 매우 불편합니다. 코드가 점차 커지면 이러한 불편함은 더욱 커질 것입니다. 이러한 비동기 처리를 보기 쉽게 처리하는 모듈이 Async 입니다. 우선 Async 모듈을 사용하려는 프..
회원정보를 관리하는 어플리케이션이나 웹페이지를 구현할 때 가장 중요한 것은 보안입니다. 보안 중에서도 가장 중요한 것이 사용자의 비밀번호를 암호화해 로그인을 함부로 할 수 없도록 하는 것입니다. 비밀번호를 텍스트 그대로 데이터베이스에 저장해 관리하는 것은 해커에게 "가져가라~" 라고 말하는 것과 같습니다. 오늘은 그 중에서도 비밀번호를 암호화해 저장하기 위해 만들어진 bcrypt 에 대해 알아보겠습니다. 아래 코드들은 node.js 를 이용해 개발하는 프로젝트에서의 예시입니다. bcrypt 모듈 종류는 bcrypt 모듈, bcrypt-nodejs 모듈 그리고 bcryptjs 모듈이 있습니다. 각자 프로젝트에 맞게 설치해주시면 됩니다. 저는 bcrypt-nodejs 모듈을 사용하겠습니다. 모듈을 적용하려는..
ES5 에서는 key를 value 에 매핑해야하는 유일한 데이터 구조는 Object 였습니다. 그래서 Object 를 아래의 예제와 같이 사용해왔습니다.let obj = {key: "value", a: 1} console.log(obj.a); // 1 console.log(obj['key']); // "value"let base = {a:1,b:2}; let obj = Object.create(base); obj[c] = 3; for (prop in obj) { console.log(prop); } // a // b // c // obj 에 존재하는 프로퍼티들을 돌면서 출력한다. for (prop in obj) { if (obj.hasOwnProperty(prop)) { console.log(prop) ..
ES5 에서 원시 타입(primitive type)은 6가지가 있었죠. 바로 boolean, number, string, null, undefined, object 입니다. 이제 ES6 에서부터 Symbol 이라는 타입이 하나 추가되었습니다. 간단한 예제는 아래와 같습니다. 언뜻 보면 'String 아니야?' 라고 할 수 있겠지만 String 타입이 아니라 Symbol 타입입니다. Symbol 타입을 사용하는 이유는 변수나 메소드같은 것들의 이름을 충돌 없이 프로그래밍 하기 위해서입니다. 간단한 예를 들어보겠습니다. Array.isArray() 메소드가 생기기 이전, 필요에 의해 string 을 반환하는 Array.isArray() 메소드를 구현해 코드에 추가했다고 가정해보겠습니다. 그 이후 boolea..
예전에 node.js 로 서버를 구현할 때 Promise 를 얼핏 보았는데 어떻게 사용하는지를 몰라서 넘겼던 것을 이제야 공부하고 정리하네요 :)우선 아래의 예제를 보겠습니다.import fs = require('fs'); function loadJSONSync(filename: string) { return JSON.parse(fs.readFileSync(filename)); } // json 파일이 정상적으로 존재할 때 console.log(loadJSONSync('good.json')); // 파일이 존재하지 않아 loadJSONSync() 메소드가 에러를 발생할 때 try { console.log(loadJSONSync('absent.json')); } catch (err) { console.lo..
오늘은 2018년도 1월 1일이다. 한번쯤 한 해가 끝났을 때 정리를 해보고 싶었는데 이번 기회에 도전해보려고 한다. 2017년도 한해는 고3 때 보다도 더 우울해하고 걱정이 많았던 한 해였다. 친하던 사람들이 친했던 사람들이 되고, 뒤에서 속닥거리는 이야기들에 의해 완성되는게 사람들 인식속의 나라는 것에 대해 실망하기도 하며, 인간관계에 회의감을 느끼던 순간들이 많았다. 이것과는 별개로 대학교에 입학한 후 어느 때보다 전공에 관련된 심화된 경험들을 많이 할 수 있었던 한 해였다. 아래의 글에 2017년도를 정리해보았다. 대학생 연합 IT 창업 동아리 'SOPT'2016년 3월부터 IT 창업 동아리인 SOPT 활동을 시작했다. SOPT 는 대학생 연합 동아리로 기획, 디자인, 개발(안드로이드, IOS, ..
이 문제는 간단한 동적계획법 문제입니다. 이전 값들을 배열에 저장해놓고 다음 배열 값에는 이전 값들을 읽어와 저장을 하는 방식입니다. 소스코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { static int[][] dp = new int[41][2]; public static void main(String[] args) throws IOException { BufferedR..