Обновить
291.13

Linux *

Пишем под *nix

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

Переезд на Астра Линукс

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

Бывает ситуация, когда вот стоит нормальный, не ветхий дом с жильцами, с работающими коммуникациями. И простоял бы он так еще много лет. Но принято решение проложить новую магистраль и дом ей мешает. Можно снести дом, недалеко построить новый и жильцов туда переселить. А можно переместить в нужное место сам этот дом прямо вместе с жильцами и тараканами.

Такая аналогия приходит на ум после принятия решения о переходе с платформы Windows на пока единственную сертифицированную альтернативу – ОС Астра Линукс. Как жильцы гипотетического дома не могли отменить решение о магистрали, так и мы не можем отменить это решение. Придется переходить. Однако легко сказать «перейти». Когда я познакомился с IBM-PC/XT, какой-нибудь Торвальдс еще школу не кончил. За эти годы (чего уж там годы - десятилетия) появилось много привычек, приемов, навыков. Жалко все это оставлять ради принудительного перехода в другую среду. И приходит мысль – попытаться переехать, так сказать, всем домом, а не строить новый.

Читать далее

Выделение памяти для DMA в Linux

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

Это перевод Поста Allocating Memory for DMA in Linux

В этом посте мы рассмотрим распределение памяти в Linux с использованием очень больших страниц с тем, чтобы совместно использовать эту память с устройствами PCIe, использующими DMA.

Читать далее

Отслеживание изменений в директории с помощью Inotify

Время на прочтение4 мин
Количество просмотров10K
Столкнулся с задачей, где необходимо было отслеживать в ОС Linux изменение файла в директории на чистом С++. Так как чистый С++, Qt с его QFileSystemWatcher сразу отпадал, из-за того что необходимо было подключать QObject. В итоге решил пользоваться линуксовой функцией Inotify.
Читать дальше →

Пингвин расставил сети: работа сети в Linux

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

Всем привет! С вами снова я, Аргентум! Сегодня я продолжу нашу серию статей об ядре Linux.

В этой статье мы будем изучать способ организации сети в мире серверов и то, как она эволюционировала от использования традиционного сетевого стека ядра Linux к виртуализации сети с использованием OVS и к обработке нагрузки телекоммуникационных компаний с использованием NFV и SR-IOV.

Читать далее

Создаем federated plugin для Flutter-проекта

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

Всем привет! Это Мурат Насиров, Flutter-разработчик в Friflex. Мы разрабатываем высоконагруженные мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье я рассказываю о том, как создать federated plugin для Flutter-проектов.

В мае 2022 года на Google I/O был представлен урок по созданию federated plugin в Flutter. Federated plugin — это способ разделения функционала в рамках одного плагина на разные платформы. Он позволяет сегрегировать функционал на зоны ответственности для каждой из платформ. 

К примеру, если мы создаем плагин для работы с bluetooth, тогда нужно будет создавать пакеты отдельно для каждой платформы, то есть: flutter_bluetooth (как пакет flutter), flutter_bluetooth_android, flutter_bluetooth_ios и flutter_bluetooth_platform_interface (интерфейс для работы с платформами). 

Создавая federated plugins для всех платформ, разработчики могут использовать только те из них, которые необходимы. 

Читать далее

Сборка RPM-пакета из исходников Python

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

В данной статье описан общий процесс сборки RPM-пакета из исходников на примере интерпретатора Python.

Читать далее

Cisco TRex на практике

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

В данной статье описаны процесс работы с программным генератором сетевого трафика TRex и методика тестирования переключений.

Читать далее

Обзор одноцелевых дистрибутивов Linux

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

Многие из тех, кто устанавливает дистрибутив Linux для одной-единственной цели, например, для работы с контейнерами, предпочитают развёртывание по принципу «поставил и забыл». На конференции FOSDEM 2023, состоявшейся в Брюсселе, было представлено несколько проектов из разряда таких «минимальных дистрибутивов Linux». Все они — Fedora CoreOSUbuntu CoreopenSUSE MicroOS и Bottlerocket OS – решают такие задачи по-своему. Из выступлений на FOSDEM можно составить интересную перспективу, демонстрирующую, в чём эти проекты отличаются на уровне применяемых подходов.
Читать дальше →

