Обновлён проект Python Scripts, где более 60 Python-скриптов для любых задач, включая алгоритмы по парсингу, работе с видео и фото, клонированию сайтов, скачиванию с сайтов и другие популярные решения.
«Существуют цифры\числа\значения, которые должен знать каждый программист на Python. Например, насколько быстро или медленно добавляется элемент в список в Python? А как насчёт открытия файла? Это занимает меньше миллисекунды? Есть ли что‑то, что замедляет этот процесс? Если у вас есть алгоритм, чувствительный к производительности, какую структуру данных следует использовать? Сколько памяти занимает число с плавающей запятой? А как насчёт одного символа или пустой строки? Насколько быстр FastAPI по сравнению с Django? Я хотел бы уделить немного времени и записать показатели производительности, специально ориентированные на разработчиков Python», — сообщил автор проекта Майкл Кеннеди.
Открытый проект mail2telegram позволяет перенаправляет электронную почту сразу в Telegram. Можно настроить фильтры пересылки, выбрать группу, в которую будут падать письма и автоматом отсеивать весь спам.
Запустить в Dimension-UI мониторинг данных PostgreSQL с помощью запроса с интервалом 3 сек.
WITH params AS (
SELECT
15 AS total_frames,
20 AS canvas_height,
3 AS frame_duration_sec
),
animation_state AS (
SELECT
(CAST(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) AS INTEGER) / frame_duration_sec) % total_frames AS frame_idx
FROM params
),
tree_definition AS (
SELECT
frame_id,
y_pos,
CASE
-- ═══════════════════════════════════════
-- ЗВЕЗДА на верхушке
-- ═══════════════════════════════════════
WHEN y_pos = 20 AND frame_id = 7 THEN '*'
-- ═══════════════════════════════════════
-- ВЕРХУШКА елки (острая)
-- ═══════════════════════════════════════
WHEN y_pos = 19 AND frame_id = 7 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 1 (y=16-18) — расширяется книзу
-- ═══════════════════════════════════════
WHEN y_pos = 18 AND frame_id BETWEEN 6 AND 8 THEN 'G'
WHEN y_pos = 17 AND frame_id BETWEEN 5 AND 9 THEN 'G'
WHEN y_pos = 16 AND frame_id BETWEEN 4 AND 10 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 2
WHEN y_pos = 15 AND frame_id BETWEEN 5 AND 9 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 2 (y=12-14)
-- ═══════════════════════════════════════
WHEN y_pos = 14 AND frame_id BETWEEN 4 AND 10 THEN 'G'
WHEN y_pos = 13 AND frame_id BETWEEN 3 AND 11 THEN 'G'
WHEN y_pos = 12 AND frame_id BETWEEN 2 AND 12 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 3
WHEN y_pos = 11 AND frame_id BETWEEN 4 AND 10 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 3 (y=8-10)
-- ═══════════════════════════════════════
WHEN y_pos = 10 AND frame_id BETWEEN 3 AND 11 THEN 'G'
WHEN y_pos = 9 AND frame_id BETWEEN 2 AND 12 THEN 'G'
WHEN y_pos = 8 AND frame_id BETWEEN 1 AND 13 THEN 'G' -- широкий низ яруса
-- Сужение перед ярусом 4
WHEN y_pos = 7 AND frame_id BETWEEN 3 AND 11 THEN 'G'
-- ═══════════════════════════════════════
-- ЯРУС 4 — нижний, самый широкий (y=4-6)
-- ═══════════════════════════════════════
WHEN y_pos = 6 AND frame_id BETWEEN 2 AND 12 THEN 'G'
WHEN y_pos = 5 AND frame_id BETWEEN 1 AND 13 THEN 'G'
WHEN y_pos = 4 AND frame_id BETWEEN 0 AND 14 THEN 'G' -- во всю ширину!
-- ═══════════════════════════════════════
-- СТВОЛ (y=1-3)
-- ═══════════════════════════════════════
WHEN y_pos BETWEEN 1 AND 3 AND frame_id BETWEEN 6 AND 8 THEN 'T'
-- Всё остальное — фон
ELSE 'S'
END AS pixel_char
FROM generate_series(0, 14) AS frame(frame_id)
CROSS JOIN generate_series(1, 20) AS y(y_pos)
),
pixel_data AS (
SELECT td.*
FROM tree_definition td
JOIN animation_state ast ON td.frame_id = ast.frame_idx
),
layers_logic AS (
SELECT
y_pos,
pixel_char,
MAX(CASE WHEN pixel_char IN ('T', 'G', '*') THEN y_pos ELSE 0 END) OVER () as max_obj_height
FROM pixel_data
)
SELECT
CURRENT_TIMESTAMP as dt,
CASE
WHEN pixel_char = 'T' THEN '4_Trunk'
WHEN pixel_char = 'G' THEN '3_Tree'
WHEN pixel_char = '*' THEN '2_Star'
WHEN pixel_char = 'S' THEN
CASE WHEN y_pos > max_obj_height
p.s. Данные по запросу любезно предоставлены Claude Opus 4.5.
Представлен открытый проект на Python под названием Reverse API engineer. Это консольный инструмент, который фиксирует трафик браузера и автоматически генерирует готовые к работе клиенты Python API. Больше никакого ручного реверс‑инжиниринга — просто просматривайте, записывайте и получайте чистый API‑код.
«Этот инструмент выполняет код локально, используя Claude Code‑ пожалуйста, следите за выводом/ На некоторых веб‑сайтах используется расширенная система обнаружения ботов, которая может ограничивать захват или требовать ручного взаимодействия», — пояснил автор проекта.
Особенности Reverse API:
автоматизация браузера: создан на базе Playground с режимом скрытности для реалистичного просмотра;
режим автономного агента: полностью автоматизированное взаимодействие с браузером с помощью агентов искусственного интеллекта (автоматический режим с MCP, использование браузера, stagehand);
запись HAR: фиксирует весь сетевой трафик в архивном формате HTTP;
генерация на основе искусственного интеллекта: использует Claude 4.5 для анализа трафика и генерации чистого кода на Python;
поддержка нескольких SDK: встроенная интеграция с Claude и OpenCode SDK;
Для российского ИТ этот год снова оказался непростым. Но, пожалуй, именно такие периоды лучше всего показывают реальную зрелость рынка и команд. Мы много перестраивались, пересобирали продукты и процессы, часто принимали сложные решения на ходу и при этом не останавливались.
За это время стало заметно, как меняется сам рынок. Отечественные ИТ-решения повзрослели: появилось больше осмысленных внедрений и ответственности за результат, больше реальной инженерной и продуктовой работы. Импортозамещение окончательно перестало быть абстрактным лозунгом и превратилось в ежедневную практику. Это сложно, иногда нервно, но точно полезно для всей отрасли.
Хочу поблагодарить всех, кто в этом году не просто адаптировался, а продолжал создавать и улучшать продукты: разработчиков, инженеров, архитекторов, заказчиков и партнеров. Тех, кто спорил, искал лучшие решения, не соглашался на посредственность и держал высокую планку качества. Именно благодаря такому взаимодействию рынок не просто выстоял, а продолжает развиваться.
В новом году хочется пожелать устойчивости и профессиональной смелости:работать на перспективу, делать качественные продукты и не бояться развивать сложные системы.
С Новым годом! Пусть он принесет больше ясности, сильных решений и поводов гордиться своей работой.
Обновлён сборник твикеров, кастомайзеров и проверенных системных решений для Windows под названием System Tools. База данных проект включает ссылки на популярные и полезные утилиты для очистки, твика, удалённого доступа, мониторинга, виртуальных машин, менеджеров дисков, периферии и аудио в системе.
Представлен открытый удобный календарь на 2026 год, на котором все даты года отображаются на одной странице. Он автоматически поместится на одном листе бумаги любого размера. Для достижения наилучших результатов установите альбомную ориентацию при печати и отключите верхний и нижний колонтитулы.
Готово ли ваше облако к 2026 году? Быстрый FinOps-чек-лист
Облачные расходы растут, а контроль и прозрачность часто не поспевают. Чтобы понять, насколько процессы готовы к следующему году, эксперты из Практики FinOps подготовили короткий чек-лист.
Это бесплатный инструмент в формате гугл-таблицы. Прохождение занимает 5–7 минут.
Что дает чек-лист:
видно, где процессы уже работают, а где есть пробелы
понятно, на каких этапах теряется прозрачность расходов
есть конкретные шаги, что имеет смысл внедрять дальше
Чек-лист можно пройти одному, например CTO или Head of Engineering, либо вместе с командой, инженером, архитектором и финансовым специалистом.
Результат, понятный срез текущего состояния и ориентиры, как корректировать облачные расходы в 2026 году.
Подборка инструкций по работе с сетью для начинающих
Привет, Хабр! В пятницу я снова с подборкой статей. На этот раз несу инструкции по работе с сетями.
Зачем сетям нужен RADIUS и как его развернуть. Как работает RADIUS, за что отвечает AAA и как развернуть свой сервер на базе FreeRADIUS в облаке — от установки до интеграции с оборудованием MikroTik.
Настройка SSL-сертификата на Nginx. Как установить и настроить SSL-сертификат для серверов на nginx. Разбираем получение сертификата Let’s Encrypt® или работу со своим для настройки HTTPS-соединения.
Мы много писали, вы много читали — и вместе мы сделали этот год насыщенным. А теперь самое интересное: давайте посмотрим, каким был 2025 год для нашего блога.
📚 215 публикаций Столько материалов мы выпустили за год. А вы их (почти все) прочитали. Спасибо за доверие!
👀 1 851 319 читателей Почти два миллиона взглядов на наши продукты, инфраструктуру и разработки команды.
⭐ 852 добавления в избранное Тексты, которые вы сохраняли, чтобы вернуться к ним позже и перечитать внимательнее. А чаще всего вы читали про облачные сервисы, OpenStack, DevOps-практики и тестирование — тексты, основанные на нашем опыте.
И ещё один повод гордиться этим годом — спецпроекты. Их посмотрели, прокомментировали и сохранили на будущее больше 350 000 человек! Масштаб, если честно, впечатляет даже нас.
И если этот год чему-то научил нас, то вот чему: честные истории, понятные разборы и свежие идеи важны и нужны. Поэтому мы продолжим в новом году!
Academic Earth — огромная библиотека бесплатных курсов обо всем на свете от ведущих специалистов мира. От обучения химии и информатике до бизнеса и психологии;
Classcentral — самый удобный поисковик по бесплатным курсам на любую тему;
Edx — тут собраны обучающие курсы от самых топовых ВУЗов мира, таких как Гарвард, Стэнфорд и Массачусетский технологический институт. Разумеется, бесплатно;
Google Garage Courses — библиотека бесплатных курсов от Google с возможностью получить карьерный сертификат от технологического гиганта;
Khanacademy — лучший сайт для углубленного изучения математики и других прикладных наук;
Udemy — для тех, кто планирует работать в «диджитале»: отличные курсы по программированию, дизайну, веб‑разработке, графике;
Treehouse — мастхэв для будущих программистов. Простые и понятные курсы по Python, Data Science, React и другим темам.
Хотите выяснить, где учиться IT? В экосистеме Хабра есть маркетплейс курсов на Хабр Карьере, на котором собраны сотни онлайн‑обучений в самых разных специализациях: программировании, аналитике, дизайне, менеджменте и других. Чтобы пользователи могли проверить качество курсов, там показаны отзывы от тех, кто уже прошел обучение — изучайте и выбирайте лучшее для себя.
Cloud GPU: как работает и для каких задач используется
GPU в облаке — это вычислительный ресурс для задач с высокой долей параллельных операций. Такие серверы используют, когда стандартных CPU недостаточно по производительности или времени выполнения. Ниже — как устроен Cloud GPU и для каких задач его применяют на практике на примере сервиса в Рег.облаке.
Cloud GPU — это виртуальный сервер с подключенным графическим ускорителем. Он используется для:
обучения и использования моделей ИИ;
обработки изображений, видео и звука;
3D-моделирования и рендеринга;
параллельных вычислений и аналитики.
Инфраструктура Cloud GPU построена на серверах с процессорами AMD EPYC и накопителями NVMe SSD. Используются видеокарты NVIDIA A4000 (16 ГБ), A5000 (24 ГБ) и A100 (80 ГБ). Для работы доступен готовый образ Ubuntu GPU с предустановленными библиотеками и инструментами для ML и ИИ. Управлять серверами можно через облачную платформу.
Сервис работает по модели pay-as-you-go — пользователь оплачивает только фактическое время работы GPU. Такой формат подходит для сценариев с переменной нагрузкой: обучение и дообучение моделей, периодические расчеты и inference.
количество пользователей Cloud GPU выросло на 189%;
среднее время выполнения задачи на одном сервере составило 15 часов в сутки;
среднее количество дней использования GPU на одного клиента выросло в два раза;
48% пользователей повторно заказывают Cloud GPU для новых задач.
Cloud GPU используют в e-commerce, розничной торговле и сфере услуг для аналитики, рекомендательных систем и автоматизации процессов. Наиболее востребованной видеокартой за последние шесть месяцев стала NVIDIA A5000 (24 ГБ) — ее выбрали почти 60% пользователей как сбалансированный вариант для ML- и inference-задач.
Больше о технических параметрах сервиса, доступных конфигурациях и условиях использования GPU Cloud можно узнать на сайте Рег.облака.
Программист Тирекс написал праздничное веб-приложение с обратным отсчетом до Нового года и хочет поздравить им всех коллег. Приложение уже собрано: в директории web находятся готовые статические артефакты (HTML, JavaScript и изображения). У Тирекса есть TLS-сертификат и приватный ключ, и он хочет, чтобы приложение работало по HTTPS.
Задача
Нужно упаковать приложение в Docker-контейнер, чтобы его можно было легко запускать на любом сервере, и сделать доступным из интернета. Времени у Тирекса осталось совсем немного!
Как разделить строку в Python: «split()» и альтернативы для разработчиков и аналитиков данных
Разделение строк — рутина для разработчиков и аналитиков: парсинг CSV, обработка логов, пользовательского ввода. Подготовили подробный обзор, где разобрали, как работает «split()» (включая «sep» и «maxsplit»), когда выбирать «partition()/rpartition()», «splitlines()», преобразование в список символов и «re.split()» для сложных правил. И добавили практические примеры, где и какой подход удобнее и надежнее применять.
Запуск GitLab Runner в Yandex Cloud Serverless Containers
Я Павел Елисеев, старший разработчик в команде Serverless в Yandex Cloud. Мы реализовали сценарий использования сервиса — Serverless GitLab Runner. В посте покажу архитектуру и поделюсь кодом решения.
GitLab Runner — агент, выполняющий задачи (jobs) из CI/CD‑пайплайнов GitLab. Он получает инструкции от GitLab, запускает сборку, тесты или деплой в нужной среде и передаёт результат обратно.
Раннер работает в разных окружениях:
на общих серверах GitLab (shared runners);
на выделенных VM;
в K8s‑кластере.
В первом варианте репозитории должны размещаться на gitlab.com. В случае Managed GitLab или self‑hosted GitLab развёртывание выполняется самостоятельно.
Для shared‑раннеров free‑tier ограничен 400 мин./мес. Учёт идёт по формуле (duration × price-factor), так что число доступных минут зависит от используемого типа раннера. А за пределами лимита нужна привязка не российской банковской карты.
Serverless‑сценарии пытались реализовать на Cloud Functions, что требовало отдельной VM и сложной конфигурации. А мы хотели объединить плюсы serverless‑модели с CI‑задачами:
оплата за время
масштабирование за секунды
изоляция выполнения
отсутствие инфраструктурной рутины
Архитектура
GitLab Runner работает по модели pull: запускает процесс, устанавливающий long‑polling‑соединение с GitLab API, и ожидает появления задач.
Пришла задача — раннер выбирает executor:
shell — job выполняется в текущем окружении
docker — под job создаётся отдельный контейнер со всеми зависимостями
Эта модель плохо подходит для serverless‑окружения, где нельзя держать постоянно активный процесс.
Для перехода на push‑модель используем GitLab Webhooks — HTTP‑уведомления о событиях. С появлением задач GitLab отправляет вебхук в Serverless Container, который:
запускает раннер;
получает информацию о задаче;
выполняет её и возвращает результат в GitLab.
Так, выполнение задачи инициируется событием, а не постоянным опросом API.
Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox.
GitLab требует от обработчика вебхуков быстрого ответа без ошибки. А выполнение задачи может занимать часы. Поэтому вебхуки обрабатываются асинхронно:
GitLab отправляет вебхук.
Платформа проверяет авторизацию и сразу отвечает 202 Accepted.
Обработка выполняется асинхронно в фоне.
Платформа решает, запускать ли новый экземпляр контейнера. Когда job завершается, контейнер остаётся активным какое‑то время, чтобы обработать вызовы без cold‑start.
GitLab не отправляет событие «создание job», поэтому раннер сперва проверяет, есть ли задачи со статусом pending.
Для docker‑executor требуется dockerd. Инициализация демона и подготовка окружения выполняются 1 раз при старте контейнера. Если job найдётся, запускается эфемерный раннер, исполняющий ровно 1 задачу.
Раннер загружает docker‑образ, выполняет команды, передаёт результат обратно через GitLab API.
Docker внутри Serverless Containers. Это не Docker‑in‑Docker: внутри serverless‑контейнера jobs исполняются без отдельного демона Docker, но с аналогичной логикой. Примеры есть в исходном коде.
Важные особенности serverless‑подхода
Эфемерность: кеш между вызовами отсутствует. Для хранения артефактов используйте Object Storage или свои базовые образы.
Загрузка образов: выполняется при каждом запуске. Рекомендуем использовать оптимизированные образы и близкий реестр (Cloud Registry), а при критичных требованиях к скорости старта — перейти на shell‑executor, собрав образ с установленным раннером и нужными зависимостями.
Ограничение времени: не более 1 часа. Для длинных задач разделите пайплайн на этапы с промежуточным сохранением результатов.
Ограничение по диску: до 10 ГБ.
Сценарий Serverless GitLab Runner позволяет выполнять CI/CD‑задачи GitLab, оплачивая лишь время выполнения job. Serverless Containers дают возможности для CI‑нагрузок: асинхронные вызовы, часовой таймаут, эфемерный диск и поддержку docker‑executor внутри контейнера.
Проект с открытым исходным кодом bookhunter позволяет охотиться за книгами. Не нужно искать по сети и натыкаться на ограничения. Решение имеет удобный интерфейс.