Pull to refresh
0
@spinnmikread⁠-⁠only

User

Send message

Делаем Bluetooth-адаптер для USB-клавиатуры

Level of difficultyMedium
Reading time15 min
Reach and readers16K

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

Я уже предпринимал такую попытку в одной из своих статей. Описанный там адаптер представлял больше учебный интерес, чем имел практическое применение, так как прошивка представляла собой полноценный Linux, кастомизированный скриптами, и использовала слишком мощное (Raspberry Pi Zero 2 W) для такой простой задачи железо.

К той статье были написаны справедливые замечания, а сейчас я хочу их исправить.

Читать далее

Эмулятор Qemu | Установка и настройка

Level of difficultyEasy
Reading time9 min
Reach and readers9K

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

Читать далее

Как работать с виртуальными машинами

Reading time11 min
Reach and readers9.8K

Введение в виртуализацию в Linux

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

Читать далее

SMART Monitoring System

Level of difficultyEasy
Reading time7 min
Reach and readers6.2K

В продолжении статьи: https://habr.com/ru/articles/962290
Пришла мне мысль что для такой задачи должны быть готовые зрелые решения. В частности в smartmontools и оказалось что всё уже давно придумано. Но не до конца ...

Решил поделится опытом. Причесал моё словоблудие нейронкой.

Читать далее

Мониторинг жёстких дисков

Level of difficultyMedium
Reading time6 min
Reach and readers16K

Приключилась у меня беда, посыпался один жёсткий диск. Думал его полечить с помощью "Виктории". Но увы, сейчас всё изменилось и диски стали умными.

Раньше можно было пометить плохие секторы, что бы операционная система туда ни чего не писала. Диск работал дальше, только становился меньше объёмом.

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

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

Узнать что произошло

Win32 API и ностальгия по окнам странной формы

Level of difficultyEasy
Reading time6 min
Reach and readers33K

Я по горло сыт стандартно выглядящими приложениями. Сегодня все десктопные приложения Windows выглядят одинаково, да и внутри устроены одинаково: их создают на основе дурацких браузерных обёрток React, Electron, electronbun и Tauri, имитирующих реальные десктопные приложения. Они медленно работают и занимают кучу памяти — по сути, это bloatware. Блокнот — это, блин, приложение для простых ЗАМЕТОК, а не замена Word, калькулятор — это калькулятор, а не планировщик лунной миссии НАСА. На каком-то этапе Microsoft сбилась с курса, как будто сдалась и передала бразды правления куче веб-разработчиков, незнакомых с концепцией оптимизации.

Чёртов Блокнот занимает в памяти почти 50 МБ, хотя эквивалентное приложение, написанное на чистом Win32 C, занимает 1,8 МБ. Вроде бы, по современным меркам 50 МБ — это не так много, но в том-то и смысл: эти мегабайты постепенно накапливаются. Недавно я купил новый Intel Ultra 9 285 с 32 ГБ ОЗУ, но при запуске Windows 11 память уже была заполнена на 77%.

Программирование на Win32 API — утерянное ныне искусство; я с ностальгией вспоминаю, как когда-то программировали приложения для Windows. Процесс был запутанным, но обеспечивал полный контроль.

Читать далее

Своя почта против Gmail

Level of difficultyEasy
Reading time9 min
Reach and readers26K

В первой статье я рассказывал историю «деда из деревни», который вместе с внуком поднял свой почтовый сервер вместо Gmail — на обычном VPS, с доменом, DNS‑записями и всеми сопутствующими приключениями. Эта иллюстрация продолжает ту линию: дед‑айтишник и внук уже не просто радуются первому письму, а разбираются, что происходит с их маленьким сервером в большом почтовом мире.

Читать далее

Это — всё что вам надо знать о белых списках: как устроены и 6 способов обхода

Level of difficultyMedium
Reading time10 min
Reach and readers122K

Думаю, вы уже в курсе, что происходит в РФ с белыми списками: работают белые списки, ТСПУ в режиме drop-all пропускает только одобренные IP + SNI, рунет медленно, но верно становится интранетом

Мы просканировали 46 млн российских IP-адресов, нашли 63 тысячи выживших, разобрали работу ТСПУ. И главное - актуальные методы пробива (от Serverless-функций и покупки VPS с белым IP до туннелей через WebRTC).

Читать далее

Nuitka 4.0: как я разогнал свой Python-скрипт на 335% и почему JIT-будущее уже на пороге

