210222_TIL

Linux/macOS - 개발환경 구축하기

패키지 매니저: 새로운 프로그램을 추가할 수 있는 도구

homebrew 설치

urclass의 설명대로 homebrew를 설치했지만
Warning: /opt/homebrew/bin is not in your PATH. ==>
라는 문구가 뜨고 제대로 설치되지 않았다.
처음에 어떻게 할지 몰라서 이리저리 구글링하다가
결국 slack 동기분의 도움으로 해결할 수 있었다.

/bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/nrubin29/bea5aa83e8dfa91370fe83b62dad6dfa/raw/48f48f7fef21abb308e129a80b3214c2538fc611/homebrew_m1.sh)"

이걸 그대로 터미널에 입력하면 제대로 homebrew가 설치되었다.

wget 설치
wget: URL을 통해 파일을 다운로드 받는 프로그램

node.js 설치

node.js는 JS런타임이다. 런타임이란 어떤 프로그래밍 언어가 동작할 수 있는 환경을 말한다.
즉, node.js는 JS가 돌아가는 환경을 뜻하고 JS를 다른 환경에서 사용 할 수 있도록 해준다.
그래서 JS로 웹 페이지를 작동시키는 것 뿐만 아니라 서버와 같은 다른 프로그램도 만들 수 있다.
그리고 구글링으로 조금 더 찾아봤는데 node.js의 특징으로는

  1. 코드가 짧고 단순해 짧은 시간 개발에 용이하다.
  2. 요청을 다 받고 완료 순서대로 처리한다. (일반적인 서버는 요청받고 처리하고 요청받고 처리하고를 반복한다)
  3. 이미지처리, 통계, 수학적 처리를 필요로하는 서버 구축엔 적합하지 않다.

node.js를 설치하기 위해서 우선 nvm을 설치해야한다.
nvm: node.js version manager

$ sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

터미널에 입력 후

$ vi ~/.bash_profile

vim을 통해
(~/.bash_profile은 시스템 전역에 적용되는 환경설정이 아닌, 유저 개개인의 PAHT, 시작 프로그램 등을 추가적으로 설정할 수 있다.)

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

위의 코드를 작성해주고
(vim을 어떻게 다루는지 몰라서 구글링 해보았다)
i를 누르면 코드를 작성 할 수 있고
esc를 누른 뒤 :wq를 하면 변경사항을 저장 후 vim에서 빠져 나올 수 있다

source ~/.bash_profile

위의 코드를 작성하고
(리눅스 환경 설정 파일을 수정한다고 바로 그 내용이 적용되지 않기 때문에 source명령어로 새로운 환경 설정 내용을 즉시 적용 할 수 있다.)

$ nvm install ...(version)

원하는 버전의 nvm을 설치해주고
(M1맥북에서는 15버전 이상의 node.js를 설치해야한다.)

$ node -v

nvm을 설치하는 이유는 nvm의 뜻 그대로 node.js의 버전을 관리하기 위해 사용된다.
작성한 코드가 현재 버전에서 돌아가지 않는 경우 node.js의 버전을 바꿔줄 수 있다.

$ nvm use ...(version what you want)


node.js 버전이 바뀐 걸 확인할 수 있다.


Interface란?

생활코딩에서 interface에 대해 아주 와닿는 설명이 있어서 적게 되었다.
출처: https://opentutorials.org/course/1189/6205

UI라고 해서 개발을 공부하기 전에도 많이 접하고 들어봤었다. '이 프로그램은 UI가 좋지 않다, 이 게임은 UI가 편리하다, 난잡하다' 등등. 그래서 딱 그정도로 사용자가 프로그램을 사용 할 때 느끼는 '편리한 정도'로 생각하고 있었다. 그래서 API라는 걸 다룰 때 Interface를 안다고 생각하고 크게 신경쓰지 않았었다. 그리고 복습을 하려고 생활코딩에 들어가 API에 대해 설명을 들으면서 보다 더 명확하게 Interface에 대해 알게 되었다.

이렇게 역삼각형의 계층이 있다고 하면

사용자가 99%를 차지하고 나머지가 1%를 차지하고 있다고 한다.
1% 중에서도 개발자가 가장 많은 비율을 차지하고 있는데
개발자도 여러 종류가 있지만 결국 사용자가 프로그램을 어떻게 사용하면 좋을까 고민하는 사람들이라고 할 수 있고 (대중기술)
그 밑으론 개발자가 개발할 수 있도록 기반(infrastructure)을 만드는 것 이라고 보면 된다.(정리가 어렵다..ㅠ)

ex) 사용자 -> 웹 개발자 -> 브라우저 개발자(chrome) -> 운영체제 개발자(macOs) -> 프로그래밍 언어 개발자(Java Script) -> 어셈블리어(기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어) -> 기계어(컴퓨터(CPU)가 별다른 해석(컴파일) 없이 읽을 수 있는 프로그래밍 언어. JS가 브라우저를 제어하듯이 기계어는 CPU를 직접 제어한다.)

상대적으로 밑에 있는 계층의 기반을 바탕으로 위쪽 계층이 활용한다.
'위에 있는 계층이 사용하고 조작할 수 있도록 도와주는 역할'정도로 이해했다.
그래서 주황색선을 Interface라고 할 수 있다. (층과 층사이)

좋은 웹페이지 즐겨찾기