Pull to refresh
4
0
Rodion Popov @Hannnn

Backend Developer

Send message

Python streaming (spark+kafka)

Level of difficultyEasy
Reading time4 min
Views4.3K

В этой статье, посвященной Python streaming с использованием Spark и Kafka мы рассмотрим основные шаги по настройке окружения и запуску первых простых программ

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments7

Аутентификация, авторизация пользователей и единый вход (SSO) с использованием Django

Level of difficultyEasy
Reading time24 min
Views9.1K

В этой статье исследую технологию SSO. Начинаю с разбора концепций аутентификации и авторизации. Рассматриваю как они работаю в контексте Django.

После прохожу путь от описания как работает SSO простыми словами, до разбора протоколов используемых в SSO.

В итоге делаю реализацию SSO с Django, объединять Django и Keycloak.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments11

TorrentPier — первый движок торрент-трекера с поддержкой BitTorrent v2

Level of difficultyEasy
Reading time3 min
Views15K

Сегодня состоялся релиз TorrentPier Cattle.

Думаю многие знакомы с порталами Rutracker, NNMClub и т.п., которые оперируют на данном движке, хоть они и давно не обновлялись.

Спустя несколько месяцев разработки, рады вам сообщить о переходе на PHP 8.1, поддержке BitTorrent v2, исправленных уязвимостях, и других новых функциях, которые последуют в этой статье.

Начнём с BitTorrent v2 (статья на русском). Это следующая версия протокола BitTorrent, которая имеет ряд улучшений:

Оформить раздачу в мозг
Total votes 83: ↑83 and ↓0+83
Comments68

Процесс разработки приложения Python по дедупликации файлов с использованием контрольных сумм

Level of difficultyEasy
Reading time16 min
Views4.9K

История начинается с несложной задачи и небольшого Python приложения.

Несложная задача это периодическое удаление дубликатов файлов из указанных каталогов. Изначально она возникла из следующих условий. Есть домашнее хранилище фотографии и видео, в котором определен порядок хранения файлов по тематике, датам и т. д. И есть источники для пополнения этого хранилища: смартфоны, фотоаппараты, контент из сети, электронной почты и т. д. Синхронизации источников контента и хранилища нет. Периодически со смартфонов и фотоаппаратов скидываются все хранящиеся там файлы на жесткий диск компьютера, и получается набор каталогов, в которых оказываются как те файлы, что уже есть в хранилище, так и новые файлы. И чтобы поместить в хранилище новые файлы, их нужно каким‑то образом отделить их от тех, что уже сохранены. Самый простой способ, который пришел в голову, это удалить дубликаты из каталогов «пополнения», а с остатком уже работать.

С источников файлы не удаляются пока в этом не появится острая необходимость, в первую очередь потому, что это «естественная» резервная копия. Ну и бывает удобно иметь какие‑то фотографии и видео у себя под рукой.

В процессе своего повествования, постараюсь пояснить принятые мной решения, некоторые из которых прямо напрашиваются на решение иным способом.

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments42

Как подготовиться к собеседованию по System Design мобильному разработчику

Level of difficultyEasy
Reading time8 min
Views4.7K

В последнее время рынок труда в ИТ-индустрии переходит от рынка соискателя к рынку работодателя и компании все чаще заинтересованы в отборе максимально опытного специалиста, удовлетворяющего всем требованиям. Скорее всего вы слышали о недавних сокращениях в BigTech-компаниях, специалисты из которых наводнили рынок и теперь рубятся за позиции в компаниях поменьше. Однако стандартные наборы вопросов уже давно изжили себя, и большинство как российских так и зарубежных компаний стараются выбирать форматы собеседований которые максимально помогают проявить кандидата в бою. Одним из таких форматов является System Design Interview о котором мы и поговорим сегодня.

Я занимаюсь мобильной Android-разработкой уже более 8 лет и в данный момент являюсь тимлидом платформы Android. За свою карьеру я провел более 200 собеседований как нанимающий менеджер и сам тоже проходил собеседования как в крупные российские так и зарубежные компании. Поэтому у меня накопилось много советов и рекомендаций которыми я хочу поделиться.

Эта статья будет полезна как кандидатам которые хотят “взломать” System Design интервью, так и руководителям в сфере мобильной разработки, желающих внедрить секцию System Design в своей компании.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

Создаем свой блог на Github и Hugo

Reading time7 min
Views6.6K

Привет, хабр! Сегодня я расскажу вам, как создать свой блог на Github Pages, используя hugo!

Хотите создать свой собственный блог, но не хотите привязываться к каким-либо крупным хостинговым решениям или издательским сайтам по подписке? Решение есть!

Читать далее
Total votes 14: ↑11 and ↓3+8
Comments20

Виртуальная клавиатура на Python+OpenCV

Level of difficultyMedium
Reading time5 min
Views7.1K

В данной статье разберемся, как написать виртуальную клавиатуру, используя Python+Opencv.

Идея заключается в создании виртуальной клавиатуры, выводе на экран и возможности ее использования. Подразумевается, что клавиатура будет работать с текстовыми редакторами. Для того, чтобы нажать на кнопку, нам потребуется кликнуть на нее, поэтому представим, что кликом будет служить соединение указательного и среднего пальцев. Теперь можно писать код.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments4

Освобождение робота-пылесоса, который стал моим другом

Level of difficultyEasy
Reading time8 min
Views26K
Немного доп. оборудования, несколько команд Linux и вуаля! Пылесос свободен! Фото Cath Virginia / The Verge

В целом роботы-пылесосы мне нравятся. Для меня это эдакий небольшой друг, который чистит за меня пол. Просто фантастика. Но, к сожалению, есть одна проблема — я им не доверяю. Эти девайсы постоянно отправляют отчёты на серверы, что может представлять угрозу для безопасности и тайны личной жизни. Мне такое не по духу, и я подумал, что кто-то уже должен был хакнуть эту схему. После недолгих поисков в интернете я понял, что прав. Мне попался проект Valetudo, нацеленный на освобождение роботов-пылесосов от связи с облаком.
Читать дальше →
Total votes 115: ↑114 and ↓1+113
Comments44

Расширенная настройка бэкэнд-проекта Python ( пример FastAPI )

Level of difficultyMedium
Reading time12 min
Views15K

👋 Привет! Возможно, вы что-то знаете о Python, если вы здесь. Особенно о веб-фреймворках Python. Например, есть одна вещь, которая меня очень раздражает при использовании Django: наложение слоя структуры проекта.

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

Но как только вы начнете писать «лучшие» приложения, вы освоите другие шаблоны проектирования мирового класса, такие как DDD и его многоуровневая архитектура, и через некоторое время вы еще больше усложните свою систему с помощью CQRS. Лично мне стало труднее поддерживать базу кода, следуя всем этим принципам, когда фреймворк является ЦЕНТРАЛЬНОЙ частью всего приложения. Из него даже выйти невозможно, если через какое-то время решишь сменить фреймворк…

✅В этой статье я постараюсь поднять вопрос, а затем решить его.

🤚 Отказ от ответственности: давайте ограничим проект серверного API интернет-рынком.

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments6

Построение пайплайна обработки данных в реальном времени с использованием Python

Level of difficultyHard
Reading time11 min
Views7.1K

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

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

В этой статье мы рассмотрим как построить пайплайн обработки данных в реальном времени с использованием Python.

Читать далее
Total votes 18: ↑16 and ↓2+14
Comments0

Полноценный 2D-платформер на Python в 2023? Мой опыт

Level of difficultyEasy
Reading time5 min
Views9.3K

Говорят, что на Python легко и просто создавать игры-платформеры. Правда ли?

В этой статье вы узнаете о всех стадиях создания игры-платформера на Python, о сложностях при его создании и выводах, которые я сделал после релиза игры.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments19

Как реализовать систему рекомендаций на сайте просмотра кино

Level of difficultyEasy
Reading time13 min
Views2.1K

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

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

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

