node.js 가지고 이것저것 하다가
소코반이나 넷핵같은거 움직이는거 만들어보고 싶어서
무식하게 setinte.rval에 console.clear()랑 console.log() 들이박았더니
딜레이 길든 짧든 깜빡임
윈폼같은데서 특정 셀만 draw-update 하듯이 cli에서도 특정 글자만 가능함?
node.js 가지고 이것저것 하다가
소코반이나 넷핵같은거 움직이는거 만들어보고 싶어서
무식하게 setinte.rval에 console.clear()랑 console.log() 들이박았더니
딜레이 길든 짧든 깜빡임
윈폼같은데서 특정 셀만 draw-update 하듯이 cli에서도 특정 글자만 가능함?
버퍼
겜쪽에서 더블버퍼 같은거 두면서 깜빡이는거 처리하는건 들어봤는데 콘솔은 표준 입출력 버퍼에 붙여서 뭔가 더 해보는걸로 어케 되려나..
아예 Buffer 클래스가 있구나 좀더 찾아보겠음
https://youtu.be/zUjSdjOGmic
- dc App
갓정모 교수님의 더블 버퍼링 강의를 수강하기 - dc App
ㄳ cli 환경에서도 통용되는 개념이구나
1. 배경은 그대로고 일부만 변화한다면 배경은 다시 그릴필요없게 2. 커서이동 찾아보기 3. 콘솔 io에 있어서 랩핑된 함수 직접 호출
배운것 : 콘솔 I/O는 생각 그 이상으로 존나느리다 파일I/O보다 느릴 수도 있다
의문 재정리 : 깜빡이는 것의 해결 -> 콘솔화면상의 부분적 수정에 대한 최적화된 방법
그래서 옛날 cli 프로그램은 redisplay 줄일려고 상당한 노력을 했던걸로 앎
버퍼링을 이용하고 계산을 통해 리페인트 영역을 줄이는게 핵심인듯
https://github.com/gansm/finalcut#virtual-terminal
https://github.com/crossterm-rs/crossterm#features
https://github.com/jtdaugherty/vty#features
일반적으로 편집최소거리 같은걸 구해서 줄이는거 같긴한데, 정확히는 모르겠음. 옛날에 제임스 고슬링(자바만든 그분) 논문 봤던 기억은 나네.
https://dl.acm.org/doi/10.1145/872730.806463
ㄳㄳ 내일 정독들어감
clear 말고 erase 같은거 찾아보샘
난 nodejs 를 잘 몰르지만 curses 쪽 에서 clear할 경우 초기화 작업까지 다 해버려서 깜박까박 하는데 erase는 그거 없이 화면만 지움
이 방향으로 접근해서 '커서이동'->덮어쓰기 식으로 마무리함 ㄳㄳ