САПР-платформа nanoCAD на ОС Linux: что может и чего ждать. Впервые в открытом диалоге с разработчиком

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

На форуме «СИЛА ПЛАТФОРМЫ» компания «Нанософт» анонсировала выход специальной версии Платформы nanoCAD для отечественной операционной системы Астра Линукс. Релиз нового продукта состоялся 24 октября 2023 года.

Новость стала самой обсуждаемой среди участников форума и пользователей nanoCAD. Сегодня мы предложим ответы на часто задаваемые вопросы – из первых уст, в интервью с руководителем департамента разработки «Нанософт» Кириллом Мельниковым.

Читать далее

Библиотека Granite от elementary OS

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

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

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

Также для elementary OS была создана своя библиотека виджетов под названием Granite. Она как раз и применяется при создании приложений для этого дистрибутива. Данная библиотека похожа на Libadwaita от проекта GNOME. Эта библиотека так же, как и Libadwaita, предоставляет некоторое количество компонентов для конструирования пользовательского интерфейса.

В этой статье я хочу рассмотреть некоторые компоненты из библиотеки Granite. Приложения для elementary OS пишутся преимущественно на языке программирования Vala. Далее примеры кода будут приводиться именно на этом языке. Репозиторий библиотеки можно найти здесь.

Читать далее

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

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

В этой статье мы воспользуемся классификацией распространенных шаблонов атак из ресурса кибербезопасности [CAPEC™]. В первые об “Padding Oracle Attack” на Wallet.dat заговорили в далеком 2012 году (на платформе по управления уязвимостями и анализа угроз “VulDB”). Проблема самого популярного кошелька Bitcoin Core влияет на работу AES Encryption Padding в файле Wallet.dat

Технические подробности данной атаки известны:

Злоумышленник может эффективно расшифровывать данные, не зная ключа расшифровки, если целевая система сливает данные о том, произошла ли ошибка заполнения при расшифровке зашифрованного текста. Целевая система, которая передает информацию такого типа, становится заполняющим оракулом, и злоумышленник может использовать этот оракул для эффективной расшифровки данных, не зная ключа дешифрования, выдавая в среднем 128*b вызовов заполняющему оракулу (где b — это количество байт в блоке зашифрованного текста). Помимо выполнения расшифровки, злоумышленник также может создавать действительные зашифрованные тексты (т. е. выполнять шифрование) с помощью оракула заполнения, и все это без знания ключа шифрования.

Читать далее

Новые проклятия: руководство по ncurses

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

HTOP, midnight commander... Как же они построили довольно красивый и удобный псевдографический интерфейс?

Все благодаря библиотеке для C/С++ под названием new curses ("новым проклятиям" дословно) или же NCURSES.

Но как ее установить и работать с ней?

Вперёд!

Разработка с помощью Yocto

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

Привет Хабр! Недавно принял участие в достаточно интересном воркшопе и хотел бы поделиться приобретенными навыками.

Микроконтроллерами я занимаюсь как хобби, так что основы и даже чуть больше понимаю, да я и сам своего рода Embedded Developer.

Читать далее

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

Пишем файловую систему для работы с изображениями на TypeScript

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

В этой статье мы займемся созданием файловой системы на NodeJS + TypeScript в пользовательском пространстве, которая будет управлять изображениями пользователей. Она будет преобразовывать их в различные форматы, изменяя размеры и предоставляя уникальные бинарные данные изображения при каждом чтении — ведя себя при этом как стандартная файловая система.

Если вам интересна данная тема, добро пожаловать под кат.

Читать далее

Виртуальная камера для WebRTC

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

Технология работы персонифицированной виртуальной вебкамеры для WebRTC: анимирование 3D модели пользователя в браузере для создания видеотрека, заменяющего камеру пользователя и синхронного с аудио от микрофона.

