<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://blog.gudtldn.dev/</id><title>평범한휴먼의 개발일지</title><subtitle>여러가지 개발과 공부내용을 정리해 올리는 블로그 입니다.</subtitle> <updated>2026-04-13T21:22:25+09:00</updated> <author> <name>hyongsiwoo</name> <uri>https://blog.gudtldn.dev/</uri> </author><link rel="self" type="application/atom+xml" href="https://blog.gudtldn.dev/feed.xml"/><link rel="alternate" type="text/html" hreflang="ko-KR" href="https://blog.gudtldn.dev/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 hyongsiwoo </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>C++ std::atomic (1): 원자적 연산과 메모리 모델(Memory Model)</title><link href="https://blog.gudtldn.dev/posts/cpp_atomic_core/" rel="alternate" type="text/html" title="C++ std::atomic (1): 원자적 연산과 메모리 모델(Memory Model)" /><published>2026-03-13T00:00:00+09:00</published> <updated>2026-03-13T00:00:00+09:00</updated> <id>https://blog.gudtldn.dev/posts/cpp_atomic_core/</id> <content type="text/html" src="https://blog.gudtldn.dev/posts/cpp_atomic_core/" /> <author> <name>hyongsiwoo</name> </author> <category term="C++" /> <summary>1. 개요 현대 멀티스레딩 환경에서 스레드 간 안전한 데이터 공유는 필수적이지만, std::mutex같은 OS기반 Lock은 무겁고, OS의 스케줄링으로 인한 컨텍스트 스위칭 비용이 발생하게 됩니다. C++의 std::atomic은 멀티스레딩 환경에서 OS차원의 Lock없이 안전하게 공유 자원에 접근할 수 있도록 도와주는 라이브러리입니다. 이번 글에서는 다음의 주제들을 다룰 예정입니다: std::atomic의 원리: 왜 일반 변수의 연산은 멀티스레드에서 안전하지 않은가? std::memory_order와 메모리 모델: CPU와 컴파일러의 명령어 재배치(Reordering)를 어떻게 제어할 것인가? CAS(Compare-And-Swap) 연산: Lock-free 알고리즘의 핵심인 .c...</summary> </entry> <entry><title>CMake를 활용한 ICU4X C++ 환경 구축</title><link href="https://blog.gudtldn.dev/posts/icu4x_using_from_cpp/" rel="alternate" type="text/html" title="CMake를 활용한 ICU4X C++ 환경 구축" /><published>2026-02-23T00:00:00+09:00</published> <updated>2026-02-23T00:00:00+09:00</updated> <id>https://blog.gudtldn.dev/posts/icu4x_using_from_cpp/</id> <content type="text/html" src="https://blog.gudtldn.dev/posts/icu4x_using_from_cpp/" /> <author> <name>hyongsiwoo</name> </author> <category term="C++" /> <summary>1. 개요 ICU4X는 Rust로 작성된 국제화 라이브러리로, C++에서도 사용할 수 있도록 FFI(외부 함수 인터페이스)를 제공합니다. 이번 글에서는 CMake를 활용하여 ICU4X를 C++ 프로젝트에 통합하는 방법을 설명하겠습니다. 2. 사전 준비 사항 Rust Toolchain 설치: ICU4X 핵심 로직 컴파일을 위한 cargo 및 rustc가 필요합니다. C++ 컴파일러 설치: C++17 이상을 지원하는 컴파일러가 필요합니다. (GCC, Clang, 또는 MSVC) CMake 설치: 프로젝트 빌드 시스템으로 CMake를 사용합니다. git 설치: CMake에서 FetchContent 모듈을 사용하여 ICU4X 소스를 가져올 때 필요합니다. 3. CMakeLists.tx...</summary> </entry> <entry><title>C++26 계약 프로그래밍(Contracts)</title><link href="https://blog.gudtldn.dev/posts/cpp_contracts/" rel="alternate" type="text/html" title="C++26 계약 프로그래밍(Contracts)" /><published>2026-01-19T00:00:00+09:00</published> <updated>2026-03-21T00:00:00+09:00</updated> <id>https://blog.gudtldn.dev/posts/cpp_contracts/</id> <content type="text/html" src="https://blog.gudtldn.dev/posts/cpp_contracts/" /> <author> <name>hyongsiwoo</name> </author> <category term="C++" /> <summary>1. 개요 C++26부터 계약 프로그래밍(Contracts) 기능이 도입되었습니다. 기존의 assert 매크로가 단순히 런타임에 로직을 체크하는 디버깅 도구였다면, Contracts는 함수의 제약 사항을 언어적 차원에서 명시하는 강력한 기능을 제공합니다. 덕분에 개발자는 주석 대신 코드로 함수의 제약 사항을 명확히 명시할 수 있고, 컴파일러는 이 조건을 바탕으로 최적화에 활용하거나 정적 분석 시 잠재적인 버그를 더 정교하게 잡아낼 수 있습니다. 2. 새로 추가된 문법 및 기능 이번 C++26에서 Contracts를 위해 다음과 같은 새로운 문법이 추가되었습니다. 2.1. 사전 조건(pre) 및 사후 조건(post) 아래 코드와 같이 함수 선언부에 직접 제약 조건을 명시하여 검사할 수 있습니다...</summary> </entry> <entry><title>BOJ 2579 - 계단 오르기 | Rust 풀이</title><link href="https://blog.gudtldn.dev/posts/boj_2579/" rel="alternate" type="text/html" title="BOJ 2579 - 계단 오르기 | Rust 풀이" /><published>2025-12-14T00:00:00+09:00</published> <updated>2025-12-14T00:00:00+09:00</updated> <id>https://blog.gudtldn.dev/posts/boj_2579/</id> <content type="text/html" src="https://blog.gudtldn.dev/posts/boj_2579/" /> <author> <name>hyongsiwoo</name> </author> <category term="BOJ" /> <summary>1. 문제 분석 백준 2579 - 계단 오르기 위 문제의 핵심 조건과 목표을 정리하면 다음과 같이 요약할 수 있습니다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 계단은 반드시 밟아야 한다. 최종적으로 마지막 계단에 도달했을 때의 점수 합의 최댓값을 구하는 것이 목표입니다. 2. 접근 방법 이 문제는 동적 계획법(Dynamic Programming, DP)을 사용하여 해결할 수 있습니다. 왜 DP를 선택했는가? 이 문제는 이전 단계까지의 최적해(작은 문제)를...</summary> </entry> <entry><title>C++26 컴파일 타임 리플렉션(Reflection)</title><link href="https://blog.gudtldn.dev/posts/cpp_reflection/" rel="alternate" type="text/html" title="C++26 컴파일 타임 리플렉션(Reflection)" /><published>2025-07-13T00:00:00+09:00</published> <updated>2025-07-26T00:00:00+09:00</updated> <id>https://blog.gudtldn.dev/posts/cpp_reflection/</id> <content type="text/html" src="https://blog.gudtldn.dev/posts/cpp_reflection/" /> <author> <name>hyongsiwoo</name> </author> <category term="C++" /> <summary>이 글은 C++26 초안(P2996R13)과 bloomberg/clang-p2996 리플렉션 구현을 기반으로 작성되었습니다. C++26 표준이 확정되기 전까지는 내용이 부정확하거나 변경될 수 있습니다. 1. 개요 이번 C++26 표준에서는 많은 C++ 개발자들이 오랫동안 기다려온 기능인 컴파일 타임 리플렉션(Reflection)이 도입될 예정입니다. 리플렉션(Reflection)이란? 리플렉션은 프로그램이 자신의 구조를 검사하고 수정할 수 있는 능력을 말합니다. 지금까지는 C++에서 리플렉션을 구현하기 위해 매크로, 템플릿 메타프로그래밍, 외부 라이브러리 등을 사용해야 했지만, C++26에서부터 리플렉션을 위한 공식적인 문법이 도입되어, 보다 직관적이고 간편하게 리플렉션 기능을 사용할 ...</summary> </entry> </feed>
