Pull to refresh
Козлов Василий Иосифович@saintbyteread⁠-⁠only

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

Send message

Такого в Китае не купишь

Reading time6 min
Reach and readers13K

 Хомяки приветствуют вас друзья!

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

Читать далее

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

Reading time20 min
Reach and readers33K
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 микрофона или голосовые комментарии

Reading time4 min
Reach and readers37K

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


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

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

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


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

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

Reading time14 min
Reach and readers38K

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

Так как же?

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

Reading time17 min
Reach and readers143K
image

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

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

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

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

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


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

image

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

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

Reading time9 min
Reach and readers26K
Вывод 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, который таковым не является и которому такой функционал не помешал бы. Надо это дело исследовать. Тогда я ещё не знал во что ввязался. Как оказалось, не всё так просто.


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

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

Reading time3 min
Reach and readers28K

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

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

Reading time21 min
Reach and readers75K

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

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

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

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

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

Читать далее

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

Reading time5 min
Reach and readers15K

Данная статья завершает серию публикаций про бюджетные одноплатные радиостанции 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.
Читать дальше →

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

Reading time4 min
Reach and readers34K


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


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


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

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

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

Reading time15 min
Reach and readers169K

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

Читать далее

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

Reading time15 min
Reach and readers34K
Прошло +100500 лет с момента первой и второй публикаций. Настала пора поставить точку в этом многолетнем вопросе.

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


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

Введение в Traefik 2.0

Reading time13 min
Reach and readers220K

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


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


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

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


image

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

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

Reading time12 min
Reach and readers8.3K

Это вторая статья из серии, посвящённой подключению внутренних покупок в приложениях 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и

Reading time7 min
Reach and readers15K

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

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

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

Читать далее

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

Reading time13 min
Reach and readers9.4K

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

Читать далее

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

Reading time6 min
Reach and readers55K

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

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

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

Читать далее

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

Reading time6 min
Reach and readers20K
Когда ты уже не начинающий ардуинщик и погодных информеров у тебя уже несколько штук, хочется чего-то более «оригинального» и «полезного».

Предположим у нас имеется: 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). Подключаем по следующей схеме:

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity