개발 기록 일지
|

thumbnail
네트워크 기기

네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 이 때 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가능하다. 애플리케이션 계층: L7 스위치 인터넷 계층: 라우터, L3 스위치 데이터 링크 계층: L2 스위치, 브리지 물리 계층: NIC, 리피터, AP → L7 스위치: 모든 계층의 프로토콜 처리 가능 / AP: 물리 계층만 처리 가능 애플리케이션 계층 처리 기기 L7 스위치 라고도 하며, 서버의 부하를 분산하는 기기로, 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 한다. 이를 통해 시스템이 처리할 수 있는 트래픽을 증가시킬 수 있다. URL, 서버, 캐시, 쿠키들을 기반으로 트래픽 분산 바이러스, 불필요한 외부 데이터 필터링 기능 트래픽 모니터링 헬스 체크를 통해 정상/비정상적인 서버 판별 ❓ 로드밸런서를 이용한 서버 이중화 에러 발생 시 서…

June 12, 2023
CS
TCP/IP 4계층 모델

계층 구조 TCP/IP 계층은 4개의 계층을 가지고 있으며 OSI 7계층과 많이 비교한다. TCP/IP 4계층 → OSI 7계층 애플리케이션 계층 → 애플리케이션, 프레젠테이션, 세션 계층 전송 계층 → 전송 계층 인터넷 계층 → 네트워크 계층 링크 계층 → 데이터 링크, 물리 계층 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. ex) 전송 계층에서 TCP → UDP 변경되었다고해도 인터넷 웹 브라우저를 다시 설치하지 않아도 됨 TCP/IP 4계층 대표 스택 애플리케이션 계층: FTP, HTTP, SSH, SMTP, DNS 전송 계층: TCP, UDP, QUIC 인터넷 계층: IP, ARP, ICMP 링크 계층: 이더넷 1. 애플리케이션 계층 애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이다. 주로 웹 서비스, 이메일 등 사람들에게 실질적으로 서비스를 제공하는 층이다. FTP: 장치…

June 05, 2023
CS
네트워크 기초

네트워크 네트워크란 노드와 링크가 서로 연결되어 있으며, 리소스를 공유하는 집합을 의미한다. 노드: 서버, 라우터, 스위치 등 (네트워크 장치) 링크: 유선/무선 네트워크를 구축할 때 ‘좋은’ 네트워크는 많은 처리량을 처리할 수 있으며, 지연 시간이 짧고, 장애 빈도가 적으며, 좋은 보안을 갖춘 네트워크를 말한다. ❓ 처리량 링크 내에서 성공적으로 전달된 데이터의 양을 말한다. 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. 많은 트래픽을 처리한다 = 많은 처리량을 가진다 트래픽이 많아졌다 = 흐르는 데이터가 많아졌다 처리량이 많아졌다 = 처리되는 트래픽이 많아졌다. 처리량은 다음에 따라 달라질 수 있다. 사용자 접속량에 따라 커지는 트래픽 네트워크 장치 간의 대역폭 네트워크 중간에 발생하는 에러 장치의 하드웨어 스펙 트래픽 서버를 통해 최종 사용자에게 전달된 데이터의 양 (트래픽 = 용량 x 사용자 수 x 개수) 트래픽에서 시간 개념을 추가하게 되면 초당 처리할 수 있는 데이터의 …

June 03, 2023
CS
디자인 패턴

디자인 패턴은 프로그램을 설계할 때 발생했던 문제점들을 객체 간 상호 관계 등을 이용해 해결할 수 있도록 하나의 ‘규약’형태로 만들어 놓은 것을 의미한다. 1. 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 보통 에 많이 사용된다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용한다. 장점: 인스턴스 생성 비용↓, 사용하기 쉽고 실용적 단점: 의존성↑, 모듈 간 결합↑ 미리 생성된 하나의 인스턴스 기반으로 구현하므로 테스트마다 독립적인 인스턴스를 만들기 어려움 → TDD(Test Driven Development) 개발의 단위 테스트 시 좋지 않다. 단위테스트는 테스트가 서로 독립적이어야 하며, 테스트를 어떤 순서로든 실행할 수 있어야 한다. ❓ 의존성 주입(DI, Dependency Injection) 의존성이 있다는 것은 B의 변경 사항에 대해 A 또한 변경해야 하는 것을 의미한다. 의존성 주입을 통해 모듈 간 결합을 조금 더 느슨…

