Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

델파이는 어떻게 사과 추적의 강력한 핵심이 되었는가


Recommended Posts

이안 바커 (Ian Barker)"How Delphi Is The Powerful Core Of Tracking Your Apple" 을 번역했습니다. (원문 작성: 2023년 2월, 최종 번역: 2024년 1월)

오늘 소개할 글은 Alberto Fornés 씨가 보내온 훌륭한 기고이다. Alberto 씨는 델파이 앱 빌더 소프트웨어가 탑재된 RAD 스튜디오의 능력으로 농장에서 집까지 사과가 유통되는 과정을 어떻게 추적했는지 말해준다. 애플 회사가 아니라, 과일 사과 이야기다. 🤪 실제로, Alberto 씨는 그가 소개하는 이 시스템이 추적하는 농산물은 대부분이 오렌지라는 사실을 강조하고 싶어했다.

목차


델파이 프로그래머가 된 계기는 무엇인가?

내가 델파이를 프로그래밍 언어로 선택한 것은 수년 전이다. 나는 (농업 공학을 전공하긴 했지만) 언제나 컴퓨터를 좋아했다. ZX 스펙트럼(ZX Sinclair 48, 48k)으로 작성했던 코딩의 첫 번째 줄을 나는 아직 기억하고 있다.

그 후, 나는 주간 프로그래밍 컬렉션을 구독했는데, 몇 주 동안 델파이 CD(내 기억으로는 버전1이나 2였던것 같다)를 전달 받을 수 있었다. 나는 델파이 언어 그리고 매우 빠르고 효율적으로 애플리케이션 구축한다는 점에 금방 매료되었다. 그 후, 나는 전문 프로그래머가 되기 위해 공부를 했다. 나는 모든 작업에서 항상 (몇 가지만 제외하고는) 델파이를 사용해오고 있다. 그래서 나는 델파이의 대부분 버전을 사용하게 되었다.
 

델파이를 어떤 일에 사용하는가?

내가 우리 회사 MESURASOFT에서 맡아 온 업무 중 가장 많은 시간을 쓰고 있는 제품은 과일 및 야채 창고를 관리하는 프로그램이다 (그 프로그램의 이름은 "KeepTrack"이다).
 

기업용 소프트웨어 개발에 사용했던 첫 델파이 버전은 무엇인가?

회사에서 처음 설치한 버전은 델파이 7이며, Access 데이터베이스를 함께 사용했다. 하지만 오래지 않아 그 시스템을 클라이언트-서버 데이터베이스로 빠르게 업그레이드 했다. Firebird 데이터베이스를 사용했는데, 그 기반은 Interbase 데이터베이스이다.
 

어떤 장비를 사용했나?

그 당시에 우리는 PALM PDA를 사용했다. 우리가 만든 프로그램들은 메모리 용량이 12K였던 것으로 기억한다! 작은 용량에도 불구하고 장비는 잘 작동했다. 또한 우리는 그 PDA 프로그래밍도 했는데, 그 때 사용한 프로그램 (Pocket Studio라고 기억하는데 확실하지는 않다) 역시 파스칼 언어를 사용하는 것이었다. PDA와 통신하고 데이터를 읽는 데 필요한 동기화 프로그램이 담겨 있던 DLL도 역시 델파이로 프로그래밍 되어 있었다.

 

어떻게 델파이를 사용해 창고의 재고를 추적했는가?

그 당시 과일 팔레트 추적 작업은 바코드로 이루어지고 있었다. 하지만, 그 당시 RFID 태그가 슬슬 시장에 도입되기 시작했다. 그래서, 우리는 자체 시스템을 만들기로 결정하고, RFID 태그를 넣을 수 있는 플라스틱 조각을 디자인했다. 그것은 과일 팔레트가 입고되는 창고의 입구에서 사용되었다.

spacer.png

출처: MESURASOFT

정보가 칩에 기록되어 있었고, 우리는 리더기와 안테나를 통해 이동을 추적할 수 있었다. 안테나에서 판독 값을 수집하는 소프트웨어는 윈도우 서비스로 동작했으며, 델파이로 프로그래밍 되었다. 그 프로그램은 소리와 빛으로 경보를 울리는 장비와 직력 포트 통신을 통해 연결되어 있었다. 그래서 일부 태그를 읽었을 때 경보를 울리는 역할도 수행했다 그 시스템은 (약간의 수정이 있었으며) 지금도 여전히 사용되고 있다.

그 시스템은 어떤 기능을 제공했나?

이 시스템은 창고에서 일어나는 모든 일을 다루었다. 집하물 등록, 과일 저장 위치 이동, 도포 처리 등등... 점점 더 많은 작업자들이 이 시스템을 농산물 창고에서 사용했다. 그리고, 시스템은 문제없이 잘 작동했다. 이런 물류 창고에서는, 수령인, 목적지, 농산물의 유형에 따라 라벨이 자주 바뀐다. 그 때문에 라벨을 디자인하는 컴포넌트를 델파이로 개발하여 프로그램 자체에 포함시켰다. 그래서 사용자는 필요에 따라 라벨을 디자인할 수 있으며, 라벨의 데이터를 주문 데이터와 연결할 수도 있었다.

spacer.png

출처: MESURASOFT

델파이에서 가장 마음에 들었던 기능이 바로 이것이다. 델파이 안에 컴포넌트가 많이 있어서 그 중에서 선택할 수 있지만, 그 뿐만 아니라, 자신만의 컴포넌트를 직접 개발할 수도 있다. 따라서, 개발의 가능성을 확장할 수 있고, 프로그램을 잘 구조화할 수 있다. 오히려 사용할 컴포넌트를 결정하기가 어려울 때가 종종 있다. 선택할 수 있는 컴포넌트들이 너무 많아서 그렇다! 나는 어떤 경우에도 소스 코드를 보관하라고 항상 추천한다. 가끔 변경이 필요한 경우도 있기 때문이다. 우리는 이 방식으로 산업용 프린터를 통해 인쇄할 수 있었다. PC뿐만 아니라 모바일 장치에서도 Wi-Fi를 통해 프린터에 주문을 전송할 수 있다.

 

델파이를 사용해 해결한 다른 기업용 소프트웨어 문제로는 무엇이 있었나?

또 다른 요구 사항은 과일 트럭의 창고에 도착했을 때 무게 정보를 수집하는 것이었다. 당연히 델파이로 개발했다. 직렬(serial) 포트를 통해 판독 값을 수집하도록 했다. 그리고, 팔레트에 부착된 RFID 태그로 각각을 식별하고, 각 팔레트의 무게를 기록했다. 기존의 기성품 팔레트에서도 비슷한 작업이 수행된다.
작업자의 경험을 개선하고 업무를 더 쉽게 수행할 수 있도록, 우리는 각 직무에 맞는 프로그램을 개발했다. 터치스크린을 사용해야 하는 경우도 있었다. 그런 경우에는 입력 방식에 손가락 터치 방식을 추가하고, 정보 표시 방식을 일부 조정했다. 델파이가 가지고 있는 컴포넌트들의 갯수를 고려하면 이런 것은 문제가 되지 않는다. 우리가 사용한 컴포넌트들 중에서 수많은 화면에서 사용되고 있는 컴포넌트 하나를 언급하고 싶다: TVirtualStringTree와 TVirtualDrawTree는 환상적인 오픈소스 컴포넌트들이다. 훌륭하고 자연스러운 모습을 제공한다.

spacer.png

출처: MESURASOFT

(윈도우 95, XP, 7 버전 등등) 윈도우의 새 버전이 나와도, 이 프로그램은 잘 작동했다. 내가 델파이를 좋아하는 또 다른 장점은 OS가 바뀌어도 업그레이드 작업이 거의 필요하지 않다는 점이다. 그 점은 새로운 버전의 델파이에서도 마찬가지다. 코드를 아주 조금만 변경하면 빌드에 성공한다.

 

앱이 ASP.NET과 함께 작동해야 했다고 이해했다. 맞나?

프로그램 개발을 전문으로 하는 사람들이라면 지속적인 개선과 새 기능을 추가가 필요하다는 것을 알고 있다. 몇몇 회사들은 품질 컨트롤들을 웹 브라우저에 제공하는 것이 가능한지 우리에게 질문했다. PC, 태블릿, 스마트폰에서도 품질 컨트롤 입력을 할 수 있기를 원했기 때문이다. 그 컨트롤들은 처음에 우리가 만들었고, 정해진 데이터를 사용하도록 되어 있었다. 하지만, 사용자가 직접 컨트롤들을 만들 수 있어야 한다는 것을 알게 되었다. 빈번하게 변경되었기 때문이었다.

그렇게 하기 위해, 우리는 시스템을 구축했다. 델파이 프로그램에서는 컨트롤들의 구조를 정의하고, 웹 서버(ASP.NET을 사용하는 IIS)에서는 동적으로 생성된 html 페이지를 전송하는 시스템이었다. 또한 이 웹 시스템을 통해, 우리는 창고 재고를 브라우저에서 확인할 수 있는 기능도 포함시켰다. 그래서, 각 보관 위치에 어떤 상품이 있는지를 알 수 있도록 했다.

 

사용한 기술이나 도구를 구체적으로 말해줄 수 있나?

spacer.png우리는 항상 문제 해결 방법을 델파이에서 찾으려고 했다. 또한, 오픈-소스 라이브러리인 델파이 MVC 프레임워크의 등장으로, 우리는 동적 품질 컨트롤 페이지를 제공하는 윈도우 서비스를 만들 수 있었다. 그리고 JWT를 사용하여 사용자 유효성 검사를 구현했다. 그 라이브러리에는 로그 생성 기능도 있었다. 따라서 우리는 즐겁게 오류를 감지하고 활동을 확인할 수 있었다. 그 라이브러리는 (델파이에 이미 수년간 들어 있었던) WebBroker를 기반으로 한다. 하지만 MVC 프레임워크를 사용하면, 프로그램 구조를 더 잘 정돈할 수 있다. 또한 훌륭한 결과를 얻을 수 있다. 게다가, 더욱 현대적인 소프트웨어 아키텍쳐를 구현할 수 있다. 그 이후, 우리는 농산물의 재고 변화와 이동을 실시간으로 확인하는 기능을 추가했다. 변경사항이 있을 때마다 동일한 서비스를 통해 수행했다. 변경이 발생하면 그 정보는 웹 소켓을 통해 연결된 웹 클라이언트로 전송된다.

기업용 프로젝트에서 사용하는 다른 컴포넌트가 있나?

델파이 애플리케이션 안에서는, 앞서 언급한 TVirtualDrawTree 컴포넌트를 사용해 품질 컨트롤 디자인 폼을 사용자에게 보여준다. 그 작업에 잘 맞고, 매우 유연하게 사용할 수 있는 컴포넌트이다. 컨트롤들은 프로그램에 안에서 TWebBrowser 컴포넌트를 사용해 표현된다.

한동안, 우리는 기존 PALM PDA 장비를 윈도우 모바일(C#이 포함된 .NET)로 프로그래밍된 PDA로 교체했던 시기가 있었다. 이 교체된 장비들은 데이터베이스 서버에 직접 연결되어 있었는데, 기대와 달리 몇 가지 문제를 야기했다. 하지만, 이 문제들은 우리가
데이터베이스 액세스 방식을 변경하고, REST 서버를 통해 연결하도록 방식을 변경함으로써 해결되었다. REST 서버를 통한 연결 역시 델파이 MVC 프레임워크로 개발된 서비스 안에 있는 것이다.

이 서비스에 추가된 다른 기능은 바코드 리더기가 전송한 정보를 판독하는 기능이다. 이 경우 통신은 TCP/IP를 통해 이루어지며, 이를 위해 Indy 라이브러리의 TIdTCPClient 컴포넌트를 사용한다. 이를 통해, 우리는 리더기가 읽은 정보를 수신할 수 있을 뿐만 아니라 승인 여부나 기타 데이터를 리더기의 화면으로 전송할 수도 있다.
델파이로 작업할 때 사용하면 좋을 다른 컴포넌트나 라이브러리를 꼽자면 두 가지가 있다: 하나는 FastReport이다. 이것을 사용하면 어떤 형태의 리포트든 디자인할 수 있다. 바코드, TChart를 이용한 그래프, PDF 내보내기 등의 기능이 들어 있다. 또 하나는 HTML component library다. 우리는 이것을 이용하여 프로그램 사용자에게 HTML 도움말을 시각적으로 표현해 주었다. 또한 훌륭한 GUI 화면을 만들 때도 사용할 수 있다.

또한, 개인적인 프로그램 안에서 테스트로 사용해보았다. 소프트웨어 문서를 정교하게 만들어 보려고 했다. https://www.ticdoc.info는 지금 스페인어만 지원이 되지만 곧 다른 언어로도 제공되기를 바란다. 그 프로그램에서 나는 TMS Diagram Studio를 사용하여 내 앱 안에 다이어그램 편집기를 넣었다. 또한 TSynEdit 오픈소스 컴포넌트를 사용하여 코드 에디터도 넣었다. 이 프로그램은 무료로 다운로드할 수 있다. 

현재 진행 중인 프로젝트에서는 어떤 툴을 사용하고 있나?

마지막으로 덧붙이자면, 프로그램의 시각적 측면을 개선할 필요가 있었을 때는, 스타일과 새 컨트롤들을 추가했다. 우리는 델파이 7에서 델파이 10.3 리오로 마이그레이션했다. 그 프로그램을 새 버전에서 컴파일하기 위해 우리가 변경해야 할 것들이 거의 없었다는 점은 대단했다. 내가 델파이 사용을 추천하는 많은 이유 중 하나가 바로 그것이다. 내 경험으로는 윈도우에서 데스크탑 프로그램을 개발하는 데는 델파이가 무적이다. 우리는 지금까지 어떤 요구 사항이든 해결했다.

 

이 글은 기업용 대형 애플리케이션에 대한 기고 경연 대회(Enterprise Article challenge)에 제출된 것이다. 만약 여러분도 델파이, C++빌더 또는 RAD 스튜디오를 사용하여 만든 훌륭한 엔터프라이즈 제품과 프로젝트에 대해 이야기하고 싶은 성공 사례가 있다면 연락을 주기 바란다.

한국 개발자는 데브기어의 델파이 사례 기고 행사에 참여하세요!

이 댓글 링크
다른 사이트에 공유하기

  • 2주 후...

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.