RECURA | Программирование & IT
14.6K subscribers
1.52K photos
330 videos
1.57K links
Практические советы, утилиты и обучающие материалы для разработчиков, DevOps-инженеров и системных администраторов. Всё о разработке, Linux и информационной безопасности.

Реклама: @tarabuk1n

РКН: clck.ru/3RnyGw

Биржа: https://telega.in/c/recura_tech
Download Telegram
harnessrouter

👁 Self-hosted инфраструктура для запуска Codex, Claude Code, Hermes и других ИИ-агентов через единый API и Docker-контейнер.

Он реализует Unified Harness Protocol и объединяет разные агентские среды под единым интерфейсом с поддержкой сессий, потоковой передачи, файлов, артефактов и отмены задач. Можно переключаться между разными harness и моделями, сохраняя собственную инфраструктуру и API-ключи.

❗️ Подойдёт разработчикам, которые создают продукты на базе ИИ-агентов и хотят работать с разными агентскими средами через единый протокол.

Проверить в деле

tags: #утилиты #ии #docker

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍53🔥1
👨‍💻 Оптимизация Go на уровне BigTech

👁 Курс погружает в низкоуровневую оптимизацию Go и фундаментальные принципы Computer Science, необходимые для работы с высокопроизводительными системами.

Вы разберётесь, как код проходит путь от синтаксиса до машинных инструкций, изучите устройство ОС, calling convention, syscall и ассемблер в Go. Также освоите unsafe, runtime, reflect, debug и профилирование CPU, памяти и блокировок для поиска узких мест.

❗️ Подойдёт Go-разработчикам, которые хотят глубже понимать работу языка и научиться оптимизировать высоконагруженный код.

Изучаем по ссылке

tags:
#обучение #go #оптимизация

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3👍2👨‍💻1
🛞 Kubernetes может запускать Pod только на узле с нужным локальным условием

👁 Обычно планировщик Kubernetes смотрит на CPU, память, taint'ы и affinity. Но через nodeAffinity можно привязать Pod к собственным меткам узлов и использовать их как механизм автоматического размещения: например, отправлять тяжёлые задачи только на машины с NVMe, определённым типом сети или специальным системным ПО.

📝 Размечаем узлы под реальные возможности

Вместо жёсткой привязки к имени конкретного сервера добавляем метку, описывающую его возможность. Если узлы изменятся, Pod продолжит работать без изменения манифеста.

kubectl label node worker-01 storage.nvme=true
kubectl label node worker-02 storage.nvme=true
kubectl label node worker-03 storage.nvme=false


📝 Требуем нужную характеристику при планировании

requiredDuringSchedulingIgnoredDuringExecution превращает метку в обязательное условие планирования. Kubernetes не разместит Pod на узле, который ему не соответствует.

apiVersion: v1
kind: Pod
metadata:
name: fast-worker
spec:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: storage.nvme
operator: In
values:
- "true"

containers:
- name: worker
image: my-worker:latest


📝 Добавляем несколько вариантов размещения

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

affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: storage.nvme
operator: In
values: ["true"]

- matchExpressions:
- key: storage.local
operator: In
values: ["true"]


❗️ Метки узлов можно использовать как слой абстракции над инфраструктурой: Kubernetes работает не с конкретными серверами, а с их возможностями. Это особенно полезно для кластеров с разным железом, GPU, быстрым локальным хранилищем, особой сетью и специализированными worker-узлами.

tags: #k8s #devops #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥21👨‍💻1
🔒 hetty

👁 Открытый HTTP-инструментарий для исследований в области информационной безопасности и анализа веб-трафика.

Он работает как MITM-прокси с журналами и расширенным поиском, позволяет перехватывать, редактировать и повторно отправлять HTTP-запросы. Встроенный HTTP-клиент, поддержка областей и проектное хранение данных упрощают ручное тестирование и анализ запросов.

❗️ Подойдёт специалистам по информационной безопасности, пентестерам и исследователям веб-приложений.

📱 GitHub

tags: #утилиты #безопасность #сети

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍21🔥1
🤖 CyberStrikeAI

👁 Платформа для автоматизации авторизованных операций по кибербезопасности с помощью ИИ-агентов, Eino и базы знаний RAG.

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

❗️ Подойдёт специалистам по информационной безопасности для автоматизации и контроля авторизованных задач тестирования.

Изучаем по ссылке

tags: #утилиты #ии #безопасность

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
43🔥3👍1
🐧 Разработка и программирование ядра Linux

👁 Курс посвящён разработке модулей ядра Linux и работе с ключевыми механизмами операционной системы на низком уровне.

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

❗️ Подойдёт разработчикам, которые хотят углубиться в устройство Linux и низкоуровневое программирование.

Изучаем по ссылке

tags: #обучение #linux #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2👨‍💻1
🐍 Python может превратить SQLite в надёжную локальную очередь для автоматизации

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

📝 SQLite позволяет сделать небольшую персистентную очередь без Redis или отдельного брокера

import sqlite3
import time

db = sqlite3.connect("jobs.db", isolation_level=None)

db.execute("""
CREATE TABLE IF NOT EXISTS jobs (
id INTEGER PRIMARY KEY,
payload TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending',
created_at REAL NOT NULL
)
""")

db.execute("""
INSERT INTO jobs (payload, created_at)
VALUES (?, ?)
""", ("deploy server-01", time.time()))

while True:
with db:
job = db.execute("""
SELECT id, payload
FROM jobs
WHERE status = 'pending'
ORDER BY id
LIMIT 1
""").fetchone()

if not job:
break

db.execute(
"UPDATE jobs SET status = 'running' WHERE id = ?",
(job[0],)
)

try:
print(f"Выполняем: {job[1]}")
# здесь выполняется реальная задача
time.sleep(2)

db.execute(
"UPDATE jobs SET status = 'done' WHERE id = ?",
(job[0],)
)
except Exception:
db.execute(
"UPDATE jobs SET status = 'failed' WHERE id = ?",
(job[0],)
)


📌 Как это работает:

• Задача сначала записывается на диск, поэтому перезапуск процесса не уничтожает очередь.
• Состояния pending, running, done и failed позволяют восстановить состояние автоматизации после сбоя.
• SQLite поддерживает транзакции, блокировки и WAL, поэтому для небольших локальных job-очередей отдельный брокер сообщений может быть избыточен.

❗️ Такой подход особенно полезен для CLI-автоматизации, локальных агентов, deploy-утилит и фоновых обработчиков, которым нужна надёжная очередь без дополнительной инфраструктуры.

tags: #python #автоматизация #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥543👨‍💻2👍1
🤖 Podroid

👁 Инструмент для запуска полноценного Linux-окружения и контейнеров на Android-смартфонах без root-доступа.

В комплекте есть Podman, Docker и LXC, полноценная виртуальная машина Alpine Linux через QEMU и аппаратное ускорение на совместимых устройствах. Также доступны графический X11-рабочий стол, встроенный терминал, SSH, проброс портов и USB, общий доступ к папке загрузок и резервное копирование контейнеров.

❗️ Подойдёт разработчикам и энтузиастам, которые хотят использовать Android-смартфон как Linux-окружение для разработки и экспериментов.

📱 GitHub

tags: #утилиты #android #linux

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍421
🤖 My-Brain-Is-Full-Crew

👁 Набор из 8 ИИ-агентов и 14 навыков для автоматизации работы с хранилищем Obsidian.

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

❗️ Подойдёт пользователям Obsidian, которые хотят автоматизировать организацию знаний и повседневных задач с помощью ИИ.

Изучаем по ссылке

tags: #утилиты #ии #obsidian

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍42🔥1
👨‍💻 SQL от основ до продвинутых запросов

👁 Курс охватывает SQL на всём пути — от базовых запросов и работы с таблицами до оконных функций, CTE и продвинутых возможностей PostgreSQL и MySQL.

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

❗️ Подойдёт начинающим разработчикам и аналитикам, а также тем, кто хочет систематизировать знания SQL.

Изучаем по ссылке

tags: #обучение #sql

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2👍1👨‍💻1
🐧 Linux может безопасно открывать файлы внутри каталога без классических проверок путей

👁 Обычная проверка realpath() → сравнение префикса → open() имеет race condition: между проверкой и открытием путь может измениться через symlink. Системный вызов openat2() позволяет передать ядру правила разрешения пути и выполнить проверку непосредственно во время открытия.

📝 Запрещаем выход из рабочего каталога

RESOLVE_BENEATH не позволяет разрешённому пути выбраться выше переданного directory FD через ../. Это полезно для архиваторов, файловых API, sandbox'ов и серверов, которые принимают путь от пользователя.

#define _GNU_SOURCE
#include <linux/openat2.h>
#include <sys/syscall.h>
#include <fcntl.h>
#include <unistd.h>

struct open_how how = {
.flags = O_RDONLY,
.resolve = RESOLVE_BENEATH,
};

int root = open("/srv/data", O_PATH | O_DIRECTORY);

int fd = syscall(
SYS_openat2,
root,
"reports/2026/result.json",
&how,
sizeof(how)
);


📝 Полностью запрещаем symlink

RESOLVE_NO_SYMLINKS заставляет ядро отклонять symlink на любом участке пути. Это намного надёжнее ручной проверки отдельных компонентов пути.

struct open_how how = {
.flags = O_RDONLY,
.resolve = RESOLVE_BENEATH | RESOLVE_NO_SYMLINKS,
};

int fd = syscall(
SYS_openat2,
root,
"uploads/user/file.txt",
&how,
sizeof(how)
);


📝 Фиксируем корень файловой системы для операции