Level of difficultyEasy
Reading time7 min
Reach and readers7.3K

Представьте себе: вы запускаете свой старый добрый Python-скрипт, он привычно задумывается на пару секунд, а потом начинает работать. А теперь представьте, что тот же самый скрипт без единого изменения в коде — просто после прогона через одну утилиту — стартует почти мгновенно и работает втрое быстрее. Никакой магии, просто вышел Nuitka 4.0.

22 апреля 2026 года проект, который когда-то начинался как нишевый компилятор, дорос до мажорной версии 4.0. И это не просто «пофиксили баги, добавили пару флагов» — это реально меняет правила игры для тех, кто пишет на Python и хочет, чтобы код летал, а не ползал. По данным официальных тестов, скомпилированные скрипты показывают повышение производительности на 335% в pystone-бенчмарке по сравнению с CPython. Можете представить, что ваш веб-парсер или ML-пайплайн ускоряется втрое без переписывания на Rust.

Если совсем просто: PyInstaller просто пакует ваш скрипт вместе с интерпретатором в один файл — по сути, это архив с «батарейками». А Nuitka переписывает весь Python-код на чистый C и компилирует его в настоящий исполняемый файл. Никакой интерпретации на лету — только скомпилированный бинарник, который в теории может обогнать даже PyPy. И теперь, с версией 4.0, эта теория стала куда ближе к практике. «Раньше я думал, что ускорение от Nuitka довольно скромное... но с версией 4.0 вижу реальный прогресс», — примерно так звучат комментарии на Hacker News, и я с ними согласен.

Читать далее

Как я разрабатывал отказоустойчивый промышленный контроллер. Ч1

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

Я, автор , независимый исследователь, разработчик SCADA системы Gatherlog А так же автор комплекса по разработке Промышленных Контроллеров под названием 3o|||sheet..

Читать далее

Автоматизируем создание глобального роутера для связи выделенного и облачного серверов

Reading time8 min
Reach and readers8.8K

Привет, Хабр! Меня зовут Сергей, я разработчик облачной платформы в Selectel. В прошлой статье я рассказал об использовании Terraform для создания глобального роутера и настройки сетевой связности между разными регионами облака. Сегодня продолжим тему и объединим в сеть выделенный и облачный серверы.

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

От iptables к nftables: O(n) против O(1) на практике

Level of difficultyMedium
Reading time22 min
Reach and readers11K

Если администрировать Linux-сервера достаточно долго, рано или поздно сталкиваешься с сетевой фильтрацией. Где-то нужно закрыть лишние порты, где-то ограничить доступ между сегментами сети, а где-то настроить NAT.

На практике это почти всегда приводит к iptables: таблицы, цепочки, правила — и со временем конфигурация начинает напоминать археологический слой. Правила копируются, дополняются, теряют актуальность, и через пару лет уже сложно понять, почему конкретное правило вообще существует.

В этой статье разберёмся, как появился nftables, чем он отличается от привычного iptables, как устроена его архитектура и как на практике использовать его для настройки firewall на Linux-сервере.

Читать далее

Почему я перестал писать bash-скрипты и написал свой язык

Level of difficultyMedium
Reading time11 min
Reach and readers7.8K

Время от времени мне нужно выполнить примитивный сценарий в терминале, но каждый раз это заканчивается очередным гуглежом «bash iterate each file» или «bash file has string». А что если скрипты в терминале можно было бы писать прямо как поток декларативных мыслей?

Читать далее

Загрузка конфигурации из settings.toml в Python: чтение, проверка структуры и преобразование в объекты Pydantic

Level of difficultyMedium
Reading time18 min
Reach and readers8.4K

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

Ниже рассматривается модуль Python, который читает файл settings.toml, преобразует его содержимое в структуры Python, извлекает нужный раздел конфигурации и проверяет его через модель Pydantic.

Читать далее

MQTT Control RS — приложение для автоматизации поверх MQTT

Level of difficultyEasy
Reading time3 min
Reach and readers8.4K

Здравствуй, Хабр!
Работая с MQTT, я столкнулся с утомляющим неудобством: инструменты либо только показывают сообщения, либо требуют написания кода для автоматизации, либо усложнены в развертывании. Захотелось единого локального решения — мониторинг трафика, ручная публикация команд, простая логика и HMI-панель в одном окне. Ну и графики, конечно же совмещенные графики! Так я начал разрабатывать MQTT Control RS. Пользусь сам, теперь решил открыть сообществу.

