Как стать автором
Обновить
Козлов Василий Иосифович @saintbyteread⁠-⁠only

Пользователь

Отправить сообщение

Присматриваемся к одноплатникам на RISC-V, обзор модуля Sipeed Lichee RV на процессоре Allwinner D1

Время на прочтение20 мин
Количество просмотров28K
Sipeed Lichee RV

Одноплатные компьютеры на RISC-V процессоре сравнительно новое веяние. Поднебесная активно работает над снижением зависимости от западных информационных систем и технологий, именно поэтому новая открытая архитектура RISC-V одна из ключевых ставок Китая. Для продвижения в массы китайский чипмейкер Allwinner на базе ядра Alibaba/T-Head Xuantie C906 RISC-V разработал процессор Allwinner D1 и упрощенную модификацию Allwinner D1s. На сегодня разработано несколько одноплатников на RISC-V процессоре, и в первенство по массовости вырвалась компания Sipeed с модульным компьютером Система-на-Модуле Lichee RV с 512 Мб ОЗУ всего за $16.90, работающим на Linux. Разработчик может спроектировать несущую плату для данного модуля, добавив необходимые периферийные устройства и разъемы. В результате получится решение максимально подготовленное для себя. Данный модуль предназначен для создания интеллектуальных информационных систем, терминалов, роботов, и т.д. В первой части рассмотрим архитектуру процессора, возможности модуля, дистрибутивы, программное обеспечение. Во второй части детально рассмотрим порты и интерфейсы для программирования, напишем программы на Python и C#.
Читать дальше →

Запись звука JS c микрофона или голосовые комментарии

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

Запись звука JS c микрофона или голосовые комментарии


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

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

Постановка задачи


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

Многопоточный Python на примерах: как правильно хранить настройки приложения

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

Если опустить первое и самое главное предубеждение относительно питонячьей многопоточности у большинства программистов — что её не существует из-за GIL, — то остается другое, и, наверное, вполне достоверное: что многопоточность — это сложно, и нам этого, пожалуйста, не надо. И знаете что? Так оно и есть. Многопоточность — это сложно, особенно когда выбираешься за пределы стандартных руководств и попадаешь со своей многопоточной поделкой в реальный мир. И, возможно, вам не нужно. Ни здесь, ни далее я не буду обсуждать целесообразность написания многопоточного кода на Python и сразу перейду к тому, как это делать.

Так как же?

Пишем веб сервис на Python с помощью FastAPI

Время на прочтение17 мин
Количество просмотров129K
image

Знаю, знаю, наверное вы сейчас думаете «что, опять?!».

Да, на Хабре уже неоднократно писали о фреймворке FastAPI. Но я предлагаю рассмотреть этот инструмент немного подробнее и написать API своего собственного мини Хабра без кармы и рейтингов, зато с блэкджеком и с тестами, аутентификацией, миграциями и асинхронной работой с БД.
Читать дальше →

Raspberry Pi и модем SIM7600E 4G HAT

Время на прочтение3 мин
Количество просмотров43K
Добрый день всем. В этой статье я хотел бы рассказать о своем опыте использования 3G-модема SIM7600X, который можно подключать к Raspberry Pi. Статья может оказаться полезной тем из вас, кому необходимо использовать Raspberry автономно, в условиях отсутствия WIFI-сети.

Параметры системы


Raspberry Pi 3B+
OS: Raspbian GNU/Linux 10 (buster)
Модем SIM7600E 4G HAT, версия прошивки LE11B08SIM7600M22

image

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

Всё как у больших. Автозагрузка приложений в оконных менеджерах linux

Время на прочтение9 мин
Количество просмотров22K
Вывод systemd-analyze dot --user ‘i3.service’ | dot -Tpng | imv -


Вывод systemd-analyze dot --user ‘i3.service’ | dot -Tpng | imv -

Как-то раз, листая сообщения в профильном systemd чате, в телеграм, я наткнулся на следующий кусок man systemd.special


xdg-desktop-autostart.target
   The XDG specification defines a way to autostart applications using XDG desktop files.
systemd ships systemd-xdg-autostart-generator(8) for the XDG desktop files in autostart
directories. Desktop Environments can opt-in to use this service by adding a Wants=dependency
on xdg-desktop-autostart.target.

О как интересно, подумалось мне. Можно реализовать функционал полноценныхDesktop Environments, по автоматическому запуску приложений, при старте. А у меня как раз i3wm, который таковым не является и которому такой функционал не помешал бы. Надо это дело исследовать. Тогда я ещё не знал во что ввязался. Как оказалось, не всё так просто.


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