С RESOLVE_IN_ROOT переданный directory FD становится виртуальным корнем именно для этого открытия. Даже абсолютный путь внутри операции интерпретируется относительно него.

struct open_how how = {
.flags = O_RDONLY,
.resolve = RESOLVE_IN_ROOT | RESOLVE_NO_SYMLINKS,
};

int root = open("/srv/app", O_PATH | O_DIRECTORY);

int fd = syscall(
SYS_openat2,
root,
"/config/settings.json",
&how,
sizeof(how)
);


❗️ openat2() переносит контроль безопасности путей из пользовательского кода прямо в ядро. Для файловых сервисов и sandbox'ов это позволяет избавиться от хрупких комбинаций realpath(), проверок ../ и борьбы с symlink race.

tags: #linux #безопасность #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥3👨‍💻1
🍑 zabbix-network-topology

👁 Интерфейсный модуль для Zabbix 7.0 LTS и 7.4, который превращает данные мониторинга в интерактивную карту сети.

Модуль показывает связи между хостами, проблемы, трафик, состояние работоспособности и географические данные, используя обнаруженные через LLDP/CDP соединения. Всё работает непосредственно внутри Zabbix без дополнительного сервера, а одни и те же данные можно использовать для карт, графиков, таблиц и информационных панелей.

❗️ Подойдёт DevOps-инженерам и администраторам Zabbix, которым нужна визуализация топологии и взаимосвязей сетевой инфраструктуры.

📱 GitHub

tags: #утилиты #zabbix #мониторинг

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
44👍2🔥1
🤖 ssh-mcp

👁 MCP-сервер, который предоставляет ИИ-помощникам ограниченный SSH-доступ к удалённым серверам через единый протокол.

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

❗️ Подойдёт DevOps-инженерам и разработчикам, которые используют MCP-совместимых ИИ-помощников для работы с удалённой инфраструктурой.

Изучаем по ссылке

tags: #утилиты #ии #ssh

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥21
🐧 Linux-администратор от основ до отказоустойчивой инфраструктуры

👁 Курс охватывает три уровня администрирования Linux — от управления системами и сетями до проектирования сложной инфраструктуры.

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

❗️ Подойдёт системным администраторам и специалистам, которые хотят развивать навыки работы с Linux-инфраструктурой.

Изучаем по ссылке

tags: #обучение #linux #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥4👍2👨‍💻1
🐳 Docker может запускать контейнеры с отдельным PID 1 без собственного init-процесса

👁 У контейнера есть особая проблема: первый процесс становится PID 1 и получает специальные правила обработки сигналов. Для приложений, которые порождают дочерние процессы, это может приводить к зомби-процессам и некорректному завершению. Docker умеет решить это через встроенный init.

📝 Включаем init для отдельного контейнера

Флаг --init добавляет небольшой init-процесс внутрь контейнера. Он становится PID 1, принимает сигналы и собирает завершившиеся дочерние процессы.

docker run --init \
--name worker \
my-worker:latest


📝 Используем init в Compose

Для сервисов, которые запускают subprocess'ы, эту настройку можно закрепить непосредственно в compose.yaml. Тогда поведение не зависит от того, кто и как запускает контейнер.

services:
worker:
image: my-worker:latest
init: true
stop_grace_period: 30s


📝 Проверяем, кто действительно является PID 1

После запуска можно посмотреть дерево процессов внутри контейнера. Это особенно полезно при отладке graceful shutdown и приложений, которые запускают внешние команды.

docker exec worker ps -eo pid,ppid,stat,cmd

docker stop --time 30 worker


❗️ --init полезен не только для «красивого завершения» контейнера. Если приложение создаёт дочерние процессы, встроенный init берёт на себя обязанности PID 1 и помогает корректно обрабатывать сигналы и reaping дочерних процессов без установки полноценного systemd внутри контейнера.

tags: #docker #devops #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
5🐳3🔥2👍1
🔒 Portmaster

👁 Бесплатный межсетевой экран с открытым исходным кодом для контроля сетевой активности и повышения конфиденциальности.

Он отслеживает сетевые соединения, блокирует трекеры и вредоносное ПО и позволяет задавать глобальные или индивидуальные правила для приложений. Также поддерживает защищённый DNS через DoH и DoT и полный запрет сетевой активности при необходимости.

❗️ Подойдёт пользователям Linux, Windows и macOS, которым нужен подробный контроль сетевых соединений и приватности.

📱 GitHub

tags: #утилиты #безопасность

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍21
🤖 claude-reflect

👁 Система самообучения для Claude Code, которая сохраняет исправления, предпочтения и повторяющиеся паттерны рабочих процессов.

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

❗️ Подойдёт разработчикам, которые используют Claude Code и хотят сохранять контекст работы и постепенно адаптировать агента под свои процессы.

Изучаем по ссылке

tags: #утилиты #ии #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥42