영수증 프린터로 할 일 관리 앱을 만들어 보자

안녕하세요.

몇 달 전에 영수증 프린터가 내 미루는 버릇을 고쳐줌 | GeekNews 라는 글을 읽고 흥미로운 아이디어라고 생각했는데, 최근 저도 생산성이 떨어짐을 느껴서 제작에 도전해 보려 합니다.

내용이 길어지니 작성에 어려움이 있어 블로그 링크로 대체함을 양해 부탁드립니다.

  1. 영수증 프린터 구입기 : 네이버 블로그
    1. 제품 찾기
    2. 드라이버 삽질기
    3. 드라이버 설치
  2. 출력 테스트 프로그램 만들기 : 네이버 블로그
  3. 할 일 프로젝트를 만들자

완성이 된다면 오픈소스로 공개하겠습니다.

9개의 좋아요

처음에 하면 재미 있는데 미궁에 빠지는 감열 프린터네요 ㅎㅎ

1개의 좋아요

프린터를 구매하고 악성코드 이슈를 처리하며 드라이버 설치에 성공했지만 "웹 개발자인 내가 프로그램을 개발해서 원하는 대로 출력하는 것"은 다른 문제입니다.

이제 제가 가진 얕은 스킬로 제어 프로그램 개발이 가능한지 검증 프로그램을 작성해 보았습니다.

출력 테스트 프로그램 만들기 : 네이버 블로그

아직까지는 99%를 AI에 의존해서 딱히 공개할만한 코드가 없습니다.
한글을 이미지로 렌더링해서 출력하는 코드를 AI에게 시켜서 C#으로 작성했는데 잘 동작하니 다음 단계로 넘어갈 수 있다는 것을 확인했다 입니다.

다음 단계부터 본격적으로 할 일 관리 앱을 만들어 보겠습니다.
외부 블로그에 올린 것들은 별로 중요한 것들이 아니라서 링크로 대체했는데 본격 개발 이야기는 좀 더 자세히 다뤄보겠습니다.

2개의 좋아요

AI의 놀라운 발전으로 프로그래머 매뉴얼(제어코드표)를 AI에 올리고 프로그램 만들어줘 했더니 API 모듈이 나왔습니다. 2년 전의 AI는 못 했을 일인데 지금의 AI는 해내네요. 덕분에 어려운 부분이 쉽게 해결되었습니다.

2개의 좋아요

아키텍처는 데이터와 사용자 인터페이스를 담당하는 웹 UI 서비스와 프린터마다 동작하는 출력 클라이언트(데몬) 서비스로 분리하기로 했습니다.

지난 한 달 동안 시간을 쪼개서 AdminLTE와 Razor pages로 간단하게 UI 서비스를 구성했습니다.
대체로 할 일 앱의 실제 사용시간은 아주 짧고 휴대폰에서 접근하는 상황까지 고려하면 리액트 등의 프론트 전용 프레임워크나 Blazor는 오버스펙이라는 생각입니다.
자바스크립트를 거의 사용하지 않고 form post 기반으로 구성했는데 그렇다고 fetch를 완전히 배제할 수는 없어서 Razor pages와 Controller가 공존하는 꽤 어설픈 UI를 만들었습니다.
완성도는 어중간하지만 완성도에 집착할수록 프로젝트의 끝이 멀어지니 지금은 동작만 확인하고 다음으로 넘어가기로 합니다.

이제는 AI가 만들어줬던 출력 코드를 검토할 차례입니다.
AI가 만들어 준 샘플을 가볍게 읽어보니 프린터 출력 코드는 API 호출 사용성이 나쁘지 않지만 한글을 이미지로 출력하는 코드는 사용성이 좋지 않아서 처음부터 다시 작업하기로 합니다.

새로운 구조로 작성할 것이므로 기존 채팅창은 버리고 새 채팅창에서 요구사항을 다시 정리해서 하나의 클래스로 만들어 줄 것을 요청합니다.
AI가 거침없이 만들어 준 코드를 붙여넣고 테스트하니 역시나 문제가 있습니다. 영문이나 숫자, 특수문자를 전각에 가깝게 출력하는 버그가 발견되었습니다. 또한 가로 확대는 잘 만들어 놓고 세로 확대는 가로 세로를 모두 2배 확대하는 코드를 만들었습니다. 아직은 알잘딱깔센 같은 걸 기대하기는 무리인가 봅니다.

AI에게 요청한 코드는 잘 모르는 분야라서 AI코드를 블랙박스로 간주하고 만들어진 코드를 일체 읽지 않았습니다. 붙여넣고 테스트하고 수정을 요청하고 다시 붙여넣는 작업을 반복했습니다.
문득 AI개발이 좀 더 대중화되면 개발자는 점차 QA화 될 것 같다는 생각이 듭니다.

다음은 UI 서비스와 연결할 네트워크 모듈입니다.
사이드 프로젝트 레벨에서 출력 클라이언트를 수십 대 붙이는 아키텍처를 고려할 필요는 없으니 먼저 http 폴링으로 구현하고 여유가 생기면 WebSocket으로 개선하면 될 것 같습니다.

계속…