Pull to refresh
23
0
Send message

systemd: как писать юниты с элегантной перезагрузкой

Reading time20 min
Views30K

Разработка системы с элегантным завершением работы может оказаться той ещё пляской с бубном. В идеальном мире каждый сервис управлялся бы юнитом systemd. ExecStart запускала бы процесс, обрабатывающий SIGTERM, а ExecStop оповещало бы процесс и осуществляло блокировку, которая бы корректно завершала процесс и его ресурсы.


Однако многие программы завершаются некорректно, а то и вовсе сбивают все настройки при закрытии. В этой статье мы рассмотрим поведение systemd при завершении работы и методы написания юнитов systemd для выборочной очистки (custom cleanup) перед закрытием. Подробности — к старту нашего курса по DevOps.

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

Нейросети на RISC-V с Movidius Neural Compute Stick

Reading time6 min
Views5.7K

RISC-V — перспективная открытая архитектура, не требующая royalty от производителей железа на её основе. Нужно отметить, что интерес к архитектуре RISC-V растёт намного быстрее, чем закрепляется её спецификация и идёт процесс принятия новых фич комитетом, а также дальнейшая реализация в железе и софте. Например, сейчас сложно найти предложение по CPU и совместимое с ним Linux ядро с поддержкой векторизации, хотя RVV 0.7.1 уже существует, и RVV 1.0 вот-вот его заменит. В нашем эксперименте трудоемкие вычисления перекладываются на внешнее устройство, поэтому сгодится и самый простой центральный процессор.

В этой статье вы найдете подробные инструкции по использованию библиотек OpenVINO и OpenCV на RISC-V для запуска нейронных сетей с использованием акселератора. Цель материала — продемонстрировать гибкость решений на примере использования RISC-V CPU в качестве хоста для работы с нейросетевым ускорителем Intel Movidius Neural Compute Stick 2 (NCS2). Большая часть статьи состоит из инструкций по сборке под RISC-V. Конечно, это не самый творческий процесс, но мы верим, что со временем все они спрячутся под процессами CI/CD, как когда-то было с ARM-экосистемой.

Читать далее

Лазеры в электронике: резка керамики

Reading time5 min
Views6.5K

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

О том, что станки разные мы уже рассказали в предыдущей статье.

Что касается технологий – давайте разбираться.

Читать далее

Лазеры в электронике: деметаллизация покрытий

Reading time5 min
Views4.5K

Мы продолжаем рассказывать про применение лазеров в электронике.

В прошлой статье мы говорили про резку сырой и спеченной керамики, а в этой расскажем про деметаллизацию покрытий.

Читать далее

Jetpack Compose Layouts

Reading time3 min
Views6.4K

Иногда для вёрстки сложных экранов не хватает Row, Column, Box или других встроенных контейнеров, тогда нам приходится писать свои собственные. В этой статье мы напишем Row, который переносит дочерние элементы на следующую строку в случае недостатка места.

Читать далее

Kotlin. Автоматизация тестирования (Часть 3). Расширения Kotest и Spring Test

Reading time17 min
Views6.8K

Kotest


Продолжаем автоматизировать функциональные тесты на Kotlin и знакомиться с возможностями фреймворка Kotest


Расскажу про расширения Kotest:


  • Что это такое
  • Как расширения помогают писать тесты
  • Реализацию запуска расширений в Kotest
  • Некоторые встроенные расширения
  • Про расширение для Spring
  • Углублюсь в интеграцию Kotest и Spring Boot Test
  • Сравню с Junit5
  • И на закуску добавлю отчеты Allure

⚠️Будет много кода, внутренностей и примеров.

Все части руководства:


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

Почему вам следует полностью переходить на Kotlin

Reading time6 min
Views34K

Пришло время начать использовать современный язык программирования

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

Читать далее

Под капотом у Mobx. Пишем свою реактивную библиотеку с нуля

Reading time23 min
Views17K

