Учусь Ansible: от пинга до Nginx на Raspberry Pi и Orange Pi

Привет.
Я студент, изучаю Ansible на Raspberry Pi через Tailscale. Делюсь полным путем от первой ошибки до работающих веб-серверов. Код + выводы + уроки. Репозиторий на GitHub.
Пользователь

Привет.
Я студент, изучаю Ansible на Raspberry Pi через Tailscale. Делюсь полным путем от первой ошибки до работающих веб-серверов. Код + выводы + уроки. Репозиторий на GitHub.

Всем привет! Мы делаем проекты по Zabbix, накопили большую экспертизу и решили сделать переводы нескольких статей, которые нам показались интересными и полезными. Наверняка, будут полезны и вам. Также своим опытом делимся в телеграм-канале zabbix_ru, где вы можете найти полезные материалы и записи наших вебинаров, опубликованных на нашем ютуб-канале (прим. переводчика). Ниже ссылки на предыдущие статьи из цикла.
Миграция с MySQL на PostgreSQL
SELinux: интеграция с Zabbix и другими инструментами
Защита от ложных срабатываний триггеров в Zabbix с использованием функций min/max/avg
Zabbix – автоматизация управления пользователями (JIT)
В этой статье мы покажем, как легко принудительно включить двухфакторную аутентификацию для группы пользователей в Zabbix и как сбросить токен для генерации TOTP (одноразового пароля с ограниченным сроком действия). Подробности под катом.

Давайте рассмотрим как управляют памятью два популярных языка программирования — Rust и Go.
Когда запускается программа, создается процесс с собственным адресным пространством и потоками, выполняющимися на ядрах. Процессор работает с виртуальной памятью — абстракцией, которой управляет операционная система.
Например в Go, когда мы создаем массив

Команда Python for Devs подготовила перевод статьи о том, почему Python — несмотря на свою популярность — не всегда идеален для Data Science. Автор показывает, как отсутствие нестандартной оценки выражений усложняет анализ данных, и сравнивает Python с R, где такие задачи решаются куда элегантнее.

Разработка софта всегда была поиском баланса между разными аспектами, вроде скорости разработки (как быстро ты выкатываешь новые фичи), производительности приложения, потребления им памяти, красотой интерфейса и отполированностью логики.
В большинстве случаев скорость разработки важнее, чем производительность и потребление памяти.
ORM — это как раз инструмент, экономящий время разработки. Но за счёт чего?

Когда я в прошлом году услышал, что дядя Боб планирует выпустить вторую редакцию «Чистого кода», то был восхищён, а это для меня редкость. Я считал, что и первый выпуск был хорош, хотя сам читаю редко.
Возможно, причиной восторга стала мысль о том, что я смогу снова разнести его примеры кода, как сделал в своей первой статье.
Или же меня обнадёжило данное Мартином обещание доработать руководства из предыдущей книги. Знаете, то удовольствие, когда читаешь заметки к долгожданным патчам для рабочего ПО.
А может, это была глубинная надежда, что кто-то, наконец, пересмотрел его идеи и осознал необходимость изменения подхода Мартина к написанию «чистого кода». Всё же это была самая жестокая критика первой редакции книги с момента её публикации более 17 лет назад.
Несмотря на весь свой цинизм и любовь постебаться, я искренне уважаю тех, кто может признать свои ошибки и взглянуть на вещи по-новому. Я испытываю глубокую радость, когда мой посыл доходит до умов людей и меняет их взгляд на вопросы, в которых они грубо заблуждаются (хотя порой мне кажется, что мой напористый подход может, наоборот, этому мешать).
Так что представьте, каково было моё разочарование, когда я потратил $60 на электронную версию этой книги, в которой Боб не просто не изменил своей позиции по большинству спорных практик, но и продолжил топить за них ещё круче!
Невероятно!
Но я забегаю вперёд…

Последние 2 года я выстраивал и непрерывно улучшал собственную систему планирования в Obsidian. За это время я обнаружил кое-что важное, что решил разделить с сообществом.
И вот что я заметил: почти все, кто пытается выстроить систему управления, начинают с одного и того же вопроса — «Какой инструмент мне взять?» Notion? Jira? Obsidian? Linear? Асана?
Тут я всегда отвечаю одно: выбор инструмента — это последний вопрос, а не первый.

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

Уже несколько лет я занимаюсь определением стоимости проектов по разработке, но в первые годы постоянно терпел провалы. Да, можно создать API за неделю, но если вы берёте за это копейки и работаете, как проклятый, то больше похожи на волонтёра, которому компенсируют хлеб и воду. Я бессчётное количество выставлял слишком низкий ценник, делал больше, чем от меня требовалось, а потом ощущал себя болваном. Этот пост — не какой-то манифест гуру; всему этому я научился, набив достаточно шишек. Если вы занимаетесь разработкой на фрилансе, возможно, мои ошибки уберегут вас от части мучений.
Вы когда-нибудь выставляли цену за проект, думая, что он займёт месяц, но в результате спустя четыре месяца давали скидку, лишь бы покончить с этим кошмаром?

Когда в 2010 году в сибирской мерзлоте нашли небольшого мамонтенка Юку, находку восприняли как огромную удачу. Ткани животного сохранились почти идеально: на теле сохранились царапины, шерсть лежала плотным слоем, мышцы практически не утратили структуру. 15 лет спустя стало ясно, что эта находка куда важнее, чем предполагали вначале.
Группа исследователей из Стокгольмского университета сообщила о выделении из тканей Юки древней РНК — молекул, которые редко переживают даже десятилетия, не говоря о десятках тысяч лет. Работа исследователей показала, как современные методы позволяют выйти за рамки привычного анализа ДНК и получить данные о клеточной активности давно исчезнувшего животного.

