인기 포스트
-
[WSL] WSL 설치 후 WiFi 연결이 안되는 문제 (Windows 11 Home)
> Docker Desktop을 설치하다가 발생했던 WiFi 연결 문제를 해결하는 과정을 정리해보았다. 학습 키워드: WSL, Docker Desktop, vEthernet, Hyper-V WSL 설치 후 Wifi 연결 안되는 문제1) What is it?: Docker desktop 설치 이후 와이파이 연결이 끊어지고 cmd에서 ipconfig /all을 사용해도 무선 어댑터가 인식되지 않는 문제가 있었는데, 실제 원인은 WSL이 사용하는 가상 어댑터 기본 설정이 제대로 되어있지 않아서였다. 이를 해결한 과정을 정리해보았다. Figure 2 처럼 Hyper-V 관리자(없으면 링크를 따라 설치)를 검색하여 실행하면 우측에 Figure 3과 같은 탭이 있다. 여기서 '가상 스위치 관리자'를 선택한 뒤 ..
-
[Node.js] Stream과 Back Pressure
학습 키워드: Node.js, Stream, Back Pressure, Socket 1. Stream1) What is it?: 연속적인 데이터 흐름을 처리하는 방식으로, 한 번에 모든 데이터를 메모리에 올리지 않고, 작은 단위의 청크(Chunk)로 나누어서 처리하여 메모리 사용을 최소화 함으로써 성능 최적화를 달성하는 방법이다. Node.js에서 스트림은 크게 다음의 네 가지로 나뉜다.Readable Stream: 데이터를 읽을 수 있는 스트림 (File System의 read stream이나 HTTP 요청). Writable Stream: 데이터를 쓸 수 있는 스트림 (File System의 write stream이나 HTTP 응답)Duplex Stream: 읽기와 쓰기가 모두 가능한 스트림 (TCP..
-
스파르타) The Last Rollback (D-14, Node.js 게임 서버 최종 프로젝트)
학습 키워드: C#, DotNet, Protobuf, Recast & Detour, Pathfinding 1. 프로젝트 관련 사항1) C# 서버에 Protobuf 추가 및 예시 핸들러 구현: Add(Program.cs): DotNet TCP server program · donkim1212/PathfindingDediServer@e961c57Add(TCPClientHandler.cs): class that handles TCP client connection, read buffer and call mapped handlers Add: PacketHandler abstract class, TestReqHandler to test protobuf Add(Packet.cs): protobuf ...github..
-
[.NET] C# DotNet으로 TCP 소켓 서버 열어보기
> D-15 | Dedicated Server 구축을 위한 조사 및 테스트용 코드를 작성했다. 학습 키워드: C#, DotNet, Socket 프로젝트 진행 사항1) Pathfinding Dedicated Server 구축을 위한 사전 학습: 현재 진행중인 게임 서버 프로젝트(The Last Rollback)는 Unity 클라이언트 게임과 연결된다. 클라이언트에서는 Unity의 NavMesh로 pathfinding을 진행하고 있는데, 개발 초기에 서버에 이를 올려둘 마땅한 방법을 찾지 못해서 클라이언트 주도로만 이루어지고 있다. 이전에 이 문제를 해결하기 위해 토의해서 나온 결론은 pathfinding 만을 담당하는 dedicated 서버를 구축하는 것이었다. C#으로 서버를 개발해야 하다보니 MVP 기..
-
[면접 준비] sync vs async, blocking vs non-blocking, async vs non-blocking 차이 설명하기
학습 키워드: sync, async, blocking, non-blocking 2024-07-31 면접 카타 질문동기와 비동기의 차이, 블락킹과 논블락킹의 차이, 비동기와 논블락킹에 차이에 대해 설명해주세요: 동기는 모든 작업이 순차적으로 실행되며, 한 작업이 종료될 때 까지 다른 작업을 실행하지 않는 것을 말합니다. 비동기는 앞선 작업의 종료를 기다리지 않고 다음 작업이 동시에 실행되는 방식입니다. Node.js에서 비동기 함수는 Libuv를 통해 커널의 비동기 함수로 처리되어 이벤트 루프에 콜백으로 등록됩니다. 블로킹과 논블로킹의 핵심 차이는 코드의 실행 제어권을 다른 함수에 넘겨주느냐 아니냐로 갈리는데, 이름에서 알 수 있듯이 블로킹은 제어권을 넘겨줘서 다른 함수가 실행되는 동안 실행을 멈추게 됩니..
-
[DB] 낙관적 락(Optimistic Lock), 비관적 락(Pessimistic Lock)
> DB의 transaction 관련 개념을 보강하기 위해 낙관적 락과 비관적 락에 대해서 알아보고 정리해보았다. 학습 키워드: database, optimistic lock, pessimistic lock 1. Pessimistic Lock1) What is it?: 비관적 락은 동일한 데이터로의 동시 접근을 제한하여 비일관성(inconsistency)을 방지하는 locking 메커니즘이다. DB에서 데이터라 함은 테이블의 row를 의미하기 때문에 row의 다른 표현인 record에 대한 lock이라는 의미에서 Record Lock이라고도 불린다. 2) Why use locks?: 은행원 A와 B가 있고, 두 은행원이 동일한 계좌를 동시에 업데이트 하려고 하는 상황을 상상해보자. 한 쪽에서 계좌의 ..