Как стать автором
Обновить
17
0
Дмитрий Зудин @pelbyl

Пользователь

Отправить сообщение

Как мы учились обходить блокировки VPN в Китае, чтобы быть готовыми к РКН

Время на прочтение7 мин
Количество просмотров93K

В понедельник 7 августа пользователи VPN-сервисов из России заметили проблемы с подключением к серверам. По собранной в соцсетях и Телеграме информации, ограничения затронули наиболее распространенные VPN-протоколы OpenVPN,  L2TP, PPTP и WireGuard. На сбои в работе VPN-сервисов жаловались клиенты мобильных операторов — Мегафон, МТС, Билайн, Tele2, Yota, Тинькофф Мобайл. 

В этот же день на Xeovo обвалилось огромное количество тикетов, но к вечеру, когда инеформация о новой волне блокировок VPN ещё продолжала расходиться по рунету, и СМИ ещё собирали статистику, которую мы здесь приводим, мы уже закрыли большую часть из них и соединение наших клиентов было восстановлено. Как нам это удалось? Дело в том, что весь последний год мы посвятили борьбе с Великим Китайским файерволлом, а именно — с блокировками VPN в Китае.

Читать далее
Всего голосов 159: ↑156 и ↓3+153
Комментарии114

Кроссплатформенный многопоточный TCP/IP сервер на C++

Время на прочтение16 мин
Количество просмотров85K

Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.

Читать дальше →
Всего голосов 31: ↑18 и ↓13+5
Комментарии40

Двое на самокате, не считая кучи разных датчиков: как мы учились определять поездки вдвоем

Время на прочтение14 мин
Количество просмотров54K

Всем привет, на связи Фарук, инженер-разработчик электроники и встроенного ПО в Whoosh (читается как ВУШ, ощущается как вжууух). Работаю я в embedded отделе (хардкорные программисты, что пишут прошивку на C для различных железок и проектируют эти самые железки), но в основном занимаюсь анализом различных данных от нашего IoT модуля и разработкой алгоритмов для работы с этими данными.

Наша компания — сервис аренды электросамокатов (а местами еще и электровелосипедов) или, иными словами, кикшеринг. О том, как мы к этому пришли и что из себя представляем можно почитать здесь.

Одно из отличий использования шерингового самоката от личного — наличие определенных правил. Например, вы видели когда-нибудь парочку влюбленных, вдвоем на самокате, исчезающих в закате? Или может наблюдали троих парней, которые в обнимку, преодолев смущенье, едут навстречу новым приключеньям? А может быть вы видели как чей-то отец, словно швец, жнец и на самокате ездец, с одним ребенком подмышкой а с другим на шее смело едет по парковой аллее?
Вызывают ли у вас эти картины гнев и праведное негодование? А может быть вы и сами не прочь прокатиться с другом/подругой на одном самокате? У нас для вас есть две новости.

Во-первых, так нельзя. А во-вторых, добро пожаловать под кат.

На самокат и под кат
Всего голосов 141: ↑133 и ↓8+125
Комментарии312

За один проход

Время на прочтение7 мин
Количество просмотров154K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1+71
Комментарии56

Фундаментальная теория тестирования

Время на прочтение15 мин
Количество просмотров1M
В тестировании нет четких определений, как в физике, математике, которые при перефразировании становятся абсолютно неверными. Поэтому важно понимать процессы и подходы. В данной статье разберем основные определения теории тестирования.


Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии5

Основы Linux (обзор с практическим уклоном)

Время на прочтение14 мин
Количество просмотров280K

Привет, Хабр!

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить Linux, повысив уровень своей квалификации. Вместе с тем полноценных обзоров с практическом уклоном по типу «все и сразу» написано не так уж и много (особенно на русском языке).

Главная задача данной статьи – указать начинающим специалистам направление развития, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.

Читать далее
Всего голосов 76: ↑72 и ↓4+68
Комментарии44

Web3.0 на Python, часть 2: advanced

Время на прочтение13 мин
Количество просмотров16K

Привет, хабр! В первой части мы рассмотрели базовые операции на web3py. Здесь же речь в основном пойдет про улучшение производительности и различные "фишки". Скорее всего, они не будут полезны тем, кто делает какой-то pet-project или проект на хакатоне. А полезны они будут тем, кто делает реальный боевой проект и кому важна производительность.

