하루 정리 블로그 👋

많든 적든 하루에 하나씩

C++ 소켓 크로스 플랫폼 개발 - 2

지난 글에서 리눅스와 윈도우에서 동시에 같이 사용할 수 있는 소켓 클래스를 만들어 봤습니다. 이번 글에서는 소켓에 데이터가 들어오는 것을 감지하고 처리할 수 있는 EventLoop 객체를 만들어 보겠습니다. 👍 EventLoop 객체에 사용되는 비동기 IO 처리 역시 운영체제별로 다르므로 각 운영체제에 맞게 구현해야 하며 사용되는 메커니즘은 아래와 같습니다. 🤖 I/O 이벤트 처리 방식 구분 Linux Windows 모델 epoll IOCP 방식 I/O 준비가 되면 알림 비동기 작업이 완료되면 알림 의미 읽기/쓰기를 진행할 수 있음 제출한 읽기/쓰기 작업이 끝남 처리 직접 recv()/send() 등을 호출하여 처리 시작 완료된 결과를 확인한 후 후속 작업 처리 API epoll_create1(), epoll_ctl(), epoll_wait() CreateIoCompletionPort(), GetQueuedCompletionStatus() 간단하게 리눅스에서는 알림이 오면 소켓 버퍼에서 직접 데이터를 가져오면 되고 윈도우에서는 미리 “데이터를 이 버퍼에 받아주세요....

2026년 10월 30일 · 8 min · 1599 words · JongBin

C++ 소켓 크로스 플랫폼 개발 - 1

지난 글에서 크로스 플랫폼으로 빌드를 하려면 어떻게 해야 하는지 알아봤습니다. 이번 글에서는 리눅스와 윈도우에서 하나의 코드로 작동할 수 있는 소켓을 만들어 보도록 하겠습니다. 😄 🌳 구성 1 2 3 4 5 6 7 8 9 10 . ├── include/ │ └── yami/ │ └── comm/ │ └── socket.hpp # 헤더 (interface) └── src/ └── comm/ ├── socket.cpp # 리눅스, 윈도우 공통 구현 ├── socket_linux.cpp # 리눅스 구현부 └── socket_windows.cpp # 윈도우 구현부 ⚠️ Warning...

2026년 10월 28일 · 7 min · 1439 words · JongBin

C++ 크로스 플랫폼(Cross-Platform) 구성 해보기

소켓 프로그래밍이 궁금해서 계속해 보던 중 윈도우와 리눅스 두 진영에서 같은 코드로 컴파일할 수 없을지 문득 생각이 들어서 알아보다가 포스팅하게 됐습니다. 😎 🔥 크로스 플랫폼 💡 크로스 플랫폼(Cross-Platform)은 하나의 소프트웨어, 코드, 프로그램이 윈도우, macOS, 리눅스, 안드로이드, iOS 등 서로 다른 여러 운영체제나 기기 환경에서 동시에 작동하는 것을 뜻합니다. 크로스 플랫폼 프레임워크·라이브러리 대표적인 것은 아래와 같습니다. 용도 도구 주 언어 특징 모바일·웹·데스크톱 앱 Flutter Dart 하나의 코드베이스로 여러 플랫폼 앱을 만들고, 자체 UI 렌더링 방식으로 화면 모양을 비교적 일관되게 유지해요....

2026년 10월 23일 · 3 min · 633 words · JongBin

[AI 공부하기-05] 손실 함수 구현하기

이전 글에서 선형 레이어와 활성화 함수의 forward와 backward를 구현해 봤습니다. forward는 input 값을 넣어 여러 행렬 계산을 통해 예측값을 만들어 냈습니다. 반대로 backward는 예측값과 실제 결괏값에 대한 오차를 입력으로 예측값을 만들어 냈던 모든 레이어의 손실(오차)에 대한 기울기를 구합니다. 이번 글에서는 예측값과 실제 결과의 손실을 구하는 방법 중 하나인 “평균제곱오차” 함수를 알아보고 구현해 보겠습니다. 👍 📒 평균제곱오차 💡 평균제곱오차(MSE, Mean Squared Error)는 모델의 예측값과 실제값의 차이를 제곱해 평균한 손실함수이다. $$MSE=\frac{1}{n}\sum^{n}_{i=1}(\hat{y_i}-y_i)^2$$ \(y_i\): 실제값 \(\hat{y_i}\): 예측값 \(n\): 데이터 개수 MSE는 모든 원소의 값을 더하고 나누어서 스칼라값이 나오게 됩니다....

2026년 10월 19일 · 3 min · 433 words · JongBin

[AI 공부하기 04] 활성화 함수 구현하기

지난 글에서 선형 레이어를 구현했습니다. 이번 글에서는 신경망에서 자주 쓰는 활성화 함수를 알아보고 구현해 보겠습니다. 👍 🔎 활성화 함수 ReLU(Rectified Linear Unit)라고도 불리는 활성화 함수는 입력이 0보다 크면 그대로 통과시키고, 0 이하이면 0으로 바꿉니다. $$ReLU(x)=max(0,x)$$ 신경망에 비선형성을 넣어 복잡한 관계를 학습하는 역할을 합니다. 계산이 간단하고 학습이 잘 되는 편이라 널리 쓰입니다. 활성화 함수 없이 선형층만 여러 개 쌓으면, 층이 아무리 많아도 결국 하나의 선형 변환과 같아요. 반면 ReLU를 중간중간 넣으면 입력과 출력의 관계를 더 복잡하게 표현할 수 있습니다....

2026년 10월 19일 · 2 min · 376 words · JongBin