도커 텍스트 뷰어 Dock마루 개발 일지?

 

스크린샷 2026-01-12 08.35.48.png

만들다 머리 식힐겸 글을 쓰네요

 

네 아직도 뷰어를 개발 중입니다 

 

한 네 번 엎은 거 같네요

 

image.png

image.png

image.png

스크롤 모드, 페이지 모드 1분할, 페이지 모드 2분할

 

이렇게 세개의 뷰 모드를 서로 전환이 되게 만들려다보니까 길이 아주 험난합니다

 

처음에는 단순하게 시작을 했다가 스크롤 모드와 페이지 모드가 계산식이 너무 차이나고

로딩도 크고 해서 청크 분할 방식으로 변경

 

하지만 청크 분할 방식도 진행도 계산과 모드간 오차가 크고

청크 경계의 빈공간 문제를 해결하기가 쉽지 않아서

분할이 아닌 통파일 단락 방식으로 변경

 

하지만 단락 방식도 계산에 문제가 생기고 초반 긴 로딩 문제가 생깁니다

로딩을 줄여보려고 mmap 에 레인지 리퀘스트 방식등 이것저것 도입을 해보지만

여전히 문제가 심각하고 원하는 퍼포먼스가 나오질 않아서 폐기

 

결국 브라우저 로컬 파일 다운로드 방식과 바이트 오프셋 방식으로 리팩토링

페이지 모드는 원하는 퍼포먼스가 나오지만 스크롤 모드에서 전체 DOM을 로딩하는데 시간이 너무 오래걸림

제가 가지고 있는 그나마 가장 적은 2~3메가 파일로 테스트 하는데 이정도인데

10메가 넘는 파일은…

 

그래서 가상 스크롤 방식을 도입하려고 했지만 react-window 호환성 문제로 실패

결국 가상 스크롤 방식을 직접 구현

 

지금은 그나마 원하는 퍼포먼스 마지노선에 걸친 상태네요

웹소설 게시판 처럼 1화 씩 잘라져 있다면 크게 고민할 부분도 아니지만

일반 적으로 소설 텍스트 같은 경우에 수 백화의 분량이 합쳐져 있다보니까

생각보다 생각 해야할 부분이 많습니다

 

그래도 지금은 그럭저럭 봐줄만한 1~2초 로딩과 한 번 로딩 되면 딜레이 없는 동작

모드 간 전환도 나쁘지 않고 기본 기능의 한 90퍼 정도는 완성 된 거 같네요

 

이제 스크롤 모드와 페이지 모드의 싱크가 살짝 어긋나는 부분하고

페이지 모드의 렌더링 영역 문제만 수정하면 될 거 같습니다

 

물론 이렇게 가다가 또 문제 생기면 뒤엎어야 할 수도 있겠죠

 

우선 뷰어가 완성이 되어야 기능 추가를 할텐데

예전 MMC에서 음악 플레이어 만들 때도 그랬지만

플레이어 새로 만드는데 시간이 가장 오래 걸리는 거 같습니다

뷰어에 지금은 여백이나 폰트 크기 조절 같은 기본 기능만 있고

빈 줄 제거 옵션만 하나 있는데

 

추가할 기능이 너무 많이 남았네요

그냥 단순하게 가느냐? 로컬 앱 수준의 커스터마이징을 넣느냐? 하는 고민이 또 생기네요

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다