Одноплатники, появившиеся в продаже относительно недавно, на которые стоит обратить внимание

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

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

Разбираемся с параллельными и конкурентными вычислениями в Python

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

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

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

Мы увидим, что когда один человек одновременно делает несколько дел — это похоже на конкурентность, а когда несколько человек, работая бок о бок, заняты каждый собственным делом — это напоминает параллелизм. Эти ситуации мы разберём на простом и понятном примере закусочных, в которые люди заходят в обеденный перерыв. Такие заведения стремятся обслуживать клиентов как можно быстрее и эффективнее. Потом я покажу реализацию механизмов этих закусочных на Python, а в итоге мы сравним разные возможности одновременного «приготовления нескольких блюд», которые даёт нам этот язык, и разберёмся с тем, в каких ситуациях их применение наиболее оправдано.

А именно, я раскрою здесь следующие вопросы:

▪ Отличия конкурентности от параллелизма.
▪ Различные варианты организации конкурентного выполнения кода (многопоточность, модуль asyncio, модуль multiprocessing, облачные функции) и их сравнение.
▪ Сильные и слабые стороны каждого подхода к организации конкурентного выполнения кода.
▪ Выбор конкретного варианта организации конкурентного выполнения кода с использованием специальной блок-схемы.

Читать далее

SDR трансивер Peaberry V2

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

Данная статья завершает серию публикаций про бюджетные одноплатные радиостанции SDR (Software Defined Radio). Речь пойдёт о трансивере Peaberry SDR V2, разработанном американским радиолюбителем David Turnbull (AE9RB).

Набор для сборки трансивера Peaberry SDR V2 продавался за $149 без стоимости доставки.

Конструкция Peaberry SDR V2 основана на схемных решениях радиостанции SoftRock Ensemble RXTX американского радиолюбителя Tony Parks (KB9YIG), рассмотренных в предыдущей публикации цикла. Основным отличием Peaberry SDR V2 от SoftRock Ensemble RXTX является наличие «на борту» составного устройства USB, включающего в себя звуковое устройство и COM-порт.

В публикации мы также разберём усовершенствования, которые AE9RB внёс в схемы квадратурного детектора (QSD) и квадратурного возбудителя (QSE), и кратко пройдёмся по реализации оригинальной схемы управления радиостанцией Peaberry SDR V2.
Читать дальше →

Теория мертвой Сети. Возможно ли, что весь интернет — это ИИ?

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


На Хабре еще нет, хотя весь интернет обсуждает. А у нас здесь как раз самый профильный ресурс по теме, и у пользователей (если они, конечно, существуют) может быть свое мнение.


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


Разрозненную информацию собрало издание The Atlantic.

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

Быстрый, мощный интерфейс на Python

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

Dear PyGui принципиально отличается от других фреймворков GUI Python. Рендеринг на GPU, более 70 виджетов, встроенная поддержка асинхронности — это лишь некоторые возможности Dear PyGui. Руководством по работе с этим пакетом делимся к старту курса по разработке на Python.

Читать далее

Самогонный аппарат — полный автомат. Часть 3. Заключительная

Время на прочтение15 мин
Количество просмотров28K
Прошло +100500 лет с момента первой и второй публикаций. Настала пора поставить точку в этом многолетнем вопросе.

Я добил его. На самом деле закончил и проверил работу аппарата еще в 2019 году, но опубликовать и описать — руки дошли только сейчас. Работает. Пусть — с костылями, через пень-колоду, но — как часы, потому что — это и есть часы (или мультиварка, стиральная машина — кому как больше нравится — принцип действия схожий).


КДПВ. Точь-в-точь — мой аппарат
Поехали? Нет! Погнали!

Введение в Traefik 2.0

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

Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.


Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:


  • обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах;
  • осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами;
  • обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети;
  • организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).

В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.


image

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

Android in-app purchases, часть 2: инициализация и обработка покупок

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

Это вторая статья из серии, посвящённой подключению внутренних покупок в приложениях Google Play. В этой статье разберём пример пейволла и реализацию механизма покупки.

Познакомьтесь с остальными статьями из цикла:

1. Android in-app purchases, часть 1: конфигурация и добавление в проект.

2. Android in-app purchases, часть 2: инициализация и обработка покупок.

3. Android in-app purchases, часть 3: получение активных покупок и смена подписки.

4. Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием.

5. Android in-app purchases, часть 5: серверная валидация покупок.

Читать далее

Ускоряем код на Питоне с помощью расширений на Cи

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

