Как стать автором
Поиск
Написать публикацию
Обновить
404.83

Linux *

Пишем под *nix

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

Ещё о красоте в простой формуле

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

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

Читать далее

Профилирование: что использовать для сбора информации о работе программы под Linux

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

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

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

Больше

Почему MMAP не лучший выход

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

Доступ к файлам через отображение-в-память (mmap) — это способность некоторых операционных систем отобразить содержимое какого-либо файла в адресное пространство программы. Сама программа получает доступ к содержимому файла через указатели, как если бы сам файл был бы целиком загружен в оперативную память. Операционная система прозрачно загружает части файла в оперативную память, и автоматически выгружает их, когда памяти не хватает.


MMAP захватила умы программистов СУБД на многие десятилетия, как альтернатива буферу данных. И вот здесь следует отметить, что в mmap имеются серьёзные проблемы с корректностью и скоростью работы с данными в современных СУБД. В реальности, некоторые известные СУБД сперва использовали mmap для работы с "больше-чем-вмещается-в-память" базами данных, но вскоре обнаружили эти скрытые ограничения, которые принудили их к самостоятельному управлению файловым вводом/выводом, после заметных трат на инженерные исследования. В этом смысле mmap и СУБД подобны сочетанию кофе и острой пищи: неудачное сочетание, которое не очевидно, пока сам не попробуешь.


Покуда разработчики по прежнему пытаются использовать mmap в новых СУБД, мы написали эту статью, чтобы предупредить остальных, что mmap это не подходящая замена привычному буферу. Далее мы обсудим основные недостатки mmap, а также покажем явные ограничения производительности, которые мы обнаружили в наших экспериментах. На основании этих находок мы поделимся рецептами, когда разработчикам СУБД следует избегать mmap для реализации файлового ввода/вывода.

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

Хранилище программных пакетов «Сизиф» не может быть отключено извне

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

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

Проект развивает и поддерживает компания «Базальт СПО».

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

«Сизиф» — одно из крупнейших хранилищ программных пакетов в мире, входит в Top-10 в рейтинге repology.org. Устанавливать ПО из него на свой компьютер может любой желающий.

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

В числе доступных инструментов:

🔸Hasher — для безопасной и воспроизводимой сборки пакетов.
🔸Gear — для поддержки и совместной разработки RPM-пакетов в системе контроля версий git,
🔸Repocop — платформа для запуска интеграционных тестов над пакетами, и многое другое.

Читать далее

Как пересобрать ядро для WSL2 и остаться в живых

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

Мы активно пользуемся WSL2 для того, чтобы открывать линуксовые коры в Visual Studio. Для обеспечения консистентности символов и коры мы монтируем squashfs образ, созданный в целевой системе. После очередного апдейта целевого дистрибутива, у нас всё сломалось - squash монтировался, но мог посередине файла выдать ошибку чтения, записав в dmesg что-то типа

SQUASHFS error: xz decompression failed

Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 1

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

Представляю вашему вниманию перевод работы A guide to inter-process communication in Linux. Объём данной работы большой, поэтому перевод будет выполнен в виде нескольких отдельных статей:

Читать далее

Краткое сравнение популярных функций измерения времени

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

Какую реальную точность можно ожидать от функции возвращающей время, а сколько времени она выполняется сама? Попытка замерить и сравнить несколько десятков функций, доступных программисту на C++.

Вот что получилось

Превращаем Android-смартфон в USB-клавиатуру, мышь и флешку

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

Android-смартфон при подключении к компьютеру через USB может выглядеть как медиаустройство, модем или хранилище файлов. В этой статье мы научимся делать из него USB-клавиатуру, мышь и флешку.
Читать дальше →

Вышла 11-я платформа от «Базальт СПО», это новый уровень разработки свободного ПО

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

«Базальт СПО», российский разработчик свободного программного обеспечения, выпустила 11-ю программную платформу (p11), получившую название Salvia (Шалфей). Это новая стабильная ветка хранилища программных пакетов Sisyphus, разработку и поддержку которой ведет команда разработчиков ALT Linux Team. Хранилище находится под юрисдикцией и на территории Российской Федерации и не может быть отключено извне.

11-я платформа станет основой для разработки новых версий операционных систем семейства «Альт» и широкого спектра других программных продуктов — от софта для встроенных и мобильных устройств до программных решений для серверов предприятий, ЦОД’ов и облаков.

Продукты на базе платформы начнут выходить начиная с 4 квартала 2024 года.

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

Читать далее

Два года ждали: новый релиз «FreeBSD для Mac» — операционной системы ravynOS

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

Кто-то слышал об этом проекте, кто-то нет, но это весьма интересная разработка. Команда ravynOS создаёт операционную систему на базе FreeBSD, стараясь обеспечить совместимость проекта с приложениями для macOS. Оболочка при этом также имеет очень сильную схожесть с интерфейсом macOS. Наработки проекта распространяются под лицензией BSD. Оценить ОС можно, установив загрузочный образ ravynOS 0.5 — он доступен здесь. Подробности — под катом.

Читать далее

Апдейт, ещё апдейт: вышел Red Hat Enterprise Linux 8.10. Что нового?

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

Совсем недавно мы публиковали статью о выходе Red Hat Enterprise Linux 9.4. В то же время стоит помнить, что обновляется и прошлая ветка — это Red Hat Enterprise Linux 8.10. Разработчики будут поддерживать её минимум до 2029 года. Что касается текущего релиза, он появился строго согласно цикла разработки — он предполагает выпуск новинок раз в полгода.

На текущий момент Red Hat Enterprise Linux 8.10 — последний выпуск восьмой ветки, который был сформирован на стадии полной поддержки. Уже 31 мая ветка будет переведена на стадию сопровождения — это означает, что разработчики основное внимание уделят исправлениям и обновлениям безопасности. Подробности — под катом.

Читать далее

Настройка bluetooth микрофона с шумоподавлением в PipeWire

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

В череде дней «длинных» майских праздников решил развернуть голосовой помощник на сервере домашней автоматизации Home Assistant. Мой домашний сервер работает под управлением ОС Ubuntu Server 23.10 и не имеет никаких предустановленных источников или приемников аудио и видео информации. В Ubuntu были установлены аудиосервер PipeWire и менеджер сеансов WirePlumber. Такой выбор был продиктован тем, что эти приложения являются стандартным ПО по обработке аудио и видео потоков в Linux. В сети мне не удалось обнаружить какого-либо полного описания процесса настройки, и эта статья, в некоторой степени, восполняет этот пробел.

Читать далее

Почему команда sort включает в себя функцию uniq? (Куда делась философия Unix!?)

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

Команда sort включает опцию -u для удаления повторяющихся строк.

С точки зрения философии Unix, команды для сортировки строк (sort) и удаления дубликатов (uniq) должны быть отдельными. Однако команда sort имеет опцию -u, соответствующую функции uniq. В этой статье я хочу объяснить, почему это так, ссылаясь на книгу «Software Tools».

Читать далее

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

Linux 6.9 уже готов: что нового? Изменения и дополнения в ядре

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

Прошло всего два месяца, и Линус Торвальдс обнародовал, если так можно выразиться, релиз ядра Linux 6.9. В новой версии — 15 680 исправлений от 2 106 разработчиков. Общий размер патча — 54 Мб (изменения затронули 11 825 файлов, добавлено 687 954 строки кода, удалено 225 344 строки). К слову, это лишь немногим больше, чем в прошлом выпуске.

Известно, что 42% всех изменений связаны с драйверами устройств, 17% — с апдейтами для разных архитектур, 13% — изменения сетевого стека и 4% — внутренние подсистемы ядра. Подробности — под катом.

Читать далее

«А давайте дампить трафик с сети, а не с хоста». Open Source решение на базе PcapNG

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

Привет, Хабр! Меня зовут Николай и уже 17 лет я работаю сетевым инженером. Обычный вопрос для моей профессии: «Доходит ли трафик куда нужно?». И десятки лет на него отвечают одним словом — tcpdump.  А теперь зададим другой вопрос: «Как поймать трафик, если доступных путей много? Неужели вариант один: открывать десятки консолей?»

 В СберМаркете я работаю с начала 2022 года и занимаюсь автоматизацией рабочих процессов. Одной из моих задач и стало найти решение на вопросы, рассмотренные выше. 

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

Читать далее

Мощный инструмент для работы с GCOV покрытием кода C/C++

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

Привет, Хабр.

Скорее всего то, о чем я сейчас расскажу, уже было реализовано и не единожды.

Но пусть это все равно лежит здесь, возможно эта статья будет кому-то полезна в качестве методического материала или HOWTO. Все, сказанное ниже является продуктом моего текущего опыта разработки и не претендует на идеальное решение.

Читать далее

Есть ли жизнь на arm'е?

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

Заметка написана с целью рассказать о переходе от macOS к Fedora Asahi Remix, встреченных проблемах, попытке их решения и умозаключениях, а не ради холивара в поисках идеальной ОС. Тем более, спорить тут не о чем. Есть плюсы, минусы, предпочтения и обстоятельства, остальное от лукавого.

Читать далее

Red Hat Enterprise Linux 9.4: что нового в релизе и что изменилось?

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

Работа команды Red Hat над Red Hat Enterprise Linux продолжается — на днях была опубликована новая версия, 9.4. Она характеризуется относительно открытым процессом разработки, а в качестве основы применяется пакетная база CentOS Stream 9. Это «долгоиграющий» дистрибутив, поддержка которого будет продолжаться до 2032 года. Подробности — под катом.

Читать далее

Все про композитинг в X11 | Linux

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

Приветствую, читатели хабра! Вы когда-нибудь задумывались над тем, что скрывается за красотой и динамичностью вашего рабочего стола? Какие компоненты реализовывают анимации и различные графические эффекты: блюр, тень, скругления, прозрачность? В X11 есть одна очень интересная программная единица - композитор. В этой статье мы получим общее понимание того, что это такое, как реализовано и для чего используется. Также, немного поговорим о том, как Xorg хранит информацию для отрисовки, затронем front/back буферы и узнаем, как компоненты рабочего стола обмениваются информацией между собой.

Читать далее

regexp — большие гонки

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

Так или иначе сталкиваться с регулярными выражениями приходилось большинству разработчиков. Мое первое знакомство произошло с реализацией regex в STL std::regexp. Чаще всего регулярки используются в проверке входных данных, что-то вроде проверки корректности введенного пользователем URL, адреса IPv4, адреса IPv6, телефонного номера и при этом скорость выполнения операции regex не сильно влияет на время отклика от приложения. Но, что если вам приходится проверять сотни, тысячи или даже десятки тысяч правил и все это на постоянно меняющихся наборах входных данных в реальном времени? В этой ситуации вам не просто нужен быстрый алгоритм, вам понадобится лучший из них, вам понадобиться чемпион!

Участвовать в заезде!

Вклад авторов