Нырнуть в advanced web3
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Архитектура универсального проекта Django

Время на прочтение4 мин
Количество просмотров24K

В ходе последних лет моей разработки проектов Django я понял, что почти все они имеют одно строение:
API, Apps, Config, Library, Utils, Workers...

В статье, помимо схемы архитектуры проекта Django, которую я использую в реальных промышленных проектах, подробно расскажу как этого достичь, чтобы все работало.

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии15

Как ускорить Python с помощью C-расширений. Часть 1

Время на прочтение9 мин
Количество просмотров11K

Привет, Хабр! Я – Игорь Алимов, ведущий разработчик группы Python в МТС Digital, работаю над продуктами Smart Rollout, B2B портал. В этой статье я расскажу о том, как писать быстрый код на Python с использованием C-расширений и способах победы над GIL.

Интересно? Добро пожаловать под кат!

Читать далее
Всего голосов 19: ↑18 и ↓1+17
Комментарии11

Библиотека СleanAPI: cоздаем микросервис на Python за 30 секунд

Время на прочтение4 мин
Количество просмотров20K

Использование микросервисной архитектуры для построения корпоративных приложений взамен традиционной монолитной — популярный тренд в веб-разработке.

Первая проблема, которую вам предстоит решить, столкнувшись на практике с задачей написать микросервис на Python — выбор подходящего фреймворка.

Мой выбор — Tornado. Поработав с Tornado в паре коммерческих проектов, я в целом остался доволен результатами. Однако, как бы ни было хорошо, всегда хочется чего-то большего.

Результатом моих раздумий стала небольшая библиотека CleanAPI, представляющая собой оболочку над Tornado, позволяющую повысить удобство разработки и снизить порог вхождения для новичков.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии11

Асинхронный python без головной боли (часть 1)

Время на прочтение14 мин
Количество просмотров257K

Почему так сложно понять asyncio?

Асинхронное программирование традиционно относят к темам для "продвинутых". Действительно, у новичков часто возникают сложности с практическим освоением асинхронности.

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку
Всего голосов 135: ↑135 и ↓0+135
Комментарии56

Airtable & Telegram Bot — рецепт быстрого запуска

Время на прочтение5 мин
Количество просмотров7.6K

В данной статье рассмотрим интеграцию no-code базы данных с телеграмм ботом. Благодаря хорошему API и читабельной документации Airtable удобно использовать разработчику. При этом человеку, не знакомому с программированием, подвластно создание базы данных с нуля и аналитика без единой строчки кода. Фактически в данной статье получим готовый рецепт для быстрого запуска небольшого сервиса.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии8

Курс о Deep Learning на пальцах

Время на прочтение2 мин
Количество просмотров173K
Я все еще не до конца понял, как так получилось, но в прошлом году я слово за слово подписался прочитать курс по Deep Learning и вот, на удивление, прочитал. Обещал — выкладываю!

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

Материалы курса были опробованы на студентах кафедры АФТИ Новосибирского Государственного Университета, поэтому есть шанс, что по ним действительно можно чему-то научиться.


Читать дальше →
Всего голосов 117: ↑117 и ↓0+117
Комментарии31

Фильтры захвата для сетевых анализаторов (tcpdump, Wireshark, Paketyzer)

Время на прочтение18 мин
Количество просмотров200K

1. Фильтры захвата


Анализаторы трафика являются полезным и эффективным инструментом в жизни администратора сети, они позволяют «увидеть» то что на самом деле передается в сети, чем упрощают диагностику разнообразных проблем или же изучение принципов работы тех или иных протоколов и технологий.
Однако в сети зачастую передается достаточно много разнообразных блоков данных, и если заставить вывести на экран все, что проходит через сетевой интерфейс, выделить то, что действительно необходимо, бывает проблематично.
Для решения этой проблемы в анализаторах трафика реализованы фильтры, которые разделены на два типа: фильтры захвата и фильтры отображения. Сегодня пойдет речь о первом типе фильтров – о фильтрах захвата.
Фильтры захвата, это разновидность фильтров, позволяющая ограничить захват кадров только теми, которые необходимы для анализа, уменьшив, таким образом, нагрузку на вычислительные ресурсы компьютера, а также упростив процесс анализа трафика.
Читать дальше →
Всего голосов 73: ↑68 и ↓5+63
Комментарии20

Фильтры отображения для сетевых анализаторов (Wireshark, Paketyzer)

Время на прочтение5 мин
Количество просмотров34K

1. Фильтры отображения


Анализаторы трафика являются полезным и эффективным инструментом в жизни администратора сети, они позволяют «увидеть» то что на самом деле передается в сети, чем упрощают диагностику разнообразных проблем или же изучение принципов работы тех или иных протоколов и технологий.
Однако в сети зачастую передается достаточно много разнообразных блоков данных, и если заставить вывести на экран все, что проходит через сетевой интерфейс, выделить то, что действительно необходимо, бывает проблематично.
Для решения этой проблемы в анализаторах трафика реализованы фильтры, которые разделены на два типа: фильтры захвата и фильтры отображения. В прошлый раз мы рассматривали фильтры захвата. Сегодня пойдет речь о втором типе фильтров – о фильтрах отображения.
Фильтры отображения, это разновидность фильтров, позволяющая отобразить только те кадры, которые необходимы в данный момент (принадлежат определенному протоколу и/или узлу), временно скрыв все остальные.
Правила написания фильтров отображения отличаются от правил написания фильтров захвата. Отличая не такие уж большие, но как правило достаточные для того что бы правило фильтра захвата без каких-либо изменений не работало будучи примененным как фильтр отображения.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии1

Борьба с читерством в играх, когда стандартные средства не помогают

Время на прочтение4 мин
Количество просмотров10K
Бывают ситуации, когда читерство в сетевых играх переходит границу стандартной защиты и становится на первый взгляд непреодолимой проблемой.
Но даже в таких ситуациях можно найти выход.
В этой статье пойдет речь о не очень популярной игре ARMA 2 и не совсем обычных методах борьбы с читерами.
Тематика (игровое администрирование) довольно необычная для хабра, но она также имеет отношение к IT, и я считаю, вполне заслуживает внимания.
Читать дальше →
Всего голосов 95: ↑81 и ↓14+67
Комментарии147

Wireshark для всех. Лайфхаки на каждый день

Время на прочтение7 мин
Количество просмотров99K

Пакет с сертификатами от Хабра

Wireshark — очень известная программа для захвата и анализа сетевого трафика, незаменимый инструмент хакера, сетевого инженера, программиста, специалиста по безопасности. Да вообще любого любознательного человека, который хочет детально изучить трафик со своего или чужого мобильного телефона, фитнес-браслета, телевизора.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии16

Как легко расшифровать TLS-трафик от браузера в Wireshark

Время на прочтение2 мин
Количество просмотров156K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+81
Комментарии22

Wireshark — приручение акулы

Время на прочтение10 мин
Количество просмотров1.1M


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

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

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →
Всего голосов 207: ↑202 и ↓5+197
Комментарии60

Парсинг Instagram в промышленных масштабах

Время на прочтение28 мин
Количество просмотров36K

В декабре 2020 года, завершив работать в научном институте, я увлёкся задачей добычи данных из соцсетей, в частности из Инстаграма. Прежде я работал только с готовыми данными, поэтому мне всегда было интересно, как эти данные можно добывать. За несколько дней до Нового Года я написал достаточно базовую статью про то как парсить Инст. В первых числах января мне написал заказчик и попросил сделать для него масштабный парсер инстаграма, который был бы способен делать более 10.000 запросов в сутки.

С тех пор прошло уже больше полугода, за которые я набил всевозможные шишки в данной области и написал промышленный парсер, который способен делать сотни тысяч, если не миллионы запросов в сутки.

В рамках данной статьи я хочу рассказать про путь развития своего Pet-Project в потенциально мощный и серьёзный инструмент. Впереди вас ждёт увлекательное путешествие от хранения данных в простых Json-ах на жестком диске сервера, до облачной базы данных и автоматической инициализации cron расписания запуска процессов внутри докер контейнера, поехали!

Поехали!
Всего голосов 23: ↑18 и ↓5+13
Комментарии14

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность