Programming(72)
-
Node.js 패키지 관리
01. npm이란?npm이란npm은 node package manager의 줄임말로 Node.js 환경에서 JavaScript 라이브러리와 패키지를 설치, 관리, 공유하는 도구이다.npm은 웹사이트를 통해 패키지 검색과 관리 정보를 제공하고 CLI(Command Line Interface) 도구로 터미널에서 명령어를 입력해 패키지를 설치하거나 관리한다.레지스트리는 전 세계 개발자들이 공유하는 패키지 저장소로, 여기에서 패키지를 다운로드하거나 업로드할 수 있다 02. npm package 설치하기npm은 프로젝트를 생성하는 방법은 Visual Studio Code로 프로젝트를 하나 생성하고 터미널을 연 후에 npm init -y 로 입력해주면 이런 로그가 나오면서 package.json파일이 생성된다.이 ..
2024.12.14 -
Node.js의 모듈 시스템
01. Module이란?모듈이란필요한 함수들의 집합이라고 보면 된다.모듈은 애플리케이션을 구성하는 기본 단위로 기능을 분리하고 재사용할 수 있게 해준다. 쉽게 말해, 모듈은 물건을 만들 때 사용하는 부품과 같다. 여러 개의 모듈을 조합하여 하나의 애플리케이션을 구성할 수 있다. 이 모듈은 Nodejs에서 제공해주는 모듈도 있고, 사용자가 모듈을 만들어서 사용할 수 도 있다. 또한 다른 사용자가 만들어둔 모듈 또한 쉽게 가져다가 사용할 수 도 있다.이 모듈을 가져와서 사용할때에는 require라는 키워드를 통해서 가져다가 사용할 수 있다. 모듈의 종류는 크게 나눠서 Core Module - Node.js에 기본적으로 포함되어 있는 모듈로 예를 들면, http, fs, path 등이 있다.Local Modu..
2024.12.10 -
Node.js의 내부
01. Node.js가 작업을 처리하는 방법런타임 환경에서 자바스크립트로 처리할 수 있는 작업은 V8 엔진이 처리를 할 수있으나 파일을 읽는 것과 같은 작업은 처리하지 못한다. 그래서 이런 부분은 libuv를 통해서 작업을 한다.그리고 이 둘을 연결(binding)해주는 것이 Node.js이다. Node.js의 API는 많은 기능을 갖고 있는데 파일 시스템이나 crypto 암호화 처리등의 기능은 V8엔진이 처리할 수 없기 때문에 V8이 이런 기능이 필요하다 싶으면 Node.js의 API를 호출한다.그러면 그걸 Node.js가 확인하고 자바스크립트로 처리할 수 있는 부분을 제외하고는 libuv 한테 전달해서(Node.js의 바인딩을 사용해서) 처리하게 해준다. 이 libuv는 비동기적으로 input/out..
2024.12.05 -
Node.js의 내부 동작을 알아보자 - 자바 스크립트 엔진
Chrome V*이라는 JavaScript engine에 지어진 JavaScripy runtume이 Node.js라고 하는데 자바스크립트 엔진을 먼저보면 자바스크립트를 실행하면 컴퓨터에서는 자바스크립트를 그냥 실행할 수 있는지 우리가 생각해봐야 한다.근데 자바스크립트는 원래 브라우저에서 실행할 수 있고 브라우저가 없다면 그냥 컴퓨터에서는 자바스크립트를 실행할 수 없다. 브라우저에는 자바스크립트 엔진이 있기 때문에 뭔가 따로 설치해주자 않아도 자바스크립트의 실행이 가능한 것이다. 자바스크립트 엔진은 자바스크립트 토드를 실행하는 소프트웨어 구성 요소로 처음엔 이 엔진은 interpreter였으나 모든 관련 최신 엔진은 성능 향상을 위해서 Just-in-Time 컴파일을 사용한다. JIT confile이란....
2024.12.01 -
Windows에서 pyenv 사용하기
pyenv는 한 컴퓨터에서 여러개의 파이썬버전을 사용하고 관리하기 용이한 프로젝트이다.보통은 windows에서는 사용하지 못하기에 pyenv가 아니라 win-pyenv라는 프로젝트를 사용하게 된다.그래서 pyenv가 아닌 사실은 win-pyenv를 설치하는 과정을 알아가는 내용이다. 필요성내가 이걸 사용하게된 이유는 하나의 프로젝트 내부에 여러명이 작업하다보니 A프로그램(exe파일)은 3.8버전을 쓰고 B프로그램(exe파일)은 3.9버전을 쓰는등 여러 버전으로 응용프로그램을 작업하고 그 응용프로그램이 하나로 묶여 하나의 프로젝트를 구성하고 있었는데 이게 유지보수를 하다보니까 한 컴퓨터 내에서 여러 프로그램을 디버깅하고 수정하려고 받아서 라이브러릴르 받으면 오류가 난다. 이건 도저히 글로벌한 로컬 세팅으..
2024.11.28 -
열혈 C++ - Chapter 04. 클래스의 완성
Chapter 04-1. 정보은닉프로그래밍은 객체간의 관계를 구성해주는 것이 중요하다.그런데 객체를 정의함에 있어서 모두 정보은닉, 캡슐화가 되어있어야한다. 여기서 정보은닉은 멤버변수(정보)를 감추겠다(은닉하겠다.)해당 클래스가 아닌 다른 영역, 다른 클래스에서 접근이 불가능하도록 하겠다는 것이 바로 정보 은닉인것이다. 그러면 정보 은닉은 모두 쉽게 할 수있는 개념이다.물론 이렇게 정보에 접근만 못하게 한다고 정보를 은닉했다고 할 수 있는 것은 아니다.접근을 막았으니까 다른 경로로 내가 원하는 방향으로 접근할 수 있도록 길을 만들어 줘야만한다.아예 접근을 못하게 하면 클래스 자체를 선언하는 의미가 없기 때문에 어떤 방법으로든 접근은 할 수 있어야 한다. 그러면 캡슐화는 무엇일까.캡슐화를 했다 라는 것은 ..
2024.11.24