Все потоки
Поиск
Написать публикацию
Обновить
238.43

Linux *

Пишем под *nix

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

Профайлер Бедного Человека: первое знакомство и (приятные) последствия

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


Если вам приходилось оптимизировать работу программ, то вы могли слышать о Профайлере Бедного Человека. Этой идее даже посвящён целый сайт. ПБЧ собирает статистику времени выполнения отдельных функций программы, «подглядывая» в процесс её исполнения с помощью дебаггера. Концепт ПБЧ хорошо прижился у нас в движке баннерной крутилки — не буду в 100 500-й раз напоминать, что у Яндекса всё высоконагруженное, ресурсоёмкое и нуждающееся в профилировании. Статья будет полезна тем, кто пилит инфраструктуру, адаптирует какой-нибудь общеизвестный профайлер под себя или просто хочет больше знать про свои программы. Как мы пришли к необходимости в ПБЧ и что именно сделали? Сейчас постараюсь рассказать, местами буду закапывать глубоко в технологии (если переусердствую, пишите в комментариях). А начну со стандартного инструмента статистического профилирования в Linux — perf.
Читать дальше →

Автономный LTE роутер своими руками | Часть 3 – Uboot & OpenWRT

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

Привет Хабр! Эта статья посвящена программной части собственного роутера, сегодня будем: допиливать OpenSource, терять месяц жизни впустую, разбираться с модемом, раскрывать секреты OpenWRT’варения для нового устройства и трогать I2C устройства за их регистры.

Готовьте свои напильники и ныряем под кат

Разворачиваем сеть на RHEL8-based хостах

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

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

Конечно, первоначальная установка и настройка — это всегда полевая работа: монтаж СКС, сетевого оборудования и серверов; конфигурирование DHCP и организация удалённого доступа; иногда — заведение VLAN-ов.

Читать далее

Как настроить python в Linux под свой проект?

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

Привет, Хабр! Меня зовут Дмитрий Алексеев, я Data Scientist и являюсь участником профессионального сообщества NTA. Сегодня расскажу как использовать python и Linux «в связке», и как это поможет облегчить вам жизнь.

Читать далее

6 устаревших команд Linux и инструменты, которые пришли им на замену

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

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

"Все новое — лучше, чем старое" — девиз, который не всегда применим для утилит в Linux. Но все же исключения есть.

В статье под катом разработчик Хосе Висенте Нуньес* рассказывает о нескольких устаревших инструментах, которые вы, возможно, все еще используете. А также о том, чем их можно заменить. Автор объясняет, почему вам следует переключиться на эти улучшенные альтернативы, которые обеспечивают ту же — а в некоторых случаях даже большую — функциональность. Список составлен в произвольном порядке.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее

Сломать контроль ресурсов в контрольных группах Linux. Часть 2

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

В предыдущей публикации мы рассмотрели, как организованы контрольные группы и почему их наследование не всегда гарантирует справедливый учёт ресурсов. Также успели проанализировать один из сценариев, при котором «вредоносные» контейнеры потребляют больше ресурсов, чем разрешено. В этой статье разберёмся с оставшимися сценариями и обсудим, как решать проблемы безопасности, возникающие из-за недостатков механизма cgroups. 

Читать далее

Простой mp3-плеер с графическим интерфейсом на Go

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

Мы продолжаем рассматривать разные платформенные применения Go (ранее мы посмотрели как использовать Go для микроконтроллеров, веб-приложений, разработки API, создания мобильных приложений) и сегодня поговорим об использовании Go для создания приложений для настольных компьютеров на примере реализации несложного mp3-плеера с поддержкой графического интерфейса. Мы будем использовать связывание с GTK для реализации интерфейса, библиотеки декодирования mp3 и взаимодействия с аудиосистемой (для Windows, Linux и MacOS).

Читать далее

Перевод RabbitMQ «Hello World» для Golang

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

Это перевод официальной документации RabbitMQ.

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

Читать далее

Linux-порт Far Manager: что нового за 2022й?

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

Примерно раз в год я пишу длинный статус апдейт по проекту far2l — порту Far Manager под Linux, MacOS и BSD. Пожалуй, накопилось достаточно изменений для очередного выпуска.

Поддержка Unicode: составные символы и символы двойного размера

Оригинальный Far Manager для консоли Windows писался в парадигме «одна экранная ячейка — один символ». И даже когда Far переводили с однобайтных кодировок на Unicode (внутри у современного Far все строки в UTF16, в Linux версии — в UTF32), от этой парадигмы не отходили.

Однако Unicode устроен сложнее. Во-первых, существуют иероглифы, которые в одно знакоместо латинского символа помещаться категорически не желают. Для них придумали концепцию Full-Width знаков, которые в моноширинных шрифтах занимают не одно знакоместо, а два, логически являясь при этом одним символом. Во-вторых, существуют диакритические символы (это могут быть знаки ударения или, например, точки над ё), которые в Unicode кодируются отдельным символом, а отображаются над (или под) предыдущим.

В результате имена файлов, содержащие иероглифы или диакритику (или эмодзи, они тоже двойного размера) приводили к ошибкам рендеринга интерфейса.

Читать далее

Сломать контроль ресурсов в контрольных группах Linux. Часть 1

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

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

Читать далее

Найти и уничтожить: как Clickhouse удаляет собственный код из памяти и переключается на использование Huge Pages

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

В Clickhouse есть интересный код: при вызове одной функции происходит перевод области памяти исполняемого кода программы на использование Huge Pages. В процессе весь код программы копируется на новое место, память, использовавшаяся изначально для кода программы возвращается ОС, а потом запрашивается снова. Эта статья основана на соответствующей части доклада с Я.Субботника.

