Pull to refresh
Just Habra User@justhabrauserread⁠-⁠only

User

Send message

Еще один MultiWan на Mikrotik ROS7 с Балансировкой и QOS. Часть 2

Level of difficultyEasy
Reading time15 min
Reach and readers11K

Привет, Хабр! Это вторая часть статьи о балансировке между провайдерами на Mikrotik. С первой части прошел год, за это время многое изменилось в жизни поэтому такая большая задержка.

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

И так у нас есть 3 настроенных провайдера (их может быть и больше), начинаем маркировать трафик.

Читать далее

Особенности Python, о которых вас точно спросят на техническом собеседовании. Часть 2

Level of difficultyMedium
Reading time11 min
Reach and readers21K

Привет, Хабр! Меня зовут Бартенев Евгений, я автор курса «Python-разработчик» в Яндекс Практикуме и практикующий разработчик. Я прособеседовал сотни кандидатов и сам неоднократно побывал в роли собеседуемого, поэтому хорошо представляю, какие именно знания проверяют на интервью и где чаще всего «проваливаются» не только джуны, но и опытные разработчики.

Первая часть этой статьи вызвала оживлённое обсуждение. В комментариях читатели делились собственным опытом, напоминали о тонкостях, которые я упустил, и задавали отличные уточняющие вопросы. В этой части я продолжу разбирать очередные «подводные камни» в Python. 

Как и раньше, я не буду разбирать заезженные вопросы вроде «чем отличается список от кортежа». Вместо этого — разберём реальные особенности Python, на которых строятся самые коварные задачи и вопросы.

Читать далее

Парсинг HH.ru: от /vacancies до асинхронных очередей и боли с ConversationHandler'ами

Level of difficultyMedium
Reading time3 min
Reach and readers7.9K

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

Думаю, у каждого, кто искал работу, есть этот "любимый" запрос на hh. Вбиваешь "Python Developer", ставишь фильтр "нет опыта", а тебе вываливается 500 вакансий "Senior Analyst", где в требованиях "базовое знание SQL, Python будет плюсом".

Ручной разбор этой каши убивает время и мотивацию. Мой друг Роман (он IT-рекрутер и карьерный консультант) постоянно рассказывает, как кандидаты выгорают еще до первого собеса именно на этом этапе.

Я решил, что хватит. Пора автоматизировать рутину. Казалось бы, 30-минутная задача: дернул API, отфильтровал, откликнулся. Как же я ошибался. Сегодня расскажу, на какие грабли наступил, пока пилил «Аврору» - свой инструмент для автоматизации этого ада.

Читать далее

Патчим Chrome для работы с YouTube

Level of difficultyEasy
Reading time9 min
Reach and readers77K

Салют, Хабр! Я думаю, каждый из вас знаком или, по крайней мере, слышал о такой прекрасной утилите как NoDPI написанной на питоне (большое спасибо @Lord_of_Rings!). Сегодня я хочу представить вам (почти) свою разработку, не требующую ни питона ни прокси. Мы будем патчить прямо на диске библиотеку chrome.dll - входяющую в пакет Chrome на Windows и лежащую в директории "C:\Program Files\Google\Chrome\Application\140.0.7339.208\chrome.dll". Цифры могут меняться в зависимости от версии. Данный патч занимает всего 8 байт и после него у нас появится YouTube.

Читать далее

Собственный ИИ локально, бесплатно и без GPU

Level of difficultyEasy
Reading time5 min
Reach and readers26K

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

Читать далее

Как НЕ нужно писать автотесты на Python

Reading time24 min
Reach and readers8.8K

Разбираем самые странные антипаттерны в автотестах на Python: от sleep(0.1) и стрелочек вниз до глобальных курсоров и "фреймворков" на 3500 строк. Почему так делать не стоит и какие есть взрослые альтернативы.

Читать далее

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

Reading time8 min
Reach and readers19K

