Как стать автором
Обновить
75.54
Рейтинг

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

Пишем под *nix

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Linux Page Cache для SRE: основные файловые операции и syscall'ы (часть 1)

Высокая производительность *Системное администрирование *Системное программирование *Разработка под Linux *DevOps *
Перевод

В этой серии постов я хотел бы поговорить о Linux Page Cache. Я считаю, что данные знания теори и инструментов жизненно необходимы и важны для каждого SRE. Общее понимание как работает Page Cache помогает и в рутинных повседневных задачах, и в экстренной отладке на продакшене. При этом Page Cache часто оставляют без внимания, а ведь его лучшее понимание. как правило, приводит к:

- более точному планированию емкости системы и лимитов сервисов и контейнеров;
- улучшенным навыкам отладки приложений, интенсивно использующих память и диски (СУБД и храанилища данных);
- созданию безопасных и предсказуемых сред выполнения специальных задач, связанных с памятью и/или вводом-выводом (например: сценарии резервного копирования и восстановления, rsyncоднострочники и т.д.).

Я покажу, какие утилиты вы можете использовать, когда имеете дело с задачами и проблемами, связанными с Page Cache, как правильно к ним подходить, и как понять реальное использование памяти.

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 3.2K
Комментарии 9

Дебажим U-boot на реальном железе

Разработка под Linux *
Перевод
Tutorial

Продолжение предыдущей статьи, в которой мы ускорили разработку под embedded linux. Рабочая станция + sftp сервер + nfs сервер ускорили на порядок (10х) доставку изменений кода на целевое железо. Теперь не нужно часами компилировать код. В этой статье продолжаем очеловечивать разработку. На этот раз прикручиваем полноценную графическую IDE и пошаговую отладку кода на целевом железе с помощью программатора J-Link. Но пока только загрузчика U-boot. И автоматизируем развертывание рабочей среды разработчика с помощью Docker.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 3K
Комментарии 4

Компиляция без предупреждений — что случилось в Linux-сообществе

Блог компании VAS Experts Настройка Linux *Системное программирование *Разработка под Linux *Софт

Пару недель назад Линус Торвальдс активировал флаг -Werror для всех сборок ядра. Мнения сообщества касательно этого решения разделились. Против даже высказался разработчик фронтенда Clang и фреймворка LLVM. Обсуждаем ситуацию.

Читать далее
Всего голосов 27: ↑24 и ↓3 +21
Просмотры 28K
Комментарии 41

Кросс компиляция пакета для роутера на примере Qbittorrent

Open source *Программирование *Компиляторы *Разработка под Linux *

Добрый день друзья. Как-то мне захотелось установить Qbittorrent на мой роутер который оснащен OpenWRT. Конечно создатели OpenWRT уже предусмотрели возможность сборки кастомных покетов об этом можно почитать вот тут: https://habr.com/ru/company/ruvds/blog/530984/ . Но данный способ очень долгий, приходится скачивать исходники OpenWRT, компилировать тулчайн и прочее. И я подумал а почему-бы просто не скачать тулчайн и собрать проек обычным образом под катом мой опыт.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 3K
Комментарии 14

Работа с СОМ-портом на Си в linux

Блог компании RUVDS.com Программирование *Системное программирование *Разработка под Linux *Производство и разработка электроники *
Tutorial
Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь.

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Недаром, моя статья "UART и с чем его едят" спустя 11 лет после выпуска набирает просмотры и комментарии.

Для разработчиков чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да что греха таить, сейчас в 2021 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность. Далеко за примером ходить не надо, внутри смартфона, лежащего у вас в кармане, будет с десяток UART интерфейсов, самый известный из которых — это подключение SIM-карты.

Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.

В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А не понимание того, что там происходит и приводит к различным трудноуловимым багам.
Читать дальше →
Всего голосов 72: ↑69 и ↓3 +66
Просмотры 10K
Комментарии 24

Распознаем речь в Авроре

