Как стать автором
Обновить
157.92

Разработка под Linux *

Пишем под *nix

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

От космической баллистики до kernel bypass — все, что вы хотели знать про C++ и Linux

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K

Заходят как-то в лофт разработчик на С++, доктор математических наук и инженер-программист Linux kernel — и вместо шутки начинается System Level Meetup. 24 мая в Санкт-Петербурге соберутся те, кто пишет код на уровне железа, оптимизирует ядро Linux и проектирует архитектуру сложных систем. Два трека — C++ и Linux kernel, десятки докладов, живое общение, стенды, квесты и железо от YADRO. Регистрируйтесь и подключайтесь — онлайн или офлайн.

Читать далее

Новости

Девять desktop- и embedded-систем для создания собственного Linux-дистрибутива: какой выбрать для вашего проекта

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров2K

Привет, Хабр! На связи команда авторов совместной лаборатории ЛЭТИ и YADRO. Часто компаниям нужно контролировать программное обеспечение в инфраструктуре, включая серверы и ПК сотрудников. А еще — управлять версиями ПО из пакетной базы дистрибутивов, особенно для частных систем, где требуются определенные версии. Здесь компании могут либо довериться стороннему вендору, либо разработать собственный дистрибутив.

Кастомизация дистрибутивов особенно актуальна при разработке встраиваемых устройств, таких как IoT, где требуется собственная инфраструктура для сборки загрузочных образов ОС и полный контроль над процессом. 

В этой статье мы рассмотрим технологии создания загрузочных образов и инфраструктуры для поддержки собственных дистрибутивов на базе Linux, исследуем системы сборки, в том числе Yocto Project, Buildroot и Open Build Service, а также подскажем, как выбрать лучшее для вашего проекта. 

Читать далее

Tcl/Tk. SVG-виджеты. Генератор градиентной заливки

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров846

После серии статей про svg-виджеты в tcl/tk, меня не оставляло чувство какой-то незавершенности. Всматриваясь в проект svgwidgets, стало понятно, что не хватает утилиты с удобным интерфейсом для генерации градиентной заливки.

Читать далее

Как настроить автоматическое обновление SSL-сертификатов Let’s Encrypt с помощью Certbot на Ubuntu

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров7K

Пошаговое руководство по автоматической генерации и обновлению SSL-сертификатов на Ubuntu с помощью Let’s Encrypt и Certbot. Примеры, cron-задачи, systemd-таймеры и кастомные bash-скрипты — всё, что нужно для бесперебойной работы HTTPS.

Читать далее

Qt for Python: PySide6

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.9K

Статья для новичков про использование Qt на языке Python используя официальную библиотеку-привязку PySide6. Ознакомление с созданием графических приложений на языке Python.

Читать далее

Вселенная дистрибутивов Linux: От Ubuntu до Arch, от Mint до Fedora – подробный гид по выбору

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров15K

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

Читать далее

Как я воевал с китайским умным туалетом для котов

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров15K

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

Читать далее

Как построить систему SIP-звонков через Linphone

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.3K

Всем привет! У платформы МТС Exolve есть сообщество, которое часто делится полезными гайдами от прокачки серверов до создания своих приложений. Наиболее интересные и подробные продолжаем размещать в нашем хабе. В этот раз изучим возможности автоматических SIP-звонков.

Читать далее

Go: не используйте http.Server.Serve и http.Server.ServeTLS одновременно

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров2.4K

Эта заметка будет очень короткой. Но надеюсь, она кому-то спасёт несколько часов жизни.

У меня был код. К счастью, это было в тесте, а не в боевом коде, поэтому никто не пострадал.

Код создавал http.Server, запускал две гороутинки для обслуживания входящих соединений:

go func() {srvr.Serve(p)}()

go func() {srvr.ServeTLS(e, "", "")}()

Ну и дальше создавал клиента, делал к серверу обращения (HTTP GET) попеременно используя http и https ну и чего-то там проверял.

Всё прекрасно работало. До обновления с go1.23.8 до go1.24.2, пришедшего с 42-й Федорой.

А потом перестало. Стало время от времени (но отнюдь не всегда) вываливать разнообразные ошибки. Например, вот такие: Get "https://127.0.0.1:46167/": unexpected EOF. Или такие: Get "https://127.0.0.1:34757/": write tcp 127.0.0.1:54770->127.0.0.1:34757: write: connection reset by peer. Или даже вот такие, совсем загадочные: Get "https://127.0.0.1:42447/": http2: client conn could not be establish. HTTP/2 там, разумеется никто не включал и не собирался. А иногда всё работало и тест проходил правильно.

Самое поганое, что ошибка была плавающей.

В общем, не буду грузить подробностями, как я эту ошибку ловил. Но итог такой. Хотя это нигде и не документировано, но одновременно использовать http.Server.Serve и http.Server.ServeTLS на одном и том же экземпляре сервера нельзя. Тот из них, кто успеет прокрутиться первым, чего-то там инициализирует внутри сервера, прежде, чем уйти в accept loop, и второй после этого ломается. Ломается всегда ServeTLS, не-TLS-овскому Serve вроде как пофигу.

Так что будьте осторожны, и надеюсь, что эта заметка сохранила вам несколько часов жизни :)

Читать далее

OSF/1 в эмуляторе

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.9K

Еще один редкий UNIX из далекого прошлого, который вы врядли могли видеть в живую, был возвращен из небытия и выведен в интернет.