Попробуйте поискать в Интернете «Паттерны проектирования на Python» — и получите целую простыню туториалов, демонстрирующих, как в точности воспроизвести на Python паттерны проектирования из книги «Банды четырёх». Там же будут диаграммы классов, иерархии фабрик и столько шаблонного кода, что выхлопа хватит, чтобы отопить маленькую деревню. Так вам внушают, будто вы пишете «серьёзный» код. Умно. Профессионал ьно. Готово для корпоративного использования.

Но вот в чём проблема: большинство из этих паттернов решают проблемы, которые в Python просто отсутствуют. Паттерны разрабатывались для таких языков как Java и C++, где для выполнения самых базовых вещей требуется настоящая эквилибристика — нет ни функций первого класса, ни динамической типизации, ни модулей в качестве пространств имён. Разумеется, вам потребуется Фабрика или Синглтон, если без них в вашем языке просто не с чем работать.

Слепо копировать эти паттерны в Python — не признак большого ума. Из-за них ваш код сложнее читать, тестировать, а также объяснять очередному бедняге, которому этот код придётся поддерживать. Возможно, через три месяца этим беднягой станете вы..

Читать далее

Волшебство ООП или как упростить многопоточное программирование C++

Level of difficultyMedium
Reading time10 min
Reach and readers9.6K

Если Вы сталкивались с многопоточными методами в классах и так же, как и мы, ужасались получившемуся раздутому коду ... вы по адресу. Пару ночей, жонглирование type_traits и мы готовы представить Вашему вниманию обёртку для подобных ситуаций!

Читать далее

Устанавливаем кластер Kubernetes в LXC-контейнерах Proxmox

Level of difficultyMedium
Reading time14 min
Reach and readers6.1K

Если вы когда-либо разворачивали Kubernetes-кластер на виртуальных машинах (ВМ), то знаете, насколько это может быть ресурсоёмко. Особенно это ощущается на одноплатных компьютерах вроде Orange Pi 5 Plus, даже несмотря на его 16 ГБ оперативной памяти. Для домашнего лабораторного стенда или лёгкой продакшн-инфраструктуры хочется чего-то более лёгкого и быстрого

Читать далее

Как собрать Linux-контейнер с нуля и без Docker

Level of difficultyMedium
Reading time8 min
Reach and readers14K

Перевели для вас статью про то, как с нуля создать Linux-контейнер, аналогичный тому, который можно запустить с помощью Docker, но без использования Docker или других инструментов контейнеризации.

Читать далее

Мой первый контейнер без Docker

Level of difficultyMedium
Reading time6 min
Reach and readers27K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

Почему мы перешли на RAID 10

Reading time7 min
Reach and readers26K


Недавно у нас развалился RAID 5. Один диск на первом году своей жизни умер сам от естественных причин. Такое может быть и в период трёхлетней гарантии — нечасто, но может. Мы вынули его, поставили на его место диск из горячего резерва — и во время ребилда в массиве умер второй диск. Данные умерли вместе с ним.

Один из пользователей, чьи данные там были, очень живо интересовался тем, что за конфигурация у нас была. Вплоть до моделей дисков, дат их производства и серийных номеров. Он, вероятно, считал, что там стоит какое-то старьё, и до последнего не верил, что так бывает на новом железе. Потом очень искренне смеялся над фразой, что ни одна схема резервирования RAID не даёт стопроцентной гарантии сохранности данных.

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

Бывает всё.

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

Это привело к целой цепочке последствий, в частности, к тому, что мы перешли на RAID 10 как на новый для нас стандарт хранения данных.
Читать дальше →

Python и нечеткое сопоставление: решение проблемы разнобоя в адресах

Level of difficultyEasy
Reading time10 min
Reach and readers3.7K

Иногда приходится заниматься сравнением больших списков адресов, в которых адреса записаны совершенно по разному без внятных идентификаторов вроде номера объекта - есть только адрес. Один и тот же адрес может фигурировать в различных списках следующим образом:

