Pull to refresh
4
0
Send message

Гоночный FPV-дрон своими руками (часть 1) — сборка

Reading time10 min
Views109K
Сегодня популярность гонок на дронах стремительно растёт. Любительские полетушки перерастают в серьёзные международные соревнования, а количество людей, вовлечённых в это хобби, растёт в прогрессии. Я сам недавно собрал FPV-квадрокоптер 180-го размера (расстояние в мм между осями моторов по диагонали) и спешу поделиться этим опытом.



Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments25

Создаем свой собственный язык программирования с использованием LLVM. Часть 2: Семантический анализ

Reading time32 min
Views7.5K

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

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments21

Пять сериалов про стартапы и технологии, которые стоит посмотреть

Reading time4 min
Views17K

Признайтесь, что каждому иногда хочется провести выходные за ничегонеделанием. Особенно это желание увеличивается под конец года. Да и зимой лениться хочется чуть больше обычного. Ну а чтобы это делать было ещё приятнее, мы решили собрать для читателей блога ЛАНИТ подборку новых сериалов, посвящённых технологическим стартапам и компаниям. 

Читать далее
Total votes 100: ↑98 and ↓2+120
Comments31

FPV полеты — это не только квадрокоптеры

Reading time4 min
Views28K

Я нечаянно вляпался в одно интересное старое гик-хобби — авиамоделизм, и, оказалось, на Хабре оно не освещено. А ведь полеты, особенно от первого лица, — это легко и весело, и возня с микроконтроллерами и паяльником, ПИД-регулирование, автопилот. И ощущение полета опять же.

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

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

Читать далее
Total votes 52: ↑47 and ↓5+59
Comments65

Kincony KC868-AI: 48 цифровых входов + ESP32, ETH, RS232, RS485 и приёмники IR и 433 МГц

Reading time6 min
Views4K


Пока мы с вами занимались контроллерами AlertBox (1, 2), подключали Wiren Board блоки на DIN-рейку и пытались полечиться при помощи ТГС-7А, компания Kincony тоже не теряла времени даром и выпустила ещё несколько контроллеров в своём неподражаемом форм-факторе «а-ля скейтборд, только колёсики приделать нужно».

На этот раз она нас порадовала концептуальным решением KC868-AI по организации сбора данных со множества (48 шт.) цифровых входов, плюс на плату добавлены приёмники инфракрасных сигналов (IR) и сигналов от радиомодулей на 433 МГц. Получилось что-то вроде универсального (Wi-Fi, Ethernet) умного (ESP32) гейта для сбора информации с какого-то объекта и передачи её для дальнейшей обработки в общую систему.

Ну а наличие интерфейсов RS485 и I2C и разъёма с 4-я свободными GPIO позволяет подключить к KC868-AI дополнительное оборудование, например, блок реле и сделать этот контроллер полноценным управляющим элементом вашей системы автоматизации.

Далее мы попробуем поподробнее разобраться с устройством KC868-AI и даже немного попрограммировать его в своё удовольствие.
Читать дальше →
Total votes 10: ↑9 and ↓1+12
Comments14

Термошкаф с «начинкой» — собрать самому или приобрести в готовом виде?

Reading time10 min
Views4.8K

Суть вопроса – есть некий термошкаф (или просто шкаф без обогрева), в котором надо разместить конкретное оборудование в соответствии с задачей всего данного комплекса.

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

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

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

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

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

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments10

Outer Join в LINQ

Reading time6 min
Views16K
Коментарий автора: Статья написана в 2012 году и пролежавшая 8 лет в песочнице.

LINQ — как много было придумано в C# лишь для того чтобы мы могли наслаждаться прелестями Language Integrated Query. А именно:

  • Generics
  • Extension Methods
  • Lamda expressions
  • Expression trees
  • Anonymous types
  • Object initializers
  • Type inferring

И это все чтобы мы могли написать нечто вроде такого:

	var query = 
		from itemA in listA
		join itemB in listB
			on itemA.Key equals itemB.Key
		select new {itemA, itemB};
	

Нельзя не согласиться — впечталяет.

И среди всего этого синтаксического сахара была ложка дегдя которая мне не давала нормально выспаться :)

Это тотальное отсутствие поддержки OUTER JOIN. Но как оказалось деготь с легкостью превращается… превращается… превращается…
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments6

Пирамида инспекции кода

Reading time3 min
Views7.8K
При инспекции кода часто складывается такая ситуация: какие-то обыденные моменты вроде форматирования или стиля рассматриваются очень тщательно, вокруг них ведутся бесконечные обсуждения, в то время как важным аспектам (выполняет ли код те функции, на которые рассчитан, производителен ли он, есть ли у него обратная совместимость с существующими клиентами и многое другое) уделяется гораздо меньше внимания.

Недавно я разместил в своем Твиттере небольшую иллюстрацию, которая проливает свет на эту проблему и дает наводку, на каких аспектах следует сосредоточиться прежде всего, и назвал ее «Пирамида инспекции кода». Ее назначение – помочь держать в приоритете составляющие инспекции кода, имеющие первостепенную важность (по крайней мере, на мой взгляд), а так же указать, какие составляющие можно и нужно автоматизировать.

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



Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments8

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Reading time10 min
Views42K

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

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

Читать далее
Total votes 27: ↑24 and ↓3+24
Comments2

«Научите меня читать компьютерную томограмму» — а давайте научу

Reading time10 min
Views33K
Срезы КТ печатаются в негативе на плёнке, точно так же, как в начале двадцатого века (в 1895 делали на пластинах, а не плёнке). Но съёмка идёт на матрицу, примерно как в профессиональной зеркалке, только улавливающей рентген-излучение. Поскольку в медицинских вузах никто не обновлял стандарты, врачи умеют работать с инвертированным изображением и на плёнке, и томографы отдают им картинку именно в том виде, в котором её можно отнести на просмотровый стол и просветить. Переворачивать изображение в истинные цвета (делать из негатива позитив) не принято по той же причине. Просмотровые столы в нашей клинике не используются, но стоят в каждом кабинете, потому что таков норматив.

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

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

В целом, врачу никогда не придёт в голову учить пациента читать КТ, потому что это бессмысленно. Но я подумал: а почему бы и нет? Конечно, вы не наработаете 20-летний опыт определения разных сложных случаев по рентгеновской тени тканей, но, по крайней мере, сможете определить 40–50% базовых картин.


Видно отражение от металла, его дают множественные снимки

Я покажу, как выглядит воспалённая пазуха, металл, запломбированные и незапломбированные каналы, очаги.
Читать дальше →
Total votes 57: ↑56 and ↓1+65
Comments28

Гексагональная архитектура и Domain Driven Design на примере Front-end приложения

Reading time7 min
Views21K

Преимущества данного метода:

Независимость: возможность не зацикливаться на бизнес логике.
Можно задекларировать, описать схему работы нашего приложения до создания внешних сервисов, использовать замоканные данные в реализации адаптеров.

Гибкость: использование любых фреймворков, перенос доменов адаптеров в другие проекты, добавление новых адаптеров без изменения исходного кода.

Легкая изменчивость: изменения в одной области нашего приложения не влияют на другие области.

Читать далее
Total votes 6: ↑5 and ↓1+6
Comments10

Распознавание лиц на RASPBERRY PI

Reading time7 min
Views14K

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

С каждым годом расширяется область применения таких систем. Например, пользователи могут приобрести у Google систему Nest — Nest Cam IQ Indoor, стоимостью 349 долларов с интеграцией в умный дом и возможностью распознавания лиц по подписке (за 10 долларов в месяц). И отечественных аналогов для частного пользования немало. Различные СКУД (системы контроля и управления доступом) от Ростелекома, HikVision, VisionLabs и других фирм. Описание зачастую мутное, опыт работы в реальных условиях можно найти на YouTube по запросу «Умный домофон не пускает мужчину домой».

Читать далее
Total votes 6: ↑4 and ↓2+3
Comments11

Микросервисы для чайников: как на них перейти с монолита с нуля

Reading time12 min
Views74K

Меня зовут Семен Катаев, я работаю в Авито над процессом перехода от монолитной архитектуры к микросервисам. Переход у нас все еще продолжается, но мне уже есть чем с вами поделиться. Это краткий обзор того, с чем придётся столкнуться, если вы задумались над созданием надежного, масштабируемого, распределённого приложения.

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

Читать далее
Total votes 23: ↑21 and ↓2+25
Comments31

Зачем нужен MediatR?

Reading time7 min
Views64K

Недавно я натолкнулся в нашем коде на использование пакета MediatR. Это заинтересовало меня. Почему я должен использовать MediatR? Какие преимущества он мне предоставляет? Здесь я собираюсь рассмотреть эти вопросы.

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments34

«Афиша7» – интегрировать 4 API, чтобы разродиться собственным

Reading time18 min
Views4.8K

В конце декабря 2019 года передо мной стояла задача разработки агрегатора культурных событий. Решение предполагало создание 2х инструментов: для добавления мероприятий на сайте, для сбора и предъявления актуальных данных о планируемых событиях.

В обзоре я кратко опишу основные этапы разработки, сложности реализации проекта.

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments12

Установка Kubernetes на домашнем сервере с помощью K3s

Reading time23 min
Views29K

Но зачем


Знаю, о чем вы думаете — Kubernetes? На домашнем сервере? Кто может быть настолько сумасшедшим? Что ж, раньше я согласился бы, однако недавно кое-что изменило мое мнение.


Я начал работать в небольшом стартапе, в котором нет DevOps разработчиков со знанием Kubernetes (в дальнейшем K8s), и даже будучи старым ненавистником K8s из-за его громоздкости, был вынужден признать, что мне не хватает его программного подхода к деплойментам и доступу к подам. Также должен признать, что азарт от укрощения настолько навороченного зверя давно будоражит меня. И вообще, K8s захватывает мир — так что лишние знания не навредят.

Читать дальше →
Total votes 12: ↑11 and ↓1+11
Comments9

Подключение энкодера к Ардуино и полнофункциональный код обработки для него

Reading time5 min
Views54K

Энкодер - это устройство преобразования механического перемещения или угловых изменений положения в цифровой сигнал. В статье рассматривается самый популярный в DIY сообществе инкрементальный энкодер EC11 с кнопкой. При его вращении на выходах A и B формируются TTL сигналы в виде импульсов сдвинутые между собой по фазе на 90 градусов. Таким образом с его помощью, можно определить направление и скорость вращения, а так же рассчитать угол поворота. В отличие от потенциометров, KY-040 он надежный и долговечный.

Читать далее
Total votes 34: ↑24 and ↓10+19
Comments102

Книги с оригинальным подходом к теме первого контакта

Reading time5 min
Views16K

Глядя на бескрайнюю россыпь звезд в ночном небе, почти любой человек хоть раз задавался вопросом: интересно, мы одни во вселенной? Тема контакта с внеземным разумом давно стала классической для научной фантастики. Многих авторов интересует именно момент первой встречи, тревожная новизна и неизвестность. Чем именно они будут отличаться от нас? Сможем ли мы вообще понять друг друга?

За долгие годы на эту тему было сказано, снято и написано, мягко говоря, немало. Иногда кажется, что тема «первого контакта» и вовсе исчерпала себя. Но раз за разом находятся авторы, которые находят свежий подход и удивляют своими идеями. Вот несколько тому примеров — от классики до современных книг. 

Читать далее
Total votes 19: ↑17 and ↓2+20
Comments19

13 подвохов мобильного приложения, о которых лучше знать до старта разработки

Reading time13 min
Views36K

Главная сложность в разработке приложения – накодить его функционал. Например, сделать редактирование текста для приложения-блокнота. Так я полагал, когда был моложе и наивнее.

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

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

Читать далее
Total votes 48: ↑47 and ↓1+56
Comments20

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Specialist
Senior
From 300,000 ₽
SQL
Git
PostgreSQL
PHP
C#
MSSQL
Database