암호화가 필요한 이유? 만약 암호화를 하지 않고 사용자의 입력을 그대로(이를 평문이라고 한다) 저장하게 되면, 데이터베이스가 유출되었을 때 사용자의 비밀번호가 제3자에게 노출되게 되며, 이는 심각한 피해를 가져올 수 있다. 따라서 이러한 피해를 방지하기 위하여, 사용자의 비밀번호는 암호화를 거쳐 저장되어야 한다. 이번 포스팅에서는 그 중에서도 강력한 해시 알고리즘으로 유명한 bcrypt 를 이용해본다. 암호화된 패스워드의 생성 우선 bcrypt 모듈을 설치한다. npm i bcrypt 프로젝트에 적용하기 위해, 암호화된 비밀번호를 생성하는 간단한 함수를 구현해보았다. import { genSalt, hash } from 'bcrypt'; const saltRound = 10; const createHas..
파이썬에서 정수 0, boolean인 False, null로 사용되는 None의 성질이 궁금해져서 테스트해보았다. zero = 0 false = False none = None print(zero == false) # True print(false == none) # False print(zero == none) # False 결론적으로 0과 False는 같은 값으로 취급되나 None과는 모두 다른 값으로 취급된다. zero = 0 false = False none = None # print nothing if zero: print('zero') if false: print('false') if none: print('none') 또한 조건문에서는 위의 세 가지..
정의 ESLint ECMA로 이루어진 코드의 오류 체크, 가독성 향상(들여쓰기, 줄간격 체크) 등을 위해 사용하는 도구. Prettier ESLint와 달리 오류 체크는 하지 않으나 code formatting을 일관된 스타일로 고정하는 도구. ESLint &Prettier 보통 두 가지를 함께 사용한다. 이를 통해 얻을 수 있는 이점은, 개발자의 실수로 발생하는 오류를 사전에 예방하고, 협업 시 코드 스타일을 일관되게 함으로써 가독성을 향상시킬 수 있다는 것이다. 팀 프로젝트에서는 코드 리뷰를 자주 하게 되므로 서로의 코드를 익숙하게 검토하기 위해서라도 lint와 prettier 도입은 필수적이다. 자주 사용하는 설정 NPM // 이 2개의 경우 global 설치도 해 두면 좋다. (최초 1회만) np..
주석 /* 주석입니다 */ 중첩 .parent { color: red; .child { background-color: blue; } } 상위 선택자 참조 "&" .parent { /* 여기서 &는 .parent 를 가리킴 */ } 상위 선택자 무시 "@at-root" .parent { $w: 100px; @at-root .parent2 { ... } } 상위 선택자에 선언된 값은 쓰고싶은데 .parent의 자식은 아닐 때 사용한다. 변수 $변수명: 값; /*ex*/ $red: #ff0000; $header-color: $red; 여타 프로그래밍 언어와 동일하게 중괄호 내에서 선언 시 그 밖에서는 사용 불가. 글로벌 변수 !global $변수명: 값 !global; 있으면 그대로 없으면 새 걸로 !def..
서버가 실행될 환경이 개발 환경(development)인지 배포 환경(production)인지에 따라 별도의 코드가 실행되어야 할 일이 많다. 이 환경을 관리하는 방법에 대하여 알아보았다. 설정법 우선 node가 설치되어있어야 한다. (linux/mac 환경을 기준으로 하였다.) 개발 환경으로 설정하려면 다음과 같이 입력해주면 된다. export NODE_ENV=development 배포 환경으로 설정하려면 다음과 같이 입력해주면 된다. export NODE_ENV=production 사용법 node express 환경에서 설정된 NODE_ENV를 확인하는 방법은 다음과 같다. app.get("env") 따라서 별도의 config.json 파일을 생성해 환경에 따라 다른 객체를 반환하도록 한 뒤, { "..
웹팩(Webpack)이란 웹팩은 모듈 번들러(module bundler)이다. 웹팩을 통한 빌드가 수행되면, 프로그램의 시작 지점인 entry point부터 시작하여 의존하는 모듈들을 읽어내려가 하나의 파일로 묶는(bundle)다. 모듈화의 대상은 Web Application을 구성하는 요소로, html, css, js, image file(JPG, PNG) 등이 이에 해당한다. 웹팩을 사용하는 이유? 웹팩을 사용하는 대표적인 이유는 다음의 세 가지이다. 1. 자바스크립트의 전역 공간 공유로 인해 발생하는 문제를 --> 모듈화, 모듈 번들링을 통해 해결 2. 요소(html, css, js, image)의 압축과 전처리와 같은, 반복 작업의 자동화 3. 성능 향상 (웹팩은 자원이 필요한 순간에만 요청한다...