📍 "д. Малое Шилово, ул. Березовая, д. 7" и "Березовая 7_М Шилово".
📍 "п. Ласьва, ул. Весенняя, д. 5" и "Весенняя 5_Ласьва".
📍 "Луговой пер 5, Краснокамск г" и "г. Краснокамск, пер. Луговой, 5".
📍 "д. Новая Ивановка, ул. Солнечная, 18" и "д.Новая Ивановка, ул.Солнечная, 18".

Уже выделенные отдельно адреса могут выглядеть как на скриншоте Экселя. А пример поставленной задачи может звучать так: «В реестре поданных объектов отметить все согласованные объекты (из общего списка согласованных)».

Если отбросить вариант ручного исполнения и обратиться к скриптам, то мне видится всего два решения:

✅ Использовать алгоритмы нечёткого сопоставления.
✅ Использовать геокодинг адресов.

Ищем приемлемый вариант сопоставления

Перестаньте молиться на принципы S.O.L.I.D

Reading time6 min
Reach and readers28K

В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.


Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.


SRP не SRP


Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).

Читать дальше →

Заговор разработчиков против корпораций

Level of difficultyMedium
Reading time15 min
Reach and readers34K

Речь пойдет о тайной, сугубо анонимной организации, следы которой начал замечать еще в 2018-ом, работая в Яндексе. О целях и мотивах организации можно только догадываться: некоторые считают это кибер-луддизмом, другие — техно-анархизмом. Ясно одно: организация существует, ее члены уничтожают кодовые базы десятилетиями, и говорить об этом не принято.

Читать далее на свой страх и риск

Умный принт-сервер: печать и скан без драйверов на старых принтерах + финансирование опенсорса

Level of difficultyEasy
Reading time18 min
Reach and readers31K

TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.

Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.

Читать далее

Мир за пределами Pandas: достойные альтернативы для работы с данными

Reading time7 min
Reach and readers8.2K

Хабр, привет! Это Леша Жиряков, техлид backend-команды витрины онлайн-кинотеатра KION. В мире дата-аналитики Pandas остается одной из самых популярных библиотек. Но это вовсе не значит, что нет других быстрых, удобных и производительных инструментов. Мой пост покажет альтернативы: от колоночной DuckDB и сверхскоростной Polars до мощного Modin и гибкого Vaex. В подборке я постарался передать главную суть — назначение и преимущества инструмента и его характеристики с GitHub.

Читать далее

FastAPI и Dependency Injection: правда или вымысел?

Level of difficultyMedium
Reading time11 min
Reach and readers15K

В свое время FastAPI прогремел как гром среди ясного неба - тут тебе и минималистичный API аля-Flask (все устали от Django, диктующего свои правила), и OpenAPI документация из коробки, и удобное тестирование, и хайповая асинхронность. Буквально все, что нужно для свободы творчества, и никаких ограничений! Да еще и Depends завезли! В тот момент это был культрурный шок - Dependency Injection в Python? Разве это не что-то из Java?

Но дьявол кроется в деталях. А вы уверены, что те самые Depends == Dependency Injection? Уверены, что пишете код на FastAPI правильно?

В рамках статьи мы рассмотрим различные подходы к организации зависимостей в рамках FastAPI проекта, оценим их с точки зрения удобства использования и постараемся разобраться, как же все-таки "правильно" готовить DI в FastAPI.

Давайте разбираться

FastAPI + Redis + Celery: Создание системы временного хранения файлов с автоудалением и удобным веб-интерфейсом

Reading time46 min
Reach and readers16K

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

Мы пошагово разберем процесс разработки, начиная с настройки FastAPI для обработки HTTP-запросов, интеграции Redis для эффективного хранения метаданных файлов, и заканчивая использованием Celery для асинхронного выполнения задач по удалению устаревших файлов.

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

Читать далее

Заточка кухонных ножей мусатом

Level of difficultyEasy
Reading time9 min
Reach and readers55K

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

Читать далее
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity