Читать дальше →
max7 @max7read-only
User
Поразрядная сортировка с человеческим лицом
8 min
40KНесмотря на известность алгоритма поразрядной сортировки, в интернете сложно найти приличную его реализацию на языке C++ (честно говоря, думаю, что и на других языках тоже). Почти всё, что находится поисковиками, чудовищно либо в плане кода, либо в плане эффективности. А чаще всего плохо и то, и другое.
Основная ошибка в том, что авторы пытаются навернуть универсальность там, где это не нужно, и не обеспечивают универсальность там, где это действительно необходимо. В результате получается нечто, что работает медленно и чем невозможно пользоваться.
Возможно, именно поэтому многие люди до сих пор считают поразрядку алгоритмом, представляющим исключительно академический интерес, и малоприменимым в реальности. Однако, это заблуждение.
Основная ошибка в том, что авторы пытаются навернуть универсальность там, где это не нужно, и не обеспечивают универсальность там, где это действительно необходимо. В результате получается нечто, что работает медленно и чем невозможно пользоваться.
Возможно, именно поэтому многие люди до сих пор считают поразрядку алгоритмом, представляющим исключительно академический интерес, и малоприменимым в реальности. Однако, это заблуждение.
+24
Защищенное TLS-соединение с использованием Boost.Asio и OpenSSL под Windows
10 min
54KTutorial
Введение
Однажды мне потребовалось создать защищенный канал связи между своим сервером и своим приложением. Я помнил, что в документации к Boost Asio упоминалось, что он может работать с защищенными соединениями, используя OpenSSL. Я начал искать информацию по этой теме, но, увы, мало что нашел, тем более под Windows. Так что теперь, разобравшись с этим вопросом, я решил написать эту инструкцию, чтобы другим людям было проще разобраться.
+7
Node.js на службе разработчика электроники: создаём библиотеки микросхем
8 min
13KВсем привет! Сегодня мы поговорим о схемотехнике. А чтобы было интереснее, приплетем сюда Node.js. Внимательный читатель тут же спросит, какая же между ними связь? А такая, что мы попытаемся, используя современные технологии, немного облегчить жизнь тем, кто дружит с паяльником, любит программировать всякие там Arduino/BeagleBoard ну и вообще увлекается электроникой чуть больше, чем на потребительском уровне. Если кратко, то мы попытаемся немного автоматизировать процесс создания библиотеки электронных элементов.
Если стало интересно, то добро пожаловать под кат.
Если стало интересно, то добро пожаловать под кат.
+18
I2P: Подпись и проверка подписи EdDSA
4 min
7.8KВ предыдущей статье была рассмотрена реализация самой кривой Ed25519, операции сложения и умножения на число, восстановление второй координаты. В данной статье рассматриваются вопросы эффективного использования этих операций для электронной подписи сообщений и работы в I2P.
В отличие от RSA, где секретный и публичный ключ можно использовать непосредственно, здесь приходится использовать более сложную схему и вводить некоторый дополнительный объект. EdDSA концептуально реализует алгоритм DSA, распространяя его на случай кривых. В качестве подписи выступает пара чисел (R,S), для EdDSA каждое длиной 32 байта, итого длина подписи — 64 байта. Подписываются не сами данные, а хэш он них. В качестве хэш-функции используется SHA512. Далее малым буквами будут обозначаться числа, а большими буквами — соответствующая точка на кривой, полученная умножением числа на базовую точку B.
Алгоритм подписи EdDSA
В отличие от RSA, где секретный и публичный ключ можно использовать непосредственно, здесь приходится использовать более сложную схему и вводить некоторый дополнительный объект. EdDSA концептуально реализует алгоритм DSA, распространяя его на случай кривых. В качестве подписи выступает пара чисел (R,S), для EdDSA каждое длиной 32 байта, итого длина подписи — 64 байта. Подписываются не сами данные, а хэш он них. В качестве хэш-функции используется SHA512. Далее малым буквами будут обозначаться числа, а большими буквами — соответствующая точка на кривой, полученная умножением числа на базовую точку B.
+11
Стеллараторы круче токамаков
3 min
24K… в глазах СМИ. После статьи в ScienceMag про Wendelstein 7-X, от него сложно стало отбиться — в каждом утюге по модному немецкому стелларатору. Ну, выглядит, он конечно, космически.

