“기술 상담” 태그의 글
“기술 상담” 태그가 붙은 글 29건을 최신순으로 정리했습니다.
-
Windows 앱의 작업 트레이 상주와 토스트 알림 ── NotifyIcon의 함정과 AppNotification 선택 기준
업무용 Windows 앱을 작업 트레이(알림 영역)에 상주시키고 토스트 알림으로 사용자에게 알리는 구현을 정리합니다. NotifyIcon의 올바른 사용법과 「닫으면 트레이로」설계, 탐색기 재시작 시 재등록, 토스트 API 3종(Windows App SDK AppNotificatio...
-
VB6 애플리케이션은 언제까지 동작할까 ── 런타임 지원 현황과 현실적인 .NET 이전 진행 방법
VB6 애플리케이션은 언제까지 동작할까요. VB6 런타임의 지원 정책(Windows 11도 지원 대상)과 IDE 지원은 이미 종료되었다는 비대칭적인 현황을 정리하고, 전면 재작성・자동 변환・단계적 이전의 판단표, 이전 전 자산 파악, VB6와 .NET의 비호환 지점, C#과 VB....
-
업무 앱의 일본 연호・공휴일・마감일 처리 ── 연호 개원에 강한 설계와 JapaneseCalendar・영업일 계산의 실무
장표에 「레이와 8년」을 표시하고, 공휴일을 제외한 영업일을 계산하며, 20일 마감 익월 말일 지급 ── 일본 업무 앱 특유의 날짜 처리에는 연호 개원, 공휴일의 법 개정, 월말의 반올림이라는 「나중에 바뀌는 사양」이 숨어 있습니다. 이 글에서는 JapaneseCalendar를 이...
-
Process Monitor(ProcMon) 실전 가이드 ── 「설정이 반영되지 않는다」「ACCESS DENIED」를 10분 만에 특정하기
「설정 파일을 수정했는데 반영되지 않는다」「어제까지는 동작했는데 오늘부터 실행되지 않는다」──소스 코드에 손을 대기 전에, Process Monitor(ProcMon)를 사용하면 파일·레지스트리 접근의 실제 동작으로부터 원인을 특정할 수 있습니다. Filter의 실무적인 사용법, ...
-
Windows 앱의 웹 전환, 하지 않는 편이 나은 경우 ── 판단표와 '분할'이라는 현실적 해법
'사내 Windows 앱을 웹으로 만들고 싶다'는 요청이 늘고 있지만, 장치 연동·로컬 파일 처리·오프라인 운용·고속 입력 UI를 갖춘 앱에서는 웹 전환이 오히려 비용 증가와 기능 저하를 부를 수 있습니다. 웹 전환에 적합한 경우와 부적합한 경우를 정리한 판단표와, 전면 웹 전환이...
-
WinForms/WPF 앱 다국어화 ── resx·새틀라이트 어셈블리·컬처 전환 실무
Windows 데스크톱 앱의 다국어화를 CurrentCulture와 CurrentUICulture의 차이, resx와 새틀라이트 어셈블리를 통한 리소스 구조, WinForms의 Localizable 속성, WPF에서의 현실적인 방식 선택, 실행 중 언어 전환, 레이아웃·서식·RTL...
-
CSV는 “그냥 텍스트”가 아니다 ── C# 업무 앱의 CSV 실무(문자 코드・Excel 호환・인젝션 대책)
업무 앱의 CSV 입출력에서 발생하는 전형적인 사고 패턴──Split(',')를 이용한 자체 파싱, BOM 없는 UTF-8의 Excel 문자 깨짐, 선행 0 소실, CSV 인젝션──을 정리하고, RFC 4180의 규칙, .NET에서의 Shift_JIS 처리(CodePagesEnco...
-
HttpClient를 using으로 감싸면 안 되는 이유 ── C# 업무 앱의 HTTP 통신 실무(생성 패턴・타임아웃・재시도)
C#의 HttpClient를 매번 using으로 생성하면 소켓 고갈이, static으로 만들면 DNS 변경을 따라가지 못하는 문제가 발생합니다──이 두 가지 큰 문제의 구조와, PooledConnectionLifetime・IHttpClientFactory를 이용한 올바른 생성 패턴...
-
PerfView와 dotnet-trace로 “느림”의 원인을 찾는다 ── .NET 성능 조사 실무 입문
업무 앱이 “느리다”, “CPU를 다 써버린다”, “가끔 멈춘다”고 할 때, 어떤 도구로 무엇을 봐야 할까요. PerfView와 dotnet-trace의 역할 분담, CPU 샘플링을 읽는 방법(inclusive/exclusive), ThreadTime을 이용한 블록 시간 조사, E...
-
appsettings.json만으로는 부족하다 ── Windows 업무 앱 구성 관리 실무(환경별 설정・비밀 정보・쓰기 위치)
Windows 업무 앱의 구성 관리를 appsettings.json의 계층화, IConfiguration과 IOptions/IOptionsSnapshot/IOptionsMonitor의 구분 사용, 환경별 설정, 쓰기 가능한 설정의 배치 위치, 비밀 정보 처리, 실행 중 설정 변경,...
-
Windows 업무 앱의 인쇄와 PDF 출력 - System.Drawing.Printing / WPF / 보고서 라이브러리 구분 사용법
PrintDocument를 이용한 WinForms 인쇄, WPF의 FlowDocument/FixedDocument 인쇄, PDF 출력의 선택지를 요구사항별 판단표로 정리합니다. 페이지 나눔 제어나 DPI 차이 같은 구현의 함정, Windows 서비스에서의 인쇄, 기본 프린터 의존의...
-
OSI 참조 모델을 확실하게 이미지화하기 ── HTTP 요청 1개를 7계층으로 해부한다
OSI 참조 모델을 암기가 아니라 실물로 이해합니다. HTTP GET 요청 1개를 운반하는 Ethernet 프레임을 C#으로 조립하고 해부해서, L2~L7이 바이트열로서 물리적으로 겹쳐져 있는 모습을 헥스 덤프와 Wireshark로 확인합니다. 각 계층과 .NET API(HttpC...
-
Windows의 세션 분리를 어떻게 이해할까 ── Session 0・RDP・다중 사용자 동시 실행
Windows 앱 개발자가 혼란스러워하기 쉬운 '세션' 개념을 정리합니다. 서비스가 UI를 표시할 수 없는 Session 0 분리의 이유, RDP 접속 시 세션의 동작, 명명된 개체의 세션 분리, 공유 PC・RDS 환경에서 흔히 발생하는 설계 실수까지 실무 관점에서 설명합니다.
-
VB6 / Access 업무 애플리케이션의 연명과 이전 ── 남기다·감싸다·교체하다 판단표
VB6 애플리케이션과 Microsoft Access 업무 앱을 그대로 남길지, 일부만 감싸서 연명할지, 교체할지를 어떻게 판단하는지 정리합니다. 런타임의 현재 상황, ACE의 32bit/64bit 문제, 공유 폴더에서의 다인 이용 리스크, SQL Server로의 업사이징까지 판단표...
-
WinDbg + SOS로 크래시 덤프 읽기 ── 수집 이후 실무 분석 입문
수집한 Windows 크래시 덤프를 WinDbg와 SOS 확장으로 실제로 읽는 절차를 설명합니다. 심볼 경로 설정, !clrstack・!pe・!dumpheap -stat・!gcroot로 예외와 메모리 누수를 추적하는 방법, 네이티브 크래시의 !analyze -v, dotnet-du...
-
Windows 앱의 중복 실행 방지 ── 네임드 Mutex와 재실행 시 창 활성화
업무용 Windows 앱의 정석 요건인 「같은 앱을 두 번 실행시키지 않는다」를 네임드 Mutex로 구현하는 방법을 정리합니다. Global\ 과 Local\ 네임스페이스의 차이로 인한 RDP 환경의 함정, 소유 스레드 제약과 AbandonedMutexException, SetFo...
-
C#에서 Win32 API를 안전하게 호출하기 — P/Invoke 실무 가이드(DllImport / LibraryImport / CsWin32)
C#에서 P/Invoke로 Win32 API나 네이티브 DLL을 호출할 때의 실무 포인트를 정리합니다. DllImport와 LibraryImport의 차이, CsWin32를 이용한 시그니처 자동 생성, 문자열 마샬링의 함정, SafeHandle을 이용한 핸들 관리, SetLastE...
-
WinForms/WPF 앱에 Entra ID 인증 넣기 ── MSAL.NET과 WAM 브로커 실무 구성
WinForms/WPF 데스크톱 앱에 Entra ID(구 Azure AD) 인증을 도입하는 절차를 실무 관점에서 정리합니다. 퍼블릭 클라이언트의 개념, ROPC 폐지 현황, 앱 등록, MSAL.NET의 AcquireTokenSilent 패턴, WAM 브로커, 토큰 캐시 영속화, 도...
-
업무 앱의 날짜/시간과 시간대 ── DateTime의 함정부터 UTC 저장 원칙, 테스트 설계까지
서버 이전 시 시간이 9시간 어긋나거나, 해외 지사에서만 날짜가 하루 전날이 되는 문제──날짜/시간 사고의 원인을 DateTime의 Kind와 암묵적 변환부터 정리합니다. DateTimeOffset과의 구분 사용, UTC 저장과 ISO 8601 원칙, TimeZoneInfo와 일광...
-
WPF의 고DPI 대응 ── 「DPI에 강할 텐데」인데도 흐릿하고・번지는 원인과 대처
WPF는 DIP(1/96인치)로 레이아웃되어 처음부터 System DPI Aware이지만, DPI가 다른 모니터로 옮기면 전체가 번지고, 비트맵이나 단선은 흐릿해집니다. 원인 구분, .NET Framework 4.6.2/.NET에서의 Per-Monitor DPI 대응, UseLay...
-
C#의 Excel 조작에서 EXCEL.EXE가 남는 문제 ── COM 참조 해제 패턴과 교체 판단
C#에서 Microsoft.Office.Interop.Excel로 Excel을 조작하면 EXCEL.EXE 프로세스가 남는 문제를, COM 참조 카운트와 RCW의 원리로 정리합니다. 2닷 규칙의 함정, Marshal.ReleaseComObject파와 GC파의 해제 패턴, Hwnd로 ...
-
WinForms의 고DPI 대응 - 4K 모니터에서 흐려지거나 깨지는 원인과 현실적인 대처법
4K 모니터나 150% 스케일링 환경에서 WinForms 앱이 흐려지거나 레이아웃이 깨지는 원인을 DPI 가상화와 DPI 인식 모드(System Aware / Per-Monitor V2) 관점에서 정리합니다. .NET과 .NET Framework 각각의 설정 방법, AutoScal...
-
Windows의 프로세스 간 통신을 어떻게 선택할까 ── 네임드 파이프 / TCP / gRPC / 공유 메모리 / COM 판단표
Windows 앱 사이의 연동 수단을 어떻게 선택할지 정리합니다. 네임드 파이프, 로컬 TCP, gRPC, 공유 메모리, 파일 연동, COM 각각의 강점과 함정을 판단표로 정리하고, UI+서비스 분리・32bit/64bit 브리지・권한 경계 같은 정형 구성과 네임드 파이프 구현 예시...
-
C#에서 SQLite를 업무 앱에 쓰는 법 ── WAL 모드・배타 제어・손상 대책・EF Core와의 구분
Microsoft.Data.Sqlite로 SQLite를 업무용 Windows 앱에 통합하는 실무 지식을 정리합니다. 연결 문자열과 풀링, WAL 모드의 원리, SQLITE_BUSY와 쓰기 경로 단일화, 트랜잭션을 이용한 고속화, 타입 매핑의 함정, VACUUM INTO를 이용한 백...
-
Windows 서비스 만드는 방법과 운영 ── 태스크 스케줄러와의 구분 사용부터 BackgroundService의 서비스화까지
상주 처리를 Windows 서비스로 만들어야 할지, 태스크 스케줄러로 충분한지를 판단표로 정리하고, .NET Worker Service(UseWindowsService)를 이용한 서비스 제작 방법, 실행 계정・복구 옵션・이벤트 로그・안전한 정지 처리까지, 운영에 올리기 위한 설계를...
-
IE 모드 다음은 WebView2로 괜찮은가 ── ActiveX가 동작하지 않는 제약과 현실적인 마이그레이션 설계
WebView2의 기본 구조, Evergreen과 Fixed Version의 배포 전략, 사용자 데이터 폴더의 함정, 네이티브와 Web의 연동 방법, 그리고 「ActiveX는 동작하지 않는다」는 제약을 고려한 IE 모드 의존 시스템으로부터의 현실적인 마이그레이션 순서를 사내 시스템...
-
Windows 앱 데이터 저장 위치를 고르는 방법 ── SQLite / JSON / 레지스트리 / Access 판단표
Windows 데스크톱 앱의 데이터를 어디에·무엇으로 저장할지 정리합니다. AppData/ProgramData 구분, SQLite・JSON 파일・레지스트리・Access(.accdb) 각각의 강점과 함정을 판단표로 정리하고, 손상 대책과 비트 수 문제까지 실무 관점에서 설명합니다.
-
작업 스케줄러 작업이 실행되지 않는다・0x1로 끝난다 ── 원인 분리와 안전한 운영 설계
Windows 작업 스케줄러의 실행 계정과 로그온 종류, 「사용자가 로그온했는지 여부와 관계없이 실행」의 의미, 0x1로 끝나는 전형적인 원인, 기록 활성화, 중복 실행 방지, PowerShell 스크립트를 올바르게 호출하는 방법까지, 정기 실행을 운영에 안착시키기 위한 설계 지침...
-
Power Automate로 업무 자동화하기 ── 클라우드 플로우・데스크톱 플로우 구분과 오류 처리 설계
Power Automate의 클라우드 플로우와 데스크톱 플로우의 차이, PowerShell/VBA와의 역할 분담, 라이선스, 오류 처리, UI 자동화 안정화, 자격 증명의 안전한 처리까지, 업무 자동화를 운영에 올리기 위한 실전 설계 지침을 정리합니다.