Читать далее
Total votes 13: ↑10 and ↓3+7
Comments0

Погружаемся в базы данных и SQL: полезные материалы и инструменты от сотрудников Selectel

Reading time4 min
Views10K

Почему программисты SQL так плохо шутят? Потому что их юмор — это всегда "SELECT * FROM jokes WHERE is_funny = 1".

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

Мы попросили наших коллег порекомендовать полезные ресурсы, которые помогут сделать первые шаги в работе с базами данных и SQL. Сохраняйте подборку в закладки, чтобы сэкономить время на изучение темы, и делитесь своими вариантами в комментариях.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments3

RGB-усилители. Особенности, проблемы, выбор

Level of difficultyEasy
Reading time6 min
Views11K


Казалось бы, простая вещь — RGB-усилитель, выбирай просто подходящей выходной мощности и используй. Но на деле не всё так просто. Ценой моих нервных клеток был получен опыт, которым спешу поделиться. Из этого материала вы узнаете, чем отличаются RGB-усилители, что не отражено в документации, где на упаковке враньё, и какие проблемы они могут создавать. Специально для этого материала я купил (и взял погонять) горку RGB-усилителей и отреверсил схемы. А ещё мне хотелось понять, чем обусловлен такой разброс цен на эти простые устройства.
Читать дальше →
Total votes 59: ↑59 and ↓0+59
Comments16

Hamachi умер, да здравствует Hamachi. Тестируем работу сетевого ПО из 2004 года

Reading time5 min
Views11K

Современного геймера удивить сложно. Вокруг индустрии игр построены целые экосистемы. Наиболее яркий пример — игровая платформа Steam, появившаяся на свет вместе с выходом многопользовательского шутера Counter-Strike 1.6. Сейчас эта платформа — крупнейший игровой магазин в мире и огромная сетевая инфраструктура, позволяющая играть с друзьями по сети, не говоря уже о комьюнити.

Вместе с новинками там продаются старые и раритетные игрушки. И даже в них сетевая часть в большинстве случаев позволяет зарубиться в какой-нибудь Quake 3 Arena & Team Arena. Но что делать, если вы собрали ретрокомпьютер на Windows 2000 и хотите поиграть по сети в старые добрые игры из того же года? Никакой Steam там, понятное дело, не пойдёт. Здесь как раз и пригодится Hamachi. Об этом сегодня и поговорим.

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments13

Зачем Data-инженеру Spark

Level of difficultyMedium
Reading time24 min
Views12K

Привет, Хабр, меня зовут Дима. В последние пару лет занимаюсь аналитикой, отвечаю за данные в Почте Mail.ru. Развиваю аналитическое хранилище данных и инструменты для работы с ними. Мы плотно работаем со стеком Hadoop, Hive, Spark, Clickhouse и Kafka. Я хочу остановиться на некоторых аспектах работы с данными в Spark: как мы храним петабайты информации и как выполняем запросы к ним?

Прежде всего поделюсь своими практическими наблюдениями. Расскажу как в нашем хранилище мы превратили 7 петабайт в 0,5 петабайт, что позволило сэкономить годовой бюджет по закупке серверов. И также расскажу о ключевых проблемах с данными, знание о которых помогло бы вам построить своё классное хранилище без последующей переделки.

Читать далее
Total votes 38: ↑37 and ↓1+36
Comments2

Поговорим о мониторинге LDAP

Level of difficultyMedium
Reading time6 min
Views3.5K

Мониторинг является необходимой частью администрирования любой сколько-нибудь серьезной ИТ системы. Благодаря мониторингу мы можем не только узнавать о проблемах и сбоях в работе системы, но также и узнавать о возможных проблемах в работе целевых систем еще до того, как что-то произошло. Так, например, благодаря мониторингу мы можем видеть узкие места в работе сетевого оборудования, утечки памяти или сбои на жестких дисках. Таким образом, средства мониторинга нужны любой системе, в том числе и LDAP.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments1
1
23 ...

Information

Rating
Does not participate
Registered
Activity