Блог компании Открытая мобильная платформа Разработка под Linux *Natural Language Processing *

Аврора, созданная во многом с прицелом на корпоративное использование, часто используется в не совсем привычных для нормального человека условиях. Когда мобильное устройство — корпоративное, а передаваемая информация имеет не только ту ценность, которую охраняет закон о персональных данных №152-ФЗ, но и коммерческую составляющую, — на передний план выходит конфиденциальность и возможность обрабатывать данные, не отходя от кассы.

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

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 1K
Комментарии 3

Копируем файлы пачками в AWS S3

Python *Программирование *Amazon Web Services *Промышленное программирование *Разработка под Linux *

В одном из проектов встала следующая задача: пользователь загружает пачку файлов через клиента (CloudBerry Explorer, к примеру) в S3 бакет, мы копируем эти файлы в архив и шлем SNS уведомление о том, что все сделано. Перекладывать файлы в архив нужно начинать только тогда, когда пользователь загрузит все, что хотел. Пользователей мало и загружают батчи они довольно редко. Но файлов может быть много.

Чтобы понять, что пора начинать архивацию, зададим определенную структуру каталогов и будем просить пользователя загружать триггер-файлы с расширением .trigger когда он закончит. Этакая эмуляция кнопки Done. Структура каталогов будет такой:

<batch_name>/done.trigger
<batch_name>/files/<file_key_1>
<batch_name>/files/<file_key_2>
...
<batch_name>/files/<file_key_n>

Как видим, для каждой пачки создается свой каталог <batch_name> с подкаталогом files, в который и заливаются уже пользовательские файлы с каталогами и именами, которые он хочет. Триггер-файл загружается в <batch_name> и по ключу этого  файла можно понять какие конкретно файлы нужно отправить в архив. Но здесь есть один нюанс, мы хотим при копировании в архив вырезать каталог files. Т.е. файл <batch_name>/files/<file_key_1> скопировать в <batch_name>/<file_key_1>.

К счастью, S3 позволяет отслеживать загрузку файлов с определенным суффиксом и отправлять уведомления при наструплении этого события. В качестве получаетеля этих уведомлений можно указать аж 3 сервиса: SNS, SQS и Lambda-функцию. Но тут не без нюансов. Так, первые 2 типа поддерживают только стандартные очереди и SNS, а FIFO не поддерживают, увы.

Читать далее
Всего голосов 3: ↑0 и ↓3 -3
Просмотры 1.4K
Комментарии 4

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

Анализ и проектирование систем *Системное программирование *Разработка под Linux *Гаджеты Электроника для начинающих

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

Я занимаюсь разработкой электроники и мне этого мало.

Чтобы немного понять что я имею ввиду предлагаю заглянуть под кат.

Читать далее
Всего голосов 101: ↑99 и ↓2 +97
Просмотры 19K
Комментарии 63

Книга «Библия Linux. 10-е издание»

Блог компании Издательский дом «Питер» Профессиональная литература Разработка под Linux *
image Привет, Хаброжители! Полностью обновленное 10-е издание «Библии Linux» поможет как начинающим, так и опытным пользователям приобрести знания и навыки, которые выведут на новый уровень владения Linux. Известный эксперт и автор бестселлеров Кристофер Негус делает акцент на инструментах командной строки и новейших версиях Red Hat Enterprise Linux, Fedora и Ubuntu. Шаг за шагом на подробных примерах и упражнениях вы досконально поймете операционную систему Linux и пустите знания в дело. Кроме того, в 10-м издании содержатся материалы для подготовки к экзаменам на различные сертификаты по Linux.

Linux — основа большинства технологических прорывов в облачных вычислениях, поэтому вы должны как следует понимать эту систему, чтобы эффективно работать в дата-центрах будущего. Азы Linux, изложенные в начале книги, пригодятся в дальнейших главах, где автор рассказывает, как развертывать системы Linux в качестве гипервизоров, облачных контроллеров и виртуальных машин, а также как управлять виртуальными сетями и сетевыми хранилищами данных.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 8.2K
Комментарии 9

