일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- NoSQL
- nginx
- 항해99
- db
- 개발일지
- node winston
- JWT
- 트랜잭션
- Sequelize
- 비동기
- 스파르타코딩클럽
- 웹 스크래핑(크롤링)
- Get
- 5주차
- 부트스트랩
- Transaction
- post
- 1주차
- HTTPS
- MongoDB
- OpenAPI
- cors
- 노드 윈스턴
- 4주차
- 숙제
- SQL
- 2주차
- Node.js
- 3주차
- 위키백과
- Today
- Total
목록
728x90
2022/12/19 (10)
얼음꽃의 일지
트랜스파일러(Transpiling) - 특정 언어로 작성된 코드를 비슷한 다른 언어로 변환시키는 행위 - 모든 브라우저가 ES6+ 기능을 제공하지 않기 때문에 이전 버전인 ES5로 변환시켜줌 - JSX, TypeScript -> JS로 변환 가능 번들러(Bundler) - 모듈단위로 파일 엮어서 개발하는 방식을 하게되면 의존성에 문제가 생김 - 이 문제를 해결해주는 아이가 번들러 - 각각의 모듈의 의존성에 해결하여 하나의 자바스립트 파일로 만듦과 동시에 ES6+ 스펙을 ES5로 변환까지 해주는 도구
과연 Node.js 이 아이는 어떤 스레드일까? 1. 컴퓨터를 켜서 프로그램을 실행하게 되면 프로세스가 작동 2. 이 프로세스가 작동하게 되면 그 안에 있는 최소 한개의 스레드가 움직임 3. node도 기본적으로 보자면 여러개의 스레드를 가지고 있음 4. 그러나 node안에서 실행하는 언어인 javascript를 실행하는 스레드가 하나이기에 싱글 스레드라고 봄 5. 물론 기본 작업 외에 특정 작업을 할때, 추가 스레드가 필요하면 새로 스레드를 만들어서 쓸 수 있기에 멀티 스레드도 가능성이 있다고 봄 6. 노드는 이벤트 기반 플랫폼이고 이벤트가 발생하면 미리 지정해둔 작업을 수행하는 방식 7. 그럼 지정해둔 작업을 수행하는 것이기 때문에 콜백 처리하는것과 같음 8. 현재 Node.js는 v8이라는 Java..
토큰 - 서버에 접속을 하면서 서버에서 해당 클라이언트에게 인증되었다는 의미로 주는 토큰 ( ex ) 기차표 ) - 이 토큰 유일한 값 - Access Token, Refresh Token 등이 존재 - 이 토큰 자체를 저장하는 방식은 쿠키, 세션 다 가능 - 토큰 자체는 저장소를 따로 쓰지 않기 때문에 메모리를 안잡아먹음 - 탈취 당하면 상황이 조금(?) 심각해짐 - payload는 암호화가 되는게 아니기 때문에 token만들 시 중요한 내용을 담을 수는 없음 - 쿠키, 세션과 다르게 길이가 길어서 요청이 많아지면 조금(?) 부하가 올 수 있음 JWT - JSON Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 JSON 토큰 - JWT는 이제 서버에서 처리를 하게 되는데 클라이언트에서 로그..
얕은 복사 깊은 복사 객체의 참조값(주소값)을 복사 객체의 실제 값을 복사 참조값을 복사할 때 변수가 객체의 참조를 가르키고 있고, 복사된 변수 또한 같은 것을 가르키고 있기에 하나의 값을 바꿔주게 되면 기존의 값도 영향을 받아 변경 원시 값을 복사 할때, 아예 독립적인 메모리 공간에 할당하기 때문에, 원시 값에는 영향이 없음 // 얕은 복사 const a = { num : 1, string : "dog" } let b = a; console.log(a); // {num : 1, string : "dog"} b.num = 2; b.string = cat; console.log(a); // {num : 2, string : "cat"} cossole.log(b); // {num : 2, string : "..
동시성(Concurrency) 병렬성(Parallellism) 여러 작업이 동시에 실행되고 있는 것처럼 구현 여러 작업이 실제로 동시에 실행되도록 구현 싱글 코어 환경에서 (1 프로세스) : (N 스레드)를 동작하여 구현 멀티 코어 환경에서 (1 프로세스 or 1 스레드) : (N 스레드)를 동작하여 구현 빠른 시간에 하나씩 많은 양을 처리 동시에 여러 것을 처리 논리적 물리적 아이스크림 출구가 하나인 아이스크림 기계에서 초코,바나나,딸기, 바닐라 바꿔가면서 나오도록 구현 아이스크림 출구가 다 따로따로 있는 아이스크림 기계에서 각각의 맛이 나오도록 구현
Call by Value - arguments로 값 넘김 - 값이 넘어올때 복사된 값이 넘어옴 - 복사된 값이 넘어왔기 때문에 원본 데이터에는 영향을 받지 않음 - ex ) 전역변수에 선언해두고 함수 내에서 값을 바꿔도 전역 변수에는 변화가 없음 let a = 10; const mul = function(b) { b = b * 3; } mul(a); console.log(a) // 10 Call by Reference - arguments로 값을 넘김 - 이때 넘어오는 값은 값 자체가 아닌 값에 대한 주소, 혹은 메모리 변수 - 참조 하는 부분을 넘기기 때문에 값을 복사할 이유가 없음 - 대신 위치를 넘겨받았기 때문에 변화가 생기면 전체에도 변화가 생김 let a = {}; let turn = funct..
프로세스(Process) - 프로그램이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 실행되는 상태 - 프로세스 안에 Code, Data, Stack, Heap이 존재하는 독립된 메모리 영역을 가짐 - 프로세스당 최소 1개의 스레드를 가짐 - 프로세스는 독립적이기 때문에 다른 프로세스가 와서 접근 불가 - 만약 다른 프로세스가 접근을 원한다면 프로세스간의 통신을 이용해서 요청을 해야함 ex) 파이프, 소켓, 파일 * Code : 프로그래머가 작성한 프로그램이 코드 영역에 작성 * Data : 코드가 실행되면서 나오는 각종 데이터 * Stack : 호출한 함수가 종료되면 되돌아올 메모리의 주소를 스택에 저장, 변수 사용 범위에 영향을 미치는 구역을 구현 * Heap : 동적으로 할당되는 데이..
Base64 - 8비트 2진 데이터를 문자 코드에 영향을 받지 않는 아스키 코드로 이루어진 일련의 문자열로 바꿔주는 방식 - 그냥 쉽게 생각하면 64진법 , 2^6 이기에 2의 제곱수 이루어진 걸로 ASCII 코드를 이용해서 표기한다는 뜻 - 보통 데이터를 넘길때 8비트 형태로 되어있는데 지금 2진 데이터를 쓰게되면 6비트로 보내야 하기 때문에 6비트씩 묶음 - 이렇게 되면 묶다가 혼란이 오는 경우가 생길 수 있기때문에 8,6의 최소공배수인 24로 해서 끊어버림 - 이후 남는 부분이 있으면 패팅(padding)을 ' = '을 이용하여 자리를 채움 순서 - 문자열(데이터) -> ASCII 코드로 변경 -> 2진법으로 변경 -> 6비트씩 자르기 -> Base64로 인코딩 추가 참고 https://en.wik..