전체 글 51

[My home defense] 10지 않조 - KPT 회고

Keep - 프로젝트를 초기화할 때 Live Share를 통해 다같이 코딩한 점 - 매일 아침에 회의하고, 하루를 마무리 하기 전에 회고를 진행해서 프로젝트의 진행 상황이 명확히 보였던 점Problem - 코드 컨벤션을 따로 정하지 않아서 코드 스타일이 조금씩 다른 부분이 있었던 점Try - 프로젝트 기획을 할 때, 코드 컨벤션을 더 구체적으로 정하고 진행하자 - 시도하는 걸 두려워하지 말자  > 새로운 브랜치를 파서 시도라도 해보자

카테고리 없음 2024.11.12

프로세스와 스레드 / 컨텍스트 스위칭

1. 프로세스와 스레드란?- 메모리 영역(힙, 스택, 코드, 데이터)이 무엇이고, 둘이 어떤 차이를 갖는지 설명해주세요2. 컨텍스트 스위칭이란?- 프로세스/스레드 간의 컨택스트 스위칭 개념과 그 과정에서 어떤 작업이 일어나는지 설명해주세요3. 레이스 컨디션이란?- 세마포어, 뮤택스에 대해 설명해주세요 - 데드락이 무엇이고 어떻게 해결할 수 있는지 설명해주세요프로세스 (Process) 프로세스란, 운영체제에서 실행 중인 프로그램의 인스턴스를 말합니다. 프로세스는 메모리 공간(코드, 데이터, 스택, 힙 등)과 시스템 자원을 독립적으로 소유하며, 다른 프로세스와 분리된 상태로 실행됩니다. 그렇기 때문에 각 프로세스는 서로의 메모리에 접근할 수 없어 안정성이 보장됩니다.  메모리 영역프로세스가 메모리에 로드되면..

[모의 면접 준비] 로드밸런싱

로드밸런싱로드밸런싱은 트래픽을 여러 서버에 고르게 분배하는 기술입니다. 매우 많은 사용자들의 요청을 한 서버에서 처리하기에는 부담스러우니, 여러 서버로 분배해서 처리함으로써 서버의 부하를 낮추는 것입니다.여러 서버를 사용하기 때문에, 한 서버에 문제가 발생하더라도 로드밸런싱을 담당하는 로드밸런서가 트래픽을 다른 정상 작동하는 서버로 돌려서 서비스를 유지할 수 있습니다.나중에 사용자가 더 많아져서, 더 많은 트래픽을 처리해야하면 또 서버를 늘릴 수 있기 때문에 유연성도 좋아집니다.로드밸런서는 트래픽을 나눌 뿐만 아니라 주기적으로 서버의 상태를 확인해주는 헬스체크라는 기능 또한 가지고 있습니다.로드밸런싱 알고리즘라운드 로빈요청을 순서대로 각 서버에 순서대로 분배해주는 방식입니다. 예를 들어서 A, B, C ..

카테고리 없음 2024.10.28

[모의 면접 준비] 대칭키와 비대칭키

대칭키, 비대칭키 암호화대칭키 암호화는 암호화와 복호화에 동일한 키를 사용합니다. 송신자와 수신자가 같은 키를 알고 있어야 하기 때문에 빠른 암호화와 복호화가 가능합니다. 하지만 키를 수신자와 송신자가 공유해야 해서, 공유하는 과정에서 키가 노출될 위험이 있습니다.비대칭키 암호화는 암호화와 복호화에 서로 다른 키를 사용합니다. 공개키와 개인키라는 두 가지 키를 사용하는데, 공개키는 이름 그대로 모두에게 공개되어 있는 키고, 개인키는 개인이 비밀로 가지고 있는 키입니다. 공개키로 암호화한 데이터는 오직 해당 개인키로만 복호화 할 수 있고, 개인키로 암호화한 데이터는 공개키로만 복호화할 수 있습니다. 대칭키를 사용하는 방식보단 보안성이 좋지만, 속도가 더 느립니다.대칭키/비대칭키 혼합 사용대칭키와 비대칭키의..

TIL 2024.10.28

[모의 면접 준비] 전송 계층 프로토콜