Питон — простой, но мощный язык, который заслуженно стал одним из самых популярных. Тем не менее, иногда ему не хватает скорости статически типизированных языков с предварительной компиляцией, таких как Cи и Джава.

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

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

Читать далее

Тюнер для автонастройки магнитной петлевой антенны

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

Представленный в этой инструкции тюнер магнитной петли не полагается на данные о положении; контроллер не имеет представления о переменном конденсаторе или о положении двигателя, при сканировании и нахождении резонансной точки он настраивает антенну с помощью программируемого источника частоты. Среди его функций вы обнаружите контроль нагрузки на конденсатор, компенсацию люфта двигателя, сохранение предустановок, а также найдёте приложения для обновления параметров контроллера и приложение, которое упрощает обновления прошивки через USB. К старту курса о разработке на C++ делимся переводом статьи о тюнере от его автора.

Читать далее

Взрослый back-end на node.js возможен?

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

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

Хочу обратить ваше внимание на относительно молодой фреймворк Nest.js. Из коробки он предлагает заранее предопределенную архитектуру, которая заточена под максимально удобную поддержку и масштабируемость вашего приложения. Заложенные архитектурные подходы проверены временем и давно используются в других, более зрелых платформах: Java(Spring), Python(Django), PHP(Laravel) и прочих.

Авторы Nest.js не скрывают, что их вдохновил один из популярных фреймворков для клиентских приложений — Angular.js, а его авторы ориентировались на походы, используемые в Java и C#. Если вы знакомы с Angular.js, то увидите в Nest.js много схожих идей.

Читать далее

Беспроводной тачпад из смартфона

Время на прочтение6 мин
Количество просмотров18K
Когда ты уже не начинающий ардуинщик и погодных информеров у тебя уже несколько штук, хочется чего-то более «оригинального» и «полезного».

Предположим у нас имеется: Arduino Leonardo – 1 штука, Bluetooth модуль – 1 штука, Android смартфон – 1 штука. Ключевое отличие Leonardo от остальных ардуин заключается в том, что она поддерживает протоколы HID, а по-простому может притворятся мышкой или клавиатурой. Выглядит это примерно следующим образом:

#include "Mouse.h" // импортируем библиотеку работы с мышью
void setup(){}            // ничего не настраиваем
void loop()
{
 Mouse.move(10, -15, 3);  // сдвигаем курсор на 10 пикселей вправо, на 15 пикселей вверх и колесо на 3 оборота
}

Как видим все крайне просто. Метод Mouse.move(X, Y, WHEEL) принимает три относительных параметра: 

X – величина смещения в пикселях по оси X (отрицательные значения сдвигают влево)

Y – величина смещения в пикселях по оси Y (отрицательные значения сдвигают вверх)

WHEEL – величина смещения колеса прокрутки (отрицательные значения сдвигают в другую сторону)

Но сама по себе идея двигать курсор ничего не стоит, если не мы его контролируем, а значит нам нужно непосредственно HID (Human Interface Device), или по-простому устройство ввода. В нашем случае мы его сделаем из смартфона, «написав программу» в среде AppInventor, но, предварительно, разберемся с железной частью и напишем скетч для Arduino. Данные в Leonardo со смартфона мы будем отсылать по bluetooth. Модуль bluetooth можно использовать любой подходящий, наиболее популярным решением является HC-05(06). Подключаем по следующей схеме:

Голосовой дневник на python с распознаванием голоса и сохранением в Mongo DB

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

Как (и зачем?) написать голосовой дневник, используя open source инструменты.

Читать далее

Про минусование и плюсование на Хабре

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

Пару десяток минут тому назад написал комент. Тут же прилетел минус. Я не против, так работает система. Просто непонятно "за что?".

В чём дело? В коменте ложь? Или он просто не нравится? Или "твоя морда мне не нравится"? То же самое касается плюсов. Плюс за то что вы того-же мнения, полностью согласны? Или вам просто статья, стиль нравится? Или тема обсуждения? За что!?

Раз Хабр уже разрабатывает новую "одёжку", может было бы полезно и интересно (владельцам, публике) сделать какие-то категории плюсования и минусования. Что бы было понятно "за что?".

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

Конкретное предложение - сделать небольшые меню для плюсования/минусования с опциями "за что", если сочтёте потенциально полезным.

Без этого мы останемся на уровне собак, будем вилять хвостом или гавкать, а другая сторона пусть догадывается "за что".

Кстати, на входе можно свободно использовать autoFocus/autofocus для несмартфонных клиэнтов.

Нету тут чего далее читать

Информация

В рейтинге
Не участвует
Откуда
Екатеринбург, Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность