본문으로 건너뛰기

조준화의 오류정정

개발하면서 막혔던 것,
공부하며 새로 알게 된 것을 적습니다.

전체

전체 글 230

Rust가 임베디드에 적합한 이유: 소유권, trait, no_std

Rust는 소유권과 빌림 규칙으로 메모리 사용을 검사하고, trait으로 하드웨어 구현과 상위 로직을 분리할 수 있다. 이 글에서는 소유권, 정적·동적 디스패치, Cargo 기반 크로스 컴파일, embedded-hal과 no_std를 통해 Rust가 임베디드 개발에 적합한 이유를 정리한다.MCU와 Cortex-M, STM32의 관계가 아직 헷갈린다면 임베디드 입문: MCU·Cortex-M·STM32·펌웨어의 차이를 먼저 읽어보자.1. 소유권: 메모리를 해제하는 것보다 중요한 문제Rust의 핵심은 소유권에 있다. 컴파일러는 값의 소유자가 누구인지뿐 아니라, 다른 코드가 그 값을 어떤 방식으로 빌려 쓰는지와 참조가 언제까지 유효한지도 엄밀하게 검사한다. 소유권이 없어도 값을 잠깐 빌려서 수정할 수 있지만, ..

임베디드 입문: MCU·Cortex-M·STM32·펌웨어의 차이

Cortex-M은 CPU 코어 계열이고, STM32는 이를 사용하는 MCU 제품군이다. 보드는 MCU와 전원·클록 등 주변 회로를 구성한 기판이며, 펌웨어는 그 하드웨어에서 실행되는 소프트웨어다. 이 글에서는 이 관계를 시작으로 bare-metal, MMIO, 인터럽트, 크로스 컴파일, 링커와 HAL이 어떻게 연결되는지 정리한다.Firmware임베디드 시스템은 특정한 목적을 수행하기 위해 하드웨어와 소프트웨어가 함께 구성된 시스템이다. 키보드, 가전제품, 자동차 제어기, 센서 장치 등 우리가 흔히 사용하는 많은 장치가 여기에 해당한다.이러한 장치 내부에서 하드웨어를 제어하며 실행되는 소프트웨어를 보통 Firmware라고 부른다.Embedded Device├─ Hardware└─ Firmware일반적인 P..

임베디드 SW 2026.09.28

코드 커버리지 100%여도 버그가 남는 이유: 퍼징과 Mutation Testing | QA 없이 코드 품질 잡기 1탄

코드 커버리지가 100%여도 프로그램에 버그가 없다는 뜻은 아니다. 커버리지는 코드가 실행됐는지를 보여주지만, 모든 입력을 검증했는지 또는 잘못된 결과를 테스트가 감지하는지까지 보장하지는 않는다. 이 글에서는 스텁 기반 테스트의 한계와 함께 Coverage, Fuzzing, Mutation Testing이 각각 어떤 빈틈을 확인하는지 비교한다.모든 서비스를 개발하고 배포할 때, 충분한 개발자 테스트와 QA를 거치기는 어렵다. 특히 요즘에는 AI가 작성하는 코드를 100% 다 이해하고 배포하는 개발자는 매우 적으며, 코드의 품질과 안정성을 가져가는 것은 더욱 어려워지고 있다.코드 리뷰만으로 이 문제를 해결하기도 어렵다. 한 번의 PR에 10000+ line 이상의 변경이 우습게 발생하는데, 이걸 어떻게 다..

메이플 플래닛 레벨업 및 템세팅 가이드

레벨업 가이드8~10메이플 아일랜드 → 리스항구 → 노틸러스 이동Lv.8 메이플 멤버샵초반 EXP선택. 지나가며 처리10~20노틸러스 초보 해적 수련장, 헤네시스 사냥터2~3Lv.10 초보 해적 수련 / 카이린 연계스텀프는 무서워 (악어퇴치 선행)버섯을 연구하는 이유 (악어퇴치 선행)초반 EXP, 포션, 해적 기본 동선건슬이면 추천20~25월묘 파퀘, 돼지 파퀘없음 또는 직업 퀘스트 잔여분파퀘 EXP파티 있으면 파퀘 우선25~30개미굴1~4Lv.20 현상수배 뿔버섯, Lv.22 현상수배 좀비버섯소량 EXP사냥 겸 처리30~40버섯왕국 / 버섯의 성 전체 동선Lv.30 버섯왕국 전체 퀘스트대량 EXP, 칭호 올스탯 +2, HP/MP +100, 페페킹 주문서 계열필수급30~40노틸러스호 내부Lv.30 구멍난..

카테고리 없음 2026.05.23

[백준] 1800번: 인터넷 설치 C++ - 다익스트라가 메인 로직이 아닐 수 있다. 결정 문제의 비밀을 알려드립니다. 💀💀☠️☠️😎

