TIL 37

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

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

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

[웹소켓] 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

모의면접 준비

IP의 개념과 IP 주소 체계, 서브넷 마스크에 대해 설명해주세요.IP는 네트워크 상에서 장치 간 통신을 가능하게 해주는 프로토콜입니다. 흔히들 인터넷 상의 집 주소라고 하여, 각 장치를 유일하게 식별해주는 역할을 합니다. IP 주소 체계는 IPv4, IPv6 두 가지가 있습니다.IPv4는 4개의 옥텟으로 구성되어 있고, 각각 0부터 255까지의 값을 가질 수 있습니다. ex) 192.168.0.1IPv6는 IPv4의 한계를 극복하기 위해 등장한 새로운 체계로, IPv4만으로는 주소가 부족해지는 현상이 발생하여 더욱 많은 주소를 제공할 수 있게 만들어졌습니다.서브넷 마스크는 네트워크와 호스트를 구분하기 위해 사용되며, 서브넷 마스크를 사용해 네트워크 범위와 호스트 범위를 나눕니다. 예를 들어, 255.2..

TIL 2024.09.30

[Node.js 게임서버 개발] 웹소켓

웹소켓 (WebSocket)특징1. 실시간 통신연결이 활성화된 상태에서 빠르고 지속적인 메시지 교환을 허용해서 사용자에게 지연 없는 인터렉션을 제공함2. 양방향 통신 (Full-Duplex)클라이언트도 서버에게 요청을 보낼 수 있고, 서버도 클라이언트에 요청을 보낼 수 있음3. 지속적 연결일단 연결이 되면, 클라이언트나 서버가 명시적으로 종료할 때까지 유지됨4. 낮은 오버헤드데이터 패킷의 크기가 작기 때문에, 효율적으로 네트워크 상에서 데이터 교환이 가능함5. HTTP와의 호환성HTTP를 통해서 작동하기 때문에, 기존 인프라와 호환성이 좋아 개발이 용이함  프로토콜 간 헤더 비교보통 HTTP Request Header의 일부분GET /data HTTP/1.1Host: www.example.comUser-..

TIL 2024.09.26

[프로그래머스] MySQL - 월별 잡은 물고기 수 구하기

월별 잡은 물고기 수 구하기https://school.programmers.co.kr/learn/courses/30/lessons/293260 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다. Column nameTypeNullableIDINTEGERFALSEF..

TIL 2024.09.23

[프로그래머스] MySQL - ROOT 아이템 구하기

ROOT 아이템 구하기https://school.programmers.co.kr/learn/courses/30/lessons/273710 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명어느 한 게임에서 사용되는 아이템들은 업그레이드가 가능합니다. 'ITEM_A'->'ITEM_B'와 같이 업그레이드가 가능할 때 'ITEM_A'를 'ITEM_B'의 PARENT 아이템, PARENT 아이템이 없는 아이템을 ROOT 아이템이라고 합니다. 예를 들어 'ITEM_A'->'ITEM_B'->'ITEM_C' 와 같이 업그레이드가 가능한 아이템이 있다면 'ITEM_C'..

TIL 2024.09.23

[프로그래머스] MySQL - 12세 이하인 여자 환자 목록 출력하기

12세 이하인 여자 환자 목록 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/132201 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.Column nameTypeNullablePT_NOVARCHAR(10)FALSEPT_NAMEVARCHAR(20)FAL..

TIL 2024.09.23