본문 바로가기

나의 개발일지35

[javascript | JS] 화살표 함수와 this binding javascript 호출 스택부터 다시 공부하다가 사고회로의 정지를 안겨준 this 먼저 정리하기 일반적으로 this는 가장 가까이 있는 객체를 바인딩한다 하지만 화살표 함수는 자신만의 this를 가지지 않고, 선언된 위치에서 this를 상속한다 (자신의 바깥쪽 스코프에서 this 값을 참조) 호출 시점에 사용된 객체로 this를 바인딩하는 일반 함수와는 달리, 화살표 함수 내에서 사용되는 this는 처음부터 전역객체를 가리키게 된다 const obj1 = { count: 1, increase() { this.count++; } }; obj1.increase(); console.log(obj1.count); // 2 const obj2 = { count: 1, increase: () => { this.c.. 2023. 7. 12.
이벤트 기반 프로그래밍(event-driven programming) ▼ 이벤트 기반 프로그래밍(event-driven programming)이란? - 이벤트 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임 이벤트 컴퓨터 용어로서의 이벤트: 컴퓨터 회로를 구동시키기 위해 발생하는 일 마우스 클릭, 키보드 입력, 화면 터치, 센서 출력, 프로그램 로딩 과거에는 모든 프로그램의 흐름을 시간의 흐름대로 순서대로 해석하려는 경향이 있었다 콘솔로 프로그래밍을 할경우에는 사용자의 입력을 받는 타이밍이 있고 인터럽트(일종의 예외)가 발생하더라도 굉장히 소수였다. 즉 흐름을 예측할 수 있었다는 것이고 예측 하지 못하는 예외들은 소수였다는 것이다. 따라서 그냥 일반적으로 순차적으로 코딩을 해도 아무 문제가 없었다. 문제는 현재는 이 흐름이 별로 맞지는 않다는 것이다. 과거에 흐름.. 2022. 10. 11.
CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) ▼ CORS란? 브라우저에서 실행 중인 스크립트에서 시작되는 cross-origin HTTP 요청을 제한하는 브라우저 보안 기능으로, 브라우저와 서버의 도메인이 일치하지 않으면 기본적으로 요청이 차단된다. 이 현상은 브라우저에서 서버로 요청을 보낼 때만 발생하고, 서버에서 서버로 요청을 보낼 때는 발생하지 않는다. 위의 사진처럼 api 서버의 url과 동일한 Domain A의 경우 에러가 발생하지 않으나 Domain B의 경우 CORS 에러가 발생한다. ▼ CORS 문제를 해결하기 위해서는? → 응답 헤더에 Access-Control-Allow-Origin 헤더를 넣어야 한다 (클라이언트 도메인의 요청을 허락하겠다는 뜻을 가짐) (아래의 방법은 nodejs와 express로 api 서버를 개발하는 경우의.. 2022. 8. 14.
기술 표준과 오픈소스, 오픈소스 라이센스 ▼ 기술 표준 · 표준 : 어떤 기술적 산물이 어떻게 만들어지고 어떻게 작동하도록 되어 있는지 명확하고 상세하게 기술한 것. 국가적 기술 표준 워드의 .doc / .docx 파일 포맷과 같이 공식적으로 정해지지는 않았지만 널리 사용되며 생겨난 '사실상의' 표준 ▼ 국가적 기술 표준 예시 ▼ 소프트웨어에서의 표준 예시 ▼ 표준의 중요성 상호 운용성 (호환성) - 같은 기종 또는 다른 기종 간에 정보교환 및 처리를 가능하게 해줌. 비용 절감 - 제조업체, 벤더 등 사업자는 단위 생산·거래 비용을 줄일 수 있으며, 대량생산을 통해 규모의 경제(economy of scale)를 실현하는 것이 가능 무역 활성화, 해외시장 진출 - WTO TBT 협정에 따라 국가 간 무역은 국제표준을 따르고 있으며, 이를 통해 .. 2022. 8. 9.
선형 검색 알고리즘과 이진 검색 알고리즘 소프트웨어의 알고리즘을 설명할 때 음식의 레시피에 자주 비유하곤 한다 초콜릿 케이크 레시피 ***프로그램 재료: ~ 연산에 필요한 데이터 오븐에서 30분, 또는 반죽이 자리 잡을 때까지 구우세요. 표면 위에 손바닥을 살짝 올려서 확인하세요. 수행할 작업 완성 결과 하지만 실제 프로그램의 알고리즘은 레시피와 같이 모호하지 않다. '반죽이 자리 잡을 때' '손바닥을 살짝 올려서 확인' 솔직히 사람인 내가 들어도 모호한 표현이다. ▼ 알고리즘 어떤 문제를 풀기 위한 절차나 방법 어떤 문제가 있을 때 주어진 '입력' 정보를 원하는 '출력(답)' 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것. '세심, 정확, 명료'가 중요한 키워드. [ 알고리즘 유의사항 ] 데이터가 어떤 유형이어야 .. 2022. 8. 1.
[nodejs | 노드js] package.json ▼ package.json npm에서 핵심적인 역할을 하며, 패키지에 관한 정보와 의존 중인 버전에 관한 정보를 담고 있다. 패키지 내의 의존성 관리를 위해 프로젝트마다 생성하여 패키지 목록과 버전을 관리한다. 프로젝트명, 버전, 만든 사람, GitHub 레포지토리 등 설치된 모듈의 정보가 담겨 있으며, 해당 프로젝트가 의존하고 있는 모듈이 무엇인지 파악할 수 있다. 누군가의 프로젝트를 클론할 때에도 유용하게 쓰인다. npm install 명령어만 이용하면 package.json 파일의 정보를 읽어 필요한 라이브러리를 모두 설치할 수 있다. { "name": "zerocho-blog", "version": "2.8.1", "description": "blog of ZeroCho", "private": t.. 2022. 7. 31.