На моем компьютере всё работало!» — фраза, после которой начинается многочасовой дебаггинг. Вы открываете requirements.txt, а там свалка: непонятные версии, транзитивные зависимости и библиотеки, которые вы вообще не ставили.
Pip — отличный установщик, но ужасный менеджер проектов. В 2025 году стыдно таскать за собой «портянку» из текстовых файлов. В этой статье я покажу, как Poetry превращает ад зависимостей в скучный и предсказуемый процесс. Разберем pyproject.toml, магию lock-файла и переедем с Pip за 5 минут без боли.
Внутри: туториал, гайд по миграции и честный разбор минусов (да, Poetry тоже не идеален).
Была у меня папка на диске C под названием Python. В ней я держал свои проекты. Со временем надоело каждый раз вручную создавать папку для нового проекта, потом вручную создавать стартовый файл app.py. Это одно и то же действие снова и снова. В какой то момент я зае***ся сильно устал, хотелось просто нажать одну кнопку и получить готовую структуру без рутины. Решил автоматизировать
Здарова Хабровчане, на связи King Triton. Ловите мое очередное бесполезное творение PythonProjectManager (далее PPM)
PPM это небольшое приложение на Python. Сделано на PyQt6. Задача простая. Создавать проекты быстро, без лишних движений, с удобным доступом к ним
В крупных компаниях — особенно в банках, телекомах и государственных организациях — корпоративная сеть устроена так, что весь трафик проходит через периметр безопасности. Это означает:

При разработке сложной системы приходится сталкиваться с использованием nginx в качестве reverse proxy: роутинг, список правил, регулирующих путь запроса во внутренние системы или между подсистемами.
Быстро развивающиеся сервисы обрастают правилами, назначение которых не очевидно или имеет недокументированные особенности. Проверенный способ рефакторинга таких систем: зафиксировать и вылечить упростить. Фиксировать будем тестами.
Как проверить корректность вашей конфигурации Nginx'а? Как проверить ее безопасность и нет ли уязвимостей ? Какие есть для этого варианты, их плюсы, минусы, практическая применимость и как эти проверки встроить в CI пайплайн ?
Ответы на эти вопросы под катом. Будет полезно, погнали.

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

Какие главные проблемы технической документации? Во-первых, ее нет, во-вторых, если она есть, то не актуальна.
Давайте порассуждаем, как мы можем попытаться упростить себе жизнь при создании документации, а главное увеличить ее актуальность и качество.
Существует три класса задач, которые решает техническая документация:
1. Описать наши требования к системе и принятые решения
2. Описать текущее состояние системы
3. Объяснить пользователю, как работать (\разворачивать\эксплуатировать) с системой.
Первый тип документации — наши требования к системе. В эпоху LLM, кодогенерации и декларативного подхода к описанию инфраструктуры, мы будем вести требования так, чтобы система, там где это возможно, сама собиралась из них. Поэтому документация первого типа потребует высокого аудита качества. Ревью изменений, совместная работа, ведение версий, с возможностью отката, автоматическая сборка. Все то, что присуще подходу Docs as Code.
Второй тип документации — описание текущего состояния системы. Так как мы не хотим разрыва между описанием системы и самой системой, мы будем пытаться генерировать человеко-читаемое описание из кода и конфигурации. Назовем этот подход Code as Docs.
Третий тип — различные виды пользовательской документации. Эту форму документации мы постараемся минимизировать, сделав понятным наши интерфейсы и встроив подсказки прямо в процесс работы пользователя с системой. Назовем это подходом No Docs.
На этом можно было бы и закончить, но пройдемся подробнее по каждому пункту.

Лучших инженеров увольняют не потому, что они плохи. А потому что они слишком правы. Их слова рушат иллюзию контроля — и показывают, что план не сработает. Но без них компании быстро понимают, какой ценой даётся это «спокойствие».

Когда в компании несколько отделов, а IT-отдел тонет в хаосе заявок из Telegram, почты и личных сообщений — пора задуматься о системе, которая поможет контролировать все в одном месте. Подобрать подходящую Service Desk систему — первый шаг к порядку.
В этой статье разберем, что такое Service Desk система, чем она отличается от таск-трекера, почему ее путают с Help Desk, и по каким критериям можно подобрать себе решение.

Привет Хабр! Меня зовут Алексей и я занимаюсь беспроводными технологиями. Не так давно я рассказывал, как собрать прошивку OpenWRT без image builder. В этой статье мы повысим планку и попробуем собрать и прошивку, и image builder для модели роутера с частичной поддержкой OpenWRT. Под частичной поддержкой я понимаю то, что для данной конкретной модели роутера поддержки нет, но она есть для платформы. Экспериментировать я буду с реальным устройством - это Wi-Fi 7 роутер, полученный от китайского производителя. Вместе с роутером производитель предоставил нам необходимую документацию и DTS файл. Заранее хочу предупредить, что производитель просил не раскрывать название модели и не тиражировать его DTS файл. Поэтому часть информации на скриншотах я заблюрирую.

Краткое и доступное руководство по базовым алгоритмам на графах: BFS, DFS, топологической сортировке и алгоритму Дейкстры. Чёткие объяснения, примеры и код на C++ — для тех, кто хочет быстро и уверенно освоить фундамент графовых алгоритмов.