P4V(Perforce Client) 프로그램 분석기
P4V, Perforce 클라이언트
https://www.perforce.com/products/helix-core-apps/helix-visual-client-p4v
https://www.perforce.com/downloads/helix-visual-client-p4v
앞선 포스트에서 기본 내용을 소개한 것과 연관해서 P4V는 어떻게 만들어졌는지 궁금해져서 확인해보았습니다.
사실 git 클라이언트 프로그램은 많은데 “왜 Perforce는 다양한 클라이언트가 없을까?”하는 궁금함이 있었고 프로그램에 뭔가 있지 않을까해서 확인해보게되었네요. 🙈
앱(프로그램) 파일 구조 확인 on Mac
Mac에서 p4v를 설치하고 내부 패키지가 어떻게 구성되었는지 확인해보았습니다.
Frameworks에 Qt관련 폴더가 가득한 것을 보니 Qt를 사용해서 개발한 것 같네요.
실제로 패치노트에서도 Qt를 언급하고 있긴합니다. Qt 5버전을 쓰고 있네요.
https://www.perforce.com/perforce/doc.current/user/p4vnotes.txt
1 | -------------------------------------------------------------------------- |
Qt 프레임워크?
Qt 프레임워크를 간단하게 설명하면, C++로 개발한 프로그램(GUI 포함)을 다양한 플랫폼에서 사용할 수 있도록 개발할 수 있는 프레임워크입니다. 크로스 플랫폼 프레임워크죠 (React Native나 Ionic, Flutter 같은 프레임워크)
다시 P4V 분석으로 돌아가봅니다.
Qt Webkit, WebEngine을 사용한 웹 렌더링
P4V에는 p4vjs를 통해 웹페이지를 보여주거나 커스텀 HTML을 통해 p4v에서 기본적으로 보여주는 것 외의 것들을 제공할 수 있는데요.
참고 데모: https://www.perforce.com/manuals/p4vjs-ug/Content/P4VJS-UG/run-demo-mode.html
Qt에서는 크로미움(Chromium)을 사용한 웹킷으로 HTML을 보여줄 수 있도록 지원하고 있습니다.
이를 이용해서 P4V도 HTML을 보여줄 수 있는 방법을 열어준 것 같네요.
더 분석할만한 프로그램 내용
딱 파일 구조랑 사용한 프레임워크 외에는 더 분석할 만한 내용은 보이지 않네요. CLI 정도까지만 간단하게 보겠습니다.
(리버스 엔지니어링까지 할만한 프로그램은 아니라고 생각이 들기도하구요. 😸)
P4V 외의 P4 CLI(Command Line Interface)
https://www.perforce.com/manuals/cmdref/Content/CmdRef/Home-cmdref.html
p4도 당연히 CLI가 존재하고 커맨드라인으로 p4v에서 할 수 있는 것들을 할 수 있습니다.
(커맨드를 잘 다룰 수 있다면, 더 많은 것들을 할 수도 있겠죠)
짧은 분석, 공부 마무리
사실 p4v를 사용하면서 뭘로 만들어졌길래 뭔가 안이쁘지? 하고 확인, 정리해보았는데요.
개발툴이라고 생각하고 보면 git 관리툴들이 다 이쁘게 만들어진게 아닐까하는 생각도 들었습니다.
이번에 정리하면서 기본적인 UI 외에 p4vjs로도 뭔가 더 커스텀하게 만들어볼 수 있으니 그걸 쓰면 더 이쁘게 쓸 수 있지 않을까하는 생각도 들었어요. 🤔
p4v를 사용하면서 더 공유할만한 내용이 있다면 또 들고 오겠습니다.
다음 포스트에서 보아요! 😎