Обновить
256K+

Linux *

Пишем под *nix

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

Разработка приложения с использованием Python и OpenCV на Android устройстве

Время на прочтение4 мин
Охват и читатели16K


В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как python с библиотекой opencv в среде VSCode (будет использован code-server). В конце статьи приведено небольшое сравнение производительности Termux на моем Android устройстве и Raspberry Pi 3B.

Все действия описанные статье выполнялись на:
Huawei MediaPad M5 10.8
4GB ОЗУ, Hisilicon Kirin 960s, EMUI 9, без root
Читать дальше →

Эволюция Material Design для AvaloniaUI

Время на прочтение3 мин
Охват и читатели9.6K

image


Material.Avalonia — быстрый способ стилизовать под Material Design приложение, написанное на AvaloniaUI — кросс-платформенном XAML фреймворке для .NET.


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

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

Фреймворки и библиотеки для кроссплатформенной разработки десктопных программ

Время на прочтение7 мин
Охват и читатели72K

В этой статье я расскажу вам о некоторых самых популярных фреймворках, которые помогут вам при разработке программ для компьютеров под управлением Windows/MacOS/Linux. Если вы опытный программист, то вряд ли найдете в этой статье что-то новое для себя. Она скорее для новичков, которые ищут простое решение своей проблемы — быстрое написание хорошей (на сколько это возможно) кроссплатформенной программы.

Читать далее

Кунг-фу стиля Linux: глобальный поиск и замена строк с помощью ripgrep

Время на прочтение6 мин
Охват и читатели21K
Даже те, кто пользуется Linux лишь от случая к случаю, вероятно, знают о том, как работать с grep. При этом не нужно быть экспертом в сфере регулярных выражений для того чтобы без особых сложностей пользоваться grep для поиска в файлах строк, соответствующих простым последовательностям символов или сложным шаблонам. Конечно, grep — это отличный инструмент для поиска информации. Но что если нужно что-то найти, а потом — заменить это на что-то другое? Например, может быть, нужно изменить все найденные слова HackADay на Hackaday. Тут можно применить sed, но этой утилитой пользоваться довольно сложно. Для решения этой задачи можно было бы воспользоваться awk. Но, учитывая то, что речь идёт о языке программирования, использовать его для решения столь простой и распространённой задачи — это, пожалуй, чересчур. Именно идея, заключающаяся в простом решении вышеописанной задачи, и лежит в основе утилиты ripgrep (соответствующая ей команда выглядит как rg). С помощью rg можно решать те же задачи, что решает grep, но при этом — пользоваться более современными регулярными выражениями и, кроме того, не только искать строки, но и выполнять их замену.


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

Материальный дизайн. Создание анимаций в Kivy

Время на прочтение10 мин
Охват и читатели19K

Приветствую всех любителей и знатоков языка программирования Python!

В этой статье я покажу, как работать с анимациями в кроссплатформенном фреймворке Kivy в связке с библиотекой компонентов Google Material DesignKivyMD. Мы рассмотрим структуру Kivy проекта, использование material компонентов для создания тестового мобильного приложения с некоторым количеством анимаций. Статья будет не маленькая с большим количеством GIF анимаций поэтому наливайте кофе и погнали!
Читать дальше →

WSL --install: добавлена нативная установка дистрибутивов в Windows 10 Insiders Preview build 20246

Время на прочтение1 мин
Охват и читатели5.9K
Мы добавили автоматическую установку дистрибутивов в wsl --install в Windows 10 Insiders Preview build 20246! Это означает, что установка WSL теперь проще, чем когда-либо, так как теперь, когда вы запускаете wsl --install, все необходимые компоненты, которые вам нужны для WSL, будут автоматически включены, включая ваш конкретный выбранный вами дистрибутив Linux.

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

Linux-контейнеры в паре строчек кода

Время на прочтение5 мин
Охват и читатели7.3K
В продолжение прошлой статьи о KVM публикуем новый перевод и разбираемся, как работают контейнеры на примере запуска Docker-образа busybox.

Эта статья о контейнерах является продолжением предыдущей статьи о KVM. Я бы хотел показать, как именно работают контейнеры, запустив Docker-образ busybox в нашем собственном небольшом контейнере.

В отличие от понятия «виртуальная машина», термин «контейнер» очень расплывчатый и неопределенный. Обычно мы называем контейнером — автономный пакет кода со всеми необходимыми зависимостями, которые могут поставляться вместе и запускаться в изолированной среде внутри операционной системы хоста. Если вам кажется, что это описание виртуальной машины, давайте погрузимся в тему глубже и рассмотрим, как реализованы контейнеры.
Читать дальше →

