Обновить

Администрирование

Сначала показывать
Порог рейтинга

Обновлён проект Python Scripts, где более 60 Python-скриптов для любых задач, включая алгоритмы по парсингу, работе с видео и фото, клонированию сайтов, скачиванию с сайтов и другие популярные решения.

Ранее был представлен учебный проект «Числа Python, которые должен знать каждый программист» (Python Numbers Every Programmer Should Know). Проект также доступен на GitHub.

Теги:
Всего голосов 4: ↑1 и ↓30
Комментарии1

Представлен учебный проект «Числа Python, которые должен знать каждый программист» (Python Numbers Every Programmer Should Know). Проект также доступен на GitHub.

«Существуют цифры\числа\значения, которые должен знать каждый программист на Python. Например, насколько быстро или медленно добавляется элемент в список в Python? А как насчёт открытия файла? Это занимает меньше миллисекунды? Есть ли что‑то, что замедляет этот процесс? Если у вас есть алгоритм, чувствительный к производительности, какую структуру данных следует использовать? Сколько памяти занимает число с плавающей запятой? А как насчёт одного символа или пустой строки? Насколько быстр FastAPI по сравнению с Django? Я хотел бы уделить немного времени и записать показатели производительности, специально ориентированные на разработчиков Python», — сообщил автор проекта Майкл Кеннеди.

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Открытый проект mail2telegram позволяет перенаправляет электронную почту сразу в Telegram. Можно настроить фильтры пересылки, выбрать группу, в которую будут падать письма и автоматом отсеивать весь спам.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Новогодняя аномалия в данных мониторинга.

С Новым Годом!
С Новым Годом!

Воспроизвести достаточно просто

  • Скачать и установить Dimension-UI.

  • Развернуть локально PostgreSQL.

  • Запустить в 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.

Теги:
Всего голосов 5: ↑3 и ↓2+3
Комментарии1

Представлен открытый проект на Python под названием Reverse API engineer. Это консольный инструмент, который фиксирует трафик браузера и автоматически генерирует готовые к работе клиенты Python API. Больше никакого ручного реверс‑инжиниринга — просто просматривайте, записывайте и получайте чистый API‑код.

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

Особенности Reverse API:

  • автоматизация браузера: создан на базе Playground с режимом скрытности для реалистичного просмотра;

  • режим автономного агента: полностью автоматизированное взаимодействие с браузером с помощью агентов искусственного интеллекта (автоматический режим с MCP, использование браузера, stagehand);

  • запись HAR: фиксирует весь сетевой трафик в архивном формате HTTP;

  • генерация на основе искусственного интеллекта: использует Claude 4.5 для анализа трафика и генерации чистого кода на Python;

  • поддержка нескольких SDK: встроенная интеграция с Claude и OpenCode SDK;

  • интерактивный интерфейс командной строки: минималистичный интерфейс терминала с переключением режимов (Shift+Tab);

  • готовность к работе: сгенерированные скрипты содержат обработку ошибок, подсказки по вводу текста и документацию;

  • история сеансов: все запуски сохраняются локально с полными журналами сообщений;

  • отслеживание затрат: подробное использование токенов и оценка затрат с поддержкой кэширования.

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

С наступающим Новым годом!

С праздником!
С праздником!

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

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

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

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

С Новым годом! Пусть он принесет больше ясности, сильных решений и поводов гордиться своей работой.

Данила Трусов, директор продукта «Инферит ИТМен»

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Обновлены бесплатные курсы от Гарвардского университета, включая:

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

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

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

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

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Готово ли ваше облако к 2026 году? Быстрый FinOps-чек-лист

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

Это бесплатный инструмент в формате гугл-таблицы. Прохождение занимает 5–7 минут.

Что дает чек-лист:

  • видно, где процессы уже работают, а где есть пробелы

  • понятно, на каких этапах теряется прозрачность расходов

  • есть конкретные шаги, что имеет смысл внедрять дальше

Чек-лист можно пройти одному, например CTO или Head of Engineering, либо вместе с командой, инженером, архитектором и финансовым специалистом.

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

👉 Забрать чек-лист

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Подборка инструкций по работе с сетью для начинающих

Привет, Хабр! В пятницу я снова с подборкой статей. На этот раз несу инструкции по работе с сетями.

Хороших выходных!

Теги:
Всего голосов 6: ↑6 и ↓0+11
Комментарии0

Habr Wrapped 2025: версия Рунити

Мы много писали, вы много читали — и вместе мы сделали этот год насыщенным. А теперь самое интересное: давайте посмотрим, каким был 2025 год для нашего блога.

📚 215 публикаций
Столько материалов мы выпустили за год. А вы их (почти все) прочитали. Спасибо за доверие!

👀 1 851 319 читателей
Почти два миллиона взглядов на наши продукты, инфраструктуру и разработки команды.

⭐ 852 добавления в избранное
Тексты, которые вы сохраняли, чтобы вернуться к ним позже и перечитать внимательнее. А чаще всего вы читали про облачные сервисы, OpenStack, DevOps-практики и тестирование — тексты, основанные на нашем опыте.

И ещё один повод гордиться этим годом — спецпроекты. Их посмотрели, прокомментировали и сохранили на будущее больше 350 000 человек! Масштаб, если честно, впечатляет даже нас.

И если этот год чему-то научил нас, то вот чему: честные истории, понятные разборы и свежие идеи важны и нужны. Поэтому мы продолжим в новом году!

