
256K+
Охват за 30 дней
Linux *
Пишем под *nix
300,92
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Почему я сворачиваю свою работу над Debian
9 мин
112KПеревод

От переводчика: этот текст — перевод записи в личном блоге Михаэля Штапельберга (Michael Stapelberg) видного open source-разработчика (профиль GitHub), который внес значительный вклад в развитие Debian.
Этот пост было сложно написать с эмоциональной точки зрения, но я и не ограничился «коротким письмом, потому что у меня не было времени». Пожалуйста, перед прочтением этого текста учтите, что пишу я его с лучшими намерениями и не ставлю себе целью демотивировать или принизить вклад кого-то из разработчиков. Скорее, я хочу объясниться, почему мой уровень разочарования превысил все допустимые значения.
Debian был частью моей жизни на протяжении 10 лет.
Несколько недель назад, на посвященной Debian встрече, проходившей в Цюрихе, я встретился со своими старыми друзьями, которых не видел много лет. Когда я уже ехал домой на велосипеде, меня осенило, что все обсуждаемые нами темы так или иначе сводились к тому, что мы обсуждали с ними в прошлый раз. Мы дискутировали о достоинствах systemd, который вновь привлек внимание участников open source сообщества, затронули тему процессов в Debian. Кульминацией стало обсуждение демократии как таковой и соответствующие теоретические и практические ошибки. Но, на самом деле, это уже чисто швейцарская тема.
Это не обзор прошедшего митапа, я просто хочу объяснить, что побудило меня задуматься о своем текущем отношении к Debian и подходит ли он мне.
Итак, я принял решение, которое должен был принять давно: я сворачиваю свое участие в развитии Debian.
+132
Криптографические токены PKCS#11: просмотр и экспорт сертификатов, проверка их валидности
11 мин
9.5K
В комментариях к статье «Англоязычная кроссплатформенная утилита для просмотра российских квалифицированных сертификатов x509» было пожелание от пользователя Pas иметь не только «парсинг сертификатов», но и получать «цепочки корневых сертификатов и проводить PKI-валидацию, хотя бы для сертификатов на токенах с неизвлекаемым ключом». О получении цепочки сертификатов рассказывалось в одной из предыдущих статей. Правда там речь шла о сертификатах, хранящихся в файлах, но мы обещали добавить механизмы для работы с сертификатами, хранящимися на токенах PKCS#11. И вот что в итоге получилось.+17
Подборка полезностей для программиста под Linux
44 мин
18KДумаю, у каждого программиста есть набор любимых утилит, трюков и знаний. Некоторые он даже использует в работе. Скорее всего, у разных программистов они различаются. Значит, пришло время поделиться. Сегодня я расскажу о своей подборке того, что, вероятно, известно не настолько широко, как оно того заслуживает. Речь пойдёт преимущественно про платформу GNU/Linux.
+31
В чем набрать и чем собрать C++ проект
14 мин
104KRecovery Mode
Задавшись этим вопросом я, в первую очередь, сформулировал требования: жесткие и опциональные (но желательные) для системы сборки и графической среды разработки.
Сразу хочу отметить что речь идет о написании C++ кода не под какую-то специфичную платформу типа Android или фреймворка, например Qt, — где все уже готово, как с построением так и с редактированием кода, а об generic коде не привязанному к конкретной платформе или фреймворку.
Сразу хочу отметить что речь идет о написании C++ кода не под какую-то специфичную платформу типа Android или фреймворка, например Qt, — где все уже готово, как с построением так и с редактированием кода, а об generic коде не привязанному к конкретной платформе или фреймворку.
+21
Релиз Linux 5.0
1 мин
20KRecovery Mode
Несколько часов назад Линус Торвальдс анонсировал выпуск 5 версии Linux.
+18
Как отключить защиту от Spectre: в ядро Linux добавили новый параметр
4 мин
19KВ ядре Linux появился флаг, который отключает защиту от уязвимости Spectre v4 во всех дочерних процессах, запущенных на сервере. Подробнее о новом параметре — под катом.


+12
Linux Foundation анонсировала open source платформу ELISA для разработки автоматизированных систем
4 мин
8.3KНа прошлой неделе, 21 февраля, сообщество Linux Foundation анонсировало старт работ над платформой Enabling Linux in Safety Application (ELISA), цель которой — стандартизировать разработку и повысить надежность автоматизированных систем во всех основных промышленных областях. В их число, в том числе, входит медицина, энергетика и автомобилестроение.