Читать далее

Создание своего терминала на C++ и Qt: Часть 1

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

Привет, хабр! Сегодня мы создадим свой собственный терминал на языке программирования C++. Я являюсь фанатом Linux, и пользуюсь минималистичными терминальными программами - от Vim как IDE до чатов. Есть множество терминалов, у каждого из них есть плюсы и минусы. Наш терминал не будет претендовать на место серьезного проекта, но если вы хотите улучшить код, который мы сегодня напишем - то вы молодцы, можете без проблем развить наш терминал.

Это будет небольшой, минималистичный терминал для Linux. Он будет на основе фреймворка Qt 5 и библиотеки qtermwidget5.

И эта будет не одна статья, а целая серия статей!

Вперед!

Измерение скорости чтения-записи носителей с помощью утилиты dd

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров25K
Недавно, я вновь побывал в роли технического эксперта, когда занимался переводом книги «Understanding Software Dynamics» от Richard L. Sites. В ходе работы над главой — про скорость работы с жёстким диском, мне поступил вопрос от коллеги: каким образом можно просто и быстро измерить скорость чтения и записи твердотельных носителей информации, в разрабатываемых в компании устройствах? При этом стояла задача реализовать всё это наиболее простыми способами, чтобы они были переносимы между совершенно разными платформами и архитектурами. Носители же информации могут быть любыми: USB Flash, eMMC, SD, NAND и прочее, прочее. Единственное, что их объединяет — это Linux.

Задача захватила меня с головой…
Читать дальше →

Детектирование атак на контейнеры с помощью eBPF

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

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

Меня зовут Илья Зимин, я аналитик-исследователь угроз в компании R-Vision. Сегодня в статье я расскажу о возможностях обнаружения атак на контейнеризированные приложения с помощью такого инструмента, как eBPF, на примере приемов, связанных с побегом из Docker-контейнеров на Linux-системах.

eBPF (extended Berkeley Packet Filter) — это технология, которая предоставляет программный интерфейс в ядре Linux для обработки его событий в режиме реального времени. Он позволяет загружать и выполнять пользовательские программы в ядре без необходимости модификации самого ядра. Программы выполняются в виртуальной машине, что не позволяет ошибке в пользовательской программе повлиять на всю систему.

Используя возможности eBPF, мы можем отслеживать любое (или почти любое) взаимодействие в системе на уровне ядра, "присоединяясь" к вызовам системных функций, и получать информацию о них: контекст, аргументы, выходные значения и другие. Также на уровне пользователя можно добавить дополнительную логику для обработки этих данных.

Читать далее

Настройка распределённого выполнения параллельных программ в кластере

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

В предыдущей публикации Фортран: пишем параллельные программы для суперкомпьютера мы рассмотрели общий подход к программированию в массивно-паралллельной архитектуре (MPP) с использованием языка Фортран-2018 и дали пример запуска массивно-параллельной программы на одной машине с многоядерным процессором. В настоящей статье мы рассмотрим запуск массивно-параллельных программ на кластере высокой производительности (HPC) или кластере высокой готовности (HA). Код в данной статье пишется на языке Фортран-2018 с использованием комассивов (coarrays) и преобразуется компилятором Фортрана в вызовы фреймворка MPI.

Читать далее

Решаем задачу асинхронного ввода-вывода с библиотекой Asio

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

Привет, Хабр! Меня зовут Илья Казаков, я C++ разработчик в команде систем хранения данных  компании YADRO, одна из моих задач — реализация эффективных IO-bound программ под Linux. 

На одном из проектов мы с командой использовали Asio — библиотеку C++ для сетевого и низкоуровневого программирования ввода-вывода. Она предлагает свою асинхронную модель. Технология отлично справилась с нашей задачей, и я хочу поделиться с вами опытом ее использования. Под катом расскажу, какие решения я рассматривал для асинхронного ввода-вывода и почему остановился на Asio.

Узнать больше →

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