Search
Write a publication
Pull to refresh
14
0
Mozzart @WFF

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

Send message

Делаем маршрутизацию (роутинг) на OpenStreetMap. Введение

Reading time9 min
Views15K

Хотелось бы поделиться опытом создания систем маршрутизации PostgreSQL/PgRouting на карте OpenStreetMap. Речь пойдет о разработке [коммерческих] решений со сложными требованиями, для более простых проектов, вероятно, достаточно обратиться к документации. Насколько мне известно, такие вещи, как полная поддержка односторонних дорог и направлений движения, быстрый роутинг на тысячах адресов (порядка секунд на обычном лаптопе, к примеру, Macbook Pro 13" 2013 года), создание дорожного графа с заданными свойствами, мета-оптимизация маршрутов вообще нигде и никак не рассматриваются. Как обычно, все данные и результаты доступны в моем GitHub репозитории OSM Routing Tricks, который я буду пополнять по мере публикаций.



Небольшой маршрут из 330 адресов на карте OpenStreetMap (время построения около 5 секунд на вышеупомянутом лаптопе). Можно ли за это же время построить маршрут, скажем, из 5000 точек? Да, можно, и об этом мы тоже поговорим (в следующих частях статьи).

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

Встраиваемый компьютер AntexGate. От прототипа к серийному производству

Reading time4 min
Views11K
image

Не так давно мы с командой разработали небольшой встраиваемый компьютер для решения задач IIoT и промышленной автоматизации. Первую статью о нашем устройстве можно посмотреть здесь.

Разрабатывать устройство решили на распространенном и оттестированном модуле Raspberry CM3+, что позволило нам создать компьютер с большими вычислительными способностями, огромным сообществом и простотой его использования. Под катом расскажу по этапам, от чего отталкивались и к чему пришли в итоге.
Читать дальше →

ILUШA vs Dynamixel. Выбор сервопривода с обратной связью

Reading time2 min
Views7.8K
Сервопривод отечественного производства Илюша.



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

Современный модельный сервопривод сегодня представляет законченное устройство в едином корпусе (мотор вместе с редуктором и платой управления). Самым распространенным способом управления модельными сервами является протокол PWM, положение серводвигателя определяется шириной импульса, наличие импульсов служит сигналом включения. Данный подход позволяет максимально упростить электронику, однако не лишен и проблем.
Читать дальше →

Пайка компонентов 0201. Слабонервных просьба удалиться от экранов

Reading time4 min
Views103K
Доброго времени суток, Хабр!



Хочу поделиться опытом пайки плат. Также затрону тему установки совсем маленьких компонентов с типоразмером 0201.
Читать дальше →

Что такое VPS/VDS и как его купить. Максимально внятная инструкция

Reading time12 min
Views143K
Выбор VPS на современном рынке технологий напоминает выбор книг нон-фикшн в современном книжном: вроде и обложек интересных много, и цены на любой разбег кошелька, и имена каких-то авторов на слуху, но найти то, что действительно нужно и не является по сути бредом автора, крайне сложно. Точно так же провайдеры предлагают разные мощности, конфигурации и даже бесплатные VPS (хорошее предложение, но принимать его, конечно, опасно). Давайте определимся, на что же нужно обратить внимание при выборе провайдера.

Не гадайте на ромашке — читайте нашу инструкцию
Читать дальше →

32 отличия дизайна мобильного приложения под iOS и Android

Reading time12 min
Views72K
image

Железный дизайнер из Redmadrobot Design Lab Артур Абраров делится наблюдениями.

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

Чтобы адаптировать дизайн правильно, нужно соблюдать гайдлайны платформ: Human Interface Guidelines (HIG) у iOS и Material Design у Android. И общаться с разработчиками, в идеале подключать их к дизайну как можно раньше, чтобы они могли сразу задать технические ограничения.

Но в чём именно отличается дизайн под iOS от дизайна под Android? В этой статье я разберу 32 конкретных отличия дизайна под iOS и Android. Они поделены на четыре группы:

  1. Базовые отличия.
  2. Отличия в навигации и паттернах (UX).
  3. Отличия в компонентах (UI).
  4. Прочие отличия.

Особенности iOS будут слева, а Android — справа или сверху/снизу.

Базовые отличия


Human Interface Guidelines vs Material Design


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

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

image

image

STM32CubeMonitor стоит попробовать

Reading time2 min
Views16K

Введение


STM32CubeMonitor — утилита для удобного отображения данных с контроллеров семейства STM32. Причем не требуется никакого дополнительного оборудования, только плата с контроллером и программатор (я пробовал и китайский свисток и оригинальный st-link\v2). Слово «Cube» в название не означает привязку к CubeMx\HAL, от вас требуется всего лишь прошивка в формате "*.elf", что не может не радовать. Данная утилита позволяет чрезвычайно быстро и просто выводить данные с контроллера в реальном времени в виде графика, а так же осуществлять постобработку(присутствуют наборы основных математических и тригонометрических функций).
Читать дальше →

Самодельный лидар: OpenTOFLidar

Reading time27 min
Views79K

В этой статье я хочу рассказать про свой проект импульсного (TOF) Open Source лидара — о том как я его делал, и каких результатов удалось добиться.
top-picture

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

Литье форм из жидкого силикона в домашних условиях

Reading time4 min
Views264K
image

В прошлый раз я описывал разработку набора для фокуса «Растворимая ложка», в котором фигурировала форма из силикона.

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

PostgreSQL Antipatterns: ударим словарем по тяжелому JOIN

Reading time6 min
Views23K
Продолжаем серию статей, посвященных исследованию малоизвестных способов улучшения производительности «вроде бы простых» запросов на PostgreSQL:


Не подумайте, что я так сильно не люблю JOIN… :)