Спасибо, что провели с нами 2025.

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Обновлён проект Cheat Sheets for Developers со шпаргалками для разработчиков по языкам программирования, сервисам и технологиям, включая Python, Bash, Docker, JS, Java, VS Code, Figma, Git, GitHub, Postman, C#, C++, Rust, Flutter, EJS, Fortran, Docker, K8s, Git, ReEX, ChatGPT, Firefox, Zoom, Gmail, Blender, Audacity, Photoshop.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Ближайшие события

Привет, небольшой апдейт, добавил возможность редактировать service в kui:

edit service
edit service

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0

Список сайтов для самообразования:

  • Academic Earth — огромная библиотека бесплатных курсов обо всем на свете от ведущих специалистов мира. От обучения химии и информатике до бизнеса и психологии;

  • Classcentral — самый удобный поисковик по бесплатным курсам на любую тему;

  • Edx — тут собраны обучающие курсы от самых топовых ВУЗов мира, таких как Гарвард, Стэнфорд и Массачусетский технологический институт. Разумеется, бесплатно;

  • Google Garage Courses — библиотека бесплатных курсов от Google с возможностью получить карьерный сертификат от технологического гиганта;

  • Khanacademy — лучший сайт для углубленного изучения математики и других прикладных наук;

  • Udemy — для тех, кто планирует работать в «диджитале»: отличные курсы по программированию, дизайну, веб‑разработке, графике;

  • Treehouse — мастхэв для будущих программистов. Простые и понятные курсы по Python, Data Science, React и другим темам.

Хотите выяснить, где учиться IT? В экосистеме Хабра есть маркетплейс курсов на Хабр Карьере, на котором собраны сотни онлайн‑обучений в самых разных специализациях: программировании, аналитике, дизайне, менеджменте и других. Чтобы пользователи могли проверить качество курсов, там показаны отзывы от тех, кто уже прошел обучение — изучайте и выбирайте лучшее для себя.

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

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 можно узнать на сайте Рег.облака.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Новогодняя задача: помогите Тирексу поздравить коллег

Условие

Программист Тирекс написал праздничное веб-приложение с обратным отсчетом до Нового года и хочет поздравить им всех коллег. Приложение уже собрано: в директории web находятся готовые статические артефакты (HTML, JavaScript и изображения). У Тирекса есть TLS-сертификат и приватный ключ, и он хочет, чтобы приложение работало по HTTPS.

Задача

Нужно упаковать приложение в Docker-контейнер, чтобы его можно было легко запускать на любом сервере, и сделать доступным из интернета. Времени у Тирекса осталось совсем немного!

Создайте конфигурацию nginx, которая:

  • слушает порт 80 и выполняет 301-редирект на HTTPS (https://$host$request_uri);

  • слушает порт 443 с включенным SSL;

  • использует сертификат /etc/nginx/ssl/cert.pem и ключ /etc/nginx/ssl/key.pem;

  • отдает статические файлы из /usr/share/nginx/html по пути /.

Напишите Dockerfile, который:

  • копирует в  контейнер конфигурацию nginx и артефакты приложения

  • создает пустую директорию /etc/nginx/ssl (для монтирования сертификатов при запуске);

  • использует легкий образ (например, nginx:alpine).

При запуске контейнера должны быть опубликованы порты 80 и 443.

Бонусная задача

Добавьте docker-compose.yml файл, чтобы запускать приложение одной короткой командой из папки с сертификатами.

Предлагайте варианты решения в комментариях. А посмотреть правильный ответ можно в Академии Selectel.

Теги:
Всего голосов 5: ↑5 и ↓0+9
Комментарии2

Как разделить строку в Python: «split()» и альтернативы для разработчиков и аналитиков данных

Разделение строк — рутина для разработчиков и аналитиков: парсинг CSV, обработка логов, пользовательского ввода. Подготовили подробный обзор, где разобрали, как работает «split()» (включая «sep» и «maxsplit»), когда выбирать «partition()/rpartition()», «splitlines()», преобразование в список символов и «re.split()» для сложных правил. И добавили практические примеры, где и какой подход удобнее и надежнее применять.

Подробную инструкцию смотрите в базе знаний Рег.облака.

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Запуск 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.
Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox.

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

  1. GitLab отправляет вебхук.

  2. Платформа проверяет авторизацию и сразу отвечает 202 Accepted.

  3. Обработка выполняется асинхронно в фоне.

Платформа решает, запускать ли новый экземпляр контейнера. Когда job завершается, контейнер остаётся активным какое‑то время, чтобы обработать вызовы без cold‑start.

GitLab не отправляет событие «создание job», поэтому раннер сперва проверяет, есть ли задачи со статусом pending.

Для docker‑executor требуется dockerd. Инициализация демона и подготовка окружения выполняются 1 раз при старте контейнера. Если job найдётся, запускается эфемерный раннер, исполняющий ровно 1 задачу.

Раннер загружает docker‑образ, выполняет команды, передаёт результат обратно через GitLab API.

Используемые возможности Serverless Containers

  1. Эфемерные диски до 10 ГБ на контейнер

  2. Асинхронный запуск контейнеров

  3. Таймаут выполнения до 1 часа

  4. 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 внутри контейнера.

Теги:
Всего голосов 13: ↑13 и ↓0+16
Комментарии0

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

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии1