Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Gitea + Drone + Nginx + Portainer. Пошаговое руководство по деплою аналога github на своём железе

Reading time8 min
Views20K

В данном туториале я расскажу вам как можно задеплоить gitea на своём железе с использованием docker-compose подключить drone, для возможности автоматизации тестирования и доставки собственных приложений, настроить reverse-proxy через nginx для доступа через сеть и включить portainer для мониторинга запущенных контейнеров.

Читать далее

Блокирующая обработка тактовой кнопки для Arduino. Настолько полный гайд, что ты устанешь его читать

Reading time31 min
Views27K
image

В одной из своих прошлых статей я писал про подключение тактовой тактильной кнопки. И, казалось бы, такой простой вопрос, вызвал «бурю» в комментариях. Публика разделилась на два лагеря: на тех, кто все знает, но обычно молчит; и тех, кто не знает, и стесняется спросить. А я так и не понял, к какому лагерю отношусь!

Поиски в интернете по запросу «программирование кнопки для Arduino» выдает весьма противоречивый контент. Где-то код очень крутой, но из-за скудного описания не понятный. А где-то код очень простой, и от того не понятно, что с ним можно делать.

В общем, так бывает достаточно часто, когда простые (может даже и примитивные) задачи на просторах интернетов освещены поверхностно. И это вполне закономерно. Те, кто только начинает что-то изучать, с радостью делятся новыми знаниями. Кем-то движет гордость за свои достижения, а у кого-то просто язык чешется. Но как только человек поднаторел в вопросе, груз профессионализма не позволяет ему писать про такие мелочи. Или нет на это свободного времени, или приходит чувство самодостаточности.

Вот я и решил собраться с мыслями и обобщить свой опыт программирования обработчика кнопки для Arduino. Если вам интересно пополнить/проверить свои знания в данном вопросе, ну или проверить мои знания, то приглашаю под кат.

Дисклеймер. Текст рассчитан на публику, которая только начинает познавать азы программирования контроллеров Arduino. Запрещено к просмотру людям с ослабленной психикой или психикой с долголетней инженерной выдержкой и беременным женщинам (это так, на всякий случай, а то мало ли… британские ученые пока до исследований на эту тему не добрались). Материал предназначен исключительно для просмотра лицам, не достигшим 21 года.
Читать дальше →

Пишу диаграммы последовательностей текстом (кодом). Вы тоже можете

Reading time5 min
Views42K

Я работаю бизнес-аналитиком. Создание диаграмм последовательностей (sequence diagram) – часть регулярной рутины. Всё классно. Но процесс правок…

К счастью, я нашел для себя решение. Теперь я не рисую sequence diagram, а пишу "кодом". Это легко, быстро и удобно.

Читать далее

FCOS- объяснение обнаружения объектов без привязки

Reading time15 min
Views3.3K

FCOS: полностью сверточное одноступенчатое обнаружение объектов - это детектор объектов без привязки. Он решает проблемы обнаружения объектов с помощью метода прогнозирования по пикселям, аналогичного сегментации. Большинство последних детекторов объектов без привязки или без привязки на основе глубокого обучения используют FCOS в качестве основы.

Читать далее

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

Level of difficultyMedium
Reading time16 min
Views19K

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

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

Как работает JS: WebSocket и HTTP/2+SSE. Что выбрать?

Reading time16 min
Views131K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

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

Когда TCP-сокеты отказываются умирать

Reading time10 min
Views42K

Когда TCP-сокеты отказываются умирать

В поисках причин, почему установленные соединения не разрываются в некоторых случаях, я набрёл на отличную статью в блоге Cloudflare. Которая в итоге помогла найти не только решение моей проблемы, но и помогла лучше понять как работают таймауты TCP соединений в Linux.

Читать далее

О том, как алгоритм Дейкстры реализовывал и некоторых его применениях

Reading time12 min
Views12K

Приветствую Вас, хабровчане!

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

Читать далее

Троян-снаряд против крипто-брони. Трагедия в трёх актах

Reading time14 min
Views20K

Увидел я тут пост на Хабре, и решился рассказать вам одну старую историю. Которая потянула за собой другую, а та — третью. Само описанное событие, пробудившее во мне воспоминания о событиях тех времен, когда доллар был по 30, а флагманская видеокарта стоила дешевле человеческой почки, звучит как история крайнего невезения, или же как иллюстрация очень специфического чувства юмора у Cудьбы.

