[О блоге] [index] [пред] [2016-10-27 22:48:07+03:00] [5f98503b78f5aa80bd48f4633ce82e9a219ed7e6]
Темы: [tmux]

Парное/групповое программирование и удалённый read-only доступ

На работе практикуется парное программирование. Но вместо того, чтобы
сидеть рядом с человеком и заставлять и его и себя сидеть неудобно, мы
удалённо подключаемся к нему и смотрим на своём компьютере в его экран.

Так как любой уважающий себя разработчик, не связанный с паршивыми
технологиями требующими GUI, сидит за текстовым терминалом, то задача
показа его экрана выполняется очень просто и эффективно за счёт tmux.

Заводим отдельного пользователя под которым будут входить удалённые
пользователи, например с именем arbeit. В его .ssh/authorized_keys
добавляем ключи коллег и ограничения с автоматическим подключением к
рабочей сессии tmux:

    restrict,pty,command="/usr/local/bin/tmux -S /tmp/arbeit.sock attach-session -r" ssh-ed25519 ... collegue@arbeit.com

Запускаем свою рабочую сессию в демоне на отдельном сокете:

    tmux -S /tmp/arbeit.sock new-session -d -s arbeit
    tmux -S /tmp/arbeit.sock new-window -t ...
    tmux -S /tmp/arbeit.sock attach-session -t arbeit
    chgrp arbeit /tmp/arbeit.sock

Теперь все подключающиеся (причём с шифрованием и аутентификацией по
OpenSSH) не имеют никаких прав и сразу же в режиме чтения подключаются к
общей сессии.

В FreeBSD нужно не забыть указать что терминал вполне себе UTF-8:

    arbeit% cat ~/.login_conf
    me:\
        :charset=UTF-8:\
        :lang=en_EN.UTF-8:

Но, бывают непотребства в виде необходимости парно посмотреть на что-то
в броузере. Так как это GUI, то всё сильно портится, но более менее
возможность работать выходит за счёт x11vnc:

    x11vnc -display :0 -no6 -viewonly -forever -shared -ncache
    xwininfo ; x11vnc -display :0 -no6 -viewonly -forever -shared -ncache -id WindowID

Это даёт read-only доступ многочисленным подключениям и не выходит когда
все отключились. -no6 полезна тем, что если firewall не защищает от
подключений извне, то чтобы по IPv6 порт с сессией не стал доступен
общественности.

-ncache включает, так называемое, кэширование. Это выделение в 10 раз
большего пространства видеопамяти которая кэширует предыдущие состояния
(например переключениям между окнами) изображения, а дальше посылает
команды копирования прямоугольных областей, вместо их полной отрисовки.
Это жрёт память неплохо (счёт на сотни мегабайт), но существенно
повышает производительность отрисовки.

Но, стоит помнить что vncviewer-у можно сказать чтобы он ещё и сжимал
трафик. Это очень помогает и буквально в разы (хотя достаточно было бы
RLE сжатия) уменьшает объёмы трафика, так как zlib на современном железе
в real-time вполне себе справится и сожмёт хорошо.

[оставить комментарий]