Дополнительные компоненты для кроссплатформеннной библиотеки материального дизайна KivyMD

Время на прочтение9 мин
Охват и читатели6.4K

Приветствую, уважаемые любители и знатоки Python!

Если вы используете в своих приложениях Python и такие кроссплатформенные инструменты как фреймворк Kivy и библиотеку материального дизайна KivyMD, тогда вам точно будет интересно эта статья, в которой я расскажу о дополнительных компонентах для расширения набора материальных виджетов библиотеки KivyMD

Реализация epoll, часть 4

Время на прочтение5 мин
Охват и читатели3K
Это — последний материал из серии четырёх статей (часть 1, часть 2, часть 3), посвящённой реализации epoll. Тут речь пойдёт о том, как epoll передаёт события из пространства ядра в пользовательское пространство, и о том, как реализованы режимы срабатывания по фронту и по уровню.



Эта статья написана позже остальных. Когда я начинал работу над первым материалом, самой свежей стабильной версией ядра Linux была 3.16.1. А во время написания данной статьи это уже версия 4.1. Именно на коде этой версии ядра и основана данная статья. Код, правда, изменился не особенно сильно, поэтому читатели предыдущих статей могут не беспокоиться о том, что что-то в реализации epoll очень сильно изменилось.
Читать дальше →

Реализация epoll, часть 3

Время на прочтение6 мин
Охват и читатели5K
В предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll, и о том, как epoll получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.


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

Хост KVM в паре строчек кода. Примеры на C++ и на Python от эксперта Timeweb

Время на прочтение9 мин
Охват и читатели15K
Привет!

Сегодня публикуем статью о том, как написать хост KVM. Мы увидели ее в блоге Serge Zaitsev, перевели и дополнили собственными примерами на Python для тех, кто не работает с языком С++.

KVM (Kernel-based Virtual Machine) — это технология виртуализации, которая поставляется с ядром Linux. Другими словами, KVM позволяет запускать несколько виртуальных машин (VM) на одном виртуальном хосте Linux. Виртуальные машины в этом случае называются гостевыми (guests). Если вы когда-нибудь использовали QEMU или VirtualBox на Linux, вы знаете, на что способен KVM.

Но как это работает под капотом?
Читать дальше →

Реализация epoll, часть 2

Время на прочтение7 мин
Охват и читатели5.6K
Публикуя перевод первой статьи из цикла материалов о реализации epoll, мы провели опрос, посвящённый целесообразности перевода продолжения цикла. Более 90% участников опроса высказались за перевод остальных статей. Поэтому сегодня мы публикуем перевод второго материала из этого цикла.


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

Как мы прошли путь от разработки прошивок для каждой камеры до создания универсального SDK для вендоров камер

Время на прочтение8 мин
Охват и читатели17K

Привет, меня зовут Олег Герасимов, я директор центра компетенций IT-кластера Ростелекома. Наша команда среди многих задач разрабатывает прошивки камер видеонаблюдения для B2B и B2C-сервисов. В предыдущей статье я рассказывал, как мы научились самостоятельно разрабатывать софт и прошивки для IP-камер, в том числе и недорогих, и подключать их к облаку.


За прошедшее время камеры с нашей прошивкой уже появились на рынке, и, судя по данным Яндекс.Маркета, — на полках магазинов цены на них начинаются от 1500 рублей. И это уже не дешевый «ноунэйм», а качественные камеры ведущих мировых брендов: Hikvision, Dahua и Uniview. На мой взгляд, это отличный результат!



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

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

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

Делаем часы из электронной книжки PRS-505

Время на прочтение6 мин
Охват и читатели11K


Удивительно, но старинная электронная книга Sony prs-505 является очень классным конструктором всевозможных самоделок. В очередной раз взял эту книжку, чтобы сделать себе “бумажные” часы. Мне нравится это решение тем, что цифры получаются большие и яркие, при этом они не светятся в темноте и не мешают спать. Идея часов на электронной бумаге совершенно не новая, но мне просто захотелось снова поиграться с этой классной электронной книгой. В результате получился этакий проект выходного дня, потому что могу. Как обычно, собрал все возможные грабли и ошибки. Свой тернистый путь описал в этой статье.
Читать дальше →

Vivaldi для Linux — открытое признание

Время на прочтение5 мин
Охват и читатели14K
image

