전체 글 149

계층형 상태 머신(HFSM) 개념과 구조 정리

계층형 상태 머신(HFSM, Hierarchical Finite State Machine)1. 개념계층형 상태 머신(HFSM)은 기존의 FSM(Finite State Machine)을 확장하여상태를 계층(위계) 구조로 관리하는 상태 제어 기법이다.기본 FSM은 모든 상태가 평면적으로 나열되어 있지만,HFSM은 다음과 같은 구조를 가진다.상위 상태(Super State)하위 상태(Sub State)즉, 상태 간에 “부모-자식 관계” 또는 “상위-하위 관계”가 존재하며,공통 행동을 묶어 재사용할 수 있고,복잡한 상태 구조를 더 깔끔하고 유연하게 만들 수 있는 방식이다.2. 왜 HFSM이 필요한가?✔ 1) FSM의 가장 큰 문제: 상태 폭발(State Explosion)평면 FSM에서는 상태가 늘어날수록 상태..

개발기법·CS 11:27:45

Kubernetes Service는 Pod를 어떻게 찾을까

처음 Kubernetes Service를 공부하면 보통 이렇게 이해한다.Service가 Pod를 찾아서 요청을 보내준다.틀린 말은 아니다. 하지만 이 설명만으로는 중요한 한 축이 빠져 있다.왜냐하면 실제로는 Service와 Pod 사이에, 상태를 감시하고 연결 가능한 대상을 갱신하는 중간 계층이 있기 때문이다.이 글에서는 Kubernetes에서 Service가 실제로 Pod를 어떻게 찾는지, 그 흐름을 초보자 관점에서 정리한다.먼저 결론부터Service는 Pod IP를 직접 들고 다니는 리소스가 아니다.실제 흐름은 대략 이렇게 이해해야 한다.Service는 selector를 가진다Kubernetes가 그 selector와 일치하는 Pod를 찾는다그 결과를 Endpoints 또는 EndpointSlice로..

자바 스레드 동시성과 병렬성 차이 정리

1. 동시성과 병렬성의 본질스레드를 이해할 때 반드시 알아야 하는 개념이 바로 동시성(Concurrent Execution) 과 병렬성(Parallel Execution) 이다.✔ 동시성(Concurrency)"여러 작업이 번갈아가며 실행되는 것처럼 보이는 상태"싱글코어에서도 가능컨텍스트 스위칭으로 인해 동시처럼 보임예: CPU가 5ms 동안 A 실행 → 5ms 동안 B → 다시 A …즉, 물리적으로는 동시에 실행되지 않아도 "겉보기"에는 함께 실행되는 것처럼 보인다.✔ 병렬성(Parallelism)"여러 작업이 실제로 같은 순간에 실행되는 상태"멀티코어 CPU에서만 가능예: 8코어 CPU → 같은 순간에 8개의 스레드 실행✔ 비교 표구분동시성병렬성실행 방식교대로 실행동시에 실행필요 조건싱글/멀티코어 모..

자바&스프링 11:26:22

Flutter Column Row와 축(Axis) 정렬 정리

Flutter에서 레이아웃을 처음 배울 때 가장 많이 쓰는 위젯이 Column과 Row다.이 둘을 잘 이해하면 대부분의 화면 배치를 해결할 수 있다.그런데 mainAxisAlignment와 crossAxisAlignment가 등장하는 순간 헷갈리기 시작한다.이번 글에서는 이 두 개념을 축(axis)의 관점에서 명확하게 정리한다.1. Column과 Row의 차이Column과 Row는 자식 위젯 여러 개를 받아 나란히 배치하는 위젯이다. 차이는 방향뿐이다.Column: 자식들을 **세로(위에서 아래)**로 배치Row: 자식들을 **가로(왼쪽에서 오른쪽)**로 배치// 세로 배치Column( children: [ Text('첫 번째'), Text('두 번째'), Text('세 번째'), ]..

Flutter&Dart 11:25:25

LLM이란? 대규모 언어 모델 동작 원리 정리

1. 📌 LLM이란 무엇인가✔ 정의**LLM(Large Language Model)**은👉 대량의 텍스트 데이터를 학습하여, 주어진 문맥(context)을 기반으로 다음 토큰을 예측하는 확률 모델이다.✔ 핵심 개념LLM의 본질은 단 하나:👉 Next Token Prediction (다음 토큰 예측)문장 생성, 번역, 요약, 코드 작성👉 전부 결국 이 원리의 확장이다.✔ 수식으로 표현LLM은 다음 확률을 모델링한다:P(w₁, w₂, ..., wₙ)이를 체인 룰로 분해하면:P(wₙ | w₁, w₂, ..., wₙ₋₁)👉 즉,“이전 문맥을 기반으로 다음 토큰의 확률을 계산”2. 🔤 토큰(Token)과 텍스트 처리✔ 토큰이란?LLM은 단어가 아니라 토큰 단위로 입력을 처리토큰은 문자열을 쪼갠 최소 단..

