분류 전체보기

· CS
🎯 DNS / 웹 통신 흐름 1️⃣ DNS 기본적으로 DNS(Domain Name System Servers)의 역할은 도메인 주소(example.com)를 IP 주소로 변환하는 역할을 합니다. 사용자가 웹 브라우저에서 입력한 URL을 DNS 서버를 통해 IP 주소를 가져와서 이를 통해 서버와 통신을 하게됩니다. 이러한 흐름을 간략하게 그림으로 보면 다음과 같습니다. 웹 브라우저에서 URL을 입력하면, DNS 서버에 도메인에 대한 실제 IP 주소를 요청하게 됩니다. 그리고 받아온 IP 주소를 통해 웹 서버에 요청할 수 있게 되는 것 입니다. 그리고 위 그림에서의 DNS의 동작을 상세히 그림으로 나타내면 다음과 같습니다. 사용자가 도메인 주소를 입력하여 웹 서버에 요청하기까지의 시나리오는 위 순서대로 흘러..
· CS
🚀 OSI 7계층 1️⃣ OSI 모델이란? OSI 7 계층? OSI(Open Systems interconnection) 모델은 다양한 통신 시스템 간에 표준 프로토콜을 통한 통신을 가능하게 하기 위한 개념적 모델로 ISO(국제표준화기구)에의해 만들어졌습니다. 즉, OSI모델은 인간의 공통 언어나 통화 시스템과 마찬가지로 다양한 컴퓨터 시스템에 대해 공통 통신 표준 역할을 합니다. 더 쉽게 말해서 우리가 인터넷 환경에서 여러 사람들과 통신하기 위해 통신 방식에 대한 약속을 했는데 이것이 바로 프로토콜이고 이 프로토콜을 7개의 계층으로 묶어서 통신을 체계화 하고 표준화한게 바로 OSI 7계층입니다. 2️⃣ OSI가 만들어진 배경 아직 가정 소비자에게 널리 보급되지는 않았지만 네트워킹 기술은 1970년대 초..
· Node.js
특정 라이브러리가 최신 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..
컴퓨터는 작업을 끝낸뒤 결과값을 메모리에 저장한다. 여기서 많은 경우 프로세서의 수행 시간에 비해 메모리 접근 시간이 훨씬 오래 걸리기 때문에 전체 수행 시간의 병목은 얼마나 많이 메모리에 접근했는가로 결정된다. 캐시 메모리는 프로세서와 주 메로리 사이에 작게 존재하지만 처리 속도는 빠른 기억 장치입니다. 프로세서가 어떤 자료를 필요로 할 때 만약 캐시 메모리에 최신의 그 자료가 존재한다면 프로세서는 굳이 주 메모리에서 자료를 가지고 올 필요없이 바로 캐시 메모리에서 가져옴으로서 컴퓨터의 수행 시간을 줄이는 데 큰 기여를 합니다. 캐시 메모리의 크기를 무한정 키우는 것은 금전적으로 큰 부담이 되는 일이기 때문에 그 크기는 대체로 주 메모리의 크기보다 훨씬 작다. 따라서 캐시 메모리를 사용하면 필연적으로 ..
· CS/CS50
📚 시리즈 목차 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진법으로 표현하려면 아래와 같다. 더보기 이와 같은 ..
지금까지 나는 상속을 단순히 재사용하는 것들이 있으면 공통적으로 묶어주기 위해 상속을 생각했다. 하지만 정말 우연한 기회로 조합이라는 것을 알게되었다. 이 영상을보다 댓글을 보니 이런 댓글이 있었다. 리팩토링 할때도 느꼈지만 상속을 사용하면 중복코드를 제거할 수 있고 확장도 쉽게 가능하고 계층구조에 유리하니 편해서 사용했던 것 같다. 하지만 위 댓글처럼 만약 상속을 통해서 엄청난 규모의 프로젝트를 했는데 최상층에 있는 부모클래스에 변동이 생기면 거기에 연관된 모든 자식클래스는 강하게 영향을 받고 결국 전부 수정을 해줘야한다. 자바스크립에서도 부모클래스에서 input 값이 stirng을 받을 것을 예상하고 로직을 만들고 상속을 통해 자식 클래스들을 여러개를 만들었는데 어느날 array로 바뀌다면 그에 따른..
· Node.js
module을 처음봤을 때 와 익숙하지 않았다. 요즘은 보통 바벨과 같이 사용하여 import / export default 를 자주써서 그랬던 것 같다. 이참에 제대로 이해하고 넘어가야겠다.( es6부터 사용) 1. 모듈이 필요한 이유 자바스크립트는 웹페이지에 있어서 보조적인 기능을 수행하기 위해 한정적인 용도로 만들어진 태생적 한계로 다른 언어에 비해 부족한 부분이 있는 것이 사실이다. 그 대표적인 것이 모듈 기능이 없는 것이다. 웹 페이지에서 자바스크립트를 사용하기 위해서는 위 사진과 같이 스크립트 태크를 통해 자바스크립트 파일을 가져오면된다. 그런데 만약 필요한 자바스크립트 파일이 2개라면 어떻게 해야할까? script 태그를 하나 더 추가하고 파일을 가져오면 된다. 하지만 지금과 같이 두 파일에..
· Node.js
얼마전 부터 추후에 eslint config을 공유하기위해 배포하며 계속 수정하고있는데 이 과정에서 package.json에 대해 어렴풋이 알고있었던 내용들을 제대로 공부하는 시간을 가졌다. 특히 배포할 때 depndencies / devDependencies / peerDependencies를 어떻게 설정하냐에 따라 정말 큰 차이가 있기 때문에 이 부분은 확실히 정리해야 겠다고 생각해서 이렇게 글을 쓰게 되었다. 1. dependecies "dependencies": { "express": "^4.16.4", "compression": "~1.7.4" } dependencies는 소프트웨어 개발에서 프로젝트가 원활히 작동하기 위해 꼭 필요한 외부 패키지 또는 라이브러리를 말합니다. 즉 어떤 프로젝트를 ..
· 정보
싱글톤 패턴 싱글톤 패턴이란 클래스의 인스턴스화를 하나의 객체로 제한하는 패턴입니다. 싱글톤 구현에는 여러가지 방법이 있습니다. 1. Object Literal var Discount = { dDay : 25, gift : 'champagne', info() { return `dDay : ${this.#dDay}\ngift : ${this.#gift}`; } } 이렇게 코드를 작성하면 불변성이 성립되지 않기 때문에 언제든지 재정의될 수 있는 위험이 있습니다. const Discount = Object.freeze({ dDay : 25, gift : 'champagne', info() { return `dDay : ${this.#dDay}\ngift : ${this.#gift}`; } }) export d..
개발자성장기
'분류 전체보기' 카테고리의 글 목록 (3 Page)