🚀 Item 1 생성자 대신 정적 팩터리 메서드를 고려하라 생성자 대신 정적 팩터리 메서드를 고려하라 왜 그래야할까요? 먼저 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있습니다. 정적 팩터리 메서드(static factory method)는 인스턴스 생성을 위해 new 키워드를 사용하는 대신, 클래스 내부에 정적 메서드(static method)를 정의하여 객체를 반환하는 디자인 패턴입니다. 다음은 정적 팩터리 메서드의 예시입니다. 여기서는 Boolean 타입의 값을 반환하는 valueOf 메서드를 예로 들 수 있습니다. public class Boolean { private final boolean value; private Boolean(bool..
전체 글
🎯 CORS 🎾 CORS 란? 여러분들이 개발을 하다가 외부 API (ex 네이버지도api, 통합 뱅킹 api, 날씨 api)등을 사용할 때가 있습니다 . 이때 특정한 설정없이 사용하면 다음과 같은 에러가 발생합니다. 왜 이런 에러가 발생하고 어떻게 해결할까요?? 이걸 알기전에 CORS부터 알아야합니다. CORS(Cross-Origin Resource Sharing) 말 그대로 출처(Origin)가 다른 자원들을 공유한다는 뜻입니다. 쉽게 말하자면, 다른 출처(ex. 네이버지도 api , 날씨 api)의 자원에 접근해서 리소스를 사용한다는 뜻입니다. 그렇다면 출처가 다르다의 판단 기준은 무엇일까요? 이를 알기 위해서는 먼저 출처에 대해서 알아보겠습니다. 우리가 흔히 알고 있는 URL에서 도메인만 뜻하는 ..
🎯 쿠키와 세션 1. 🍪 쿠키란? 쿠키는 웹사이트가 나중에 검색할 수 있도록 웹 브라우저 내에 저장되는 웹사이트의 데이터 조각입니다. 쿠기는 사용자가 특정 웹사이트로 돌아왔음을 서버에 알리는 데 사용됩니다. 사용자가 웹사이트를 다시 방문하면 쿠키는 정보를 제공하고 사이트가 선택한 설정과 타켓 콘텐츠를 표시할 수 있도록 합니다. 흔히 웹 상에서 이야기하는 쿠키란 HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 불리며, 웹 브라우저에서 이용하는 정보 파일을 말합니다. 쿠키라는 단어의 어원은 1994년 넷스케이프 한 개발자가 유닉스 프로그래머들이 프로그램 수신 후 변경하지 않고 반환하는 데이터의 패킷을 '매직 쿠키'라고 부르는 것에서 유래했습니다 2. 🍪 쿠키가 저장하는 것들 이 작은 데이터 파일에 어떤걸 저장..
📖 로드밸런싱 1️⃣ 로드밸런싱은 무엇이고 왜 필요 할까? 데이터가 방대해지면서 아무리 좋은 서버라고 해도 이를 수용하는데 있어 무리가 있습니다. 그에 따라 규모가 큰 서비스를 제공하는 회사의 경우 여러 대의 서버를 두고 동일한 데이터를 저장하여 수많은 트래픽을 효과적으로 분산합니다. 수 많은 트래픽을 여러 대의 서버로 분산해줄 수 있는 기술이 없다면 트래픽은 결국 한대의 서버로 집중 될 것입니다. 그렇게 된다면 서비스 속도가 엄청나게 느려질 것이고 최악의 경우 서버가 마비되어 서비스 자체를 제공할 수 없게 될 것입니다. 이러한 경우에 대비하여 여러 대의 서버로 트래픽을 분산 시켜줄 무엇인가가 필요한데 이 기술이 바로 로드 밸런싱입니다. 이렇게 로드 밸런서를 사용하면 수백만명 의 사용자를 동시에 처리하고..
🎯 DNS / 웹 통신 흐름 1️⃣ DNS 기본적으로 DNS(Domain Name System Servers)의 역할은 도메인 주소(example.com)를 IP 주소로 변환하는 역할을 합니다. 사용자가 웹 브라우저에서 입력한 URL을 DNS 서버를 통해 IP 주소를 가져와서 이를 통해 서버와 통신을 하게됩니다. 이러한 흐름을 간략하게 그림으로 보면 다음과 같습니다. 웹 브라우저에서 URL을 입력하면, DNS 서버에 도메인에 대한 실제 IP 주소를 요청하게 됩니다. 그리고 받아온 IP 주소를 통해 웹 서버에 요청할 수 있게 되는 것 입니다. 그리고 위 그림에서의 DNS의 동작을 상세히 그림으로 나타내면 다음과 같습니다. 사용자가 도메인 주소를 입력하여 웹 서버에 요청하기까지의 시나리오는 위 순서대로 흘러..
🚀 OSI 7계층 1️⃣ OSI 모델이란? OSI 7 계층? OSI(Open Systems interconnection) 모델은 다양한 통신 시스템 간에 표준 프로토콜을 통한 통신을 가능하게 하기 위한 개념적 모델로 ISO(국제표준화기구)에의해 만들어졌습니다. 즉, OSI모델은 인간의 공통 언어나 통화 시스템과 마찬가지로 다양한 컴퓨터 시스템에 대해 공통 통신 표준 역할을 합니다. 더 쉽게 말해서 우리가 인터넷 환경에서 여러 사람들과 통신하기 위해 통신 방식에 대한 약속을 했는데 이것이 바로 프로토콜이고 이 프로토콜을 7개의 계층으로 묶어서 통신을 체계화 하고 표준화한게 바로 OSI 7계층입니다. 2️⃣ OSI가 만들어진 배경 아직 가정 소비자에게 널리 보급되지는 않았지만 네트워킹 기술은 1970년대 초..
특정 라이브러리가 최신 node.js 버전과 호환이 되지 않거나 몇몇 버전에서 실제 테스트를 해볼 때는 node.js 버전을 변경해야합니다. 그럼 이때 어떻게 버전을 변경해야 할까요? 몇몇 방법이 있는데 이번에는 `nvm`을 사용해 보겠습니다. ❓ nvm nvm은 Node Version Manager의 약자입니다. 즉 말그대로 노드 버전 관리 매니저입니다. nvm을 통해 특정 노드 버전을 다운 받을 수 있고 이미 받은 노드 버전을로 바로 교체할 수도 있습니다. `nvm` 설치 방법은 공식문서에 자세히 나와있습니다. GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js v..
컴퓨터는 작업을 끝낸뒤 결과값을 메모리에 저장한다. 여기서 많은 경우 프로세서의 수행 시간에 비해 메모리 접근 시간이 훨씬 오래 걸리기 때문에 전체 수행 시간의 병목은 얼마나 많이 메모리에 접근했는가로 결정된다. 캐시 메모리는 프로세서와 주 메로리 사이에 작게 존재하지만 처리 속도는 빠른 기억 장치입니다. 프로세서가 어떤 자료를 필요로 할 때 만약 캐시 메모리에 최신의 그 자료가 존재한다면 프로세서는 굳이 주 메모리에서 자료를 가지고 올 필요없이 바로 캐시 메모리에서 가져옴으로서 컴퓨터의 수행 시간을 줄이는 데 큰 기여를 합니다. 캐시 메모리의 크기를 무한정 키우는 것은 금전적으로 큰 부담이 되는 일이기 때문에 그 크기는 대체로 주 메모리의 크기보다 훨씬 작다. 따라서 캐시 메모리를 사용하면 필연적으로 ..
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 1. 컴퓨팅 사고 1) 2진법 컴퓨터는 오직 0과 1로만 데이터를 표현한다. 즉, 우리가 흔히 사용하는 0,1,2,3,4,5,6,7,8,9 총 10개의 기호로 표현하는 10진법이 아니라 단 2개의 숫자로 컴퓨터는 모든 데이터를 다룬다. 그럼 두 개의 숫자로 어떻게 동작할까? 일반적으로 십진법은 아래와 같이 숫자를 표현한다. 백의 자리에 1, 10의 자리에 2 1의자리에 3 그래서 123이 완성이된다. 이는 10의 거듭제곱으로 표현되어있는것이다. 그런다면 오직 0과 1만 사용하는 2진법이라면 ? 2의 거듭제곱을 사용할 것이다. 만약 우리가 3이라는 숫자를 2진법으로 표현하려면 아래와 같다. 더보기 이와 같은 ..