Опыт работы со смартфоном PinePhone: модульный телефон без сервисов Google

Блог компании Selectel Open source *Разработка под Linux *Гаджеты Смартфоны
Перевод
image

Прошлым летом, во время распространения коронавируса по городам и весям, я почти все время сидел дома. У меня появилось много свободного времени, так что, наконец, получилось заняться давно запланированным обзором PinePhone. Напомню, что это смартфон с ОС Linux, а не Android.

Он интересен не только операционной системой, но и отсутствием сервисов Google. Я видел предупреждения о том, что телефон все еще может считаться тестовым девайсом, но решил, что смогу преодолеть все препятствия. Спустя год мне действительно удалось это сделать — сейчас это устройство, которое вполне можно использовать в качестве альтернативы телефонам на Android. Конфиденциальность данных для меня в приоритете, несмотря на то, что взамен пришлось пожертвовать некоторыми функциональными возможностями.
Читать дальше →
Всего голосов 54: ↑51 и ↓3 +48
Просмотры 16K
Комментарии 51

Простейшее решение «проблемы промежуточных устройств»: организация работы SCTP поверх UDP в ядре Linux

Блог компании RUVDS.com Настройка Linux *Системное администрирование *Разработка под Linux *
Перевод
Возможность организации работы SCTP поверх UDP (известная ещё как инкапсуляция SCTP-пакетов в UDP-пакеты) определена в RFC 6951 и реализована в пространстве ядра Linux начиная с версии ядра 5.11.0. Поддержку этой возможности планируется включить в Red Hat Enterprise Linux (RHEL) 8.5.0 и 9.0.



В этом материале даётся краткий обзор организации работы SCTP поверх UDP в ядре Linux.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 3.5K
Комментарии 6

30 лет ядру Linux: поздравление от PVS-Studio

Блог компании PVS-Studio Open source *C++ *C *Разработка под Linux *

25 августа 2021 года ядру Linux исполняется 30 лет. За это время ядро пережило множество изменений, так же, как и мы. Сегодня это огромный проект, работающий на миллионах различных устройств. Предыдущую проверку мы делали 5 лет назад, поэтому не можем пропустить такое событие и не заглянуть в код этого эпического проекта.

Читать далее
Всего голосов 29: ↑25 и ↓4 +21
Просмотры 5.8K
Комментарии 11

Cambalache: новый инструмент для быстрой разработки

Блог компании ITSOFT Программирование *Разработка под Linux *

На конференции GUADEC 2021  был представлен новый инструмент для быстрой разработки интерфейсов GTK3 и GTK4 под названием Cambalache. В отличии от Glade, он способен поддерживать создание нескольких интерфейсов пользователя в одном проекте.

Читать далее
Всего голосов 3: ↑1 и ↓2 -1
Просмотры 1.6K
Комментарии 0

Ускорение процесса разработки под Embedded Linux

Разработка под Linux *
Перевод
Tutorial

Любой программист, решивший заняться разработкой под Embedded Linux, придя буть-то из высокоуровневых языков программирования, либо из программирования микроконтроллеров на С/С++, неизбежно оказывается удивлен крайней недружелюбностью embedded linux. Текстовый блокнот и консольные утилиты вместо столь привычных IDE, и отладка по логам вместо отладки программатором сильно замедляют процесс разработки. В статье описывается, как мне удалось снизить время доставки изменений до целевого железа при кросс-компиляции в 10 раз.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Просмотры 7.2K
Комментарии 12

Кунг-фу стиля Linux: делаем все и сразу

Блог компании RUVDS.com Настройка Linux *Системное администрирование *Разработка под Linux *
Перевод
Вы никогда не задумывались о том, что компьютеры чрезвычайно глупы? Даже самый мощный процессор не может много сделать. Однако он может делать то, что делает, очень быстро и повторять это много раз. Компьютеры настолько быстрые, что может казаться, что они делают много вещей одновременно, а современные компьютеры еще и имеют несколько процессоров, чтобы улучшить свои возможности по многозадачности. Мы часто не пишем программы или сценарии, чтобы воспользоваться этим. Однако, как вы сейчас поймёте, для этого нет никаких причин.


Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Просмотры 13K
Комментарии 4

Исследование роста утилизации процессора: как мы мигрировали с CentOS 7 на Oracle Linux 7

Блог компании DINS Настройка Linux **nix *Разработка под Linux *DevOps *

Привет! Меня зовут Александр Петровский, я инженер в DINS. Я работаю в команде, которая участвует в разработке сервисов облачной телефонии и видеоконференций для RingCentral. Каждый из них состоит из большого количества микросервисов.

Когда мы мигрировали один из наших микросервисов с CentOS 7 с ядром 4.19 на Oracle Linux 7 с ядром 5.4, мы заметили рост утилизации процессора на наших stress/performance-тестах. В статье я расскажу, как мы исследовали причины роста утилизации процессора сначала в user-space, а потом и в kernel-space и о том, к какому результату это нас привело.

Читать далее
Всего голосов 129: ↑128 и ↓1 +127
Просмотры 15K
Комментарии 17

Как оформить серию коммитов Git, чтобы её приняли в любой проект

Блог компании Mail.ru Group Git *GitHub Управление разработкой *Разработка под Linux *

Добрый день, коллеги! Доказывать, что нужно использовать систему контроля версий, уже давно не нужно. И Git занял тут лидирующую позицию, стремительно вытеснив SVN. Но это инструмент, а инструментом нужно уметь пользоваться, чтобы добиться лучших результатов. Как топором, один человек сможет просто срубить дерево а другой из этого дерева сможет сделать великолепную скульптуру. Так и с помощью Git, один человек сможет просто не потерять результаты своего труда за день, а другие смогут организовать совместную работу над проектом нескольких сотен человек. Да так, что о любой строчке кода можно будет и через пять лет сказать, откуда она взялась и для чего нужна.

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

Читать далее
Всего голосов 59: ↑56 и ↓3 +53
Просмотры 17K
Комментарии 30

Как мы оптимизировали сетевой шейпер Linux в облаке с помощью eBPF

Блог компании Одноклассники Высокая производительность *Системное администрирование *Разработка под Linux *Облачные сервисы

Меня зовут Леонид Талалаев, я занимаюсь разработкой внутреннего облака Одноклассников one-cloud, про которое уже рассказывали на Хабре. 

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

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

Для управления сетевым трафиком до недавнего времени мы использовали решение на основе дисциплины Hierarchical Fair Service Queue из Linux Traffic Control. Сегодня пойдет речь про проблему масштабирования в Linux Traffic Control, известную как root qdisc locking. И про то, как нам удалось ее решить, переделав управление сетевым трафиком с использованием eBPF.

Читать далее
Всего голосов 50: ↑50 и ↓0 +50
Просмотры 7.2K
Комментарии 18

Установка Golang в WSL (WSL 2) с помощью Visual Studio Code

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

Здравствуйте! В статье представленна инструкция по установке языка программирования Golang в подсистему Linux на Windows 10 (11). Если у вас уже установлен WSL2 и Visual Studio Code, то смело переходи на 3 часть этой статьи, для всех других же...

Читать далее
Всего голосов 11: ↑1 и ↓10 -9
Просмотры 2.7K
Комментарии 9

Преобразование dxf в svg

Open source *C++ *CAD/CAM *C *Разработка под Linux *
Речь в статье пойдёт о программе на С/С++, написанной под Ubuntu, редактор — CodeBlocks. dxf — открытый формат, спецификация которого написана компанией Autodesk. Предполагаемое назначение — отображение dxf чертежей в веб проектах. Да, можно экспортировать из кое-каких редакторов, например, Librecad под Ubuntu или Acme CAD Converter под Windows, но это не во всех случаях может подходить, например, если нужна кастомизация.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.5K
Комментарии 6

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