String immutable(불변) 하다. String 객체는 한번 생성이 되면 할당된 인스턴스 공간의 메모리가 변하지 않는다. 문자열을 저장하고 + 연산자나 concat 메서드를 통해 새로운 문자열을 붙이면, 기존의 String 객체가 가리키고 있던 문자열이 복사되고 새로운 문자열로 객체가 생성된다. 그리고 새로운 문자열이 만들어진 객체를 참조하도록 한다. (한번 생성된 문자열 객체의 내부를 변경할 수 없다.) 기존 String 객체는 특정 시점에 Garbage Collection에 의해 회수된다. 하지만, immutabe 객체는 thread-safe 하기 때문에 여러 개의 스레드가 동시에 접근하여 읽어도 값이 변하질 않아 문제가 발생하지 않는다. (동기화 문제를 고려하지 않아도 된다. 결국은 문자열..
하나의 프로젝트에서 다른 서버로 proxy 전송을 하는데 첨부파일의 경우 넘어가지 않는 현상이 발생하였다. 이유는 multer를 이용하여 첨부파일을 처리하는데 미들웨어에 적용된 경우 파싱을 이미 하고 request를 보내면 받는 곳에서도 multer가 적용되어 실제로 업로드가 이루어지니 두번 파싱을 하기 때문에 proxy로 보낼 때 같이 보내지 못하는 것이다. 그래서 특정 url의 경우 첫번째 받는곳에서 multer를 제외시켜줘야 했고 proxy middleware를 만들어 정상적으로 proxy를 보낼 때 첨부파일을 보내는 작업이 필요했다. multer middleware 제외 처리 // multer 미들웨어 제외 예외처리 const EXCLUDE_URL = ['/v2/test/create'..
자주 업데이트 되는 노드 버전을 관리하기 위하여 NVM을 사용하자. 설치 전 확인사항 The installer can use git, curl, or wget to download nvm, whatever is available 1.인스톨러는git과curl혹은wget를 사용함. First you'll need to make sure your system has a c++ compiler. For OS X, Xcode will work, for Ubuntu, the build-essential and libssl-dev packages work. 2.시스템에 C++ 컴파일러가 설치 되어 있어야 함. Mac OS의 경우 XCode가 설치 되어 있어야 하며, 우분투 환경에서는build-essential..
Docker 이미지 리스트 docker images Docker 컨테이너 생성 docker run --name mongo -d -v /Users/lazyker/Desktop/docker/mongodb/data:/data/db -p 27017:27017 mongo 컨테이너 리스트 docker ps 사용중인 컨테이너 리스트 docker ps -a 이미지 생성 docker build --tag spyder:0.1 . 만든 이미지 실행 docker run --name spyder -d -v /Users/lazyker/Desktop/docker/spyder/data:/data -p 9090:8001 spyder:0.1 컨테이너 접속 docker exec -it [컨테이너아이디] /bin/bash alpine 버전..
Git Alias 설정 git을 설치한 상태에서 .gitconfig 파일을 열어서 alias 영역을 수정하면 된다. [alias] co = checkout br = branch ci = commit st = status unstage = reset HEAD -- last = log -2 HEAD -p hide = update-index --assume-unchanged unhide = update-index --no-assume-unchanged lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)%Creset' --abbrev-commit feature..
