기타

    네이버 클라우드 SENS(Simple & Easy Notification Service) api와 node.js 연동하여 문자 서비스 이용하기

    각 api 코드에 대한 자세한 내용은 다음 주소를 참고. https://api.ncloud-docs.com/docs/ai-application-service-sens-smsv2 뼈대 코드 function send_message(phone) { var user_phone_number = phone;//수신 전화번호 기입 var resultCode = 404; const date = Date.now().toString(); const uri = ; //서비스 ID const secretKey = ;// Secret Key const accessKey = ;//Access Key const method = "POST"; const space = " "; const newLine = "\n"; const url..

    면접 준비

    뮤텍스 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key🔑를 기반으로 한 상호배제기법 세마포어 Signaling mechanism. 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법 참고: https://worthpreading.tistory.com/90 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 이 글은 Medium에 개시된 글입니다. Medium에서 보시면 좀 더 유쾌한 환경에서 글을 보실 수 있습니다. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 Toilet problem 동시성 프로그래밍의 가장 큰 숙제는 ‘공 worthpreading.tistory.com 데이터베이스 인덱스 인덱스란 추가적인 쓰기 작업과 저장 공간을..

    실전프로젝트 중간점검

    express를 사용한 이유 가벼워서 처음 배워서 사용하기 좋았다. mysql을 사용한 이유 데이터 중복이 없어 무결성이 보장된다. 중복된 데이터 관리가 쉽다. nosql에 비해 사용하기 까다롭기 때문에 공부할 때는 sql을 사용하는 것이 좋다고 생각했다. 프로젝트에서 보안은 어떻게 유지하나? HTTPS를 적용하여 세션 데이터를 암호화했다. JWT를 이용해 유저정보를 함호화했다. 회원의 비밀번호를 해쉬 함수를 사용해 암호화했다. 내가 맡은 부분의 질문 (API, 테스트 코드, HTTPS, 웹소켓) 최적화를 위해 어떤 것을 했나? DB 조회를 한번만 하여 원하는 값을 불러올 수 있도록 쿼리를 구현했다. 간단한 쿼리는 sequelize를 사용했고 복잡한 쿼리는 raw query를 사용했다. 예외처리는 어떤식..

    EC2 CodeDeploy를 이용하여 github 연동 및 자동배포

    CodeDeploy AWS는 CodeDeploy를 통해 CD(Continous Delivery)를 진행한다. CodeDeploy는 Revision(code, dependencies,packages 등 필요한 파일들과 AppSpec.yml)이 로컬에서 S3 Bucket, github, bitbucket 등으로 업로드될 때 실행되어 EC2 인스턴스 또는 auto-scaling group에 배포한다. Appspec.yml 파일을 프로젝트 내에 생성하고 CodeDeploy agent에게 배포 또는 실행해야하는 파일들의 순서와 경로를 알려준다. 이 때 모든 EC2 인스턴스에는 Appspec를 읽을 수 있는 agent가 설치되어 있어야한다. ※주의※ code Deploy agent는 Ubuntu 20.04 버전을 ..

    EC2 접속하기

    EC2 접속 ssh -i 받은키페어를끌어다놓기 ubuntu@아이피 관리자 권한 얻기 sudo -s

    HTTPS 적용하기

    HTTPS란? 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 1. SSL 인증서 - SSL인증서란? SSL은 Secure Sockets Layer의 약자이다. 인터넷을 할 때 데이터 내용을 암호화 해주는 프로토콜(규칙)이다. SSL인증서는 이런 보안통신을 하기 위한 전자 파일이다. SSL인증서를 서버에 설치함으로써 SSL 프로토콜을 사용하여 보안 통신을 할 수 있게 된다. SSL 인증서는 무료와 유로가 있고, 무료 인증서의 경우 해당 인증서를 적용하여 서비스 도중 보안 문제가 발생하여 피해를 입었을 시 배상금 및 보증책임을 지지 않는 조건으로 보급하고 있다. SSL 인증서 적용..

    실서비스 프로젝트 DB ERD와 입력자료 예시

    ### DB ERD CREATE TABLE Users( userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY , phone varchar(100) NOT NULL UNIQUE, name varchar(50) NOT NULL, nickname varchar(50) NOT NULL UNIQUE, password varchar(255) NOT NULL, profileImg varchar(255), statusMessage varchar(255), rating int(11) NOT NULL, createdAt datetime NOT NULL DEFAULT NOW(), updatedAt datetime NOT NULL DEFAULT NOW() ); CREATE TABLE Li..

    http GET에서 req.body로 값을 받을 때

    GET에서도 req.body 데이터를 받을 수 있지만 http 규약에 위배되므로 피하는 것이 좋다고 한다. 이것은 프레임워크마다 달라지는 것 같다. 스프링에서는 get으로 body를 받는 것은 작동되지 않는다고 한다. Node.js express에서는 GET에서 req.body로 데이터를 받는 것이 가능하다.

    jwt로 암호화, 해독할 때 구조분해 할당을 쓰는 이유

    { "userId": 1, "iat": 1516239022 }jwt를 쓸 때 내부적으로 iat 값이 추가되기 때문

    정규식

    정규식을 만드는 방법 두 가지 var re = /ab+c/; var re = new RegExp("ab+c"); 예시 password: Joi.string() .required() .pattern(/^(?=.*[a-zA-Z0-9])((?=.*\d)|(?=.*\W)).{6,20}$/) (?=.*[문자]) 정규식 패턴은 해당 문자가 필수로 포함되어야하는 경우에 사용하는 정규식이다. (?=.*\d) => 적어도 한개의 숫자가 있어야 한다. d는 digit을 의미한다. (?=.*\W) => 적어도 하나 이상의 단어나 숫자가 아닌 문자가 있어야 한다. (\W is equivalent to [^a-zA-Z0-9_])