npm vs npx npm (리눅스의 apt-get, ocaml의 opam과 비슷한 역할 인듯?) npm에 등록된 패키지(모듈) 다운로드, 버전 관리, 의존성 관리 등을 할 수 있게 해준다. 참고로 yarn은 페이스북에서 내놓은 패키지 매니저로, npm 대체제이다. 주요 명령어 npm init : package.json 파일 생성됨 npm install [package명] : node_modules 폴더 (설치한 패키지와, 그 패키지가 의존하고 있는 패키지들의 소스) package-lock.json 파일 (node_modules에 들어있는 패키지들 버전과 의존 관계) 이 생성된다. 그리고 package.json 파일의 dependencies 속성에 해당 패키지 추가. (※global 옵션으로 설치시 de..
create-react-app 작업 과정 간단히 보기 (1) 프로젝트 생성 (2) 작업하기 (3) 서버 실행하고 브라우저에서 localhost:3000으로 접속 만든 app 실행 과정 (서버 돌리는 코드 어딨나?) (1) 터미널에 npm run [ start / test / build / eject ] (start , test는 run이라고 적는 것 생략 가능) (2) package.json 파일을 보면 이렇게 되어있다. (scripts 부분은 npm 명령어를 저장해두는 부분) 그럼 각 명령을 argument로 가지고서 react-scripts 패키지로 위임됨. 참고로 npm 홈페이지에서 react-scripts를 찾아보면 create-react-app에서 사용하는 script랑 설정으로 구성된 패키지라..
commit, branch, HEAD git의 내부구조는 C의 포인터와 연결리스트 개념과 아주 비슷한 듯 하다. (1) 각 커밋 개체는 내부 포인터로 해당 작업 시점의 스냅샷 (트리구조로 이루어짐) 과 부모 커밋을 가리킨다. 연결리스트로 연결된 링크를 통해 차례로 이전 커밋에 도달할 수 있고, 도달한 커밋을 통해 해당 작업 시점으로 인덱스와 워킹 디렉토리를 돌려 놓을 수 있게 된다. (2) 브랜치는 포인터! (커밋을 가리키는 포인터) Git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다. 기본적으로 Git은 master 브랜치를 만든다. 처음 커밋하면 이 master 브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 만들면 master 브랜치는 자동으로 가장 마지막 커밋을 가리킨다...
git이 뭔가? Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. - git 공식 사이트 프로젝트에서 (1) 버전 관리, (2) 백업, (3) 협업등의 기능을 할 수 있도록 도와주는 분산 버전 관리 시스템 중 하나이다. 2005년에 리눅스 커널 개발자 리누스 토르발스가 리눅스 소스 코드 관리를 위해 다른 개발자들과 함께 개발했다고 한다. git이 가장 대표적으로 널리 쓰이는 버전 관리 시스템이지만 이런 대체재도 있다. git 기본구조 시작하는 방법 2가지 1. 로컬저장소만 먼저 ..
🐣 정규표현식 이용해서 풀었던 알고리즘 문제 모음 [백준] 2941. 크로아티아 알파벳 링크 : https://www.acmicpc.net/problem/2941 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. const readline = require('readline'); const rl = readline.createInterface(process.stdin, process.stdout); let input = []; let eval = () => { const regex = /(c(=|-))|(d(z=|-))|lj|nj|s=|z=|[a-z]/g; const str = input[0]; let count = [...str.matchAll(regex)].length;..
까먹었을 때 메소드, 프로퍼티들만 빠르게 상기하려고 그냥 캡쳐만 해둔 글입니다. 이글을 참고해 주세요 : https://javascript.info/map-set Map and Set javascript.info Map 🤠 일반 Object와 성능비교 참고 : https://medium.com/@wdjty326/javascript-es6-map-vs-object-performance-%EB%B9%84%EA%B5%90-7f98e30bf6c8 새로운 데이터 넣기 (set작업)은 일반 Object가 더 빠르고 , 값 가져오기 (get 작업)은 Map이 훨씬 빠르다고 함. (Object는 값을 아무렇게나 넣고, Map은 순차적으로 적재한다고 함) javascript로 hashmap 구현하는 최적의 방법은 아직 ..
간단한 node 웹소켓 예제를 따라 해 보다가, WebSocket is distinct from HTTP. Both protocols are located at layer 7 in the OSI model and depend on TCP at layer 4. [위키피디아] 이렇게 웹소켓과 http는 엄연히 다른거라는데 왜 요렇게 http서버로 웹소켓을 만들지?라는 궁금증에 찾아보다가 좋은 글을 발견해서 정리해두려고 한다. 이 글을 기반으로 작성되었습니다. 😎 참고 : https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9 두 가지 접근법 (서버로부터 변경사항을 그때 그때 전달받을 수 있는 방법은 없을..
Tcp vs Udp 둘 다 OSI 7 layer에서 4번째 계층인 transport layer의 프로토콜이다. network layer의 IP가 IP주소, 라우팅 (라우터에 도착할 때마다 hop-by-hop으로 다음으로 거쳐야 할 주소 찾는 방식으로 경로 찾기) 등의 기술을 이용해서 목적지 인터페이스까지 찾아갈 수 있도록 하는 일을 담당한다면 transport layer는 양 끝단에서의 프로토콜이다. (TCP happens in the kernel. Not in user processes!) 즉 커널(OS)이 처리해서 해당 포트에 연결되어 있는 프로그램에 application payload를 (대표적으로 HTTP request, respone 등) 올려 보내 주는 것까지가 이 계층에서 일어나는 일이다. ..