Также цель платформы — повысить скорость вывода новых продуктов на рынок и параллельно снизить количество критических ошибок и рисков при проектировании систем, которые могут повлечь проблемы в эксплуатации, техногенные аварии и человеческие жертвы. В разработку будут вовлечены британский производитель чипов ARM Holdings, BMW Car IT GmbH, Toyota и немецкая компания KUKA Robotics, сообщается в официальном пресс-релизе.
Платформа ELISA является наследником более раннего проекта Linux Foundation — Automotive Grade Linux (AGL) 5.0 — совместного с Toyota open source проекта по разработке программного обеспечения и систем автопилота для транспорта. Также в основу платформы легли наработки по проекту SIL2LinuxMP (урезанное окружение GNU/Linux для RTOS) и Real-Time Linux (PREEMPT_RT).

Также цель платформы — повысить скорость вывода новых продуктов на рынок и параллельно снизить количество критических ошибок и рисков при проектировании систем, которые могут повлечь проблемы в эксплуатации, техногенные аварии и человеческие жертвы. В разработку будут вовлечены британский производитель чипов ARM Holdings, BMW Car IT GmbH, Toyota и немецкая компания KUKA Robotics, сообщается в официальном пресс-релизе.
Платформа ELISA является наследником более раннего проекта Linux Foundation — Automotive Grade Linux (AGL) 5.0 — совместного с Toyota open source проекта по разработке программного обеспечения и систем автопилота для транспорта. Также в основу платформы легли наработки по проекту SIL2LinuxMP (урезанное окружение GNU/Linux для RTOS) и Real-Time Linux (PREEMPT_RT).
+22
Для российской платформы промышленных ПК взяли процессоры «Байкал-Т1» и ОС «Альт»
3 мин
33K
Промышленный компьютер HR-IC-01 на «Байкал-Т1»
Компании «Базальт СПО», «Байкал Электроникс» и недавно зарегистрированный резидент «Сколково», компания «Хамстер роботикс Инжиниринг», объединили усилия для разработки первой российской платформы промышленных компьютеров. В её составе — вычислительная техника на основе процессора BE-T1000 («Байкал-Т1») и операционные системы «Альт» для серверов и рабочих станций.
+19
Англоязычная кроссплатформенная утилита для просмотра российских квалифицированных сертификатов x509
8 мин
11K
Сегодня использование цифровых сертификатов X509 v.3 стало обыденным делом. Все больше людей используют их для доступа на сайт Госуслуги, ФНС, электронные торги и т.д. И все больше людей хотят знать, что же находится в этом «сундуке» под названием сертификат. И если сертификат является аналогом паспорта, то как его можно прочитать/просмотреть. Да, в операционных системах присутствуют различные утилиты для просмотра. Но рядовому гражданину они мало что дадут. Возьмем для примера утилиту gcr-viewer, которая, по сути, является стандартным средством для просмотра в Linux-системах, а значит и в отечественных ОС:+18
Безумие дотфайлов
4 мин
59KПеревод
Мы больше не контролируем свои домашние каталоги.В моём собственном 25 обычных файлов и 144 скрытых. В дотфайлах хранятся данные, которые не принадлежат мне: они принадлежат программистам, чьи программы решили захватить моё пространство, предназначенное для хранения моих личных файлов.
Я не могу убрать эти файлы в другое место. Если я попытаюсь их удалить, они появятся снова. Всё, что я могу сделать — это сидеть и знать, что в темноте, за кулисами, они есть. Ожидание в тишине. Некоторые из этих программистов решили дополнительно разместить здесь несколько обычных файлов и каталогов. Они хорошо видны каждый раз, когда я выполняю
ls. Понятия не имею, как в мою личную папку попали каталог node_modules, файлы package-lock.json, yarn.lock (я никогда сознательно даже не ставил yarn!), какие-то два странных лог-файла от какой-то Java-программы, явно использующей СУБД H2, и папка Desktop. Последнюю создал Steam, что довольно неудачно, поскольку на моей машине просто нет рабочего стола или какого-то десктопа. Боюсь того дня, когда услышу громкий стук в дверь — и один из этих программистов ворвётся и сообщит, что собирается хранить часть своей мебели посреди моей гостиной, если я не возражаю.+168
Приключения с ptrace(2)
5 мин
9.1KПеревод
На Хабре уже писали про перехват системных вызовов с помощью ptrace; Алекса написал про это намного более развёрнутый пост, который я решил перевести.С чего начать
Общение между отлаживаемой программой и отладчиком происходит при помощи сигналов. Это существенно усложняет и без того непростые вещи; ради развлечения можете прочесть раздел BUGS в
man ptrace.Есть как минимум два разных способа начать отладку:
ptrace(PTRACE_TRACEME, 0, NULL, NULL)сделает родителя текущего процесса отладчиком для него. Никакого содействия от родителя при этом не требуется;manненавязчиво советует: «A process probably shouldn't make this request if its parent isn't expecting to trace it.» (Где-нибудь ещё в манах вы видели фразу «probably shouldn't»?) Если у текущего процесса уже был отладчик, то вызов не удастся.ptrace(PTRACE_ATTACH, pid, NULL, NULL)сделает текущий процесс отладчиком дляpid. Если уpidуже был отладчик, то вызов не удастся. Отлаживаемому процессу шлётсяSIGSTOP, и он не продолжит работу, пока отладчик его не «разморозит».
Эти два метода полностью независимы; можно пользоваться либо одним, либо другим, но нет никакого смысла их сочетать.
+14
Must-have плагины и несколько полезностей для С\С++ разработки в VS Code
7 мин
77K
Удивительно, но до сих пор на Хабре нет хорошей подборки плагинов для Visual Studio Code для тех, кто пишет на С/С++. Microsoft в своем блоге опубликовали только статью, совсем базового уровня с инструкцией по настройке. Но большинство читателей Хабра, тем более из разработчиков, обойдется без такой подробной инструкции. Есть только несколько подборок для веб-разработчиков, но не для С++.
Наверное это связано с тем, что большинство С++ разработчиков использует тяжеловесные IDE, в первую очередь конечно же Visual Studio.
Но в Linux и MacOS с полноценными IDE всё не так просто, да и тяжелая среда разработки не всегда нужна или просто не хочется ее использовать.
Я же хочу обратить ваше внимание на полезные плагины, которые облегчают жизнь и работу, а также рассказать про полезные настройки и особенности VS Code, которые вы могли просто упустить.
+14
Ближайшие события
io_submit: альтернатива epoll, о которой вы никогда не слышали
8 мин
15KПеревод

Недавно внимание автора привлекла статья на LWN о новом интерфейсе ядра для опроса (polling). В ней обсуждается новый механизм опроса в Linux AIO API (интерфейс для асинхронной работы с файлами), который добавили в ядро версии 4.18. Идея довольно интересная: автор патча предлагает использовать Linux AIO API для работы с сетью.
Но постойте! Ведь Linux AIO был создан для работы с асинхронным вводом-выводом с диска / на диск! Файлы на диске — это не то же самое, что сетевые соединения. Возможно ли вообще использовать Linux AIO API для работы с сетью?
Оказывается, да, возможно! В этой статье объясняется, как использовать сильные стороны Linux AIO API для создания более быстрых и лучших сетевых серверов.
Но давайте начнём с разъяснения, что представляет собой Linux AIO.
+77
Почему мы выбрали Electron
6 мин
28KПредыстория
Мы небольшая команда разработчиков, занимаемся созданием нового инструмента для работы с API Testmace. По факту это продвинутый rest клиент с возможностью создавать автоматизированные тесты API с помощью графического интерфейса, оснащенный такими приятными штуками как продвинутый механизм переменных, автокомплит во всех полях ввода и тотальная подсветка синтаксиса.
Хочу вам рассказать о том, как мы пришли к Electron как технологии для написания нашего приложения.
+7
Если проект «Театр», используй акторов…
14 мин
4.4KВ этой статье будет рассказ об опыте использования акторного подхода в одном интересном проекте автоматизированной системы управления для театра. Это именно впечатление от использования, не более того.
+21
Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
5 мин
23K
Приглашаем попробовать найти ошибку в очень простой функции из проекта GNU Midnight Commander. Зачем? Просто так. Это забавно и интересно. Хотя нет, мы соврали. Мы в очередной раз хотим продемонстрировать ошибку, которую с трудом находит человек в процессе code review, но легко находит статический анализатор кода PVS-Studio.
+52
Трагедия systemd
6 мин
54KПеревод
Согласно Википедии, трагедия — это «форма драмы, основанная на человеческих страданиях, которая вызывает в аудитории сопутствующий катарсис или удовольствие». Из этого определения почерпнул вдохновение Бенно Райс в своём выступлении на конференции 2019 linux.conf.au. Его доклад посвящён истории systemd, в которой немало страданий. А аудитория точно получила удовольствие, так что всё сходится. В целом, это сочувственный и тонкий взгляд на одну бурную главу в истории системы Linux.
Райса также вдохновила статья Ауринна Шоу о так называемой «культуре презрения». По словам Шоу, люди проявляют презрение (например, к разработчикам, которые используют другой язык программирования) в качестве социального знака, способа показать, что они принадлежат к правильной группе.
Безусловно, в этой истории есть такая культура: большие группы сообща проявляют общее презрения к systemd и к тем, кто использует эту систему. Отсюда вытекает концепция изменения или сопротивления. Да, знакомые вещи удобны. Но они не обязательно хороши, особенно если ничего не меняется уже много лет.
Райса также вдохновила статья Ауринна Шоу о так называемой «культуре презрения». По словам Шоу, люди проявляют презрение (например, к разработчикам, которые используют другой язык программирования) в качестве социального знака, способа показать, что они принадлежат к правильной группе.
Безусловно, в этой истории есть такая культура: большие группы сообща проявляют общее презрения к systemd и к тем, кто использует эту систему. Отсюда вытекает концепция изменения или сопротивления. Да, знакомые вещи удобны. Но они не обязательно хороши, особенно если ничего не меняется уже много лет.
+51
OpenSceneGraph: Уровни детализации (LOD) и фоновая загрузка объектов
7 мин
7.1KТуториал

Введение
Одной из интереснейших задач, решаемых посредством трехмерной графики является создание «больших миров» — протяженных сцен, содержащих большое число объектов с возможностью неограниченного перемещения по сцене. Решение этой задачи упирается в понятные ограничения, присущие аппаратному обеспечению компьютера.
Типичный пример: «большой мир» при визуализации железной дороги на движке OSG. Не хватает только лангольеров, пожирающих мир за поездом...
В этой связи возникает необходимость управления ресурсами приложения, сводящаяся к очевидному решению: загрузке только тех ресурсов (моделей, текстур и так далее), которые необходимы для формирования сцены в текущий момент времени при текущем положении наблюдателя; уменьшении уровней детализации удаленных объектов; выгрузке не нужных более объектов из памяти системы. В большинстве своем графические и игровые движки предоставляют некоторый набор инструментов для решения подобных задач. Сегодня мы рассмотрим, какие из них имеются в OpenSceneGraph.
+7
OpenSceneGraph: Система плагинов
17 мин
2.8KТуториал

Введение
Где-то в предыдущих уроках уже говорилось о том, что OSG поддерживает загрузку разного рода ресурсов типа растровых изображений, 3D-моделей различных форматов, или, например, шрифтов через собственную систему плагинов. Плагин OSG является отдельным компонентом, расширяющим функционал движка и обладающий интерфейсом, стандартизированным в пределах OSG. Плагин реализуется как динамическая разделяемая библиотека (dll в Windows, so в Linux и т.д). Имена библиотек плагинов соответствуют определенному соглашению
osgdb_<расширение файла>.dll
то есть в имени плагина всегда присутствует префикс osgdb_. Расширение файла указывает движку какой плагин следует использовать для загрузки файла с данным расширением. Например, когда мы пишем в коде функцию
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("cessna.osg");
движок видит расширение osg и загружает плагин с именем osgdb_osg.dll (или osgdb_osg.so в случает Linux). Код плагина выполняет всю черную работу, возвращая нам указатель на ноду, описывающую модель цессны. Аналогичным образом, попытка загрузки изображения формата PNG
osg::ref_ptr<osg:Image> image = osgDB::readImageFile("picture.png");
приведет к тому, что будет загружен плагин osgdb_png.dll, в котором реализован алгоритм чтения данных из картинки в формате PNG и помещение этих данных в объект типа osg::Image.
+12
