“설계” 태그의 글
“설계” 태그가 붙은 글 26건을 최신순으로 정리했습니다.
-
멀티스레드 실무 베스트 프랙티스 Java 편 ── 가상 스레드 시대의 정석
Java의 멀티스레드는 스레드를 직접 만들지 않고 ExecutorService와 가상 스레드에 올라타는 것이 정석입니다. synchronized와 ReentrantLock의 구분, 인터럽트에 의한 협조적 정지, ConcurrentHashMap의 원자적 연산, Swing의 EDT까지...
-
멀티스레드 실무 베스트 프랙티스 C 언어 편 ── Win32 API의 방식으로 안전하게 작성하기
C 언어 × Win32의 멀티스레드는 _beginthreadex를 이용한 스레드 생성, SRW 잠금과 조건 변수, Interlocked, 정지 이벤트+WaitForMultipleObjects의 정지 설계가 정석입니다. TerminateThread의 위험성과 DllMain의 제약까지...
-
멀티스레드 실무 베스트 프랙티스 C++ 편 ── RAII와 jthread로 사고를 구조적으로 없애기
C++의 멀티스레드는 데이터 경쟁이 미정의 동작이 되는 세계입니다. std::thread 소멸자의 함정, jthread와 stop_token에 의한 정지 설계, scoped_lock의 데드락 회피, atomic의 올바른 위치, Win32 동기화 API와의 구분 사용까지 정리합니다.
-
멀티스레드 실무 베스트 프랙티스 .NET 편 ── 스레드를 늘리기 전에 정해둘 것
「스레드를 만들면 가끔 죽거나 멈춘다」를 막는 설계의 정석을 .NET/C# 대상으로 정리합니다. 스레드를 직접 만들지 않고 Task에 올라타기, 공유 가변 상태 줄이기, 락의 규율, CancellationToken을 통한 정지 설계, UI 스레드 다루기까지 설명합니다.
-
QR코드 판독값을 그대로 사용해서는 안 된다 ── 오류 정정이 통과해도 값은 보장되지 않는다
QR코드의 오류 정정은 정정이 통과한다고 해서 값이 올바르다고 보장하는 구조가 아닙니다. 샘플 이미지와 두 종류의 디코더를 이용한 실측을 바탕으로, 손상이 발생하는 위치에 따라 다른 값으로 읽혀 버리는 이유와 업무 시스템 측에 필요한 검증을 설명합니다.
-
Write-Host를 그만두다 ── PowerShell의 출력 스트림과 로그 설계
PowerShell 6가지 출력 스트림의 구분 사용법, Write-Host가 안고 있는 문제와 올바른 쓰임새, 함수의 반환값이 오염되는 원인, -Verbose나 -InformationVariable을 통한 호출 측 제어, 구조화 로그를 남기는 방법을 정리합니다.
-
업무 시스템의 코드 설계 ── 상품 코드・고객 코드 정하는 방법과 체크 디지트
상품 코드・고객 코드 등 업무 시스템의 코드 체계를 정하는 실전 가이드. 유의미 코드와 무의미 일련번호의 판단표, JAN・Luhn 등 체크 디지트 산식과 C# 구현, Excel의 앞자리 0 소실 대책, 자릿수 초과와 이관까지 정리합니다.
-
ADR(Architecture Decision Record) 입문 ── 소규모 개발에서 '왜 이런 설계로 했는가'를 남기는 최소한의 방법
코드는 '왜 그렇게 했는지'를 말해주지 않습니다. ADR(Architecture Decision Record)로 설계 판단의 이유를 1결정=1파일의 Markdown으로 남기는 방법을, 템플릿과 작성 여부 판단표, 실제 사례와 함께 해설합니다.
-
「몇 초 안에 응답하면 만족스러운가」를 정하지 않고 넘어가지 않으려면 ── IPA 「비기능 요구 등급」으로 비기능 요건을 정리한다
「속도가 느리다」「장애 대응이 예상 밖이다」로 다투는 원인의 대부분은 비기능 요건을 정하지 않고 넘어간 데 있습니다. IPA 「비기능 요구 등급」의 6대 항목, 등급표와 모델 시스템의 사용법, 현실적인 활용 방법을 발주자 입장에서 알기 쉽게 설명합니다.
-
Windows 앱의 웹 전환, 하지 않는 편이 나은 경우 ── 판단표와 '분할'이라는 현실적 해법
'사내 Windows 앱을 웹으로 만들고 싶다'는 요청이 늘고 있지만, 장치 연동·로컬 파일 처리·오프라인 운용·고속 입력 UI를 갖춘 앱에서는 웹 전환이 오히려 비용 증가와 기능 저하를 부를 수 있습니다. 웹 전환에 적합한 경우와 부적합한 경우를 정리한 판단표와, 전면 웹 전환이...
-
Windows의 세션 분리를 어떻게 이해할까 ── Session 0・RDP・다중 사용자 동시 실행
Windows 앱 개발자가 혼란스러워하기 쉬운 '세션' 개념을 정리합니다. 서비스가 UI를 표시할 수 없는 Session 0 분리의 이유, RDP 접속 시 세션의 동작, 명명된 개체의 세션 분리, 공유 PC・RDS 환경에서 흔히 발생하는 설계 실수까지 실무 관점에서 설명합니다.
-
Windows의 프로세스 간 통신을 어떻게 선택할까 ── 네임드 파이프 / TCP / gRPC / 공유 메모리 / COM 판단표
Windows 앱 사이의 연동 수단을 어떻게 선택할지 정리합니다. 네임드 파이프, 로컬 TCP, gRPC, 공유 메모리, 파일 연동, COM 각각의 강점과 함정을 판단표로 정리하고, UI+서비스 분리・32bit/64bit 브리지・권한 경계 같은 정형 구성과 네임드 파이프 구현 예시...
-
Windows 앱 데이터 저장 위치를 고르는 방법 ── SQLite / JSON / 레지스트리 / Access 판단표
Windows 데스크톱 앱의 데이터를 어디에·무엇으로 저장할지 정리합니다. AppData/ProgramData 구분, SQLite・JSON 파일・레지스트리・Access(.accdb) 각각의 강점과 함정을 판단표로 정리하고, 손상 대책과 비트 수 문제까지 실무 관점에서 설명합니다.
-
어디서 예외를 `catch`하고 로그를 내며 에러 처리해야 하는가 - 호출 계층의 경계와 책무를 실무용으로 정리
깊은 helper에서 넓게 catch하지 않고 호출 계층의 경계에 책무를 모아, 어디서 예외를 잡고 어디서 단일 주요 로그를 남기며 어디서 결과화·회복을 결정할지 .NET 실무 관점으로 정리한 가이드입니다.
-
Windows에서 타이머 대기보다 이벤트 대기를 우선하는 이유 - 약 15.6ms 분해능의 폴링을 피한다
Windows의 짧은 timer wait는 system clock 분해능과 스케줄러 지연에 묶여 의도한 정밀도가 나오지 않습니다. 작업 도착·I/O 완료·정지 요청은 event 대기로, 시각 자체는 waitable timer로 나누는 설계 지침을 정리합니다.
-
상정하지 않은 예외가 발생했을 때의 체크리스트 - 앱을 종료시킬지 계속할지, 먼저 보는 판단표
예상하지 못한 예외가 발생했을 때 앱을 종료해야 할지 계속해야 할지를 상태 파괴·외부 부작용·스레드·네이티브 경계의 관점에서 정리합니다.
-
Windows 앱 개발에서 최저한의 보안을 지키기 위한 체크리스트
WPF / WinForms / WinUI / C++ / C# 업무 앱에서 권한, 서명, 업데이트, 비밀 정보, HTTPS, 입력 검증, DLL 읽기, 로그의 기본을 체크리스트 형태로 정리합니다.
-
.NET의 Generic Host란 무엇인가 - DI, 설정, 로그, BackgroundService를 먼저 정리
Generic Host의 역할을 DI, 설정, 로그, IHostedService, BackgroundService의 관계로 정리하고, 어디서 효과가 있고 어디서는 과잉인지를 실무 관점에서 짚습니다.
-
.NET의 Native AOT란 무엇인가 - JIT, ReadyToRun, trimming과의 차이를 먼저 정리
Native AOT가 무엇인지를 JIT, ReadyToRun, self-contained, single-file, trimming, source generator와의 차이로 정리하고, 잘 맞는 경우와 힘든 경우를 실무 관점에서 정리합니다.
-
PeriodicTimer / System.Threading.Timer / DispatcherTimer의 사용 구분 - .NET의 정기 실행을 먼저 정리
PeriodicTimer는 async 루프, System.Threading.Timer는 ThreadPool callback, DispatcherTimer는 WPF UI 스레드라는 책무 차이를 정리하고, .NET 6 이후의 worker·WPF에서 망설이지 않도록 선택 기준을 제시합니다.
-
Generic Host / BackgroundService를 데스크톱 앱에 가지고 들어오는 이유 - 기동·수명·graceful shutdown의 정리가 꽤 편해진다
Windows 도구나 상주 앱에서 기동, 정기 처리, 종료 처리, 로그, 설정, DI를 정리하기 위해 Generic Host와 BackgroundService를 어떻게 활용할지 정리합니다.
-
FileSystemWatcher 사용법과 주의점 - 누락, 중복 알림, 완료 판정의 함정
Windows .NET 파일 감시에서 FileSystemWatcher의 이벤트를 완료 알림으로 오인하기 쉬운 함정과, 재스캔 요청·원자적 claim·idempotency를 축으로 누락과 중복을 견디는 안전한 설계 패턴을 정리합니다.
-
C# async/await의 베스트 프랙티스 - Task.Run과 ConfigureAwait의 판단표
C# async/await의 베스트 프랙티스를 I/O 대기와 CPU 계산의 구분, Task.Run·ConfigureAwait(false)·fire-and-forget·WhenAll·SemaphoreSlim·Channel의 형 선택 판단표로 정리합니다.
-
Windows 소프트 리얼타임 실전 가이드 - 지연을 줄이기 위한 체크리스트
평범한 Windows 10/11 위에서 user-mode 앱의 지연과 지터를 줄이는 실전 지침을 정리합니다. fast/slow path 분리, 큐와 타이머 설계, 우선순위·MMCSS, 전원 설정, p99 계측까지 어디부터 재검토할지 체크리스트로 보여드립니다.
-
파일 연계의 배타 제어 기초 지식 - 파일 락과 원자적 claim의 베스트 프랙티스
공유 폴더 파일 연계의 배타 제어를 정리합니다. 파일 락만으로 부족한 이유, 원자적 claim과 temp -> rename, idempotency를 조합해 다중 워커 경합과 쓰기 도중 읽기 사고를 막는 받아넘기기 프로토콜의 설계 지침을 정리했습니다.
-
HCP 차트란 무엇인가 - HCP-DSL을 결정론적 SVG로 변환하는 MakingHCPChartSkill 사용법
HCP 차트의 기본 개념부터, MakingHCPChartSkill을 이용해 HCP-DSL을 결정론적 SVG로 변환하는 절차, 리포지토리 구조와 주요 스크립트의 역할, 도면을 CI·리뷰 흐름에 안전하게 녹여내기 위한 핵심 포인트를 단계별로 풀어 설명합니다.