Фотография Wendelstein 7-X от Christian Lunig, а вот его же фотографии со стройки ИТЭР. А вот моя небольшая подборочка фотографий W 7-X

Фотография Wendelstein 7-X от Christian Lunig, а вот его же фотографии со стройки ИТЭР. А вот моя небольшая подборочка фотографий W 7-X
+35
Распознаем коды Морзе с использованием Rx.js
6 min
18KTutorial

Задача: на входе сигналы с клавиатуры (keyup, keydown) — на выходе буквы и слова декодированные по азбуке Морзе. О том, как декларативно решить данную задачу используя FRP подход, в частности Rx.js — ниже под катом. (Зачем? Because we can)
+10
Полноценная бинарная замена XML
4 min
23KВступление
В чем прелесть XML? Он реализован под все платформы, «человекочитаемый», для него созданы схемы данных (условно человекочитаемые). Открывая 25-мегабайтный файл в браузере сразу замечаешь недостатки этого текстового формата, и начинаешь задумываться. Делаем мы это, конечно, не часто, но все же — чем бы заменить XML?
Добавление самопальных бинарных контейнеров в проект заканчивается провалом, когда к вам приходят партнеры и просят подключить их к этому каналу данных. Google Protobuf поначалу выглядит хорошо, но вскоре понимаешь, что это не замена для XML, не хватает функциональности. BSON в 5 раз медленнее Protobuf, уступает в компактности и для него не реализованы схемы данных.
Разработаем же еще один бинарный формат.
+13
Обработка приватных данных на публичных вычислительных сетях
6 min
8.4KВычислительные системы прошли путь от мэйнфрэймов к персональным компьютерам, и теперь совершают обратный путь — от персональных компьютеров к мэйнфрэймам.
Массово предлагаются услуги для всех желающих по выполнению вычислений на высокопроизводительных компьютерах, реализованных в виде облачных и других систем, от компаний предоставляющих подобные сервисы в публичных сетях.
Однако использование публичных вычислительных сетей несёт для их потребителей риски:
Мы не будем рассматривать вопросы утечки приватных данных или искажений в результатах вызванных в процессе передачи данных, оставляя эту тему классической криптографии по обеспечению закрытого канала связи требуемой степени надёжности.
Рассмотрим вопрос, когда сам внешний вычислитель может подвержен компрометации, и на нём самом возможны и анализ приватных данных в процессе обработки, и искажение результатов вычислений, и постараемся решить задачу, которую сформулируем следующим образом:
Массово предлагаются услуги для всех желающих по выполнению вычислений на высокопроизводительных компьютерах, реализованных в виде облачных и других систем, от компаний предоставляющих подобные сервисы в публичных сетях.
Однако использование публичных вычислительных сетей несёт для их потребителей риски:
- Утечки приватных данных в процессе их обработки на внешнем устройстве или в процессе передачи данных;
- Возможность наличия искажений в получаемых результатах вычислений на внешнем устройстве или в процессе передачи данных. При этом, даже многократный повтор вычислений с одними и теми же исходными данными не позволит обнаружить наличие этих искажений если они носят системный, а не случайный характер.
Мы не будем рассматривать вопросы утечки приватных данных или искажений в результатах вызванных в процессе передачи данных, оставляя эту тему классической криптографии по обеспечению закрытого канала связи требуемой степени надёжности.
Рассмотрим вопрос, когда сам внешний вычислитель может подвержен компрометации, и на нём самом возможны и анализ приватных данных в процессе обработки, и искажение результатов вычислений, и постараемся решить задачу, которую сформулируем следующим образом:
- Требуется обеспечить механизм обработки приватных данных на внешнем вычислительном устройстве, который, при сохранении возможностей использования типовых алгоритмов, позволил бы сделать невозможным (то есть достаточно сложным) выявление значений приватных данных, а также позволял бы выявлять и исправлять возможные искажения в результатах вычислений, вносимые случайно или системно.
- Поскольку, несомненно, потребуется некоторая дополнительная обработка заданий и результатов, на стороне потребителя, то желательно, чтобы сложность(цена, время) такой обработки была значительно меньше сложности(цены, времени) решения основной задачи – иначе у потребителя нет смысла для проведения вычислений на внешних публичных сетях.
- Также, несомненно, может возрасти общее количество вычислений, отдаваемых на внешний вычислитель, поскольку любое внесение избыточности в исходные данные, либо с целью исключения их однозначного определения, либо с целью контроля за их достоверностью, несомненно потребует обработки большего количества информации. Однако, поскольку внешние вычислительные мощности могут быть увеличены только за счёт большей оплаты со стороны потребителя, то разумное увеличение стоимости не должно являться решающим фактором при выборе алгоритма механизма защиты данных.
+6
Как устроена профессия «Data Scientist»
4 min
24KПомимо рассказов о собственном опыте работы над оптимизацией различных сервисов нашего IaaS-провайдера мы анализируем западный опыт. От управления проектами до технологических кейсов, о которых рассказывают другие ИТ-компании.
Сегодня мы решили взглянуть на профессию, которая связана с непосредственной работой с данными, и обратили внимание на заметку Филиппа Гуо (Philipp Guo), который работает в университете Рочестера «ученым по данным».

