15. Nix в пилюлях: Поисковые пути Nix

В Nix для поиска дериваций используется переменная окружения NIX_PATH. Она похожа на PATH, но есть и важные отличия. Разбираемся с тем, как устроен репозиторий nixpkgs.

Вечный кайф

В Nix для поиска дериваций используется переменная окружения NIX_PATH. Она похожа на PATH, но есть и важные отличия. Разбираемся с тем, как устроен репозиторий nixpkgs.

Навеяло комментариями: у людей стойкая ассоциация между Perl как языком и CGI как технологией, использовавшейся в начале веб‑времен.
Всё логично: на тот момент Perl был одним из немногих распространенных скриптовых языков, и естественно что на нем делать CGI‑скрипты было удобнее, чем на shell, например.
Но это не означает что одно к другому было гвоздями прибито.
А вообще технология была по‑своему хорошая: установили вебсервер (как правило — Apache), настроили каталог, из которого запускаются скрипты — и запускай что хочешь.
Попробую показать к чему можно приспособить это в наше время...
Многие полюбили удаленный формат работы, тем более что и рабочий софт мигрирует от локальных приложений, которые устанавливались на каждую рабочую станцию, к веб-интерфейсам, с которыми можно работать хоть из "уютного офиса", хоть из дома.
Но есть нюанс: иногда требования безопасности вынуждают держать такие системы внутри локальной сети. Раньше это не было проблемой: даем человеку доступ да вот хотя бы через OpenVPN, он заходит удаленно в сеть и работает.
Но сейчас, видимо из-за санкций, такие простые решения как OpenVPN или вообще не работают, или работают крайне нестабильно. И даже не очень простые, типа Wireguard. И даже еще более непростые, не будем их тут называть.
Ну, вот еще один вариант решения проблемы, если переселяться в офис очень невыгодно: в принципе об этом недавно тут писали, но я остановлюсь именно на рабочем применении данной технологии.
Итак, допустим, у нас есть наша BigCRM, работающая на сервере 192.168.100.1, и подключиться к ней снаружи никак невозможно, а классические VPN у нас запрещены некими внешними враждебными силами.
На помощь приходит упоминавшаяся ранее технология i2p.
Cовмещаем Vless, WebSocket, VPN и сайт на одном порту средствами Haproxy, создаем альтернативу VPN на основе WebSocket.

Начнем серию статей под названием Detection is easy, посвященных Detection engineering (DE), о чем я пишу в одноименном Telegram-канале. Один из этапов DE - определение источников событий и организация их сбора. В этой статье мы рассмотрим установку Elastiflow — это мощное решение для обработки и визуализации сетевых данных, построенное на основе стека ELK (Elasticsearch, Logstash, Kibana). Elastiflow предоставляет возможность собирать, обрабатывать и анализировать данные из различных сетевых протоколов, таких как NetFlow, sFlow и IPFIX. Основное преимущество Elastiflow по сравнению с классическим ELK-стеком заключается в оптимизированном агенте сбора сетевой телеметрии, а также в наличии готовых дашбордов и визуализаций, которые упрощают анализ сетевого трафика.
Изначально проект развивался на GitHub, однако разработчики перешли к коммерческому решению — flow-collector, который демонстрирует значительно более высокую производительность по сравнению с версией, доступной на GitHub. Более подробную информацию о различиях можно найти в документации. Политика лицензирования позволяет бесплатно использовать продукт, но если ты зарегистрируешься, то будет доступно порядка 480 полей и использование одного инстанса (4000 записей в секунду, без регистрации 500).

И снова вспомню времена древние, староглиняные: когда-то настройка сети в UNIX-like OS была делом, требующим сложных технических знаний. Нужно было зайти в консоль под правами рутовыми, да указать вручную адрес IP для интерфейса сетевого. Примерно так:
ifconfig eth0 add inet 192.168.1.10 netmask 255.255.255.0 up
Или, ежели админ сети сподобился, да настроил сервер DHCP - то так:
ifconfig eth0 up
dhclient eth0
Да еще не забыть указать адрес сервера DNS:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
А ежели надобность была чтобы оно при перезагрузке сохранялось - то записать эти заклинания в файл типа /etc/rc.local на память долгую.
Теперь-то другое дело: воткнул шнурок в разъем - сеть и появилась, как по щучьему велению.
И даже WiFi - нажал мышкой на иконку, выбрал название сети, ввел пароль - она и подключилась.
Красота, лепота какая! Но есть нюанс...