А случилось презанимательнейшее: итальянские полицейские смотрели улицы в небольшом испанском городке через Google Street View по своим полицейским (или не очень) делам и увидели там человека, в котором узнали… сбежавшего 20 лет назад итальянского мафиозо, осужденного на пожизненный срок за убийство и наркоторговлю! Если добавить к этому факт, что лица в Google Street View заблюриваются, то становится абсолютно ясно, что не обошлось без вмешательства самой Пресвятой Девы Марии! Получив такую божественную наводку, полицейские проверили фотографии из Фейсбука с геотегами поблизости от этого места, и выяснили, что наш мафиозо-рецидивист-убийца-наркоторговец уже давно самоисправился в шеф-повара небольшого ресторанчика La Cocina de Manu и владельца бакалейного магазинчика El Huertode Manu.

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

Читать далее

Пакуем секреты правильно

Reading time3 min
Views15K

Безопасное хранение и передача секретов (токенов, паролей и т.п.) между пользователями и сервисами – это один из вызовов, с которыми сталкиваются разработчики и DevOps инженеры. Традиционные централизованное хранение в менеджерах паролей, например, полностью проблему не решает, а лишь смещает её в сторону управления мастер-паролями, которые, к тому же, становятся «ключами к царству» и компрометация которых может иметь катастрофические последствия. Данную проблему «курицы и яйца» ещё иногда называют проблемой «нулевого секрета» (Secret Zero Problem). В этой заметке я расскажу о попытке решить эту проблему при помощи механизма обёртки ответа (Response Wrapping).

Читать далее

Нейросети на 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-экосистемой.

Читать далее

Как создать переводчик, который переводит лучше, чем Google Translate

Reading time8 min
Views33K

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

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

Читать далее

Майним технохардкор в сезоне Data Mining

Reading time8 min
Views28K

С 5 сентября по 20 октября на Хабре проходит сезон Data Mining — конкурс технических статей для дата-сатанистов, знающих толк в оккультных практиках работы с данными.

Хабр проводит сезон вместе с SM Lab (IT-компанией «Спортмастера»). У них, кстати, открыта middle-вакансия для Data / ML Engineer.

Правила просты: вы пишете статью в хаб Data Mining и, если её рейтинг оказывается самым высоким, SM Lab отгружает вам игровой монитор и грант на написание следующего шедевра.

UPD. Сезон закончился, а подробности и победителя можно посмотреть в итоговом посте.

Читать далее

GitOps — что это такое и с чем его едят?

Reading time12 min
Views42K

На самом деле почти никто не знает, что такое GitOps. Я тоже заблуждался, пока не начал готовить доклад, а потом статью по этой теме. Самое распространенное определение GitOps — это «хранение состояния в Git», но оно не единственное и не самое главное. Это звучное словечко  придумали в Weaveworks, но его название несколько разнится с его реальным пониманием. Созвучие с DevOps — скорее, маркетинговый ход, чем реальное отражение сущности. Основная идея GitOps в том, что помимо хранения состояния в Git, у нас есть непрерывный процесс его синхронизации с реальным миром, то есть, что у вас Kubernetes-кластере или где либо ещё в вашем окружении.

Меня зовут Андрей Квапил. Я работал в чешском хостинге WEDOS. Он не сильно популярен в России, но это крупнейший хостинг на территории Чехии (просто Чехия маленькая).  Сейчас я работаю во Фланте, но именно на примере европейского хостинга WEDOS, хочу рассказать историю имплементации GitOps.

Читать далее

Фронты третьей мировой: ARM China

Reading time8 min
Views15K

Одним из важнейших фронтов идущей сейчас гибридной Третьей Мировой войны являются полупроводники. Со времен колониальных войн девиз англосаксов не изменился - “whatever happens, we have got the Maxim gun, and they have not” - поэтому важным сражением на этом фронте становится битва за компанию ARM и ее технологии. Вот почему.

Часть 1: ARM как технология и ARM как бизнес

ARM - это маленькая и очень бедная кембриджская компания. Она обеспечивает весь мир энергоэффективной архитектурой CPU, исходно доминировавшей на мобильниках и встроенных устройствах, и стремительно догонявшей классическую интеловскую x86 по производительности. В 2020 кривые пересеклись, и теперь мы с коллегами фиксируем, что ARM’ы вроде десктопного Apple M1 и даже серверного AWS Graviton 2 начали в клочья разрывать x86 от Intel/AMD на вычислительно трудных задачах типа симметричного шифрования AES или кодирования типа кодов Рида-Соломона. Велика вероятность, что в течение ближайших нескольких лет arm64 окончательно свергнет x86 как Самая Главная Архитектура.