Сегодня мы решили взглянуть на профессию, которая связана с непосредственной работой с данными, и обратили внимание на заметку Филиппа Гуо (Philipp Guo), который работает в университете Рочестера «ученым по данным».

+13
Пихтовые леса Сибири уничтожают жуки размером два миллиметра
4 min
37K
+55
Изолируем демоны с systemd или «вам не нужен Docker для этого!»
9 min
52KВ последнее время я вижу, как довольно большое количество людей применяет контейнерную виртуализацию только для того, чтобы запереть потенциально небезопасное приложение внутри контейнера. Как правило, используют для этого Docker из-за его распространенности, и не знают ничего лучше. Действительно, многие демоны первоначально запускаются от имени root, а далее либо понижают свои привилегии, либо master-процесс порождает обрабатывающие процессы с пониженными привилегиями. А есть и такие, которые работают исключительно от root. Если в демоне обнаружат уязвимость, которая позволяет получить доступ с максимальными привилегиями, будет не очень приятно обнаружить злоумышленников, уже успевших скачать все данные и оставить вирусов.
Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?
Получить список установленных capabilities файла можно командой
Флаг p здесь означает permitted, т.е. у приложения есть возможность использовать заданную capability, e значит effective — приложение будет ее использовать, и есть еще флаг i — inheritable, что дает возможность сохранять список capabilities при вызове функции
Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать.
Также существуют биты безопасности (Secure Bits), их три: KEEP_CAPS позволяет сохранить capability при вызове setuid, NO_SETUID_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ.
Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?
Capabilities
В чем отличие обычного пользователя от root? Почему root может управлять сетью, загружать модули ядра, монтировать файловые системы, убивать процессы любых пользователей, а обычный пользователь лишен таких возможностей? Все дело в capabilities — средстве для управления привилегиями. Все эти привилегии даются пользователю с UID 0 (т.е. root) по умолчанию, а у обычного пользователя нет ни одного из них. Привилегии можно как дать, так и отобрать. Так, например, привычная команда ping требует создания RAW-сокета, что невозможно сделать от имени обычного пользователя. Исторически, на ping ставили SUID-флаг, который просто запускал программу от имени суперпользователя, но сейчас все современные дистрибутивы выставляют CAP_NET_RAW capability, которая позволяет запускать ping из-под любого аккаунта.Получить список установленных capabilities файла можно командой
getcap
из состава libcap.% getcap $(which ping)
/usr/bin/ping = cap_net_raw+ep
Флаг p здесь означает permitted, т.е. у приложения есть возможность использовать заданную capability, e значит effective — приложение будет ее использовать, и есть еще флаг i — inheritable, что дает возможность сохранять список capabilities при вызове функции
execve()
.Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать.
Также существуют биты безопасности (Secure Bits), их три: KEEP_CAPS позволяет сохранить capability при вызове setuid, NO_SETUID_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ.
+68
Правительство Финляндии начинает разработку планов по введению всеобщего безусловного дохода
4 min
63K
Финское правительственное ведомство социального страхования (Kansaneläkelaitos, или Kela) начинает разработку плана по введению всеобщего социального пособия, более известного, как «безусловный доход» (или «базовый доход»).
Нововведение будет представлять собою монетизацию льгот и заменит все остальные компенсации, существующие в данный момент. Планируется, что в пилотной фазе проекта каждому гражданину страны будут выплачивать по 550 евро в месяц, а впоследствии – по 800 евро.
Безусловный доход – форма стимулирования экономики и социальной помощи гражданам, в рамках которой каждый совершеннолетний гражданин ежемесячно получает фиксированную сумму, не облагаемую налогами, вне зависимости от состояния его трудоустройства.
Многочисленные эксперименты и исследования, проводившиеся в контролируемых условиях, показывали, что такая форма помощи снижает социальную напряжённость и не вызывает роста тунеядства, потребления расслабляющих веществ или других нежелательных последствий.
+51
Как учёные с помощью Twitter бесплатно скачивают исследования
3 min
30KЕсли вы — учёный, и вам для работы нужно получить результаты определённого исследования, то у вас есть два пути: либо вы платите за него долларов тридцать, либо пишете в Twitter сообщение с «волшебным» хештегом, идентификационным кодом исследования и адресом электронной почты.
Я проверил. В течение получаса после моего твита я получил документ по почте. Моё сообщение ретвитнул аккаунт Shecanhazpdf, в описании к которому сказано: «С 2014 года не делает ничего, кроме ретвитов #icanhazpdf целый день».
По негласным правилам твит нужно удалить, но я этого делать не буду — я специально дал ссылку на документ, который не требует оплаты подписки. Поэтому я получил письмо с фразой: «Мне файл доступен без логина, но всё равно я прикладываю его к письму».
Андреа Кужевски — учёная, придумавшая распространять работы с помощью Twitter. Фото из Google+
Я проверил. В течение получаса после моего твита я получил документ по почте. Моё сообщение ретвитнул аккаунт Shecanhazpdf, в описании к которому сказано: «С 2014 года не делает ничего, кроме ретвитов #icanhazpdf целый день».
По негласным правилам твит нужно удалить, но я этого делать не буду — я специально дал ссылку на документ, который не требует оплаты подписки. Поэтому я получил письмо с фразой: «Мне файл доступен без логина, но всё равно я прикладываю его к письму».
Will you help? #icanhazpdf https://t.co/X1R1trWtGQ sychev.i.p@gmail.com
— Иван Сычев (@ivan_sychev) 24 октября 2015

