github-blog.png


✍️ Today I Learned


1. Linux CLI


  • 명령 줄 인터페이스(CLI, Command line interface) 또는 명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다.

    즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.



2. 패키지와 패키지 매니저


2-1. 패키지


  • 리눅스에서 빈번하게 사용하는 ‘패키지’ 란 커널 및 라이브러리 버전의 배포판 환경에 맞추어 빌드한 실행파일을 압축한 것이다.

  • 우분투 환경에서는 데미안 스타일의 패키지 방식을 이용하기에 해당 방식을 학습하였으며, 해당 환경으로 환경을 구성하였다.



2-2. 패키지 매니저


  • APT(Advanced Packaging Tool) 는 데비안과 우분투를 포함하여 데비안 계열 리눅스 배포판들의 주 패키지 관리 도구이다.


3. Node.js


  • 쉽게 말하면 JavaScript 런타임(Runtime)이다.

    여기서 런타임이란 프로그래밍 언어가 구동되는 환경을 뜻한다. Node.js 는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.

    Node.js의 패키지 생태계인 npm 은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이다.



3-1. Node.js를 왜 사용하나?


  • Node.js 라이브러리 내의 API는 모두 비동기식이다.

    None-Blocking 즉, 멈추지 않는다는 의미이다. API를 실행 하고 완료되기까지 기다리지 않고 바로 다음 API를 실행한다.

    그리고 예전에 실행한 API가 값을 반환하면 이벤트 루프가 이를 확인하고 값을 받아온다. 단일 쓰레드 모델을 사용하며, 이벤트 메커니즘을 통하여 서버가 멈추지 않고 반응할 수 있기에 확장성이 좋다.

  • 위와같은 특징때문에 데이터를 실시간을 다루는 애플리케이션이나 싱글페이지 애플리케이션(SPA), 입출력이 잦은 애플리케이션을 개발할 때 뛰어난 효율성을 발휘할 수 있다.

    다만, 싱글 쓰레드 모델이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 아주 급격하게 나빠지므로 CPU 사용률이 높은 애플리케이션에선 권장되지 않는다.



3-2. nvm ?


  • NVM(Node Version Manager)은 Node.js의 버전을 관리하기 위한 도구이다.

    개발툴들이 다양해 질수록 경우에 따라서 Node.js의 버전을 달리 사용해야 할 필요성이 생기게되었다.

  • 사용목적은 협업 혹은 다양한 프로젝트를 동시에 진행 할 때 다양한 라이브러리 / 프레임워크 / 개발 툴들의 버전 호환 문제를 피할수있는 가장 편리한 방법중 하나이기 때문이다.

    또한 nvm을 통하면 다양한 버전의 Node.js를 설치를 간편하게 할 수 있으며, use 커맨드를 이용하여 필요한 Node.js의 버전으로 스위칭 할수 있게된다.

    디폴트 버전 설정, 설치한 버전들의 리스트 확인, 필요 없는 버전 삭제 등 소위 버전 관리가 매우 간편해 진다.



3-3. npm ?


  • 하나의 프로그램은 다양한 모듈이 합쳐져서 만들어진다.

    이때 개발자는 이 모듈을 모두 개발할 이유가 없다. 이미 만들어진 검증된 코드(모듈)을 잘 가져와서 효율적인 방법으로 쓰게끔 도와주는게 npm(Node Package Manager) 이다.



3-4. package.json


  • 프로젝트 전반에 관한 정보를 정의하고 의존하는 패키지 버전 정보를 명시해주는 파일이다.

  • package.json 파일과 함께 프로젝트 배포시 이점은 상당하다.

    해당 프로젝트가 포함하고 있는 모든 모듈을 모두 전달하지 않아도, package.json 에 필요 모듈이 모두 명시되어 있기 때문에 사용자가 배포자가 모든 모듈을 배포하지 않아도 필요한 모듈은 npm을 통하여 직접 다운받아서 쓰면 되기때문이다.



4. ~ 코딩애플 React 기초 3강


  • 수강 완료


🤔 Understanding

  • 아직 CLI환경에서의 작업은 익숙하지 않다.

    진짜 컴퓨터와 대화하는 느낌이랄까… 익숙한 GUI가 확실히 편리하지만, 개발자는 컴퓨터와 가까운 직업이라 생각하므로 필히 학습하고 넘어가자.

  • Node.js 에서 npm 을 통하여 사용하는 패키지들은 프로젝트의 배포와 설치의 유연함이 강력했다.

    package.json 에 명시된 정보만으로 빠르게 프로젝트에 필요한 모듈들을 파악할 수 있었으며, npm install 명령어 한줄로 필요한 모듈들의 모음인 패키지를 받을수 있었다.

  • React 에서의 변수는 일반적인 변수 선언보다는 state를 사용한다! 익숙해지자.

  • 생활코딩 리액트 강의는 구 버전임을 깨닫고 유튜브 채널 중 코딩애플 님 클론 코딩을 우선 따라하기 방식으로 학습하기로 결정하였다.

  • React 와 DOM 은 커리큘럼 전 필히 선행학습이 수반되어야 할듯하다. 열심히 유튜브 강의 찾아듣자..