CSS display 속성 block inline 차이 정리

display는 HTML 요소가 화면에서 어떻게 배치되고, 크기(width/height)를 가질 수 있는지를 결정하는 속성이다.display: block정의한 줄 전체를 차지하는 요소다음 요소는 반드시 다음 줄로 내려감특징width, height 적용 가능기본 너비는 부모의 100%대표 태그div, p, h1~h6, ul, li 1 1 1 1 1 1 display: inline정의글자처럼 한 줄 안에서 흐름을 따라 배치특징❌ width, height 적용 안 됨콘텐츠 크기만큼만 영역 차지줄바꿈 없음대표 태그span, a, strong, em 1 1 1 display: inline-block정의inline + block의 하이브리..

웹 기초 11:24:07

Addressable 구조로 리소스 에셋 관리하기

현대 소프트웨어에서는리소스의 양과 종류가 매우 많아지고 있다.예:이미지사운드영상UI 데이터설정 파일다운로드 콘텐츠원격 리소스등.문제는 프로젝트 규모가 커질수록리소스를 단순 파일 경로 기반으로 관리하는 방식에 한계가 생긴다는 것이다.예:"/assets/ui/main/button.png"같은 직접 경로 접근 방식은:경로 변경에 취약하고플랫폼 의존성이 강하며원격 다운로드 대응이 어렵고비동기 로딩 관리가 복잡해진다.이를 해결하기 위해 등장한 개념이바로 Addressable-like 구조 이다.📌 Addressable-like 구조란?Addressable-like 구조는리소스를 “주소(Address)” 기반으로 관리하는 시스템 구조를 의미한다.즉:파일 경로 직접 접근 X논리적 주소(Key) 기반 접근 O하는 방..

개발기법·CS 11:23:34

DDD 도메인 주도 설계 개념과 필요성 정리

1. DDD란?DDD(Domain-Driven Design)는비즈니스 도메인을 중심으로 소프트웨어를 설계하는 방법론이다.👉 쉽게 말하면“코드가 아니라, 비즈니스 자체를 기준으로 설계하자”2. 도메인이란?여기서 말하는 “도메인(Domain)”은서비스가 해결하려는 문제 영역을 의미한다.📌 예시 (쇼핑몰)주문 (Order)결제 (Payment)회원 (User)재고 (Stock)👉 이 각각이 도메인이다3. 왜 DDD가 필요한가?프로젝트가 커질수록 이런 문제가 생긴다:❌ 문제 상황코드가 비즈니스와 따로 논다어디서 무엇을 하는지 알기 어렵다기능이 서로 얽혀 있음유지보수 어려움✅ DDD 목표“코드 구조 = 비즈니스 구조”즉,OrderService → 주문 처리PaymentService → 결제 처리👉 이렇게 ..

자바 try-catch 예외 처리 문법 정리

try–catch는 프로그램 실행 중 발생할 수 있는 예외(Exception)를 안전하게 처리하기 위한 문법이다.정상 흐름에서 벗어나는 오류가 발생하더라도 프로그램 전체가 멈추지 않도록 예외 상황을 감싸서 관리하는 역할을 한다.1. try–catch의 기본 구조try { // 예외가 발생할 가능성이 있는 코드} catch (ExceptionType e) { // 예외가 발생했을 때 실행되는 코드}try 블록 안에는 예외가 발생할 가능성이 있는 코드를 작성한다.catch 블록은 특정 예외 타입을 잡아서 처리하는 영역이다.예외가 발생하면 즉시 try 블록의 나머지 코드는 건너뛰고 catch로 넘어간다.2. 왜 try–catch를 사용해야 할까?자바는 안정성이 중요한 언어이기 때문에 예외를 무시하거..

자바&스프링 11:22:30

Dart 콜백과 named parameter로 버튼 클래스 만들기

Flutter를 배우기 시작하면 버튼, 입력창, 카드처럼 화면에 보이는 요소를 계속 객체로 만들게 된다. 이때 중요한 문법이 named parameter, required, 이름있는 생성자, callback, mixin이다.ex02/test01.dart의 Button 예제는 이런 문법을 하나의 작은 UI 부품처럼 묶어서 연습한다. 실제 Flutter 위젯은 아니지만, Flutter 위젯 생성자와 이벤트 처리 방식을 이해하기 좋은 형태다.mixin으로 공통 기능 섞기mixin class SoundEffect { void alarm() { print("🕜 [오디오 출력] ~~ 띠링"); }}class Button with SoundEffect { // ...}SoundEffect는 버튼이 사용할..

Flutter&Dart 11:21:38