본문 바로가기
반응형

전체 글347

c, c++ 임베디드 설계 비교 C (.c) vs C++ (.cpp) 기반 임베디드 설계 비교 정리요약항목C 기반 설계 (.c)C++ 기반 설계 (.cpp)주요 개념구조체 + 함수 분리클래스 (캡슐화, 상속, 다형성 등)상태/동작struct로 상태, function()으로 동작클래스 멤버 변수 + 멤버 함수로 통합모듈화파일 단위 (.c/.h) 모듈화객체 단위 (클래스) 모듈화의존성extern 또는 handle 방식참조(&) 또는 포인터 기반 의존성 주입싱글톤 처리전역변수 또는 getInstance() 직접 구현정적 멤버 or 싱글톤 패턴상속/다형성직접 구현 어렵고 불편명시적 지원 (virtual 등)코드 재사용성낮음 (구조체 확장 어려움)높음 (클래스 재사용 용이)초기화/생성자별도 init_XXX() 함수 필요생성자 자동 호출 가능컨텍.. 2025. 5. 21.
[c++] 로봇 시스템 상태 관리 및 로직 설계 c++에서 로봇 시스템 상태 관리 및 로직 설계 정리1. 시스템 구조의 계층화로봇을 소프트웨어로 제어할 때는 다음과 같이 3계층 구조로 나누는 것이 일반적Layer 1: 하드웨어 제어 (컨트롤러)MotorController, LedController, BuzzerControllerHAL 드라이버 기반으로 GPIO, PWM, UART 등을 직접 제어Layer 2: 역할 단위 매니저InputManager: 센서, 리모컨, 버튼 등 입력 수집OutputManager: 모터, LED, 부저 등 출력 실행LogicController: 입력에 따라 로직을 처리하고 행동을 결정Layer 3: 통합 객체 (예: Robot)Robot은 InputManager, OutputManager, LogicController를 통.. 2025. 5. 20.
[c++] 싱글톤 패턴 정리 C++ Singleton Pattern 정리🔷 개념Singleton은 애플리케이션 전체에서 하나의 인스턴스만 존재하도록 보장하는 디자인 패턴입니다.✅ 핵심 특징항목설명인스턴스 유일성정적 멤버로 하나의 인스턴스를 내부에 보관접근 제어정적 getInstance() 함수로만 인스턴스 접근 가능생성자 제한생성자는 private 또는 protected로 막음복사/이동 금지복사 생성자, 대입 연산자 삭제로 복제 차단🛠️ 기본 구현 예제🔹 Singleton.hpp#pragma onceclass Singleton {public: static Singleton& getInstance(); // 전역 인스턴스 접근 void doSomething(); // 예시 함수private: Singleton(); .. 2025. 5. 19.
[Nextra] 다크모드 드롭다운 겹침 문제 해결 Nextra 다크모드 드롭다운 겹침 문제 해결 내용 요약🧩 문제 상황nextra의 기본 테마 토글 UI에서 아래와 같이 드롭다운(select) 메뉴에 선택된 옵션이 표시될 때, 글자 위에 체크 표시(✔️) 아이콘이 겹쳐서 보이는 현상이 발생했음📌 원인 분석HTML 요소는 브라우저 기본 스타일을 사용하며, 각 브라우저가 선택된 에 체크 표시를 자동으로 렌더링하는 경우가 있음특히 Safari 및 일부 Chromium 기반 브라우저에서 선택된 항목에 대해 다음과 같은 특징을 보임✔ 또는 ✓ 등의 마크가 텍스트 위에 겹쳐 보임사용자 스타일로 쉽게 덮어쓰기 어려움::before 또는 ::after 스타일로 컨트롤할 수 없음 (Shadow DOM 내부)✅ 해결 방법1. CSS로 강제로 겹침 제거select[d.. 2025. 5. 18.
[STM32] 인터럽트를 DMA로 바꾸어야 하는 경우 Interrupt to DMA1. 반복적으로 고정된 크기의 패킷을 받을 경우라면 DMA 방식이 압도적으로 유리2. 아래에서 구체적으로 차이를 요약🎯 핵심 차이 요약항목 인터럽트 방식 (RXNE, if문으로 길이 확인) DMA 방식 (지정 크기 수신 후 자동 콜백)항목인터럽트 방식 (RXNE, if문으로 길이 확인)DMA 방식 (지정 크기 수신 후 자동 콜백)수신 처리 방식바이트마다 인터럽트 발생 → if() 조건으로 수동 처리지정된 패킷 길이만큼 수신 후 콜백 한 번 발생코드 구조루프 및 상태 머신 필요 (state, index, length 등)버퍼에 자동 수신 → 콜백 함수에서 한 번에 처리CPU 부하바이트마다 인터럽트 발생 → 매우 빈번한 ISR 진입데이터 다 들어오면 한 번 콜백 → ISR 진입.. 2025. 5. 17.
여러 UART, DMA 기반 센서 수신 구조로 문제 해결 여러 UART 수신 문제 해결: Interrupt에서 DMA 기반 센서 수신 구조로 변경📌 문제 개요3개의 센서에서 각기 다른 UART 포트를 통해 거리 데이터를 수신각 센서에서 전송되는 데이터는 고정 크기이며, 패킷 단위로 수신 필요초기에는 UART 인터럽트 기반 수신을 구현했지만, 다음과 같은 문제 발생UART 인터럽트 방식으로는 3개 패킷이 모두 수신되지 않거나,1~2개만 수신되는 경우가 빈번함패킷 수신 시점과 구조체 조립 간의 타이밍 오차, 인터럽트 지연 문제✅ 개선 방식: DMA 기반 UART 수신 전환각 UART 포트에 대해 HAL_UART_Receive_DMA()를 사용해 지정된 크기만큼 패킷 단위 수신 설정DMA 수신 완료 시 HAL_UART_RxCpltCallback()에서 각 패킷을 .. 2025. 5. 16.
[Next.js] 이미지 로딩 처리 3가지 방식과 비교 이미지 로딩 처리 3가지 방식 정리 및 비교1. Notion, S3, 외부 API 등에서 이미지 URL을 불러올 때, Next.js 프로젝트에서 사용자 친화적으로 제공해야 함2. 안정적이고 사용자 친화적으로 보여주기 위한 아래 3가지 처리 방식을 정리 및 비교 1. 단순 오류 처리 (onError fallback) 2. 로딩 상태 추가 (useState + Spinner) 3. SSG/SSR 캐싱 방식 고려 (getStaticProps → getServerSideProps)✅ 방식 1: 단순 오류 처리 (onError fallback) 예제 setImageError(true)}/>장점로딩 실패 시 cover image 텍스트로 대체 가능구현이 매우 간단함단점로딩 중 상태가 없음 (사용자에게 흰 화.. 2025. 5. 15.
STM32 Power Mode 총 정리 STM32 Power Mode(RUN, LPRUN, SLEEP, STOP, STANDBY, SHUTDOWN, VBAT) 정리RTOS 기반에서도 적용되는 저전력 전략 총 정리🧠 PWR 모드 개요1. STM32 시리즈는 뛰어난 전력 효율을 제공하기 위해 다양한 전원 관리 모드(Power Modes)를 지원2. RTOS 환경에서도 osDelay()와 같은 함수와 병행해 아래의 저전력 모드를 적절히 조합하면 배터리 수명 연장, 열 발생 최소화, 시스템 응답 최적화에 큰 도움이 됨🔋 STM32 전력 모드 요약표모드동작 상태 요약소비 전력 🔋복귀 속도 ⏱RAM 유지 🧠상태 유지 📦RUNCPU 및 모든 클럭 정상 동작🔼 높음-✅✅LPRUNCPU 저속 클럭에서 동작⬇️ 낮음-✅✅SLEEPCPU 정지, 주변장.. 2025. 5. 14.
[Next.js] SSG, CSR, SSR 비교 및 props 형태 정리 Next.js에서 SSG vs CSR vs SSR 및 props 형태 정리프론트엔드 성능, 사용자 경험, SEO를 모두 고려한 선택을 위해 렌더링 방식과 데이터 패칭 방식을 정확히 이해해야 함Next.js는 대표적으로 다음 3가지 렌더링 방식을 제공1️⃣ SSG (Static Site Generation)사용 함수: getStaticProps실행 시점: 빌드 타임에 한 번HTML 생성 위치: 서버 → 정적 파일로 저장특징:빠른 로딩 속도 (CDN 활용)SEO에 최적화됨데이터가 자주 바뀌지 않는 페이지에 적합사용 예시export const getStaticProps = async () => { const data = await fetchData(); return { props: { data } };};.. 2025. 5. 13.
[Next.js] getStaticProps, getServerSideProps 비교 Next.js에서 Static vs Server-side 렌더링 전략과 이미지 만료 문제 해결1. Next.js로 블로그나 포트폴리오 사이트를 구축할 때, 정적인 콘텐츠를 보여줄지 동적인 데이터를 서버에서 실시간으로 가져올지 결정하는 것이 중요2. 특히 Notion이나 S3에서 이미지를 받아올 때는 signed URL 만료 문제로 인해 렌더링 전략에 따른 문제가 발생할 수 있음📌 Static Generation (getStaticProps)✅ 장점최고의 성능: HTML을 빌드 타임에 생성 → CDN에서 서빙낮은 서버 부하: 서버 호출 없음빠른 로딩: 사용자 요청 시 바로 정적 페이지 제공❌ 단점데이터가 오래될 수 있음: 빌드 이후 변경된 데이터 반영이 느림Signed URL 이미지 사용 시 만료 문제 .. 2025. 5. 12.
반응형