전체 글 29

cors를 설정해야 하는 이유 (sop의 존재이유)

cors(cross-origin-resource-sharing)를 설정하라는 오류는 sop(same-origin-policy)에 의해 다른 오리진으로 보내는 요청을 '브라우저'가 막아서 생기는 오류이다 개발을 하다가 cors오류를 맞닥드린 입장에서 브라우저가 요청을 막는다는 사실을 알았을 때, 브라우저가 뭔데 감히 내 요청을 막아서 귀찮게 하는 것인지에 대한 이유는 아래와 같다 1. 대부분의 상황에서 브라우저는 사용자 본인이 작성한 것이 아닌 html,css,js 파싱한다는 것 2. 브라우저에는 인증정보(쿠키, 토큰)가 저장되어 있다는 것 특히 1번은 개발을 하고있는 입장에서 간과할 수 있는 점 같다 즉, 헤커의 사이트에 접속해서 해커가 짠 코드로 인해 해커가 사용자의 브라우저에 저장된 토큰을 가지고 사..

Node.js 2023.03.22

깃허브 옵션 구글링 할 때 주의점

깃 branch 명령어의 -m 옵션 뜻이 궁금해서 'git branch -m 뜻' 이런 식으로 검색을 해봤는데 이상할만큼 결과가 나오지 않았다... 알고보니 아래와 같이 구글링에 도움을 주는 연산자가 있었는데 or 기본 검색 " " 구 형식으로 검색 * 와일드 카드 + 단어를 반드시 포함 - 단어를 반드시 제외 .. 숫자 범위 이 중에 제외(-) 연산자 때문에 m 옵션에 대한 결과가 찾기지 않은 것이었다;; 프로그래밍과 비슷하게 ' \ ' 기호를 사용하여 이스케이프 할 수 있을 것이라는 추측을 해봤고 'git branch \-m 뜻' 과 같이 검색을 해주니 드디어 원하던 결과가 나왔다..ㅠ

Git 2023.02.25

nodejs에서 자주 쓰는 미들웨어 모듈

morgan 서버로 들어온 요청과 응답을 기록해주는 미들웨어 로그의 자세한 정도 선택 가능(dev, tiny, common, combined) 주로 개발환경에서는 dev, 배포환경에서는 combined를 사용 static 정적인 파일들을 제공하는 미들웨어 인수로 정적파일의 경로를 대입 fs.readFile로 직접 읽을 필요 없음 요청하는 파일이 없으면 next를 호출해 다음 미들웨어로 넘어감 파일을 발견했다면 응답하고 다음 미들웨어는 실행되지 않음 요청 주소와 실제 주소를 다르게 만들어 보안 향상 body-parser ( express.json, express.urlencoded ) body-parser의 주요 기능이 현재는 express의 json, urlencoded로 대체됨 요청의 body를 해석해..

Node.js 2023.02.23

미들웨어 확장법

// static 미들웨어를 확장 // 로그인이 되어있을 때만 정적 자원을 제공하도록 app.use('/', (req, res, next) => { if ( req.session.id ) { express.static(__dirname, 'public')(req, res, next) } else { next(); } } 1. 내가 만든 미들웨어 안에 2. 남이 만든 미들웨어를 넣고 3. (req, res, next) 붙이기 +) 미들웨어간 데이터 전달할 때 전역변수 또는 app.set 대신 req.data를 사용, req res는 모든 미들웨어들이 공유한다

Node.js 2023.02.23

태스크 큐에서의 우선순위

우리가 실행한 명령어들이 내부에서 실행되는 과정을 간략하게 나타내면 아래와 같다 호출 스택에서 명령어들이 실행되고 그 중 비동기 코드들은 이벤트루프로 이동한다 이벤트루프에서 완료된 비동기 코드들 중 먼저 완료된 코드 부터 태스크 큐로 이동해서 호출 스택이 빌 때 까지 기다린다 호출 스택이 비었으면 태스크 큐에 들어온 순서대로 선입선출(FIFO)하여 호출 스택으로 들어간다 하지만 추가적으로 여기 태스크 큐에서 Promise 객체의 then, catch, nextTick에 대해 우선순위를 준다 즉, 테스크 큐에 setTimeout과 then이 있을 때 setTimeout이 먼저 완료되어 태스크 큐에 먼저 들어왔다 하더라도 then이 새치기해서 먼저 호출스택으로 이동한다 ex) 아래와 같은 코드를 실행했을 때..

Javascript 2023.02.17

Nodejs에 대한 오해

1. Nodejs는 서버(?)다 노드 공식사이트에는 노드를 아래와 같이 설명하고있다 Nodejs는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다 풀어서 말하면 Nodejs는 브라우저에서만 실행되었던 JavaScript 해석기를 브라우저 바깥에서도 실행시킬 수 있게 하는 실행기(런타임)이다 그 실행기로 서버를 만드는 것 2. Nodejs는 싱글스레드다 노드를 실행시킨 다음 작업관리자로 살펴보면 스레드가 여러개로 뜨는 것을 볼 수 있다 노드의 스레드는 여러개지만 사용자가 컨트롤 할 수 있는 스레드는 하나로 고정되어있기 때문에 싱글스레드라고 표현했던 것 이 처럼 노드는 원래부터 멀티스레드였고, 노드14버전 부터는 멀티스레드를 직접 사용자가 다룰 수 있게 되었다고 한다 (..

Node.js 2023.02.17

[정보처리기사] 다음 C언어 프로그램이 실행되었을 때, 결과는?

(문제와는 관련 없음) ❓ int argc 메인 함수에 전달되는 정보의 갯수를 의미한다 ❓ char *argv[] 메인함수에 전달되는 실질적 정보이고, 문자열의 배열을 의미한다, 첫번째 문자열은 항상 프로그램의 실행경로로 고정되어 있다 ❓ int arr[2][3]={1,2,3,4,5,6} 크기가 3인 배열들을 갖는 크기가 2인 int로 된 배열을 선언, 해당 2차원 배열의 단말에 1,2,3,4,5,6을 순서대로 할당 (구조분해할당?) ❓ int (*p)[3]=NULL 3개의 int값을 담는 배열의 주소를 담을 수 있는 포인터를 null로 초기화, arr을 담기 위한 포인터를 정의 ❓ p=arr 인덱스가 없는 배열 이름은 배열의 시작주소(arr[0])을 의미하며 그 주소에 +n을 하게되면 배열의 n번째 인..

정보처리기사 2023.02.01

[오류 / Solidity] 크기가 정해진 배열에 push

uint256[3] public ageArray; function agePush(uint256 age) public{ ageArray.push(age); } 위와 같은 상황에서 agePush를 실행하면 오류가 날 것이다! 물론 배열 크기를 지정하지 않았다면 오류가 안 난다 TypeError: Member "push" not found or not visible after argument-dependent lookup in uint256[10] storage ref. --> infrun/lec1.sol:8:9: | 8 | ageArray.push(_age); | ^^^^^^^^^^^^^ ??? : 않이 크기는 지정했는데 아무것도 안 넣었거든여 빈 배열에 push 하는데 왜 오류가 남? 응 아니야, 크기를 ..

Solidity 2022.11.23