Первое мое знакомство с Mobx началось с удивления. Я не понимал всю магию библиотеки и задавал себе вопрос: “А как это возможно?”. Кажется, в ней используются какие-то подкапотные возможности JS или Mobx вообще написан на другом языке. 

И вот, потратив 3 месяца в исходниках, я развеял для себя магию. Mobx все таки написан на JS и даже имеет множественные ограничения, которые нужно соблюдать, чтобы ваш браузер не взорвался.

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

Читать далее

Почему исключения в Kotlin Coroutines это сложно и как с этим жить?

Reading time10 min
Views23K

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

Читать далее

Готовим Window Inset под соусом Jetpack Compose и щепоткой View

Reading time19 min
Views21K

Привет! Меня зовут Тимур, я занимаюсь Android-разработкой в KTS.

Почему ещё не все используют режим edge2edge? Разве для того я покупал огромный безрамочный телефон, чтобы смотреть на траурные черные полоски с кнопками?!

К сожалению, сейчас все еще встречаются Android-приложения, которые не поддерживают edge-to-edge. Складывается ощущение, что разработчики либо не знают об insets, либо просто не умеют их готовить. На самом деле реализовать edge-to-edge не сложно, а благодаря этой статье вы сможете разобраться с insets в разы быстрее.

Сегодня я надену специальный мобильный фартук и расскажу, что такое режим edge-to-edge в мобильных приложениях и как работать с insets в Android. А ещё мы разберём примеры обработки insets не только во view, но и в compose. Если статьи о работе с insets в view еще можно найти на просторах интернета, то информацию про работу с ними в compose можно найти только в официальной документации.

Читать далее

Как выбрать плату для Computer Vision в 2022

Reading time6 min
Views12K

Выбор платформы для работы с Computer Vision on the Edge  - непростая задача. На рынке десятки плат. И одна другой краше. Но на практике все оказывается не так хорошо.
Я попробовал сравнить дешевые платы которые есть на рынке. И сделал это не только в по скорости. Я попробовал сравнить платформы по “удобству” их использования. Насколько просто будет портировать сети, насколько хорошая поддержка. И насколько просто работать. И актуализировал это для 2022 года (один и тот же Coral из 2020 и из 2022 - две разные платы).

Читать далее

Что можно сделать с большим дисплеем?

Reading time14 min
Views38K

Попался мне как-то неисправный автомобильный навигатор, который включался и показывал симпатичную картинку. Пейзаж мне очень понравился, и дисплей был довольно большой. Решил изъять его и сделать что-нибудь полезное. Посмотрим, что из этого вышло, а также, где найти и как использовать большие экраны.

Что там?

Документация в Kotlin-коде и CI/CD

Reading time4 min
Views4.8K

Всем, кто создавал библиотеки или сервисы с публичным API хорошо знакома боль, когда документация отстает от изменений в коде и рутинный процесс обновления документации на сайте становится настолько неинтересным, что про него просто забывают. Можно ли как-то автоматизировать генерацию технической документации (а в идеале еще и создание руководства пользователя с возможностью навигации и красивыми картинками)? В этой статье мы обсудим возможности Dokka (Kotlin-инструмента для создания документации) и подходы к генерации артефактов документации с использованием плагинов Gradle.

Читать далее

Новый одноплатник StarFive VisionFive 2 на 4-х ядерном RISC-V процессоре всего за $46

Reading time3 min
Views14K
StarFive VisionFive 2

Совсем недавно программировали на Python и устанавливали Docker для Sipeed Lichee RV RISC-V. Модуль Lichee RV стал первым массовым дешевым решением на процессоре RISC-V с возможностью запуска Linux. Развитие архитектуры не стоит на месте, так компания StarFive, разработчик RISC-V процессоров, представила новый 4-х ядерный процессор RISC-V JH7110 с графическим ускорителем. Предыдущие процессоры, построенные на RISC-V ядрах, например Allwinner D1 (используется в модуле Sipeed Lichee RV), не содержат GPU, а значит, не позволяют запускать 3D приложения и игры. На новом одноплатном компьютере VisionFive 2 на процессоре RISC-V JH7110 с 3D GPU, размещено 8 ГБ ОЗУ, интерфейсы HDMI 2.0 и MIPI DSI, два порта Gigabit Ethernet, 4 порта USB 3.0/2.0, флэш-память QSPI для загрузчика, а также интерфейс eMMC для подключения флеш-памяти, порт M.2 NVMe SSD, и слот для microSD карт памяти.

Для самых ранних покупателей, доступна версия с 2 Гб ОЗУ всего за 46$ + доставка.
Читать дальше →

Краткая (очень) история боёв роботов

Reading time14 min
Views14K
1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.

В этих известных постулатах Азимова ощущалась некоторая неполнота, и поэтому в 1986 году в романе «Роботы и Империя» (англ. Robots and Empire) он предложил Нулевой Закон:

0. Робот не может причинить вред человечеству или своим бездействием допустить, чтобы человечеству был причинён вред.

За синтетов так никто не заступился, и в следующем году в мир роботов пришло Зло. Их научили причинять вред друг другу.


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

Push уведомления в Android. Грабли, костыли и велосипеды

Reading time6 min
Views149K
На написание данной статьи меня подтолкнула задача, которая была поставлена передо мной в одном из рабочих проектов: реализовать Push-уведомления в приложении. Казалось, все просто: штудируешь документацию, примеры и вперед. К тому же, опыт работы с уведомлениями уже был. Но не тут то было…
А что же все таки было?

Умные паяльники от Pine64: стоит ли покупать вторую версию Pinecil. Часть 1

Reading time4 min
Views63K

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

Некоторые компании выпускают умные паяльники, которые способны поддерживать необходимую температуру, переходить в спящий режим, когда их не используют и помогать выполнять максимально тонкую работу. Выпускают такие устройства как китайцы, у которых относительно простые системы стоят 10-15 долларов США, так и европейские и американские компании. Занимается разработкой и выпуском паяльников и компания Pine64, которая также поставляет модульный открытый телефон PinePhone, одноплатники и прочие устройства. Долгое время Pine64 предлагала свой умный open-source паяльник Pinecil, но сейчас появилась и вторая его версия. О ней и пойдет речь в статье.
Читать дальше →

Как создавать анимации в Jetpack Compose

Reading time25 min
Views32K

Анимации в Jetpack Compose довольно легко понять, применить и кастомизировать под требования дизайна. Но я ещё не видел ни одного туториала по анимациям в Compose на русском языке, поэтому подготовил на эту тему доклад для майского Mobius. А для тех, кто больше любит читать, чем слушать, подготовил статью. В материале мы обсудим  виды анимаций, а также пройдём все шаги по способам их создания и кастомизации.

Читать далее

Как работает WorkManager в Android

Reading time5 min
Views18K

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

Как бороться с Android’ом и не позволять ему уничтожать важные фоновые процессы, расскажет Сергей Смирнов, Android-разработчик CleverPumpkin, который так овладел инструментом WorkManager, что смог в фоновом режиме написать эту статью.

Читать далее

Ассемблер RISC-V для начинающих

Reading time12 min
Views50K

Если вы не знаете ни одного ассемблера, или, возможно, не имеете большого опыта кодинга как такового, то ассемблер RISC-V может быть одним из лучших вариантов для того, чтобы погрузиться в эту тему. Конечно, материалов по ассемблеру x86 гораздо больше. Больше людей, которые могут в этом помочь. Но x86 - это чудовище, имеющее более 1500 различных инструкций.

Архитектура RISC-V, напротив, придумана специально для того, чтобы быть простой в изучении и вместе с тем, практически эффективна для реализации высокопроизводительных микропроцессоров.

Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).

Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.

Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.

Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.

Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?

Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.

Читать далее

Information

Rating
Does not participate
Registered
Activity