클릭해서 움짤 재생



Electron으로 만들던 Olive를 갈아엎고 Qt5로 갈아탔습니다


이름도 그대로 Olive로 유지하려다가 저번에 말한것처럼 Olive라는 같은 이름의 다른 유사 프로젝트가 있어서 그대로 쓰는건 좀 그렇다고 생각해서


이름도 Nlive로 바꿈.. 사실 별로 마음에 안들기는 한데 일단은 당장 떠오르는게 없어서


이전 버전에서 구조 설계를 워낙 여러번 갈아엎어서 이번에 Qt5로 만들때 크게 고민할건 없을거라 생각했는데


두 프레임워크의 GUI 프로그래밍 방식이 크게 달라서 생각보다 고민을 오래했음


Javascript의 경우 DOM 중심으로 이벤트를 어디서나 걸었다 뗐다 할 수 있어서 Model, View, Controller를 철저하게 분리하기 쉬운데,


Qt5의 경우는 View 가 Controller 를 겸하기 때문에 기능적으로 코드를 분리하기가 힘들어서 좀 짜증나는 부분이 있는것 같음


예를 들면 움짤에 보이는 Timeline View 는


Clip 을 늘이고 줄이고 하는 컨트롤러와 외부에서 Clip 을 드래그 앤 드랍 하는 기능을 가지고 있는데


Javascript에서는 ClipManipulateController 와 ClipDragAndDropController 라는 두 컨트롤러를 모듈로 만들어서 분리시킬 수 있음


각 컨트롤러에서 원하는 이벤트를 받아다가 이벤트에 맞는 일들을 수행하도록 하면 되니까


반면 Qt에서는 TimelineView 라는 뷰 자체에다가 모든 기능들을 때려 박아 넣어야함


물론 Qt 프레임워크 위에 아예 JS 방식처럼 모듈별로 분리할 수 있게 새로운 구조를 위에 얹을수도 있지만


그렇게 하면 View에 다떄려박는것보다 더 복잡하고 귀찮아질것같아서 그냥 View에 다 때려박아놨음




다만 Qt로 갈아타면서 좋은점은 기존 Web의 단점들이 모두 없어졌다는것

갈비지 콜렉터가 없으니까 메모리 관리만 잘 하면 낭비할 일도 없고,

렌더링은 아직 구현 안했지만 기존 구현보다야 훨씬 쉬울것 같고

Olive 디렉토리 구조 보면 별 잡동사니도 많고 구조 파악이 어려운 부분이 있었는데 그 점도 해소됐고



Build Instruction 도 매우 간단해져서 빌드 방법도 추가해놨음


https://github.com/orange4glace/nlive


Collaborator를 모집하고 있으니 관심이 있으시다면 언제든지 환영이구요




프로젝트에 시간을 더 많이 투자하고 싶은데 시간이 생각보다 많이 안나서 아쉽네요