VNC를 들어보신 적이 있으신가요?


VNC에 관해서는 위키백과에 이렇게 나와있군요.

VNC(Virtual Network Computing, 가상 네트워크 컴퓨팅)는 컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템이다. 자판마우스 이벤트를 한 컴퓨터에서 다른 컴퓨터로 전송시켜서 네트워크를 거쳐 그래픽 화면을 갱신하는 방식을 제공한다.

VNC와 RFB는 미국과 다른 국가들에서 RealVNC Ltd.의 등록 상표이다

https://ko.wikipedia.org/wiki/VNC


쉽게 말해서 그냥 원격에서 컴퓨터를 조작하기 위한 수많은 기술중 하나인겁니다.


마이크로소프트는 여기에 대응하는 RDP라는 프로토콜을 만들었고 우리가 익히 아는 TeamViewer나 SplashTop같은 프로그램도 RFB를 변형하거나 자체적으로 프로토콜을 만들어서 서비스합니다.


보통 사람들에겐 VNC아이콘보다 이 아이콘이 더 친숙할지도 모르겠다. 이 아이콘의 정체는 Teamviewer의 아이콘



하지만 Teamviewer든 SplashTop이든 VNC든 RDP든 모두 공통적인 문제가 있는데 바로 반응속도가 더럽게 느리다는 것입니다.


VNC를 써본 사람들은 하나같이 이야기하는 것이 마우스 클릭하고 1초 프로그램 실행되는 것 보는데 1초 실수로 클릭을 하면 딜레이가 걸려서 한참뒤에 반응이 오니 관리하는 것 외에는 영 쓸만한 것이 못 된다고 하더군요.


그게 어쩔 수 없던것이 VNC가 사용하는 RFB프로토콜은 JPG로 캡쳐한뒤에 네크워크로 보내고 이를 다시 화면에 띄우는 옛날 웹캡이 쓰던 MJPEG방식과 거의 흡사한 방식을 사용합니다. 문제는 JPG인코딩이 CPU를 통해서 하기 때문에 그렇게 빠르지 않고 이를 디코딩하는 것도 사실 그렇게 빠르지 않다는 것입니다.


JPG가 빠르지 않다고? 하시는 분들은 DSLR에서 RAW이미지를 JPG로 인코딩할 때 생각보다 저장시간이 걸린다는 것을 생각해주셔야 합니다. (사진쪽 종사자들은 포토샵에서 결과물 뽑아낼 때 생각보다 시간이 걸린다는 것을 알고있지요. 이쪽 종사자들은 JPG로 뽑지 않고 보통 비손실 압축인 PNG로 뽑긴합니다만...) 우리가 흔히 사용하는 모니터가 60Hz인 점을 생각해주세요. 제가 위에서 말한 JPG인코딩-디코딩이 최소 1/60초안에 끝나야 합니다. 사실 요즘 CPU에 640x480정도의 해상도라면 그 정도는 충분히 가능하지만 데스크탑의 해상도가 점점 더 좋아지는 관계로 VNC의 속도는 예나지금이나 큰 차이가 나지를 않습니다. 그래서 TurboVNC라는 libjpeg-turbo를 사용하는 서버와 클라이언트가 나왔지만 서버와 클라이언트 둘 다 TurboVNC를 사용하지 않으면 다른 것이 하나도 없는 상황이 됩니다.


이런 복잡한 상황을 한큐에 해결할 수 있는 물건이 오픈소스로 공개되었으니 그것이 바로 JSMPEG-VNC입니다.

https://github.com/phoboslab/jsmpeg-vnc


어느정도 성능인지는 한번 보시지요.



Mac에서 Windows용 게임을 하고 있습니다. 심지어 클라이언트도 따로 없이 브라우저를 이용합니다.


그럼 jsmpeg는 뭔가 했더니 같은 곳에서 만들어낸 Javascript기반 MPEG동영상 재생 웹소켓입니다. 쉽게말해서 별도의 코덱따윈 갖다버리고 자바스크립트로 직접 MPEG를 디코딩하는 수준에 이른 것이지요. 요즘 브라우저는 asm.js를 위시해서 자바스크립트를 네이티브로 컴파일해서 사용하니까 직접 웹소켓으로 작업이 가능해진 것입니다.


예상도 못한 수준의 물건이 나왔는데요. 크기도 엄청 작은데 수준은 장난이 아닙니다. 서버 실행도 간단한데요.

jsmpeg-vnc.exe "desktop"


이렇게 하면 데스크탑 전체가 실행되며


jsmpeg-vnc.exe -s 크기 "cursor"


이렇게 하면 마우스를 따라 화면이 캡쳐됩니다.


동영상 마지막에보면 스마트폰으로 조작을 하는 모습을 볼 수 있는데 하이브리드 앱형태로 만들거나 웹페이지를 모바일에 맞게 만들어서 사용하면 똑같이 만들어 쓸 수 있습니다. 예전에 제가 소개했던 Liquidsky와 비슷하게 쓸 수 있는 것이지요.


그런데 현재 링크에 걸린 서버프로그램은 오직 Windows만 지원합니다. 하지만 이런 좋은 원격제어 프로그램을 Windows에서만 쓰긴 아깝지요. Linux도 원격제어 수요는 상당히 많기 때문에(보통 SSH와 터미널 작업으로 때우기는 하지만) 이쪽은 없나 살펴봤습니다.


있네요.

https://github.com/thesauri/jsmpeg-vnc-linux


Cusor를 따라가는 기능은 아직 포팅이 되지 않았지만 사실 그건 중요하지 않고 desktop 전체를 캡쳐하는 것은 포팅이 되었다고 합니다.


Windows의 그래픽 API를 X11로 포팅했다고 합니다.


이런 것을 찾아냈으니 한 번 해봐야겠는데요.


....그건 자고 일어나서 주말에 한번 해보지요.


build-essential

libavcodec-dev

libavutil-dev

libx11-dev

zlib1g-dev

libswscale-dev

libwebsockets-dev

libxtst-dev


이 패키지가 필요한 듯 합니다. 해당 프로젝트 관리자가 설명이 좀 부족합니다...


컴파일이 제대로 안 되네요...


일단 메일을 날려봐야겠습니다.






이전에 MATE버전 배포할 때만 하더라도 32비트버전은 계획은 없다고 했었는데 필요하면 어쩔 수 없이 만들게 되는군요.


MATE버전과 XFCE와 비교해보면 XFCE가 훨씬 더 가볍고 빠릅니다. 그런데 MATE버전이 제 주 OS인 이유는 MATE가 기존 그놈2 기반으로 사용자 층이 굉장히 넓고 훨씬 더 기본 앱이 묘하게 안정적이기 때문입니다.


xfce도 써봤고 더 가벼운 LXDE도 써봤지만 제일 처음 리눅스에 입문했던 것이 그놈2였고 너무 편하게 썼기에 그놈2의 Fork인 MATE에 눌러 앉은 것이기도 합니다.



기본 리눅스민트와 커스텀버전의 차이는 다음과 같습니다.


1. 한국어를 기본으로 설정했습니다.

2. 한국어 입력기(fcitx)가 기본으로 작동합니다. fcitx가 마음에 안 드시는 분은 다른 입력기를 설치하시고 설정에서 바꿔주시면 됩니다.

3. 한국어 폰트(서울남산체, 서울한강체, 가짜굴림(이름만 굴림이고 내용물은 나눔고딕)를 설치했습니다.

4. hwp를 위한 한컴뷰어를 설치했습니다.
5. cups-pdf를 미리 설치했습니다. 프린터 설정에서 PDF프린터를 추가해주시면 바로 PDF를 뽑을 수 있습니다. ~/PDF폴더에 자동 저장 됩니다.

6. 기본 배경화면을 하모니카 커뮤니티에 올라온 (http://hamonikr.org/board_KtxL32/36485) 이 것 으로 지정했습니다. 본래는 하모니카2.2에 들어갈 예정있다고 하네요.

7. HWE커널을 적용했습니다. (그런데 이것이 가상머신 테스트에서 자꾸 문제를 일으킵니다.)

8. Thunar Filename-Repairer를 설치했습니다. Caja filename-repairer나 Nautilus-filename Repairer와 기능은 동일합니다.

9. LightDM과 XFCE간 호환성 문제가 발생하여 18.1까지 사용하던 MDM으로 교체


MATE버전에 적용했었던 Arkzip은 32비트용 바이너리가 없는 관계로 이번 배포판에서는 빠졌습니다. EGG나 ALZ는 반디집을 wine으로 실행해서 처리해주셔야 할 것 같습니다.


실기에서는 문제가 없으나 Virtualbox에서 계속 문제가 발생하고 있습니다. 가상머신으로 사용하실 분들은 추천할 수 없을 듯 합니다. (어쩌면 VirtualBox의 버그일지도 모릅니다.)


다운로드는 아래의 주소를 이용해주세요. 구글드라이브입니다.


https://drive.google.com/file/d/1bfQ69vu2S54dtJ57RJ-Pga6FHUcpiVme/view?usp=sharing


MD5 : 8a631baa0a60a68a765f9fa6b0d3b37b

SHA1 : 1661e547f704d5bd61a3f15c6f4fa4950799df26

SHA256 : a040b1100b5424919a49f3cdcea3a7a1b3171dc3e7f31ff6fe065eccef0e6367



다운로드는 아래의 주소를 클릭해주세요.


https://drive.google.com/open?id=1wYxBp6lSCGdsVYp_fd6FjCoiHp0OzR3L


MD5: 06b6917760c3823abee37c307ec8d830

SHA1: 03f22abcd2ebc3f5568286eaa235504fa4ff25c6

SHA256: 37bada2306b2a82aa23a400d74f31dc956fd5d41b492691933a090df59bce771




Bleachbit는 리눅스에서 사용하는 청소기입니다.

쓸데없는 파일을 삭제해주는 역할을 합니다. 윈도우에서도 CCleaner 같은 것이 있고 안드로이드에도 많은 앱이 이러한 역할을 하고 있지요.


Bleachbit의 GUI 간단하지만 내용은 충실하다.

하지만 GUI가 아닌 그냥 커맨드를 쓰고 싶을 때도 가끔 있습니다.


보통 리눅스를 오래 사용한 몇몇 스크립트 변태들이 이러한 것을 원합니다.

스케쥴러 프로그램을 이용해서 특정 시간에 특정 명령을 내리게 하는 그러한 스크립트를 이용합니다.


이때 사용할 명령어는 다음에 나와있더군요.


https://askubuntu.com/questions/671798/bleachbit-command-line-to-clean-all-options


아주 간단합니다. 그냥



bleachbit --list | grep -E "[a-z]+\.[a-z]+" | grep -v system.free_disk_space | xargs bleachbit --clean


위 명령어를 쓰면 됩니다.


아주 간단하지요.

용량을 확실히 줄일 수 있는 최대한 간단한 방법입니다.