Новогодние каникулы — отличное время не только для отдыха, но и для саморазвития. Если вы хотите узнать больше о низкоуровневой оптимизации, тонкостях работы с GPU или разобраться в архитектуре ядра Linux, эти выпуски подкаста «Битовые Маски» точно стоит добавить в свой плейлист. Эксперты с многолетним опытом обсуждают самые сложные темы из мира низкоуровневого программирования, делятся ценными инсайтами и реальными историями из профессиональной практики.

Как разработчик, активно использующий Linux, я часто сталкиваюсь с ситуациями, когда система может неожиданно выйти из строя. Будь то неудачное обновление дров, конфликты пакетов или просто неосторожные действия при конфигурации - в Linux у вас всегда есть возможность что-то сломать. И хотя это дает нам полный контроль над системой, иногда это может создавать проблемы.
К счастью, есть простое советское средство для починки чего угодно!

Продолжаем изучать паттерны проектирования, используемые при создании пакетов в Nix. В этой пилюле разберёмся с паттерном override (переопределение).
В наше время, когда в каждой квартире интернет "течет" буквально из розетки, из порта роутера или прилетает по WiFi - никто не вспоминает о таком анахронизме как аналоговый модем.
А когда-то интернет добывали из модемов: обычные пользователи, они же ламеры, перебирали различные варианты программ-звонилок и "драйверов", а настоящие айтишники настраивали PPP вручную.
Как это работало и зачем может пригодиться сегодня (а оно может).

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



Разбираемся, как работает второй из базовых паттернов Nix — callPackage. Автоматизируем передачу параметров, сокращаем код репозитория.

Интерфейс командной строки — это альфа и омега для большинства технарей, особенно для разработчиков и сисадминов. Чем бы вы ни занимались — скриптами, конфигурацией серверов или автоматизацией задач, — команды Linux сэкономят вам часы рабочего времени. Но если только вы умеете грамотно с ними обращаться.
Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.
В этой статье я расскажу вам о пяти командах, упрощающих жизнь разработчика. Это не просто удобные приёмы, которые не помешало бы знать. Эти команды сэкономят вам время и значительно повысят эффективность взаимодействия с терминалом.

Привет, Хабр!
Меня зовут Артём, я инженер-программист в департаменте серверных решений. В статье расскажу про новый инструмент для повышения производительности, который получилось портировать и доработать для ОС Astra Linux Special Edition.

Когда я писал про использование Докера как контейнера с инструментами для работы — вообще‑то речь шла про использование прежде всего доступа через шелл. Ну в самом деле: файлы они и в Африке файлы, редактирую я их Vim‑ом, потому что это удобно, перемещаю MidnightCommander‑ом, по той же причине, для обработки используются Makefile, и всё это окна терминалов.
Во множественном числе.

Хабр, привет! Я Максим, технический директор в компании Амвера и в этой статье я хотел бы поделиться опытом развертывания кластера kubernetes у облачного провайдера, который под капотом использует OpenStack. В этой статья я хочу пошагово рассказать про путь развертывания, подсветив те места, которые вызвали у меня затруднения.

Хабр, привет!
Сегодня говорим о Debian. Debian не нуждается в представлении – это один из самых популярных и востребованных дистрибутивов Linux. Несмотря на широкую доступность в интернете, крупные предприятия сталкиваются с проблемой использования дистрибутива в изолированных контурах обслуживания, что требует поднятия зеркала репозиториев внутри.
Однако в случае с Debian поднятие полного зеркала может осложняться объемом репозиториев — там по‑настоящему много пакетов, включая и те, что обычно не нужны на серверах, например игры. Помимо этого, официальной поддержки Debian не существует, а работать как-то нужно. Поэтому в этой статье мы расскажем о способе создания готовых архивов для зеркал с урезанными подборками пакетов, нужных для установки и/или обновления одного или более серверов с известным набором ПО.

В то время как настоящие разработчики активно используют в своей работе всякие продвинутые IDE с элементами искуственного разума - некоторым по прежнему хватает текстового редактора.
Нет, в самом деле, а что еще нужно? Несколько файлов с исходным кодом, Makefile для сборки всего этого, MidnightCommander чтобы копировать файлы туда-сюда и удобный текстовый редактор, например Vim.
А еще куча установленных пакетов типа gcc, make, cmake - в общем, настроенная и подготовленная среда, вплоть до указания желаемой цветовой схемы в редакторе.
И вот однажды так получилось, что удобный настроенный компьютер вдруг накрылся медным тазом: жесткие диски тоже выходят из строя.