вторник, 16 июля 2013 г.

Жарим deferred'ы.

Основная цель написания сего поста: разобраться в том, как работает декоратор @inlineСallbacks в Twisted и понять, зачем нужны сквозные функции. До этого дело пока не дошло, но разберем подготовительную часть, а именно: зачем нужны Deferred, почему без них будет хуже?

В "поджарке" также будут участвовать:
1. Разница между обычными Deffered'ами и inlineCallbacks. Пример с inlineСallback и без них.
2. Операция cancel. Как она работает и зачем нужна?
3. Отмена Deferred'а по таймауту. Зачем  это нужно и где может использоваться. Пример.


вторник, 2 июля 2013 г.

О ресторане и его клиентах.


В ресторане "Грабли" очень вкусные завтраки. Очень рекомендую.
Есть еще кровавые блинчики:



Обслуживание в Граблях намного лучше, чем в том же МУ-МУ (в МУ-МУ на Таганской особенно приставучие продавцы!)
Когда люди приходят в ресторан, они хотят хорошо поесть. Ресторан -- тот же сервер по обсуживанию клиентов. Ресторан -- сервер, предоставляющий еду. И если он хорошо выполняет свои обязанности, то и коннект клиентов будет утойчивый и скорее всего, переподключаемый.

Подробнее о клиентах с серверами под катом. А если стало интересно про ресторан "Грабли", то вам сюда.


вторник, 25 июня 2013 г.

Отлов запутанных змей.






Есть много разных способов отлова змей. Например, можно ловить руками, держа за голову и туловище. А потом аккуратно класть змею в мешок. Или можно использовать "змеелов". Иногда используют крючок. Об этом подробнее можно почитать тут.
Мы рассмотрим другой способ. =)

Далее, будет небольшой рассказ о написании приложения на Twisted.
Рассказ представляет собой частичную копипасту отсюда.

вторник, 18 июня 2013 г.

Нагружаем сеть рандомами или нулами.

Пусть есть 2 хоста: client и server . С client хотим на server послать много немыслимых данных и нагрузить сеть.
Пусть client с ip = 192.168.50.100, а server с ip = 192.168.4.5.

Устанавливаем простейшее соединение клиент-сервер с помощью netcat. На сервере начнем слушать с портом соединения 10000 (можно поставить другой, незарерервированный под системные нужды):

Запустим nc на server'e (ip = 192.168.4.5):
nc -l -p 10000

С клиента (ip = 192.168.100.50) устанавливаем соединение с серверной машиной по 10000-му порту:
nc 192.168.4.5 10000

Соединение установлено.

Теперь апгрейд простейшего соединения:
1. Добавим бесконечный цикл с прослушкой на сервере, чтобы при отключении клиента, соединение не прерывалось
2. Все данные, пришедшие с клиента отправляем в /dev/null, чтобы не наблюдать хаос и ужас из рандомов (в случае с нулями нам повезет больше и мы ничего страшного не увидим):
while sleep 1; do nc -l -p 10000 > /dev/null; done

Про хаос и ужас. Увидим мы это:

Вход по ssh без запроса пароля


Полезная штука:
sshpass -p [yourpassword] ssh [yourusername]@[host]
Т.е.:
sshpass -p 12345 ssh root@192.168.5.4