Читать далее

Распознавание маски на лице с помощью YOLOv3

Reading time9 min
Views9.7K

YOLO или You Only Look Once — это архитектура свёрточных нейронных сетей, которая используется для распознавания множественных объектов на изображении. В 2020, на фоне пандемии, задача детектирования объектов (object detection) на изображении стала как никогда актуальной. Специально к старту нового потока курса по Machine Learning и Deep Learning, делимся с вами полным пошаговым руководством для тех, кто хочет научиться распознавать объекты с помощью YOLO на разных данных. Предполагается, что вы уже знаете, как делать распознавание объектов с помощью методов глубокого обучения и, в частности, вы знаете основы YOLO, так что давайте погрузимся в нашу задачу.

Читать далее

Обнаружение лиц в Node.js с использованием Rust и WebAssembly

Reading time7 min
Views4.4K

В последней статье мы рассказывали, как вызывать функции Rust из Node.js. Сегодня мы расскажем, как написать приложение AIaaS (англ. Artificial Intelligence as a Service — «искусственный интеллект как услуга») на базе Node.js.

Большинство приложений с искусственным интеллектом сейчас разрабатываются на языке Python, а главным языком программирования для веб-разработки является JavaScript. Для того чтобы реализовать возможности ИИ в вебе, нужно обернуть алгоритмы ИИ в JavaScript, а именно в Node.js.

Однако ни Python, ни JavaScript сами по себе не подходят для разработки ИИ-приложений с большим объемом вычислений. Это высокоуровневые, медленные языки со сложной средой выполнения, в которых удобство использования достигается за счет снижения производительности. Для решения этой проблемы блоки интеллектуальных вычислений в Python оборачиваются в нативные C/C++-модули. Точно так же можно сделать и в Node.js, но мы нашли решение получше — WebAssembly.

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

Читать далее

Что случается с металлоломом и зачем там хардкорное ИТ

Reading time9 min
Views36K
Вот приехал вагон лома, мы опускаем туда краном два огромных магнита и передвигаем ими внутри вагона. Так мы разгружаемся:



Если вы присмотритесь к этому лому, то увидите, что он не совсем чистый: где-то есть земля, где-то — тряпки, где-то может попасться ветка дерева. Несмотря на подъём магнитом, из-за того, что железяки у нас довольно корявые, за них цепляется мусор и потенциально может уйти в переплавку. А мы очень не любим, когда на переплавку пытается уехать, например, батарея отопления. Батарея отвратительна, потому что в сантехническом чугуне очень много фосфора, и её надо обрабатывать дополнительно. Древесина и тряпки вообще не плавятся, а горят, земля повышает количество шлака, и поэтому все они не только портят расплав, но ещё и сильно уменьшают КПД электродуговой печи за счёт дополнительных затрат энергии. Поэтому мы очень хотим контролировать качество лома.

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

Естественно, поставщики не стремятся сильно очищать лом, потому что, чем больше там будет мусора, тем меньше металла нужно для поставки — это им выгодно. А потребители лома готовы мириться с порогами в 1,5-2 % мусора (это закреплено в ГОСТах и ТУ), но не больше.

И вот здесь на разгрузку ворвались наши цифровизаторы, очень быстро и очень весело решив проблему. Точнее, они решали одну проблему, а в результате получилось нечто даже более крутое.
Читать дальше →

FFI: пишем на Rust в PHP-программе

Reading time7 min
Views19K

В PHP 7.4 появится FFI, т.е. можно подключать библиотеки на языке C (или, например, Rust) напрямую, без необходимости писать целый extension и разбираться в его многочисленных нюансах.


Давайте попробуем написать код на Rust, и используем его в PHP-программе
Читать дальше →

Arduino + Unity. Радио fpv-машинка на геймпаде

Reading time6 min
Views9.2K

Привет. Расскажу про то, как сделал машинку на Arduino-контроллере, а Unity принимал сигналы с геймпада, управлял машиной по радиоканалу, отображал пользовательский интерфейс и изображение fpv-камеры.

Читать далее

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science