“설계” 태그의 글
“설계” 태그가 붙은 글 26건을 최신순으로 정리했습니다.
-
멀티스레드 실무 베스트 프랙티스 Java 편 ── 가상 스레드 시대의 정석
Java 멀티스레드는 스레드를 직접 만들지 않고 ExecutorService와 가상 스레드에 맡기는 것이 정석입니다. synchronized와 ReentrantLock의 구분, interrupt를 통한 협력적 중단, ConcurrentHashMap의 원자적 연산, Swing EDT...
-
멀티스레드 실무 베스트 프랙티스 C 언어 편 ── Win32 API의 방식으로 안전하게 작성하기
C 언어 × Win32의 멀티스레드는 _beginthreadex로 스레드를 만들고, SRW 락과 조건 변수, Interlocked, 정지 이벤트+WaitForMultipleObjects로 정지를 설계하는 것이 정석입니다. TerminateThread의 위험과 DllMain의 제약까...
-
멀티스레드 실무 베스트 프랙티스 C++ 편 ── RAII와 jthread로 사고를 구조적으로 없애기
C++ 멀티스레드는 data race가 곧 undefined behavior가 되는 세계입니다. std::thread 소멸자의 함정, jthread와 stop_token으로 멈추는 설계, scoped_lock의 deadlock 회피, atomic의 자리, Win32 동기화 API와...
-
멀티스레드 실무 베스트 프랙티스 .NET 편 ── 스레드를 늘리기 전에 정해 둘 것
「스레드를 만들었더니 가끔 죽거나 멈춘다」를 막는 설계의 정석을 .NET/C# 대상으로 정리합니다. 스레드를 직접 만들지 않고 Task에 맡기기, 공유 가변 상태 줄이기, 락의 규율, CancellationToken으로 정지 설계하기, UI 스레드 다루기까지 설명합니다.
-
QR 코드를 읽은 값을 그대로 쓰면 안 됩니다 ── 오류 정정이 통과해도 값은 보장되지 않습니다
QR 코드의 오류 정정은, 정정이 통과하면 값이 맞다고 보장하는 장치가 아닙니다. 샘플 이미지와 decoder 2종으로 측정한 결과에서, 오염이 어디에 걸리느냐에 따라 다른 값으로 읽힐 수 있는 이유와 업무 시스템 쪽에 필요한 검증을 설명합니다.
-
Write-Host를 그만두기 ── PowerShell의 출력 스트림과 로그 설계
PowerShell 6가지 출력 스트림의 구분 사용, Write-Host가 가진 문제와 올바른 쓰임새, 함수 반환값이 오염되는 원인, -Verbose와 -InformationVariable로 호출 측에서 제어하는 방법, 구조화 로그를 남기는 방법을 정리합니다.
-
업무 시스템의 코드 설계 ── 상품 코드·고객 코드를 정하는 법과 check digit
상품 코드·고객 코드 등 업무 시스템의 코드 체계를 정하는 실무 가이드. 유의미 코드와 무의미 일련번호 판단표, JAN·Luhn 등의 check digit 산식과 C# 구현, Excel의 선행 0 소실 대책, 자릿수 초과와 이행까지 정리합니다.
-
ADR(Architecture Decision Record) 입문 ── 소규모 개발에서 '왜 이런 설계로 했는가'를 남기는 최소한의 방법
코드는 '왜 그렇게 했는지'를 말하지 않습니다. ADR(Architecture Decision Record)로 설계 판단의 이유를 결정 하나당 Markdown 파일 하나로 남기는 방법을, 템플릿과 쓸지 말지의 판단표, 실제 예와 함께 해설합니다.
-
「몇 초면 만족인가」를 빠뜨리지 않으려면 ── IPA 「비기능 요구 등급」으로 비기능 요구사항을 정리하기
「속도가 느리다」「장애 대응이 예상과 다르다」로 다투는 원인 대부분은 비기능 요구사항을 정하지 않은 데 있습니다. IPA 「비기능 요구 등급」의 6대 항목, 등급표와 모델 시스템 사용법, 현실적인 활용법을 발주 측이 이해하기 쉽게 설명합니다.
-
Windows 앱의 Web화, 하지 않는 편이 나은 경우 ── 판단표와 ‘분할’이라는 현실적 해법
장치 연동·로컬 파일 처리·오프라인 운영이 있는 Windows 앱에서는 Web화가 비용 증가와 기능 저하를 부를 수 있습니다. Web화에 맞는 경우와 맞지 않는 경우의 판단표, 그리고 일부만 Web으로 내보내는 분할 구성이라는 현실적 해법을 정리합니다.
-
Windows 세션 분리를 어떻게 이해할 것인가 ── Session 0·RDP·다중 사용자 동시 실행
Windows 앱 개발자가 혼동하기 쉬운 「세션」 개념을 정리합니다. 서비스가 UI를 띄울 수 없는 Session 0 분리의 이유, RDP 연결 시 세션의 동작, named object의 세션 분리, 공유 PC·RDS 환경에서 자주 나오는 설계 실수까지 실무 관점에서 설명합니다.
-
Windows의 프로세스 간 통신을 어떻게 고를까 ── Named Pipe / TCP / gRPC / 공유 메모리 / COM 판단표
Windows 앱끼리의 연동 수단을 어떻게 고를지 정리합니다. Named Pipe, 로컬 TCP, gRPC, 공유 메모리, 파일 연동, COM의 강점과 함정을 판단표로 정리하고, 정석 구성과 Named Pipe 구현 예까지 설명합니다.
-
Windows 앱 데이터 저장 위치 고르기 ── SQLite / JSON / 레지스트리 / Access 판단표
Windows 데스크톱 앱의 데이터를 어디에, 무엇으로 저장할지. AppData/ProgramData 구분, SQLite·JSON 파일·레지스트리·Access(.accdb) 각각의 강점과 함정을 판단표와 함께 정리하고, 손상 대책과 비트 수 문제까지 실무 관점에서 설명합니다.
-
예외 처리에서 catch와 로그는 어디에 두어야 하는가
깊은 helper에서 넓게 catch하는 것, 각 계층의 중복 로그, 원인을 가리는 결과화를 피하기 위해, 예외를 잡는 경계, 주 로그, 회복 판단의 책임을 정리합니다.
-
Windows에서 Sleep(1)보다 이벤트 대기를 우선해야 하는 이유
Windows에서는 짧은 timed wait의 정밀도가 system clock granularity와 스케줄링의 영향을 받습니다. 작업 도착이나 I/O 완료, 정지 요청을 기다린다면 일정 시간마다 폴링하지 말고 이벤트 구동으로 바꿔야 하는 이유를 정리합니다.
-
예기치 않은 예외가 났을 때 종료할지 계속할지 판단표
예상하지 못한 예외가 났을 때 앱을 종료할지 계속할지를, 상태 파괴·외부 부작용·스레드·네이티브 경계의 관점에서 정리합니다.
-
Windows 앱 개발 보안 최소 체크리스트
WPF / WinForms / WinUI / C++ / C# 업무 앱에서 권한, 서명, 업데이트, 비밀 정보, HTTPS, 입력 검증, DLL 로드, 로그의 기본을 체크리스트 형식으로 정리합니다.
-
.NET Generic Host란 - DI·설정·로그의 토대
Generic Host의 역할을 DI, 설정, 로그, IHostedService, BackgroundService의 관계로 정리하고, 어디서 효과가 나고 어디서 과한지를 실무 관점에서 정리합니다.
-
.NET Native AOT란 무엇인가 - JIT·trimming과의 차이
Native AOT가 무엇인지 JIT, ReadyToRun, self-contained, single-file, trimming, source generator와의 차이부터 정리하고, 잘 맞는 경우와 까다로운 경우를 실무 관점에서 정리합니다.
-
.NET 타이머 3종의 용도 구분 - PeriodicTimer/Timer/DispatcherTimer
PeriodicTimer / System.Threading.Timer / DispatcherTimer의 차이와, async 처리, ThreadPool callback, WPF UI 업데이트에서 어떻게 구분할지 정리합니다.
-
.NET Generic Host와 BackgroundService를 데스크톱 앱에서 쓰는 이유
Windows 도구나 상주 앱에서 시작, 주기 처리, 종료 처리, 로그, 설정, DI를 정리하기 위해 Generic Host와 BackgroundService를 어떻게 쓰는지 정리합니다.
-
FileSystemWatcher 실무 가이드 - 누락과 중복 대책
FileSystemWatcher 사용법과 주의점을 누락, 중복 알림, 완료 판정의 함정, 재스캔, 원자적 claim, idempotency 관점에서 정리합니다.
-
C# async/await 실무 판단표 - Task.Run과 ConfigureAwait
C# async/await 베스트 프랙티스를 I/O 대기, CPU 계산, Task.Run, ConfigureAwait(false), fire-and-forget 판단표와 함께 정리합니다.
-
평범한 Windows에서 소프트 리얼타임을 최대한 구현하기 위한 실전 가이드
평범한 Windows에서 주기 처리와 저지연 처리를 안정시키는 관점을 타이머 정밀도, 우선순위, 전원 설정, 모니터링 방법부터 정리합니다.
-
파일 연계의 배타 제어 기초 지식 - 파일 락과 원자적 claim의 베스트 프랙티스
파일 연계의 배타 제어를 파일 락, 원자적 claim, temp -> rename, idempotency 관점에서 정리하고, 공유 폴더 연계에서 사고를 피하는 설계를 정리합니다.
-
HCP 차트와 MakingHCPChartSkill 입문
HCP 차트가 무엇인지 설명하면서, MakingHCPChartSkill로 HCP-DSL을 결정적 SVG로 변환하는 흐름과 읽는 법, 사용법을 정리합니다.