[О блоге]
[наверх]
[пред]
[2016-10-27 22:48:07+03:00]
[5f98503b78f5aa80bd48f4633ce82e9a219ed7e6]
Темы: [tip][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 вполне себе справится и сожмёт хорошо.
[оставить комментарий]