Сначала мы посмотрим, что такое виртуальная память и TLB, потом перейдём собственно к Clickhouse, посмотрим, почему там пришла идея делать такие махинации с бинарником в памяти, а в конце посмотрим, как это всё реализовано.

Читать далее

Сумачечая производительность LINQ в .Net7

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

Исторически так сложилось, что LINQ взыскал "сомнительную" репутацию за его скромную производительность. LINQ медленный, аллоцирует память, сложно читается, поэтому обычно его используют как инструмент запросов к БД и то, зачастую сложные запросы легче написать на SQL. Даже на собеседованиях джунов просят не использовать LINQ в алгоритмах.

Однако в .NET 7 всё будет по-другому...

Подробней...

ОС Аврора 4.0.2 для разработчиков: обзор и примеры исходного кода

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

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

В этой статье мы расскажем о ключевых нововведениях и детально рассмотрим некоторые важные для разработчиков изменения (изоляцию приложений, валидацию и подписание пакетов). На примере приложения «Push Receiver» мы разберём обновлённую регистрацию D-Bus служб и покажем, как адаптировать приложение под ОС Аврора 4.0.2 с фокусом на важные особенности исходного кода приложений для нового поколения операционной системы.

Видеообзор основных нововведений Аврора 4.0

Читать далее

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

Время — иллюзия, время Unix — иллюзия вдвойне…

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

Как вы хорошо знаете, в Unix-системах мы измеряем время как количество секунд, прошедших с «эпохи»: 00:00:00 UTC 1 января 1970 года. Немало людей сильно разозлилось из-за этого, да и вообще, общественное мнение сочло это ошибкой.

Во-первых, это определение основано не на чём-то разумном, например, на объективной частоте колебаний атома цезия-133, а на удобной доле времени полного оборота одного большого камня вокруг собственной оси.

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

Ещё один аспект, который продолжает вызывать проблемы, когда мы пытаемся считать секунды, заключается в том, что мы сталкиваемся с проблемами хранения и описания данных, потому что, как оказалось, компьютеры не так уж хорошо справляются с числами. Не говоря уж об "эпохальном сбое".
Читать дальше →

Сертификаты K8S или как распутать вермишель Часть 2

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

Всем привет. Меня зовут Добрый Кот Telegram.

От коллектива FR-Solutions и при поддержке @irbgeo Telegram : Продолжаем серию статей по сертификатам k8s.

Читать далее

Linux: «Бесплатная» RAM за счет процессора

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

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

Я не буду подробно описывать все прелести zram, в интернете достаточно много информации о том, что это такое и как можно использовать. Здесь же я хочу предоставить короткую инструкцию, как быстро и просто "добавить" себе оперативной памяти.

Читать далее

Как работает Wine

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


Wine — это свободное программное обеспечение для запуска Windows-приложений на нескольких POSIX-совместимых операционных системах, включая Linux, macOS и BSD.

Если вы любите Linux, то наверняка когда-то запускали Wine. Возможно, для какой-то «важной» программы Windows, у которой нет аналога под Линуксом, или поиграться. Забавный факт: даже Steam Deck от Valve запускает игры через оболочку на основе Wine (она называется Proton).

За последний год я намучился с отладчиком, который позволяет одновременно дебажить и Wine, и Windows-приложение в нём. Разобраться во кишочках Wine оказалось очень интересно! Я-то раньше много им пользовался, но никогда не понимал механику целиком. Можно взять файл Windows — и просто запустить его в Linux без каких-либо изменений. Если вы хотите знать, как это сделано, добро пожаловать под кат.
Читать дальше →

UNIGINE 2.16: Asset Store, Vulkan и DX12, Даблы и Марс в Community, интеграция с ROS, .NET 6, новый менеджер окон

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

Состоялся релиз 2.16: мы внедрили поддержку DirectX 12 и Vulkan API, открыли Asset Store, добавили даблы и демо Марса в Community SDK, улучшили рендеринг (отражения, свечение, размытие при движении, эффекты камеры и др.). Появились новые SDK-браузер, редактор текстур и менеджер окон, и много другого полезного.

Без лишней скромности, этот релиз открывает новую главу в развитии платформы UNIGINE.
Начнем с самого интересного.

Читать далее

Java и низкая задержка

Время на прочтение8 мин
Количество просмотров9.1K
Источник

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

Существуют методики разработки Java-приложений, которые соответствуют требованиям к производительности (или даже превосходят их) приложений, созданных на языках, традиционно применяемых для этой цели. Однако даже этого может быть недостаточно, чтобы обеспечить наилучшую производительность с точки зрения задержек. Java-приложениям по-прежнему приходится полагаться на операционную систему в вопросе предоставления доступа к оборудованию. Обычно чувствительные к задержке приложения (часто называемые «приложениями реального времени») лучше всего работают, когда имеют практически прямой доступ к оборудованию, то же самое относится и к Java. В этой статье я познакомлю вас с методиками, которые можно применять, когда мы хотим, чтобы приложения максимально эффективно задействовали системные ресурсы.
Читать дальше →

Фаззинг по-русски на практике: crusher, Astra Linux

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

Привет, Хабр! Меня зовут Дима, я занимаюсь тестированием безопасности операционной системы Astra Linux в группе компаний «Астра». В статье я расскажу о фаззинг-тестировании, которое помогает обнаружить слабые места программ методом подачи на их входные интерфейсы различных наборов данных, при обработке которых ПО может начать вести себя нештатно или выйти из строя.

Читать далее

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