June 01, 2023
CS
프로그래밍 패러다임

프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 크게 선언형, 명령형으로 나뉜다. 선언형: 함수형 명령형: 객체지향형, 절차지향형 1. 선언형 선언형 프로그래밍은 ‘무엇을’ 풀어내는가에 집중하는 패러다임이며, 함수형 프로그래밍이 이에 해당한다. 함수형 프로그래밍 작은 ‘순수 함수’들을 블록처럼 쌓아 로직을 구현하고 ‘고차 함수’를 통해 재사용성을 높인 프로그래밍 패러다임이다. 자바스크립트의 경우 함수형 프로그래밍 방식이 선호된다. ❓ 순수 함수 출력이 입력에만 의존하는 것을 의미한다. 들어오는 매개 변수 a,b 에만 영향을 받는다. 만약 다른 전역 변수 c 등이 출력에 영향을 주면 순수 함수가 아니다. ❓ 고차 함수 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 말한다. 이 때, 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 하며, 그 특징은 다음과 같다. 변수나 메서드에 함수를 할당할 수 …

June 01, 2023
CS
mime-types import 시 cannot resolve 'path' 오류

mime-types 모듈을 사용하려던 중 아래와 같은 에러가 발생했다. 원인 이 오류는 webpack 버전이 업데이트 되면서, 이전 버전에서 자동으로 포함되던 node.js core 모듈의 폴리필(polyfill)이 기본적으로 포함되지 않게 되었기 때문에 발생한 것이다. 모듈은 node.js core 모듈인 모듈을 사용하고 있으므로, webpack이 이를 인식하지 못해 오류가 발생한 것이다. 해결 처음에 오류에서 제안된 내용대로 파일에 아래 처럼 설정해준 뒤, 를 설치해주었다. 그런데도 작동되지 않았다.🥲 다시 알고보니 나는 폴더 루트 경로에 를 만들어서 작성했었는데 여기가 아니라 아래와 같은 루트에 작성해주어야 했다. 이렇게 작성해준 뒤, 돌아가고 있었다면 껐다가 다시 켜준다. 출처 https://stackoverflow.com/questions/72321500/how-to-use-fallback-path-require-resolvepath-browserify-in-we…

April 21, 2023
Error
React 이미지 경로 설정하기

React 프로젝트에서 이미지를 사용할 때 이미지가 public 폴더에 있는지, src 폴더에 있는지, 또는 jsx 파일에서 사용하는지, css에서 사용하는지에 따라 경로 설정하는 방법을 구분하고자 한다. 📂 public 폴더는 에 의해 관리되지 않고, 대신 원본이 폴더에 복사된다. (minify되지 않고, content hash가 포함되지 않는다.) 폴더에 접근하기 위해서는 환경변수를 사용해야 한다. 경로가 잘못 되었거나 파일이 없는 경우 컴파일 단계에서 에러가 발생하지 않고, 404에러가 발생한다. 🚫 CRA 문서에서 다음과 같은 경우에만 폴더에서 관리하는 것이 유용하고, 이외에는 폴더 관리를 추천한다. 처럼 build된 결과물에서 특정한 파일 이름이 필요한 경우 수천개의 이미지 파일을 동적으로 참조해야 하는 경우 📂 src 파일을 찾지 못하는 경우, 컴파일 단계에서 에러를 잡을 수 있다. ✅ import 할 경우 참조할 수 있는 경로(path) 문자열을 출력한다…

March 31, 2023
React
Setting