Андреа Кужевски — учёная, придумавшая распространять работы с помощью Twitter. Фото из Google+
+38
Почему Twitter умирает (и что можно почерпнуть для себя из этой ситуации)
9 min
15KTranslation

Сейчас раннее лето, я нахожусь в окрестности Дюпонт Серкл (Dupont Circle) штата Вашингтон. Что-то здесь не так: как мне кажется, люди в последнее время отправляют твиты значительно реже, чем обычно. Но мне нужно закончить книгу, поэтому я пока откладываю свои наблюдения, чтобы вернуться к ним позднее.
Теперь уже позднее лето, и я стою, нахмурившись, на Мэдисон Сквер (Madison Square). Что-то явно не так. Twitter выглядит словно опустевший паб… Кажется, люди спешат поскорее уйти, закатывая глаза в своем недовольстве. Возможно (говорю я сам себе), все просто еще в отпуске?
И вот настала ранняя осень, и я нахожусь в своем любимом лондонском кафе. Twitter похож на большое кладбище, заселенное привидениями. Я называю их «исты». Журналисты ретвитят журналистов, активисты – активистов, ну а экономисты – разумеется, экономистов. Время от времени между различными группами «истов» разворачивается великая война, только вот… никому до этого нет дела… потому что все остальные в спешке сошли с поезда.
Что же случилось с Twitter? Просто какая-то загадка, не так ли?
+9
Достаточно Git-а, чтобы быть (менее) опасным
23 min
132K
Хорошие новости! Я написал тебе этот изумительный Интернет-пост. Я надеюсь, что смогу размазать достаточно Git-а по твоему лицу, чтобы понизить вероятность сделать что-то непоправимое, а так же уменьшить твой страх что-то сломать. Этого должно быть также достаточно, чтобы сделать документацию Git немного более понятной; она крайне тщательно и глубоко проработана и очень глупо, если ты все еще не прочитал половину.
Я постараюсь излагать коротко, но также, чтобы это было потенциально полезно тем людям, кто вообще никогда не сталкивался с контролем версий, поэтому повсюду будет разбросан 101 совет. Не бойся! Я не думаю, что пользователи Mercurial понятия не имеют, что такое патч.
+75
Frida-node или немножко странного кода
8 min
17KПриветствую всех, кто читает эту статью.
Как-то так сложилось, что на хабре практически нет упоминаний про замечательную штуку под названием Frida. Самое толковое из них заключается в паре строк кода и общем описании(HabraFrida, из которой, собственно, я и узнал про существование этой штуковины, за что отдельное спасибо автору).
Если вкратце, то Frida занимается тем, что инжектит JS-движок от Гугла(V8) в таргетный процесс(при отсутствии защиты, конечно же), причем встроенный js-код умеет работать с памятью, перехватывать вызовы функций, делать эти самые вызовы и заниматься прочими непотребствами.
Если честно, с реверсом я знаком крайне посредственно и, в-основном, из MMORPG Runes of Magic, с которой я и начал учиться кодить и с которой связанна немалая часть моих текущих познаний в программировании. Собственно, до сих пор время от времени развлекаюсь написанием всяких разностей под нее(дырявая, кстати говоря, игрушка… Каких только шикарных багов в ней не находили, начиная от рисовки предметов и заканчивая sql-inject'ом). Вот для нее я и написал немножко тестового кода на Frida, позволяющего делать… разное.
Почему node.js? Прост. В конце-концов, это же хаб ненормального программирования)
Как-то так сложилось, что на хабре практически нет упоминаний про замечательную штуку под названием Frida. Самое толковое из них заключается в паре строк кода и общем описании(HabraFrida, из которой, собственно, я и узнал про существование этой штуковины, за что отдельное спасибо автору).
Если вкратце, то Frida занимается тем, что инжектит JS-движок от Гугла(V8) в таргетный процесс(при отсутствии защиты, конечно же), причем встроенный js-код умеет работать с памятью, перехватывать вызовы функций, делать эти самые вызовы и заниматься прочими непотребствами.
Если честно, с реверсом я знаком крайне посредственно и, в-основном, из MMORPG Runes of Magic, с которой я и начал учиться кодить и с которой связанна немалая часть моих текущих познаний в программировании. Собственно, до сих пор время от времени развлекаюсь написанием всяких разностей под нее(дырявая, кстати говоря, игрушка… Каких только шикарных багов в ней не находили, начиная от рисовки предметов и заканчивая sql-inject'ом). Вот для нее я и написал немножко тестового кода на Frida, позволяющего делать… разное.
Почему node.js? Прост. В конце-концов, это же хаб ненормального программирования)
+12
Почему Интернету нужен IPFS, пока ещё не поздно
9 min
67KTranslation
![[узлы к узлам]](https://habrastorage.org/getpro/habr/post_images/590/ffa/1d9/590ffa1d92f892c50c2c05afc343009c.png)
IPFS не совсем ещё сделалась хорошо известной технологией, даже в Кремниевой долине многим она ещё не известна, однако вести о ней быстро расходятся из уст в уста в сообществе открытого исходного кода. И многие рады потенциальным возможностям IPFS в области улучшения передачи файлов и ускорения потокового вещания их по Интернету.
С моей личной точки зрения, однако же, IPFS в действительности гораздо важнее этих возможностей. IPFS избавляет сайты от необходимости использовать центральный сервер-первоисточник и поэтому, вероятно, это наш лучший шанс полностью переменить архитектуру Интернета прежде, чем она развалится от внутренних противоречий.
Как и почему это? Для ответа на этот вопрос придётся вдаваться в подробности.
+38
Хавала: Алгоритм работы системы подпольного банкинга, сохранившейся с древних времен
5 min
99K
Несколько месяцев назад на Хабре был опубликован материал, в котором описывался алгоритм движения денег в банковской системе. Однако привычные нам банки — не единственный инструмент, которые жители разных стран мира используют для работы с финансами.
Одна из таких финансово-расчетных систем получила название «Хавала». Она зародилась в Индостане задолго до появления банковской системы западного образца (по разным оценкам, она работала уже в 8 веке), и до сих пор используется многими гражданами стран Среднего Востока, Африки и Азии в качестве альтернативного инструмента расчетов.
+20
Консоль 21 века: mosh, tmux, fish
8 min
99KВ своей работе мне приходится проводить чуть ли не все свое время в консоли, как в локальной, так и в удаленной. Нет, что вы, я не жалуюсь, даже наоборот — мне нравятся возможности автоматизации, которые предоставляют консольные инструменты, и работа в консоли вполне продуктивна.
Но если вы проводите за своим инструментом до 80% рабочего времени, то желательно убедиться, что вы не тратите время впустую и что работа доставляет вам удовольствие. В этой статье я бы хотел немного рассказать про те инструменты, которыми я лично пользуюсь каждый день, и про то, как они улучшают user experience (и, часто, продуктивность) при работе с консолью и с удаленными серверами в частности.
При работе с удаленными серверами по ssh есть много вещей, которые могут фрустрировать, но основных проблем две, и первая из них принципиально неразрешима в рамках ssh:
Первая проблема неразрешима потому, что ssh by-design является просто транспортом для байтов, и существующие приложения на это поведение расчитывают. Поскольку ssh не пытается интерпретировать этот поток байтов, он не может осуществлять предиктивный ввод. Лично для меня именно эта проблема наиболее актуальна, поскольку мне приходится работать с серверами в европе и США, и во втором случае задержка составляет около 200 мс и является принципиально неустранимой, по крайней мере до изобретения квантовой коммуникации или чего-нибудь подобного. Вторая же проблема проявляется в наших условиях относительно редко, но всё же неприятно переустанавливать все соединения при сбоях сети (и перезапускать упавшие приложения, если они почему-то не были запущены в screen).
Но если вы проводите за своим инструментом до 80% рабочего времени, то желательно убедиться, что вы не тратите время впустую и что работа доставляет вам удовольствие. В этой статье я бы хотел немного рассказать про те инструменты, которыми я лично пользуюсь каждый день, и про то, как они улучшают user experience (и, часто, продуктивность) при работе с консолью и с удаленными серверами в частности.
Проблемы ssh
При работе с удаленными серверами по ssh есть много вещей, которые могут фрустрировать, но основных проблем две, и первая из них принципиально неразрешима в рамках ssh:
- При высоком round-trip latency (>100 ms) пользовательский ввод появляется с ощутимой задержкой, а при использовании мобильного интернета с edge (latency 1000 ms) работа становится подобна пытке
- При временных проблемах (несколько минут) с доставкой пакетов, соединение может порваться с write failed: broken pipe, причем узнаете вы об этом только при попытке ввода или при использовании настроек вроде keepaliveinterval
Первая проблема неразрешима потому, что ssh by-design является просто транспортом для байтов, и существующие приложения на это поведение расчитывают. Поскольку ssh не пытается интерпретировать этот поток байтов, он не может осуществлять предиктивный ввод. Лично для меня именно эта проблема наиболее актуальна, поскольку мне приходится работать с серверами в европе и США, и во втором случае задержка составляет около 200 мс и является принципиально неустранимой, по крайней мере до изобретения квантовой коммуникации или чего-нибудь подобного. Вторая же проблема проявляется в наших условиях относительно редко, но всё же неприятно переустанавливать все соединения при сбоях сети (и перезапускать упавшие приложения, если они почему-то не были запущены в screen).
+81
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity