TIL 43

메모리란?

(서버 프로그래머적 관점으로 간단하게)1. 메모리란 무엇인가?메모리는 컴퓨터에서 데이터와 프로그램을 일시적으로 또는 영구적으로 저장하는 하드웨어 리소스를 의미하며, 프로세스의 실행 속도와 서버의 처리 성능에 직접적인 영향을 미칩니다. 서버 프로그래머의 관점에서, 메모리 관리는 성능 최적화와 리소스 효율성에 중요한 역할을 합니다.RAM(Random Access Memory, 임의 접근 메모리): 서버에서 RAM은 프로세스 실행 시 필요한 데이터를 저장하여 CPU가 빠르게 접근할 수 있도록 돕습니다. 메모리가 부족하면 서버는 스왑 메모리를 사용하게 되고, 이는 디스크 I/O를 유발해 성능 저하를 초래할 수 있습니다. 따라서 메모리 사용량 모니터링과 최적화는 서버 성능 관리의 핵심입니다.캐시 메모리: CPU와..

TIL 2024.10.11

CPU란? (기초)

CPU(Central Processing Unit)는 컴퓨터의 핵심 연산 장치로, 모든 계산과 명령 처리를 담당하는 "컴퓨터의 두뇌"라고 할 수 있습니다. CPU는 프로그램에서 요청하는 명령을 받아 해석하고, 필요한 연산을 수행하며, 결과를 출력하는 과정을 반복합니다.CPU는 크게 다음과 같은 세부 장치들로 구성됩니다:연산 장치(ALU, Arithmetic Logic Unit):산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR, NOT 등)을 수행하는 장치입니다.데이터를 처리하고 계산하는 핵심 역할을 담당합니다.제어 장치(CU, Control Unit):프로그램 명령을 해석하고, CPU 내 각 구성 요소와 메모리 사이의 데이터 흐름을 제어합니다.명령어를 읽고, 이를 해석한 후, ALU나 레지스터 등..

TIL 2024.10.10

chome_dino_websocket_game 개인 프로젝트 트러블 슈팅

1. 개요redis를 사용하여 websocket_game 프로젝트를 진행하면서 redisCli.ZRANGE(... , 'WITHSCORES');부분에서 'WITHSCORES' 부분이 제대로 동작하지 않아서 userUUID값만 나오는 문제가 생겼습니다.이 문제를 해결하는 방법에 대해서 트러블 슈팅을 진행하겠습니다. 2. 트러블 슈팅 2.1 배경  - 최고 점수를 get하는 부분인 score.model.js부분에서 await redisCli.ZRANGE(HIGH_SCORE_KEY, 0, -1, 'WITHSCORES'); 부분에서 WITHSCORES기능이 제대로 동작하지 않는 문제가 발생하게 되었습니다. 2.2 발단 - 위의 부분이 제대로 동작하지 않아 redis에 userUUID와 그 사람의 최고 score..

TIL 2024.10.07

VSCode에서 .js 확장자가 빠지는 문제 해결

최근에 코드를 치던 도중 자꾸 다른 곳에서 import를 해올 때 자동으로 .js가 생성되지 않고 빠져가지고 찾아야하는 번거로움을 겪게 되었습니다. 해결 방법은 간단합니다.바로 VSCode 설정을 수정하는 방법 입니다.읽기 전 방법이 총 2가지 이기 때문에 1번 방법이 되지 않으면 바로 2번 방법으로 가주세요. VSCode 설정 수정하기1. VSCode 설정 열기먼저, Visual studio Code를 실행한 후, 아래 단축키를 사용해 설정을 엽니다.Windows/Linux: Ctrl + ,Mac: Cmd + 또는, VSCode 상단 메뉴에서 파일(File) -> 기본 설정(Preferences) -> 설정(Settings)으로 이동할 수도 있습니다.2. 검색창에 settings.json 검색설정 창에..

TIL 2024.10.01

REST, REST API, RESTful 특징 (간단 글 소개)

오늘 면접 특강을 듣던 도중 만약에 RESTful 한 API를 설계한 적이 있는가에 대한 질문을 받았을 때 순간 RESTful이라는 것이 무엇인지 기억이 하나도 나지 않았기 때문에 오늘 TIL의 주제를 정하게 되엇습니다. REST 정의REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다. (HTTP 프로토콜을 그대로 활용하기 때문인것 같다.)자원을 이름(자원의 표현)으로 구분하여 해..

TIL 2024.09.30

express.urlencoded()에 대한 간단한 조사

코딩을 하면서 express.urlencoded()를 가장 자주 쓰이게 되는 코드는 아래의 코드이다.app.use(express.urlencoded({ extended: false }))app.use(express.urlencoded({ extended: false }))는 Express 애프리케이션에서 application/x-www-form-urlencoded 형식의 데이터를 파싱하는 미들웨어이다.이 구문을 통해 클라이언트가 보낸 URL-encoded 데이터(HTML 폼을 통해 제출된 데이터)를 Express 애플리케이션이 처리할 수 있도록 설정합니다.구체적으로 설명해보자면 express.urlencoded()는 URL-encoded 데이터를 파싱해서 req.body 객체에 추가해줍니다.URL-enc..

TIL 2024.09.28

JavaScript 다양한 디자인 패턴 (간단하게)

1. Factory Pattern요약: 객체 생성 로직을 별도의 메서드로 캡슐화하여, 객체 생성 과정을 쉽게 관리할 수 있는 패턴입니다. 객체를 생성할 때 직접 클래스를 호출하지 않고, 팩토리 메서드를 통해 객체를 반환받습니다.왜 사용하는지?: 객체 생성 방식이 복잡하거나, 여러 종류의 객체를 유연하게 생성해야 할 때 사용합니다.예시:class Car { constructor(brand) { this.brand = brand; } drive() { console.log(`${this.brand} is driving`); }}class CarFactory { static createCar(type) { switch (type) { case 'Tesla': re..

TIL 2024.09.26

OSI 7계층 응용 계층 (Application Layer)에 대하여 (자세하게)

응용 계층(Application Layer)이란?응용 계층은 OSI 7계층 모델의 가장 상위 계층으로, 사용자가 네트워크 상에서 직접적으로 사용하는 애플리케이션들과 통신하는 부분을 담당합니다. 응용 계층의 주요 목적은 사용자가 네트워크를 통해 접근하는 서비스를 제공하는 것이고, 이는 이메일, 웹 브라우징, 파일 전송, 원격 로그인 등의 다양한 네트워크 서비스를 포함하며, 네트워크 상의 애플리케이션 프로세스 간의 통신을 규정합니다.응용 계층에서 사용되는 다양한 프로토콜들은 실제 데이터를 처리하는 애플리케이션 프로그램들과 하위 계층 간의 인터페이스 역할을 하며, 응용 프로그램이 네트워크 상에서 데이터를 주고받는 데 필요한 규칙들을 정의합니다.사실 OSI 7계층 모델은 이미 시장에서 도태된 네트워크 시스템이라..

TIL 2024.09.25

OSI 7계층 응용 계층 (Application Layer)에 대하여 (간단 소개)

응용 계층(Application Layer)이란?응용 계층은 OSI 7계층 모델의 가장 상위 계층으로, 사용자가 네트워크 상에서 직접적으로 사용하는 애플리케이션들과 통신하는 부분을 담당합니다. 응용 계층의 주요 목적은 사용자가 네트워크를 통해 접근하는 서비스를 제공하는 것이고, 이는 이메일, 웹 브라우징, 파일 전송, 원격 로그인 등의 다양한 네트워크 서비스를 포함하며, 네트워크 상의 애플리케이션 프로세스 간의 통신을 규정합니다.응용 계층에서 사용되는 다양한 프로토콜들은 실제 데이터를 처리하는 애플리케이션 프로그램들과 하위 계층 간의 인터페이스 역할을 하며, 응용 프로그램이 네트워크 상에서 데이터를 주고받는 데 필요한 규칙들을 정의합니다.응용 계층의 주요 프로토콜과 기능응용 계층에서는 여러 가지 프로토콜..

TIL 2024.09.24

Status Code 종류별로 한줄로 설명하기 - 틀린 부분 또는 추가할 부분 지적 O

1xx (Informational Responses)1xx 코드는 요청을 수신하였으며 처리가 진행 중임을 나타냅니다.100 Continue: 클라이언트가 요청을 계속해도 된다는 신호.101 Switching Protocols: 서버가 클라이언트의 요청에 따라 프로토콜을 전환.102 Processing (WebDAV): 서버가 요청을 수신하고 있지만 아직 응답을 제공할 수 없음.2xx (Successful Responses)2xx 코드는 요청이 성공적으로 완료되었음을 나타냅니다.200 OK: 요청이 성공적으로 처리되었음을 나타냄.201 Created: 요청에 의해 리소스가 성공적으로 생성됨.202 Accepted: 요청이 접수되었지만, 아직 처리되지 않음.203 Non-Authoritative Inform..

TIL 2024.09.24