Сегодня в мире операционных систем для персональных компьютеров сложилось устойчивое соотношение сил между гигантами индустрии, где львиную долю занимает Microsoft, держит довольно большую группу адептов компания Apple, примерно 1,5% сумела занять Google со своей Chrome OS и ещё около 1,5% с уверенным постоянством уже который год удерживает созвездие Linux-систем (по данным StatCounter). Логично было ожидать, что и среди пользователей браузера Vivaldi соотношение предпочтительных операционных систем будет таким же, но на самом деле для многих станет сюрпризом тот факт, что доля пользователей Vivaldi для Linux в пять раз выше, чем доля пользователей операционных систем Linux на мировом рынке — около 7,5% пользователей браузера Vivaldi использует Linux-системы. Очевидно, что у подобного результата должны быть объективные предпосылки, вот о них мы сегодня и поговорим.
Читать дальше →

Прототип на «коленке»: cоздание приложения для мониторинга датчиков сердечного ритма в спортивном зале

Время на прочтение13 мин
Охват и читатели4K


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


В результате решили для начала создать, как говорится, «на коленке», прототип устройства, собирающего данные с пульсометров – датчиков сердечного ритма. По результатам работы я решил написать статью для обмена опытом с сообществом читателей, а еще для повышения собственного уровня в практике написания статей. В этой статье мы проследуем поэтапно от идеи до прототипа программы.

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

О сложностях мониторинга работающих процессов в Linux

Время на прочтение9 мин
Охват и читатели12K
Все знают о том, как наблюдать за работающими процессами в Linux-системе. Но почти никто не добивается в подобных наблюдениях высокой точности. На самом деле, всем методам мониторинга процессов, о которых пойдёт речь в этом материале, чего-то не хватает.



Давайте, прежде чем приступить к экспериментам, определим требования к системе наблюдения за процессами:

  1. Логироваться должны сведения обо всех процессах, даже о короткоживущих.
  2. У нас должны быть сведения о полном пути к исполняемому файлу для всех запущенных процессов.
  3. У нас, в пределах разумного, не должно возникать необходимости в модификации или перекомпиляции нашего кода для разных версий ядра.
  4. Дополнительное требование: если хост-система является узлом Kubernetes или использует Docker, то у нас должна быть возможность определить то, к какому именно поду/контейнеру принадлежит процесс. Для этого обычно достаточно знать cgroup ID процесса. Дело в том, что с точки зрения ядра нет такого понятия, как «контейнер» или «идентификатор контейнера». Ядро оперирует лишь такими понятиями, как «контрольные группы», «сетевые пространства имён», «пространства имён процессов», оно работает с различными независимыми API, с помощью которых средства контейнеризации вроде Docker реализуют механизмы контейнеризации. Если попытаться идентифицировать контейнеры посредством ID уровня ядра, нужен уникальный идентификатор контейнера. В случае с Docker данному требованию удовлетворяют идентификаторы контрольных групп.

Поговорим об обычных API Linux, которые могут помочь в решении этой задачи. Мы, чтобы не усложнять повествование, уделим особое внимание процессам, создаваемым с помощью системных вызовов execve. Если же говорить о более полном решении задачи, то при его реализации нужно, кроме того, мониторить процессы, созданные с помощью системных вызовов fork/clone и их вариантов, а так же — результаты работы вызовов execveat.
Читать дальше →

Джентльменский набор команд Linux Часть 1

Время на прочтение5 мин
Охват и читатели26K


Закон Парето применим ко многим сферам, в том числе и к работе с терминалом Linux, ведь всего нескольких десятков команд позволит легко справляться с большинством задач. Мы выбрали 40 наиболее полезных команд, использование которых способно сильно облегчить жизнь при работе с Linux. Статья не претендует на статус истины в последней инстанции или максимально подробного руководства, а очередность команд обусловлена лишь алфавитным порядком.

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

Bare-Metal Provisioning инфраструктура с нуля

Время на прочтение5 мин
Охват и читатели8.6K
Процесс заливки прошивки

Приветствую, Хабр. Меня зовут Роман, я разработчик встраиваемых систем в Getmobit. Хочу поделиться кейсом по развёртыванию программного обеспечения на большом количестве устройств на производственной линии с нуля. Заставлять людей на производстве бегать вдоль конвейера с флешкой не хотелось, а для автоматизации мне необходимо было четко понимать: на какие шаги можно поделить этот процесс, что на каждом этапе должно происходить, а главное – как модифицировать стандартный процесс, чтобы в итоге выполнять специфичные для нашего продукта операции. Основой для решения этой задачи стала технология загрузки устройств по сети (PXE). Об этом и расскажу.
Читать дальше →

Как мы добавили оттенок совершенства в инструмент для анализа производительности Linux Perf GUI (Hotspot)

Время на прочтение3 мин
Охват и читатели2.6K
В ходе выполнения одного из наших проектов мы усовершенствовали профилировщик Linux Perf GUI разработкой его новой функциональности.
Читать дальше →