Читать далее

Релиз WB-Cloud On-Premise, Алиса из коробки и другие новости от Wiren Board

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.8K

На WBCE 2025 Александр Дегтярев, руководитель отдела интеграций, представил обзор ключевых обновлений в экосистеме компании. Мы уже публиковали доклад Евгения Богера об  аппаратных новинках, а также рассказали о самых интересных стендах выставки. Сейчас очередь за софтом, а конкретнее облаком, которое превращает Wiren Board в законченную платформу для автоматизации.

Облачные сервисы в последнее время стали важной частью предложения Wiren Board. В статье мы рассмотрим, что здесь появилось нового.

Читать далее

Переходим на C++26: как собрать и настроить GCC 15.1 в Ubuntu

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.4K

На днях вышел GCC 15.1.0 с поддержкой некоторых фич C++26.

Однако нынешняя версия Ubuntu все еще использует старый GCC 13.

Здесь мы и рассмотрим, как вручную установить GCC 15.1 на Ubuntu и начать использовать новейшие элементы C++26 уже сегодня.

Поехали в будущее =>

Почему я не люблю использовать «alias» для создания псевдонимов команд

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.8K

Настройка алиасов (alias, псевдоним команды) была одной из первых задач, которую я решал, редактируя конфигурационные файлы (dotfiles) в Unix-подобных ОС. Вот пример одного из моих очень ранних алиасов:

alias g=git

Благодаря этой конструкции я могу, когда мне это нужно, вызвать, вместо команды git, команду g. Это позволяет сэкономить немного времени при использовании тех команд, к которым я прибегаю десятки раз в день!

# Теперь эти две команды равноценны:
git status
g status

Раньше я задавал псевдонимы команд с помощью команды alias. В конце концов… я ведь создавал то, что называется «alias»!

Но со временем я понял, что мне, похоже, удалось найти лучший способ создания альтернативных версий команд. Он заключается использовании скриптов в переменной окружения $PATH.

Читать далее

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

Линус Торвальдс жёстко разнёс регистронезависимые ФС

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров25K

Линус Торвальдс сегодня в привычной для себя прямой и резкой манере высказался о файловых системах с поддержкой case folding (регистронезависимых файлов и папок).

Поводом послужила проблема с поддержкой case folding в Bcachefs, обнаруженная на этой неделе и уже имеющая фикс для Linux 6.15. Линус написал огромное сообщение в рассылке разработчиков Linux (LKML), изложив своё мнение о реализации case folding.

Стоит отметить, что проблема с case folding в Bcachefs — не первая для Linux: ранее уже возникали баги, связанные с обработкой эмодзи и других специальных символов Unicode.

Читать далее

Системные вызовы Linux, которые должен знать каждый разработчик

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров15K

Многие разработчики работают в Linux-среде, но не всегда глубоко понимают, как взаимодействие с ОС происходит на низком уровне. На собеседованиях всё чаще спрашивают про системные вызовы Linux. В этой статье мы рассмотрим, какие вызовы встречаются чаще всего и как они работают.

Читать далее

far2l в Ubuntu 25.04: наконец-то GUI-версия из коробки

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

Исторически первая версия far2l — порта Far Manager на Linux, BSD и Mac, была реализована как графическое приложение. Терминалы той эпохи не умели ни передавать приложению некоторые сочетания клавиш (такие как Control+Enter), ни давать ему возможность взаимодействия с буфером обмена. Кому же нужен Far без этих возможностей? Поэтому пришлось сделать своё собственное консольное окно со своим собственным рендерингом текста — да, усложнение, зато всё сразу заработало «как-в-Винде» (а потом и консольную версию сделали тоже). И сегодня мы празднуем историческое событие: графическая версия, наиболее полная в плане соответствия UX Windows-версии, попала, наконец, в официальные репозитории Ubuntu:

Читать далее

Улучшаем поиск в оболочке

Время на прочтение11 мин
Количество просмотров1.6K

Страшно вспомнить, сколько часов в день я проводил, работая в терминалах Unix и выполняя команды оболочки. По какой-то причине у разных людей сноровка при работе с оболочкой разительно отличается. Я знаю тех, кто даст мне в этом сто очков вперёд. В то же время, попадался мне один профессионал на зарплате, не знавший, что достаточно нажать клавишу «вверх», чтобы выяснить предыдущую команду.

Я неслучайно привёл такой пример: те команды, которые нам, как правило, приходится выполнять в оболочке, то и дело повторяются. Мне обычно доводится иметь дело с 50-100 уникальными (т.e., синтаксически неидентичными) командами оболочки в типичный рабочий день. Но среди этих команд можно выделить и крошечную подгруппу (напр., cargo test) таких, которыми я пользуюсь сотни раз в день.

Читать далее

Macintosh II, A/UX и «ботинкоклюв» с выходом в интернет

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров1.6K

На дворе 1994й год, Джей и Молчаливый Боб только начинают тусить «у фасада одного магазина» в Джерси, а компьютеры Apple продаются с настоящим юниксом.

Увы, но 90е давно закончились, Джей и Боб постарели — внезапно Джею уже за 50 (и двое детей), зато осталась возможность оживить давно умершее и насладиться духом тех удивительных лет.

Что мы сейчас и будем делать.

Читать далее

Линус Торвальдс: Критика C++ — Комплексный анализ

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров26K

Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

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