Но зачастую без него запрос получается ощутимо производительнее, чем с ним. Поэтому сегодня попробуем вообще избавиться от ресурсоемкого JOIN — с помощью словаря.


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

Опциональная цепочка, объединение с null, и как они меняют наш подход к написанию кода

Reading time4 min
Views12K
Доброго времени суток, друзья!

Если Вы следите за релизами TypeScript, то знаете, что опциональная цепочка (Optional Chaining) и объединение с null (Null Coalescing) были представлены в TypeScript 3.7. Также эти фичи по умолчанию включены в Babel 7.8.0. Это одни из главных претендентов на роль особенностей JavaScript. В настоящее время они находятся на 4 и 3 стадиях рассмотрения, соответственно (23 января был принят стандарт ECMAScript 2020, где есть и опциональная цепочка, и объединение с null, и еще парочка занимательных вещей; я в курсе, что недавно на Хабре вышла статья-перевод про особенности, которые привнес в JS ES2020, однако, полагаю, парочка лишних примеров не повредит — прим. пер.).
Читать дальше →

Интеграционные тесты на Flutter — это просто

Reading time6 min
Views8.5K

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

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

Свойства Min и Max width/height в CSS

Reading time10 min
Views130K
Перевод «Min and Max Width/Height in CSS» Ахмада Шадида.

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

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

Vue для самых маленьких a.k.a небольшой блог по всем канонам

Reading time15 min
Views29K


Всем привет! В данной статье рассмотрим разработку фронта простенького блога на Vue с использованием всех прелестей Vue включая Vuex и Router. А также поговорим про структуру приложения и работу с контейнером и роутером.
Читать дальше →

Почему я отказался от Google Maps API

Reading time7 min
Views38K
TL;DR Недавние изменения в модели ценообразования, мягко говоря, безумны.

Когда я в 2012 году запустил NUKEMAP, у Google Maps были просто потрясающие программные интерфейсы. Абсолютно лучшие API для создания картографических мэшапов на JavaScript, практически бесплатные, с активным сообществом разработчиков, которое регулярно добавляло новые функции. На самом деле создавалось впечатление, что компания заинтересована в людях, которые используют их продукт для создания крутых, полезных инструментов.


Старые версии NUKEMAP: слева оригинальная версия от марта 2005 года на скриншотах MapQuest (она была чрезвычайно ограничена и никогда не публиковалась), полностью на PHP. Я разработал её для личного пользования и обучения. Справа переделанный NUKEMAP от 2012 года на Google Maps API и Javascript.

Сегодня изменилось почти всё. В кодовую базу API практически перестали добавлять реально полезные функции (многие классные фичи были удалены или тихо устарели; добавляемые новые функции, как правило, инкрементальные или примитивные). Это действительно весьма примечательный факт, поскольку на свой собственный веб-сайт Google Maps они добавили много классных штук, например, режим 3D. Но в API их не портировали.
Читать дальше →

Делаем адаптивную загрузку контента на сайте

Reading time6 min
Views4.1K
Привет, Хабр!

Я делаю сайт для своего проекта. На сайте нужно показывать одновременно много гифок, каждая весит неплохо. Если показывать все разом, то страница грузится очень долго. При этом отдавать страницу без гифок (чтобы они там догрузились) тоже нельзя.

Всех, кому интересно, как я разобрался с этой проблемой, прошу под кат.
Читать дальше →

Камеры машинного зрения для энтузиастов. Как использовать камеру для автономной навигации?

Reading time6 min
Views11K

Мы сделали камеру для определения AprilTag и ArTag с mROS. Подключением по Uart или Ethernet.



Мы пробовали JeVois и OpenMV, оценили плюсы и минусы и собрали свою камеру.



Поиск визуальной метки и ориентация робота на основе полученных данных. Мы разрабатываем робота для сбора мячей для гольфа на driving range. Сейчас в мире только одна компания продает робота для решения этой задачи. Рынок очень перспективный, это сподвигло нас превратить проект из DIY в технологический стартап.
Читать дальше →

Используем SQLite в Flutter

Reading time6 min
Views48K
Привет, Хабр! Представляем вашему вниманию перевод статьи «Using SQLite in Flutter».



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

В этой статье я продемонстрирую как сделать это, используя SQLite, в Flutter-e
Читать дальше →

Частное мнение о Яндекс.Турбо

Reading time5 min
Views34K
Данная статья является своего рода взглядом со стороны не искушенного пользователя на Турбо-страницы от Яндекс, до которого наконец-то дошли некоторые особенности работы этой технологии, а так же не совсем очевидные последствия от её использования.

Что такое Турбо-страницы Яндекс официально?

Турбо-страницы — лёгкие версии страниц вашего сайта
Исследования показывают, что люди не готовы ждать загрузки более 2 секунд.
Мы предлагаем вам подключить Турбо-страницы, которые очень быстро открываются из сервисов Яндекса и эффективно монетизируются.
В принципе описано все четко, для чего это нужно. И хотя понимаешь, что технология привязывается к Яндексу, ну да ладно. Тем более, если это повышает удобство пользователей и тем самым увеличивает пользовательский трафик, то почему бы и нет?

Но как всегда, есть нюанс.


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

5 способов полезного использования Raspberry Pi. Часть вторая

Reading time4 min
Views74K
Привет, Хабр.

В первой части были рассмотрены 5 способов использования Raspberry Pi. Тема оказалась достаточно интересной, и сегодня я рассмотрю еще несколько вариантов того, как можно с пользой использовать этот микрокомпьютер.


Фото с сайта learn.adafruit.com

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

Information

Rating
1,574-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity