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

수상 경력에 빛나는 FileOptimizer를 개발하기 위해 C++빌더를 선택


Recommended Posts

이안 바커 (Ian Barker)"C++Builder Is The Choice For The Award-Winning FileOptimizer" 을 번역했습니다. (원문 작성: 2023년 1월, 최종 번역: 2024년 2월)

오늘은 C++ 개발자인 Javier Gutiérrez가 보내 온 글이다. 그는 오랫동안 열정적으로 C++빌더를 사용해 왔으며, FileOptimizer라는 C++ 애플리케이션을 개발하여 여러 차례 상을 받은 바 있다. 여기에서 그는 C++빌더를 자신의 C++ IDE로 계속 선택하는 이유 그리고 그의 성공적인 개발의 비하인드 스토리를 전해준다.

차례


하비에르 구티에레스 차모로(Javier Gutiérrez Chamorro)는 누구인가? 그리고 FileOptimizer는 무엇인가?

spacer.pngJavier Gutiérrez Chamorro는 수상 경력에 빛나는 FileOptimizer라는 도구를 만든 사람이자 그 도구의 주요 개발자이다. 그냥 하는 말이 아니다. FileOptimizer는 제3자들로부터 지지를 받고 있다. 예를 들어, SourceForge는 "이 주의 프로젝트" 및 "이 달의 프로젝트" 등 여러 번 상을 수여했다. 엠바카데로도 “Building Good with C++Builder Contest 2021”에서 이를 인정한 바가 있다.

우선은 배경부터 이야기하겠다. 나는 거의 25년 동안 기술 분야에서 일해 오고 있다. 하지만, 그 중 약 10년은 델파이 또는 C++빌더와 관련이 없는 분야였다. 지금은 JavaScript, HTML, PHP, 그리고 수많은 라이브러리, 프레임워크, 도구 체인들을 다루고 있다. 내 일상 작업 중에는 이미지의 크기를 쉽게 최적화하고 줄일 수 있는 프로그램이 필요한 경우가 많다. 웹사이트와 iOS 앱에서 이미지의 로딩 속도와 렌더링 속도를 향상시키 위해서이다.

FileOptimizer의 핵심은 GUI(그래픽 사용자 인터페이스)를 프런트-엔드 앱이다. 이를 통해, 파일을 무-손실 압축할 때, 강력하지만 사용하기 어려운 명령-줄 도구를 쉽게 사용할 수 있다. PNG 이미지, MP4 비디오, PDF 전단지, 워드 문서 등 무엇을 참조하든 FileOptimizer는 이를 인식하고, 그것을 최적화 할 수 있는 알맞은 플러그인에게 작업을 전달한다. 그 결과, 원본과 모습이 똑같고, 형식도 똑같아서 동일한 도구로 열 수 있으면서도, 크기만 더 작은 이미지 파일을 얻을 수 있다.

 

FileOptimizer의 개발 절차는?

파일 크기를 작게 만드는 것은 1980년대에  매우 중요했다. 메모리와 디스크 공간이 심각하게 제한적이던 시절이었기 때문이다.  오늘날에는 기가바이트 RAM과 테라바이트 디스크로 인해, 옛날 이야기라고 생각될 수 있다. 하지만 그렇지 않다. 많은 장비(스마트폰, 태블릿 등)들은 하드웨어 능력에 한계가 있다. 그리고 여러분은 최대한의 능력을 끌어내고 싶어한다. 또한, 대역폭(bandwidth)도 제약 조건이 될 수 있다. 대역폭은 비싸다. 그리고 여러분은 누구나 웹사이트에 동일한 이미지를 올려 놓아야 한다면 1000K 보다는 100K 크기인 이미지를 더 선호한다. 최신 형식을 사용하면 기존 형식에 비해 파일 크기가 작아진다. 비디오용으로는 H265를 이미지용으로는 WebP가 좋은 예이다. 불행히도 이러한 새 형식들은 새 도구들이 필요하다. 편집하고나 열어 보려면 새 프로그램과 새 앱이 있어야 한다...따라서 우리는 파일 크기를 줄여야 할 뿐만 아니라, 그 원래 형식은 유지해야 하는 경우가 많다.

spacer.png

 

어떤 OS를 사용하고 있는가?

나는 항상 윈도우 플랫폼을 기반으로 해왔다. 적어도 DOS 이후 즉, Turbo Pascal과 Turbo C++의 좋은 시절이 끝난 후에는 말이다. 네이티브 애플리케이션, 컴팩트한 바이너리, 빠른 실행 속도의 이점에 대해 나는 전적으로 신뢰한다. 하드웨어의 능력을 최대한 활용하라는 오래된 철학과도 맥락이 같다. 2012년, FileOptimizer를 개발하기 시작한 당시에는 대안이 많지 않았다. 그러니, 델파이 또는 C++빌더로 해야 한다는 점이 분명했다. 개인적으로, 나는 항상 오브젝트 파스칼보다 C ++가 더 편안하다고 느꼈다. 필요하면 보다 강력한 저수준 코딩을 할 수 있고, 런타임 성능이 강화되어 있기 때문이다. 무엇보다도, 하드웨어에 가깝게 코딩하거나 (VCL 캡슐화를 통해) 보다 높은 수준에서 개발하는 것 두 가지를 다 할 수 있기 때문이다.

 

언제나 C++빌더를 사용하는가? 그렇다면 그 이유는?

솔직히, 나는 C++빌더 1.0 버전이 출시된 이후 지금까지 취미 개발과 비즈니스 개발 모두에서 언제나 사용하고 있다. 나는 "C++의 힘을 가진 진정한 RAD 환경"이라는 C++빌더의 방식을 정말 좋아한다. 이 점은 Visual C++이 아직 도달하지 못한 영역이다. 과거에는 Power++/Optima++ 역시 해내지 못한 것이기도 하다. 내 선택은 분명했다. 나는 엠바카데로의 C ++빌더와 계속 가게 될 것 같다.

RAD(Rapid Application Development, 신속하게 애플리케이션을 개발)의 마법 덕분에 나는 단 며칠 만에 초기 프로토타입을 만들 수 있었다. 물론, 그 후 많은 시간이 흘렀고, FileOptimizer는 50 번이 넘게 새 버전이 출시되었다. 그동안 많은 기능들이 추가되었다. 하지만, 중요한 것은 최소한의 실행 가능한 제품을 기록적인 시간 안에 출시할 수 있었다는 점이다.

경험은 언제나 가르침을 준다. 적어도 배우고자 하는 사람들에게는 그렇다. 내가 배운 것은 의존성을 최소화하는 것의 중요성이다. 예전에 개발한 것들(예 : XPlorer)은 써드 파티 컴포넌트들을 많이 사용했다. 바퀴를 다시 발명하지 않아도 된다는 분명한 장점 때문이었다. 하지만, 새 운영 체제를 지원하거나 C++빌더를 업그레이드할 때 가끔 문제가 될 수 있다. 이런 이유로 인해 FileOptimizer는 순수한 VCL 컴포넌트들과 Windows API에만 의존하고 있다.

 

C++빌더를 선택한 결과는?

좋은 선택이었다는 것은 시간은 확인해 주었다. 변경 로그를 보면, FileOptimizer는 C++빌더 XE2로 처음에 시작했다. 그리고 현재 C++빌더 11.2로 개발되고 있으며 베타 버전인 "말라위"에서도 테스트 되고 있다. 소프트웨어의 생명에서 10년이라는 역사는 상당히 길다고 볼 수 있다. 퇴물이 되거나, 쓸모없게 되거나, 다른 제품에게 밀려나는 일은 쉽고 흔하다. C++빌더 버전이 계속 나오고, 윈도우 버전 역시 계속 나오는 동안, 나는 FileOptimizer를 업데이트할 수 있었으며, 몇 가지 새로운 기능들도 추가할 수 있었다. 윈도우 비스타(Vista)의 TaskDialog, 리눅스(Linux) 상에서의 Wine 호환성 등등 - 모든 것들을 이전 버전과의 호환성을 유지하면서 제공할 수 있었다. 동적 라이브러리 로딩 덕분이다.

spacer.png

 

FileOptimizer 개발 시 C++를 사용한 이유는?

C++이 효율적인 프로그래밍 언어라고 볼 때, C++빌더는 그 언어를 위한 생산적인 환경이다. 내장된 디버거를 통한 손쉬운 튜닝과 디버깅, 코드인사이트를 통한 빠른 코딩, 강력한 에디터, 훌륭한 비주얼 디자이너를 통해 복잡한 UI 배치를 코드를 작성하지 않고 만들 수 있는 능력 등이 제공된다.

그럼에도 불구하고, 새 기능이 추가되면서 코드베이스와 복잡성이 기하급수적으로 증가했다. 코드는 약 10,000 줄이 늘어났고, 400개 이상의 파일 확장자가 지원되며, 각각 고유한 구문이 있는 100개 이상의 명령-줄 플러그인이 처리된다.

요즘은 모든 것이 스마트하다. FileOptimizer도 마찬가지이다. 파일 확장자에 의존하지 않고 파일의 내용을 분석하여 파일 유형을 감지할 수 있다. 사용자 입장에서 보자면, GIF 이미지가 Myimage.file라는 이름으로 저장되어 있어도 FileOptimizer의 로직은 자동으로 GIF 파일이라고 판단한다. 코딩에 대해 말하자면, 파일 타입을 탐지하는 엔진은 헤더에 있는 매직 바이트를 사용하여 가장 일반적인 파일들을 식별한다. 이를 위해 C++의 바이트/메모리 블록 처리 기능을 활용했다. 실제로 C/C++가 설계될 때 반영되었던 핵심 설계 요소이기도 하다.

spacer.png

 

FileOptimizer의 성공을 통해 무엇을 배웠는가?

FileOptimizer이 성공하고 이렇게 오래 유지된 것은 C++Builder가 없었다면 불가능했다고 생각한다. 첫째 이유는, C++ 언어와 엠바카데로 C++빌더가 계속해서 발전해 왔다는 점이다. FileOptimizer를 처음에 "클래식" 비주얼 베이직 6으로 만들었다고 상상해 보자. 그 도구는 수년 전부터 실제 지원이나 호환성이 제공되지 않고 있다.

두 번째 이유는 성숙도이다. C++빌더는 잘 알려진 안정적인 솔루션이고 문서화된 패러다임을 통해 빠르고 쉽게 배울 수 있다.

마지막으로, 요즘에는 일반적이지 않을 수 있지만, 호환성과 성능 때문이다. 메모리가 256MB인 윈도우 XP 컴퓨터에서도 작동하는 도구이지만, 메모리가 64GB인 최신 윈도우 11 컴퓨터가 가진 모든 능력을 끌어낼 수도 있다.

FileOptimizer는 SourceForge에서 받을 수 있다. https://nikkhokkho.sourceforge.io/static.php?page=FileOptimizer

 

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

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

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

이 토의에 참여하세요

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

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...

중요한 정보

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