Skip to content

Latest commit

 

History

History
224 lines (128 loc) · 7.57 KB

README.md

File metadata and controls

224 lines (128 loc) · 7.57 KB

Comman Server API

API Document


Develop Environment

  1. AWS - EC2

  1. AWS - RDS

  1. Promise, Async & Await


Security Mehtod

  1. JWT

JWT

Build Status Reference Status

Middleware that validates JsonWebTokens and sets req.user.

This module lets you authenticate HTTP requests using JWT tokens in your Node.js applications.

JWTs are typically used to protect API endpoints, and are often issued using OpenID Connect.


  1. Nginx

An official read-only mirror of http://hg.nginx.org/nginx/ which is updated hourly.

Pull requests on GitHub cannot be accepted and will be automatically closed.

The proper way to submit changes to nginx is via the nginx development mailing list, see http://nginx.org/en/docs/contributing_changes.html http://nginx.org/


  1. Helmet

npm version npm dependency status Build Status js-standard-style FOSSA Status

Helmet is Middlewares to help secure your apps

Helmet helps you secure your Express apps by setting various HTTP headers. It's not a silver bullet, but it can help!


  1. express-session
  • 미들웨어는 세션 데이터를 서버에 저장하며, 쿠키 자체에는 세션 데이터가 아니라 세션 ID만 저장

  • 기본적으로 express-session은 인메모리 스토리지를 이용


  1. cookie-parser
  • 쿠키 기반의 스토리지를 구현하며, 하나의 세션 키가 아니라 세션 전체를 쿠키에 직렬화

  • 세션 데이터의 크기가 상대적으로 작음


  1. SSL

  • 전송 계층 보안 (영어: Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)는 암호 규약이다.

  • '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어'가 표준화 되면서 바뀐 이름이다.

  • TLS의 3단계 기본 절차:

    1. 지원 가능한 알고리즘 서로 교환
    2. 키 교환, 인증
    3. 대칭키 암호로 암호화하고 메시지 인증

Technology Stack

Build Status Built with Grunt

Hangul.js

Hangul.js는 한글로 이루어진 문장의 자음과 모음을 분리하는 자바스크립트 라이브러리입니다. 이 라이브러리를 이용하여 한글검색, 초성검색 등을 할 수 있습니다.

설치 및 사용방법

node.js

npm install hangul-js
var Hangul = require('hangul-js');

명세

Hangul.disassemble (alias Hangul.d)

Hangul.disassemble(str:string, grouped:boolean = false)은 문자열 str에 있는 한글을 자음/모음으로 분리하여 문자들의 배열로 돌려줍니다. 이 때 한글이 아닌 문자는 그대로 반환됩니다. Hangul.d처럼 짧은 이름으로 사용할 수도 있습니다.

Hangul.disassemble('가나다'); // ['ㄱ','ㅏ','ㄴ','ㅏ','ㄷ','ㅏ']

Hangul.disassemble('ab가c'); // ['a','b','ㄱ','ㅏ','c']

Hangul.disassemble('ab@!23X.'); // ['a','b','@','!','2','3','X','.']

같은 홑낱자로 이루어진 겹낱자는 분리되지 않습니다.

Hangul.disassemble('ㄲ'); // ['ㄲ']

다른 홑낱자로 이루어진 겹낱자는 분리됩니다.

Hangul.disassemble('ㄳ'); // ['ㄱ','ㅅ']

Hangul.disassemble('ㅚ'); // ['ㅗ','ㅣ']

추가적으로 grouped 옵션을 true로 설정하여 문자열의 각 글자별로 따로 분리할 수 있습니다.

Hangul.d('매드캣MK2', true); 
// [['ㅁ', 'ㅐ'], ['ㄷ', 'ㅡ'], ['ㅋ', 'ㅐ', 'ㅅ'], ['M'], ['K'], ['2']]

두벌식 키보드로 주어진 문자열을 입력할 때 누르는 키들의 배열이라고 생각하면 쉽습니다.

Hangul.assemble (alias Hangul.a)

Hangul.assemble(arr:string[])는 한글 자음/모음들의 배열 arr을 인자로 받아 이를 조합한 문자열을 돌려줍니다. 이 때 한글이 아닌 문자는 그대로 반환됩니다. Hangul.a처럼 짧은 이름으로 사용할 수도 있습니다.

Hangul.assemble(['ㄱ','ㅏ','ㄴ','ㅏ','ㄷ','ㅏ']); // '가나다'

Hangul.assemble(['a','b','ㄱ','ㅏ','c']); // 'ab가c'

Hangul.assemble(['a','b','@','!','2','3','X','.']); // 'ab@123X.'

이 경우에도 두벌식 키보드에서 주어진 키들을 누를 때 만들어지는 문자열을 돌려준다고 생각하면 쉽습니다.

Hangul.assemble(['ㅗ','ㅐ']); // 'ㅙ'

Hangul.assemble(['ㄹ','ㅂ','ㅅ']); // 'ㄼㅅ'

Hangul.disassemble 함수와 역함수 관계가 아닙니다.

Hangul.a(Hangul.d('옽ㅏ')); // '오타' ('옽ㅏ' 가 아님)

Hangul.search

Hangul.search(a:string, b:string)는 문자열 a가 문자열 b를 포함하는지 검사합니다. 이때 포함관계는 '두벌식 키보드 기준으로 a문자열을 입력할 때 누르는 키들의 배열이 b문자열을 입력할 때 누르는 키들의 배열을 포함한다'로 정의합니다. 반환값이 0보다 크거나 같다면 포함합니다.

Hangul.search('달걀','닭'); // 0

Hangul.search('달걀','알'); // -1

indexOf함수와 다릅니다.

var a = '도우미'
  , b = '도움';
  
a.indexOf(b); // -1

Hangul.search(a, b); // 0

실제 사용할 때에는 하나의 단어를 여러개의 문자열과 비교하므로 Hangul.Searcher를 사용하는게 편합니다.

var searcher = new Hangul.Searcher('닭');

searcher.search('달걀'); // 0
searcher.search('달구지'); // 0
searcher.search('달무리'); // -1

테스트 및 기여

코드를 수정하셨다면 꼭 grunt 명령어를 통해 테스트를 수행해 주세요. 현재 마스터 브랜치에 있는 코드의 테스트 결과는 여기서 보실 수 있습니다.