https://www.acmicpc.net/problem/1800 문제를 분석해보면1. 다익스트라로 1->N까지의 경로는 구할 수 있다.2. 하지만 그 경로가 정답인지 확정할 수 없다.3. 문제는 "최대 비용을 최소화" 하라는 최적화 문제이다. 최적화 문제의 변수를 "mid"라 하자. 답을 저장할 변수를 mid라 하는 것이다.원래의 문제는 1->N 경로 중 최대 요금이 가장 작은 mid를 찾는 것이다.이를 결정 문제로 변경하면 1->N 경로 중 최대 요금을 mid 이하로 만들 수 있을까? 가 된다.mid로 경로를 경로를 만들었는데 해당 경로의 요금이 mid 초과인 수를 셌을 때 K 초과라면?mid로는 답을 낼 수 없다. 현재 mid 보다 더 큰 요금을 상한선으로 잡아야 한다.반대라면 현재의 mid도 가능..

[백준] 15732번: 도토리 숨기기 - 왜 이분탐색인가?

입력 조건을 보자.상자의 개수 N(1 ≤ N ≤ 1,000,000)과 규칙의 개수 K(1 ≤ K ≤ 10,000), 도토리의 개수 D(1 ≤ D ≤ 1,000,000,000)가 주어진다.가장 쉽게 떠올릴 수 있는 방식은?브루트포스이다. 하나의 규칙에 대해 N개의 상자를 모두 돌면서 개수를 세야하니 O(NK)가 되어서 시간초과가 된다.O(NK)가 문제이고... k개의 규칙에서 상자 순회가 존재해서는 안된다는 뜻이다.그런데 하나의 규칙을 보면 [a, b]에서 간격 c로 도토리를 넣을 때 a~b 구간의 총 도토리 개수는 O(1)로 구할 수 있다.수식은 대충 (b-a)/c + 1 정도가 되겠다. 그럼 k개의 규칙에 대해 O(k)로 구간 [1, n]에 대해서 총 도토리 개수를 구할 수 있는 것이다. 이제 가닥이 ..

[백준] C++ 풀이 22866번: 탑 보기 - 이게 스택이라고??

https://www.acmicpc.net/problem/22866 상당히 어렵게 풀었다..각설하고 우선 완전탐색 풀이는 굉장히 쉽지만 n이 100,000이기에 불가능하다. n log n이나 n으로도 풀어야 한다. 한 번의 순회가 최대라는 것이다. (log n으로는 순회가 불가능하니 n log n이면 보통 한 번의 순회에서 log n짜리 처리를 하는 것) 이런저런 생각을 해보며 한 번의 순회로 어떻게 풀 수 있을까 고민을 해봤다. 일단 몇 가지 핵심 포인트를 찾았는데순회가 두 번은 일어나야 한다. n^2이 아니라 2n인 것. 왜냐하면, 한 번 스캔으로는 절대 모든 케이스를 찾을 수 없다. 왼쪽 -> 오른쪽 / 오른쪽 -> 왼쪽으로 잡아두자.i번째 건물에서 딱 오른쪽 방향으로만 보이는 방향을 관찰하면 무언..

소켓 통신 기술의 변화. 왜 멀티플렉싱인가?

epoll과 멀티플렉싱1. 전통적인 웹소켓 통신Blocking IO 기반의 멀티스레드 방식이다. 클라이언트가 accept()으로 요청하면 새로운 스레드를 생성하고, 생성된 스레드는 해당 클라이언트와 데이터 송수신을 전담한다. 이 과정에서 accept(), read(), write()와 같은 IO 함수들은 데이터가 준비될 때까지 해당 스레드를 Blocking 시킨다.따라서 특정 클라이언트의 느린 IO가 존재한다면 그 클라이언트의 해당 워커 스레드는 Block 된다. 즉, 일시정지된다.2. Non-blocking I/ONon Blocking IO는 IO 작업을 요청했을 때 그 작업이 끝날 때까지 기다리지 않고 즉시 다음 코드를 실행하는 방식이다. 조금 더 정확히 말하자면 제어권을 반환하는 방식이다.fcntl..

CS/Computer Network 2025.08.19

RDBMS와 NoSQL에 대한 고찰

RDBMS, NoSQL1. RDBMSRDBMS는 데이터를 관계를 통해 관리하는 시스템이다. 여기서 관계는 테이블로 표현되며 2차원 구조이다.주요 특징Schema-on-Write : 데이터를 저장하기 전 테이블의 구조를 명확히 정의해야 한다.데이터 무결성 보장 : PK, FK 등의 제약 조건을 통해 데이터의 중복을 방지하고 관계의 유효성을 보장한다.SQL (Structured Query Language)트랜잭션 (Transaction)과 ACID 원칙RDBMS는 SQL을 사용할 수 있으며 데이터의 일관성과 신뢰성이 매우 높다. 하지만 그만큼 스키마를 미리 정의하기에 데이터 구조를 변경하기 어렵다. 또한 수평적 확장이 구조적으로 어렵고 JSON, XML 등의 비정형 데이터를 저장하고 처리하기에 비효율적이다...

CS/Database System 2025.08.19

블로그 검색

Enter로 검색 · Esc로 닫기

모든 글 둘러보기

카테고리