개발

컨베이어 환경에서 머신비전 렌즈 선택하며 고민한 것들

최근 현장에서 사용할 머신비전 카메라와 렌즈를 검토하면서 생각보다 많은 부분을 직접 확인해야 한다는 것을 느끼게 되었습니다. 처음에는 단순히 “카메라 해상도만 높으면 되지 않을까?”라고 생각했지만, 실제로는 렌즈와 설치 환경의 영향이 훨씬 컸습니다. 현재 테스트 중인 환경은 컨베이어 위를 이동하는 제품의: 바코드 QR 코드 숫자(OCR) 등을 인식하는 구조입니다. 완전히 고정된 환경은 아니고, 제품이 지나가는 동안 순간적으로 멈칫하는 …

Android 현장 앱이 Google Play 심사에서 계속 보류되던 이유

최근 현장에서 사용하는 Android 앱을 Google Play에 등록하는 과정에서 예상보다 긴 시간 동안 심사가 보류되는 경험을 하게 되었습니다. 기능적인 문제는 없다고 생각했지만, 심사는 계속 “검토중” 상태로 유지되었고 정확한 원인도 안내되지 않았습니다. 처음에는 권한 문제나 정책 문제를 의심했지만, 실제 원인은 앱의 초기 동작 흐름에 있었던 것으로 보입니다. 제가 개발 중인 앱은 실행 시 기본 서버(default site)에 …

Windows RawInput으로 HID 바코드 스캐너 등록·관리하기

Windows RawInput으로 HID 바코드 스캐너 등록·관리하기 - cover-ai-F9DF50D2-9A73-4440-9E0E-65D7ED6B96E0

현장에서 사용하는 바코드 스캐너는 흔히 키보드처럼 동작합니다. 메모장이나 입력창에 커서를 두고 바코드를 읽으면 숫자와 문자열이 바로 입력되는 방식입니다. 설치와 사용은 간단하지만, 여러 장치가 동시에 연결되는 환경에서는 입력값만으로 어느 장치가 스캔했는지 판단하기 어렵습니다. 이번 개선의 핵심은 바코드 문자열만 받는 데서 그치지 않고, Windows RawInput을 이용해 입력 장치를 구분하고 등록된 HID 장치를 관리할 수 있도록 흐름을 정리한 …

가족용 메신저를 만들고 싶었던 이유, 지금의 농사랑으로 이어지다

농사랑 메모장 로컬 실행 화면

2026년 10월 24일 업데이트. 처음 이 글을 쓸 때는 가족이나 가까운 사람들끼리 쓸 메신저를 구상하고 있었다. 지금 로컬 NSRNB 프로젝트에는 ‘농사랑’이라는 가족용 포털과 모바일 앱이 있다. 당시의 생각을 현재 구현과 구분해서 읽을 수 있도록 글과 화면을 갱신했다. 먼저 분명히 할 부분이 있다. 가족끼리 실시간으로 대화하는 메신저가 완성됐다는 뜻은 아니다. 메신저는 별도의 기술 검토 문서에 방향을 …

Windows Markdown Viewer 개발기 (WPF + .NET 8 + WebView2)

Windows Markdown Viewer 개발기 (WPF + .NET 8 + WebView2)

2026년 10월 24일 업데이트 — PDF 저장과 현재 기능 범위 현재 로컬 MarkDownViewer에는 탐색·편집·미리보기 외에 PDF 저장 기능도 있다. 선택한 문서의 미리보기를 상단 PDF 버튼으로 저장하며 WebView2가 준비된 뒤 출력하도록 처리한다. WPF·Markdig·WebView2를 사용하는 기본 구조는 기존 글과 같다. 외부에서 파일이 바뀌었을 때의 다시 읽기 안내와 저장 충돌 확인, 여러 문서를 여는 탭, 상대 경로를 해석하는 …

MES에서 기준정보를 고객마다 다르게 만들면 위험한 이유

MES를 개발하면서 가장 많이 고민하게 되는 부분 중 하나는 “고객별 커스터마이징”이었습니다. 처음에는 고객 요청에 맞춰 화면이나 데이터 구조를 계속 변경해 주는 것이 좋은 방향이라고 생각했습니다. 하지만 실제로 여러 구조를 운영해 보면서 느낀 점은, 기준정보까지 고객마다 다르게 변하기 시작하면 유지보수가 매우 어려워진다는 점이었습니다. 특히 다음과 같은 문제가 발생하기 시작했습니다. 고객마다 데이터 구조가 달라짐 공통 기능 수정이 …

인터넷 없이 동작하는 Windows 업무 앱을 만드는 이유

현장 프로그램을 개발하면서 가장 먼저 고려하게 되는 부분 중 하나는 “네트워크가 항상 안정적이지 않다”는 점이었습니다. 사무실 환경에서는 크게 문제가 없지만, 실제 생산 현장에서는 다음과 같은 상황이 자주 발생했습니다. Wi-Fi 불안정 인터넷 일시 끊김 내부망만 사용 외부망 차단 오래된 Windows 환경 네트워크 장비 문제 이런 상황에서는 웹 서비스만으로 모든 기능을 처리하는 것이 생각보다 어려웠습니다. 특히 작업 …

방문 픽업 예약을 담유로 통합하며 — 농산물 소개부터 수령 확인까지

담유 홈페이지 실제 화면 — 2026년 10월 24일 캡처

2026년 10월 24일 업데이트. 이 글에서 소개했던 방문 픽업 예약은 지금 담유 안의 농산물·픽업 서비스로 통합했다. 예전 화면을 기준으로 쓴 설명을 그대로 두면 현재 이용 흐름과 맞지 않아 담유 프로젝트의 구현과 공개 화면을 확인하고 내용을 고쳤다. 처음 글에서는 상품을 고르고 방문 시간을 예약하는 과정을 중심으로 소개했다. 지금은 그 앞에 농산물과 사람을 소개하는 화면이 있고 예약 …

EppSwitcher – Windows 노트북 전원 관리를 조금 더 간편하게

EppSwitcher – Windows 노트북 전원 관리를 조금 더 간편하게

2026년 10월 24일 업데이트 — 표시값과 실제 적용 범위 구분 현재 EppSwitcher는 Windows의 powercfg로 EPP 값을 읽고 적용하는 .NET 8 WPF 앱이다. 기존 소개에서 Intel의 Speed Shift 맥락으로 설명했지만 앱 자체가 Intel 전용 API를 호출하는 방식은 아니다. 실제 반응은 CPU, BIOS, 전원 드라이버와 펌웨어 정책에 따라 달라진다. 화면에서 다루는 값은 0~255이고 powercfg에 적용하는 값은 0~100이다. …

농사랑을 가족 중심 포털로 운영하는 이유 — 공유할 기록과 사용 범위

농사랑 일정관리 로컬 실행 화면

2026년 10월 24일 업데이트. 예전 글에서는 nsrnb를 가족이나 가까운 지인을 위한 서비스로 구상한다고 적었다. 현재 로컬 NSRNB 프로젝트는 ‘농사랑’ 가족용 포털과 모바일 앱으로 구성되어 있다. 아직 구상만 있는 것처럼 읽히던 부분을 고치고 지금 구현된 공유 방식과 화면을 기준으로 내용을 정리했다. 공개 메신저나 대규모 커뮤니티로 확대하기보다 가까운 사람들이 함께 확인할 공간을 우선한다는 생각은 이어진다. 다만 가족 …