본문 바로가기
Node.js - introduction 노드란? Node.js는 크롬 자바스크립트 엔진으로 빌드된 "자바스크립트 런타임"이다. * 런타임 : 특정언어로 만든 프로그램들을 실행할 수 있는 "환경" Node.js는 이벤트 기반, non-blocking I/O, single-thread 모델을 사용 Node.js의 패키지 생태계인 npm (Node package manager)이 존재한다. Event-driven 이벤트가 발생하면 이벤트리스너에 등록한 콜백함수가 호출. 이벤트가 다 처리되면 다음 이벤트를 대기 event-loop : 이벤트 발생 시 호출되는 콜백함수들을 관리, 콜백함수들의 실행 순서 결정. 노드가 종룔될 때까지 이벤트 처리를 위한 작업을 반복하므로 이벤트루프라고 불림 task-queue : 이벤트 발생 후 호출되어야 할 콜백 함수들.. 2020. 10. 24.
JS - scope, hoisting, closure 자바스크립트 엔진 : compilation의 시작부터 끝까지 전 과정과 자바스크립트의 실행을 책임진다 자브스크립트 컴파일러 : 파싱과 코드 생성의 모든 일을 한다 자바스크립트 compilation 자바스크립트는 인터프리터 언어로 분류되나 컴파일러 언어처럼 자바스크립트 엔진이 소스코드를 다음과 같은 3단계의 compilation 과정을 거친 tokenizing (= lexing) : 문자열을 토큰(의미있는 조각)으로 만드는 과정 parsing : 토큰 배열을 문법구조를 반영한 중첩 원소를 갖는 트리 (AST, abstract syntax tree)로 변환 code-generatoin : AST를 실행 코드로 변환 스코프 변수에 값을 대입하거나 변수의 값을 얻어오기 위해 변수를 검색해야 하는데 어디서 어떻게.. 2020. 10. 24.
인증(Authentication) & 인가(Authorization) 인증(Authentication) Authentication은 유저의 identification을 확인하는 절차다. 쉽게 설명하면, 유저의 아이디와 비번을 확인하는 절차. 인증을 하기 위해선 먼저 유저의 아이디와 비번을 생성할 수 있는 기능도 필요하다. 로그인 절차 유저 아이디와 비번 생성 유저 비번 암호화 해서 DB에 저장. 유저 로그인 -> 아이디와 비밀번호 입력 유저가 입력한 비밀번호 암호화 한후 암호화되서 DB에 저정된 유저 비밀번호와 비교. 일치하면 로그인 성공 로그인 성공하면 access token을 클라이언트에게 전송. 유저는 로그인 성공후 다음부터는 access token을 첨부해서 request를 서버에 전송함으로서 매번 로그인 해도 되지 않도록 한다. Access token 저장 acc.. 2020. 10. 24.
Coroutine vs Thread 1. Subroutine C언어 등에서 일반적으로 사용하는 함수는 시작할 때 진입하는 지점이 하나 존재하고 함수가 모두 실행되거나, return 구문에 의해 종료되는 지점을 설정할 수있다. 이러한 함수를 Subroutine 이라고 한다. 2. Coroutine 개요 코루틴은 subroutine을 더 일반화한 개념으로 진입하는 시점까지 여러 개를 가질 수 있는 함수를 의미한다 C#, JavaScript, Python 등이 제공하는 Generator가 사실 코루틴의 한 형태이다 caller가 함수를 call하고, 함수가 caller에게 값을 return하면서 종료하는 것에 더해 return하는 대신 suspend(혹은 yield)하면 caller가 나중에 esume하여 중단된 지점부터 실행을 이어갈 수 있다.. 2020. 10. 24.
Concurrency vs Parallelism Concurrency Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. It doesn't necessarily mean they'll ever both be running at the same instant. For example, multitasking on a single-core machine. 동시성은 두 개 이상의 작업이 겹쳐있는 시간에 실행, 실행 및 완료 될 수 있다. 하지만 반드시 둘 다 같은 순간에 실행 된다는 의미는 아니다. 예시로 단일 코어 컴퓨터에서의 멀티태스킹이 있다. 동시성은 서로의 작업들이 인터럽트되며 동작이 이루어 진다. Parallelism Parall.. 2020. 10. 24.
Django polls 앱 1. 프로젝트 생성 $ django-admin startproject mysite 실행하면 다음과 같은 구조의 디렉토리(프로젝트) 생성 mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 mysite/ 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장 mysite/__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일 mysite/settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장 mysite/urls.py: 현재 Django proje.. 2020. 10. 24.