전송 계층 프로토콜전송 계층은 OSI 7계층의 4계층에 해당하는 계층입니다. 전송 계층은 데이터가 전달되는 과정에서 수신자와 송신자의 신뢰성을 보장하고, 데이터가 잘 전달되도록 하는 역할을 합니다.이를 위한 대표적인 프로토콜이 두 가지가 있는데, TCP와 UDP입니다.TCP는 연결 지향형 프로토콜로, 통신을 시작하기 전에 송신자와 수신자가 연결을 설정합니다. 그리고 오류 제어나 흐름 제어를 통해 데이터가 손실되거나 순서가 바뀌는 것을 방지하여 신뢰성을 보장해준다는 특징이 있습니다.반대로 UDP는 비연결형 프로토콜로, 송신자와 수신자 간의 연결을 설정하지 않습니다. 그리고 데이터의 신뢰성을 보장해주지 않아 데이터의 손실이나 순서가 뒤바뀔 수 있지만, TCP보다 속도가 빠르다는 특징이 있습니다.IP의 한계I..

TIL 2024.10.28

Buffer

Node.js에서 이진 데이터를 다루기 위한 특별한 개체.일반적으로 JavaScript는 문자열 데이터만 직접적으로 다룰 수 있는데, Buffer는 그 한계를 넘어 이진 데이터를 처리할 수 있게 해준다. 특징데이터를 1Byte씩 나누어서 저장한다.메모리 공간을 효율적으로 사용할 수 있도록 고정된 크기로 할당되고, 한 번 할당된 메모리는 변경되지 않는다. 사용법버퍼 생성// 빈 버퍼 생성Buffer.alloc(size);// 문자열이나 배열로부터 버퍼 생성Buffer.from(data); 버퍼 조작// 버퍼는 배열처럼 각 바이트에 접근할 수 있다const buffer = Buffer.alloc(5);buffer[0] = 72; // 'H'의 ASCII 코드buffer[1] = 101; // 'e'의 AS..

TIL 2024.10.22

[Jeju Defense] 오조사마 - KPT 회고

Keep  - 매일 정해진 회의 시간에 현재 작업 진행 상황을 검토한 것  - 코드 컨벤션을 정해놓고 시작해서 (카멜케이스) 코드마다 컨벤션이 통일되었다.  - 도움이 필요할 때 같이 코드를 공유하며 문제점을 해결한 것 Problem  - 프로젝트 중간에 기획이 바뀐 경우가 있어서 작성했던 코드를 엎어야 되는 일이 있었다.  - 서로 다른 디렉토리 구조로 인해 코드를 합치는 과정이 힘겨웠다  - 프로젝트를 발표할 때, 작성한 코드 위주로 발표한 것이 아니라 기능을 위주로 발표한 것  - 트러블 슈팅을 진행하지 못한 것  - 발표 당일날 빠진 코드를 발견해버려서 급하게 수정을 진행하느라 완벽하게 구현하지 못한 것  - 처음에 기능을 완성하고 나서, 팀원들과 공유하고 합치기로 하였었는데 이런 부분이 잘 이루..

카테고리 없음 2024.10.16

CPU

CPU (중앙 처리 장치, Central Processing Unit)컴퓨터의 뇌 역할을 하는 핵심 부품. 프로그램 명령을 해석하고 실행하는 기능을 담당한다. '뇌'라는 말에 어울리게 컴퓨터 시스템에서 가장 중요한 역할을 하며, 사용자 명령을 처리하고, 데이터를 계산하고, 컴퓨터의 모든 하드웨어 및 소프트웨어를 제어한다. CPU의 주요 기능명령어 실행CPU는 프로그램이 제공하는 명령어를 하나씩 해석하고 실행한다. 이러한 명령어는 주로 데이터를 처리하거나, 메모리에서 데이터를 읽고 쓰는 작업을 포함한다.연산 기능수학적 계산과 논리 연산을 처리한다.제어 기능컴퓨터의 각 구성 요소가 어떻게 상호작용하고 동작해야 할 지를 제어한다. 이를 통해 프로그램이 실행되는 순서를 결정한다. CPU의 주요 구성 요소연산 논..

[웹소켓] Chrome_dino 프로젝트 트러블슈팅

게임이 재시작될 때 스테이지 정보가 초기화되지 않아 처음부터 점수가 빠르게 오름...if (gameover) { showGameOver(); score.currentStage = 0; } ...index.js의 게임루프에서 gameover 됐을 때, 현재 스테이지를 초기화시켜줘서 해결함  아이템이 올바른 스테이지에서 생성되지 않음// Score.js...getCurrentStageId() { return assets.stage.data[this.currentStage].id; } ...// index.js...itemController.update(gameSpeed, deltaTime, score.getCurrentStageId());...// ItemController.js...

TIL 2024.10.07