반응형 프로그래밍 언어21 [JavaScript] 이벤트 루프에 대해서... 이벤트 루프는 자바스크립트의 비동기 처리 메커니즘으로, 싱글 스레드 환경에서도 비동기 작업(예: 타이머, 네트워크 요청 등)을 처리할 수 있게 도와주는 비동기 실행 모델이다. 자바스크립트는 기본적으로 한 번에 하나의 작업만 처리할 수 있는 싱글 스레드 언어지만, 이벤트 루프 덕분에 비동기 처리가 가능해진다. 동작 원리1. 콜 스택 (Call Stack)실행 중인 함수들이 쌓이는 스택이다.가장 위에 있는 함수가 실행되며, 실행이 끝나면 스택에서 제거 된다.2. 웹 API / 백그라운드 작업브라우저나 Node.js 런타임이 제공하는 기능 (예: setTimeout, fetch, 이벤트 리스너)이 실행된다.비동기 작업은 콜 스택에서 바로 실행되지 않고, 백그라운드로 넘겨진다.3. 태스크 큐(Task Queue.. 2025. 3. 26. [js] forEach와 비동기 작업(Transaction API error: Transaction already closed: Could not perform operation 발생!) 외주 작업을 하던 도중에 Transaction API error: Transaction already closed: Could not perform operation 라는 에러를 만났다. 해당 코드는 다음과 같은데 await this.prisma.$transaction(async (tx) => { const maxCombineNum = await tx.order.aggregate({ ... }); //원하는 데이터에서 +1 let newCombineNum = maxCombineNum._max.combineNum + 1; //위에 newCombineNum.. 2024. 5. 31. [JS] var, let, const의 차이를 알아보자 var, let, const는 자바스크립트에서 변수를 선언할 때 사용하는 키워드이다. 그렇다면 이 세 키워드의 차이는 무엇일까. 바로 변수의 스코프와 값 변경 가능성이다.(스코프란 변수와 함수 등의 식별자가 유효한 범위를 제한하는 개념이라고 할 수 있다.) var 키워드는 ES5 이전부터 사용되던 변수 선언 방식이다. 함수 스코프를 가지며, 변수의 값 변경이 가능하다. var 키워드는 변수를 재선언 할 수 있다. function varTest() { var a = 1; if(true){ var a = 2; console.log(a); //2 } console.log(a); //2 } varTest(); console.log(a); // ReferenceError: a is not defined let은 .. 2024. 3. 1. [TypeScript] Bcrypt를 이용한 비밀번호 해쉬화(암호화) 회원가입을 할 때 데이터베이스에 비밀번호 같이 보안에 민감한 정보를 그냥 저장하면 안되고 암호화해서 저장하는게 안전하다. node.js에서는 주로 Bcrypt를 사용해서 비밀번호 해쉬화를 해 저장한다. 해쉬화는 단방향으로 해쉬 알고리즘을 이용하여 비밀번호를 암호화시키며 당연히 단방향이라 복구는 불가능하다. 다시 말하면 한쪽 방향으로만 암호화를 하는 단방향 암호화이기 때문에 암호화는 가능하지만 복호화는 불가능하다. 기존 해시 함수에서는 무차별 대입 공격(고성능 GPU를 이용해 무차별적으로 해시함수를 대입해 같은 digest를 찾는 공격)에 취약했는데 bcrypt는 salting 방식을 통합하여 취약점을 보완했다. 임의의 salt 값을 덧붙여 hash 함수를 진행하기 때문에 같은 비밀번호여도 다른 diges.. 2023. 12. 15. 이전 1 2 3 4 ··· 6 다음 반응형