Читать далее

CoreBus — универсальный Modbus терминал

Level of difficultyEasy
Reading time4 min
Reach and readers8.1K

CoreBus — кроссплатформенный терминал для работы с COM-портами и TCP-сокетами с поддержкой протоколов Modbus TCP / RTU / ASCII и много чего еще.

Приложение развивается уже довольно давно. Но была одна фича, которой не хватало, чтобы сделать CoreBus по-настоящему универсальным терминалом. Мне об этом писали еще с первых релизов. В личных сообщениях и в комментариях к статьям. Эта идея формулировалась по-разному, но суть была одна.

И поэтому хочу представить вам новый режим - "Modbus мониторинг"!

Читать далее

Разбираем хаос в Linux‑логах: journald, rsyslog и файлы

Level of difficultyHard
Reading time14 min
Reach and readers13K

«Где мои логи — в /var/log/messages, /var/log/syslog или только в journalctl?» — этот вопрос рано или поздно задает себе каждый инженер, который вынужден переключаться между разными дистрибутивами: Ubuntu, CentOS, Alpine, корпоративные Unix системы. 

Типичный сценарий: вы заходите на сервер, ищете /var/log/messages, а его или нет, или он есть, но journalctl показывает гораздо больше событий, чем файл. 

Иногда сервер внезапно начинает сильно использовать CPU, и в итоге причиной оказывается агрессивное логирование. 

Если к этому добавить разнородный парк, где рядом с Ubuntu живут динозавры на AIX и Solaris, путаница приобретает глобальный характер. 

Сейчас мы живем в эпоху «двоевластия»: systemd‑journald уже стал стандартом де‑факто, но rsyslog все еще присутствует во многих дистрибутивах по инерции или ради совместимости. Эта статья для инженеров, которые хотят понимать, кто именно пишет логи в Linux, почему они дублируются, где теряются CPU и I/O, и как настроить логирование так, чтобы диск не превращался в помойку. 

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

Читать далее

Не доверяй чужому VPN: поднимаем self-hosted AmneziaWG с веб-панелью

Level of difficultyEasy
Reading time7 min
Reach and readers70K

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

Рациональное зерно в этом, конечно, есть. Случайные VPN-сервисы - особенно бесплатные, непрозрачные и обещающие «полную анонимность в один клик» - действительно могут оказаться сомнительным выбором. Когда весь ваш трафик идет через неизвестно чью инфраструктуру, вопрос доверия перестает быть теоретическим.

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

На практике все работает ровно наоборот. Чем больше ограничений, тем выше спрос на инструменты обхода. И если уж выбирать между случайным коммерческим VPN, бесплатным приложением с мутной моделью монетизации и собственным сервером, то self-hosted-вариант выглядит как минимум достойным внимания.

Поэтому дальше речь пойдет не о том, почему VPN - это страшно, а о том, как сделать его своим: развернуть self-hosted AmneziaWG с помощью install-скрипта и дополнить его веб-интерфейсом для управления пользователями.

Читать далее

Docker как контейнер-песочница, v2

Reading time5 min
Reach and readers9.5K

Иногда бывает нужно запустить рабочие программы так, чтобы отделить их от ОС (не устанавливать поверх системы, использовать другие библиотеки, сформировать portable пакет и т.д.).

Например, защитить от нежелательного обновления, или наоборот, потестировать обновление перед тем как применить его в работу.

Простейшее решение - устанавливать и запускать их внутри контейнера docker.

Читать далее

/tmp кончился — пишем виджет для qtile с предсказанием по тренду

Level of difficultyMedium
Reading time7 min
Reach and readers6.4K

qtile — тайловый оконный менеджер для Linux, целиком написанный на Python. Конфиг — тоже Python, с asyncio, доступом к procfs и вообще ко всему, что есть в системе. Я сижу на qtile уже почти 15 лет с одним и тем же конфигом, который потихоньку допиливаю, и что мне в нём нравится: панель оконного менеджера — удобное место для визуализации метрик, собранных из произвольных Python-скриптов.

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

Information

Rating
Does not participate
Registered
Activity

Specialization

Системный инженер, DevOps-инженер
Средний
Linux
Python
Bash
PostgreSQL
Администрирование Linux
Виртуализация
Настройка и ремонт компьютерной техники
Системное администрирование
Администрирование серверов