В поисках пятого угла

04:05 

Лайфхаков для борьбы с плохим интернетом пост

narical
Я только что наткнулся на статью одного чувака.
Вкратце - чувак уехал глубоко в Гималаи, в глушь, у него разбился экран ноута, но он смог приспособить смартфон в качестве экрана и продолжил писать книгу. А я вам поведаю крупицу его мудрости.

Дано:
очень плохой интернет:
- постоянно рвется соединение, огромные потери пакетов
- пинг от 5000 до 40k
- реальная скорость исчисляется десятками байт в секунду (в среднем 100 Кб в час)
фактически, при таких условиях нельзя загрузить ни одну страничку, даже самую мелкую - браузер выдаёт ошибку по таймауту

Задача:
- необходимо получать информацию из интернета, типа шариться по страничкам и всё такое
- программа-максимум: надо прочитать надпись, которая находится в середине определенного видео на youtube

Решение:
Сперва — программа-минимум. Мы не можем качать мегабайты данных, из которых состоит большинство современных сайтов. Но можно сделать так, чтобы эти мегабайты качал кто-то другой, а мы качали уже отрендеренную страницу, да ещё и в текстовом режиме. Поэтому подключаемся по SSH к своему серверу (или чужому, к которому есть доступ, хотя это нехорошо и Санта не принесет вам подарки), после чего на удалённом сервере запускаем консольный браузер. Стандартное разрешение консоли в текстовом режиме 80х25 символов, это 2000 байт, или 2 Кб. Если изначальная страничка весила 5 Мб - мы скачиваем в 2500 раз меньше данных. Да, нет картинок и не работают скрипты - но какие к чёрту картинки при канале 20 байт/с ?

Пункт два - борьба с задержками. Всё что мы вводим в консоли, отправляется в виде команд на сервер, а он отправляет обратно то, что должно отобразиться на экране. Любой ввод текста (например, web-адреса) превращается в мучение с ожиданием 10-15 секунд, когда на экране загорится очередной введенный символ. На помощь придёт mosh - замена ssh. Использовать очень просто - в консоли вместо ssh пишется mosh.


mosh-клиент по протоклу ssh соединяется с указанным хостом, запускает на нём mosh-сервер с определенными параметрами соединения, после чего обрывает ssh-подключение. В этот момент на сервере и на клиенте формируется одинаковый текстовый буфер, который и видит пользователь. Дальнейшая задача сервера и клиента - используя для связи протокол UDP вместо TCP, синхронизировать своё состояние, передавая только измененные участки. Всё, что пользователь делает на клиенте - отображается мгновенно, в отличие от ssh - синхронизация с сервером происходит в фоновом режиме. Можно без задержек набрать web-адрес и спокойно ждать загрузки. Благодаря тому, что синхронизируются только части экрана, на которых что-то изменилось, один введенный пользователем символ будет равнозначен одному доставленному до сервера байту, поэтому для работы этой технологии достаточно, чтобы была любая связь, вплоть до нескольких байт в секунду.


mosh-подключение не боится обрывов связи и переподключения с другого IP-адреса. Например, можно набрать команду, после чего отрубить 3G-интернет, включить Wi-Fi и увидеть, как на экране появился результат выполнения команды на удаленном сервере.

Ну и пункт 3. Вам надо получить информацию, которая выводится на странице с помощью скриптов, флеша или видеоплеера. С одной стороны возрастают требования к пропускной способности канала (видео на youtube легко может потребовать 10 Мб в секунду). С другой - консольный браузер на удаленном сервере часто не умеет отображать даже картинки, не то что видео.

И даже для такого случае люди придумали решение! На удаленном сервере в графическом режиме запускается полноценный браузер, после чего изображение переводится в текст и отправляется на клиент по ssh-каналу. Дополнительно реализовано управление из консоли курсором мыши.



Но поймите правильно - мало какой утопающий начнёт возмущаться дизайном спасательного круга, который ему бросили ))
Речь идёт об инструменте, позволяющем получить доступ к информации, которая требует в пару тысяч раз большей пропускной способности, чем у вас есть. Этот инструмент не предназначен для постоянного использования, но когда он понадобится, один или два раза в жизни — вы будете рады, что он существует. И особенно хорошо с ним в связке будет работать mosh.

URL
   

главная