Pull to refresh
5
0
DrNemo @DrNemo

User

Send message

Собираем простейшую ZigBee-сеть, программируем под Mbed, общаемся через MQTT

Reading time14 min
Views27K
Эта статья — большой учебный практикум начального уровня по использованию XBee-модуля в связке с микроконтроллером, имеющим на борту Mbed OS. ZigBee — давно и прочно укоренившийся стандарт в системах «Умного дома» (например, он используется наряду с Z-Wave в хабе Samsung SmartThings, см. нашу статью), он отличается низким энергопотреблением, простотой использования, и, что самое интересное, возможностью создания самоконфигурируемых mesh-сетей. Вы увидите из практикума, что это действительно так — мы посмотрим на структуру такой сети через удобную утилиту-визуализатор.

Предполагается, что вы уже знаете, что такое ZigBee и для чего он нужен. Теперь вам хочется подключить свой первый XBee-модуль и решить с его помощью свои задачи, не вдаваясь в программирование самого модуля, а лишь используя его как интерфейс связи. В конце будем все данные пересылать через самодельный MQTT-шлюз куда угодно, хоть на локальный сервер, хоть в Интернет. Мы решили показать всё на примере Mbed как самой простой и доступной новичкам RTOS. Вы убедитесь, что всё работает «из коробки», и можете сразу начать делать свой проект, даже если до этого вы имели дело только с Ардуино.


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

Определяем породу собаки: полный цикл разработки, от нейросети на Питоне до приложения на Google Play

Reading time27 min
Views23K
Прогресс в области нейросетей вообще и распознавания образов в частности, привел к тому, что может показаться, будто создание нейросетевого приложения для работы с изображениями — это рутинная задача. В некотором смысле, так и есть — если вам пришла в голову идея, связанныя с распознаватием образов, не сомневайтесь, что кто-то уже что-то подобное написал. Все, что от вас требуется, это найти в Гугле соответствующий кусок кода и «скомпилировать» его у автора.

Однако, все еще есть многочисленные детали, делающие задачу не столько неразрешимой, сколько… нудной, я бы сказал. Отнимающей слишком много времени, особенно если вы — новичок, которому нужно руководство, step-by-step, проект, выполненный прямо на ваших глазах, и выполненный от начала и до конца. Без обычных в таких случаях «пропустим эту очевидную часть» отговорок.

В этой статье мы рассмотрим задачу создания определителя пород собак (Dog Breed Identifier): создадим и обучим нейросеть, а затем портируем ее на Java для Android и опубликуем на Google Play.

Если вы хотите посмотреть на готовый результат, вот он: NeuroDog App на Google Play.

Веб сайт с моей робототехникой (в процессе): robotics.snowcron.com.
Веб сайт с самой программой, включая руководство: NeuroDog User Guide.

А вот скриншот программы:

image

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments34

Принципы построения REST JSON API

Reading time8 min
Views336K

Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


Зачем


Надеюсь, читающий уже понимает, зачем ему вообще нужен именно REST api, а не какой-нибудь монстр типа SOAP. Вопрос в том, зачем соблюдать какие-то стандарты и практики, если браузеры вроде бы позволяют делать что хочешь.


  • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
  • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
  • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
  • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
Читать дальше →
Total votes 71: ↑55 and ↓16+39
Comments207

Нейронные сети для начинающих. Часть 2

Reading time14 min
Views557K


Добро пожаловать во вторую часть руководства по нейронным сетям. Сразу хочу принести извинения всем кто ждал вторую часть намного раньше. По определенным причинам мне пришлось отложить ее написание. На самом деле я не ожидал, что у первой статьи будет такой спрос и что так много людей заинтересует данная тема. Взяв во внимание ваши комментарии, я постараюсь предоставить вам как можно больше информации и в то же время сохранить максимально понятный способ ее изложения. В данной статье, я буду рассказывать о способах обучения/тренировки нейросетей (в частности метод обратного распространения) и если вы, по каким-либо причинам, еще не прочитали первую часть, настоятельно рекомендую начать с нее. В процессе написания этой статьи, я хотел также рассказать о других видах нейросетей и методах тренировки, однако, начав писать про них, я понял что это пойдет вразрез с моим методом изложения. Я понимаю, что вам не терпится получить как можно больше информации, однако эти темы очень обширны и требуют детального анализа, а моей основной задачей является не написать очередную статью с поверхностным объяснением, а донести до вас каждый аспект затронутой темы и сделать статью максимально легкой в освоении. Спешу расстроить любителей “покодить”, так как я все еще не буду прибегать к использованию языка программирования и буду объяснять все “на пальцах”. Достаточно вступления, давайте теперь продолжим изучение нейросетей.
Читать дальше →
Total votes 46: ↑42 and ↓4+38
Comments35

Создание бота для участия в AI mini cup 2018 на основе рекуррентной нейронной сети (часть 2)

Reading time12 min
Views5.8K


Это продолжение первой части статьи


В первой части статьи автор рассказал об условиях конкурса по игре Агарио на mail.ru, структуре игрового мира и частично об устройстве бота. Частично, потому что затронули только устройство входных сенсоров и команд на выходе из нейронной сети (далее в картинках и тексте будет сокращение NN). Так попробуем приоткрыть черный ящик и понять как же там все устроено.

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments8

Создание персонажей в Blender и Unity

Reading time18 min
Views158K

Визуально персонажи 3D-игр имитируются с помощью использования моделей, текстур и анимаций.

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

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

Возможность многократного применения анимаций позволяет использовать анимации из Asset store и с таких вебсайтов, как mixamo.com, для ваших собственных персонажей. Это экономит кучу времени!

В этом туториале вы узнаете, как подготовить гуманоидную модель в Blender и как перенести её в Unity. В частности, вы научитесь следующему:

  • Создавать арматуру (скелет) персонажа и выполнять её риггинг (привязку скелета к мешу)
  • Модифицировать персонаж добавлением аксессуаров и объектов
  • Экспортировать модель в FBX
  • Импортировать модели Blender
  • Создавать и настраивать гуманоидный аватар
  • Прикреплять к персонажу объекты
  • Анимировать гуманоида в Unity
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments8

Плюс один процент автоматизации

Reading time6 min
Views21K


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

Раньше общее потребление контролировал однофазный счетчик с Modbus-интерфейсом. Следить за текущими показаниями потребления полезно, чтобы не превышать разумные лимиты и не дожидаться отключения групповых автоматов. С этой задачей он справлялся на «ура». Но гораздо интереснее следить за каждым потребителем в отдельности. Для чего и как это сделать попробую рассказать в этой статье.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments36

Как я автоматизировал дачу на 90%

Reading time9 min
Views136K


Дачная электрика – известная проблема, отношение к ней в большинстве случаев наплевательское, если не сказать хуже. Если есть возможность подключить что-то не так и не туда — это, конечно, будет сделано.

Когда мы с женой начинали строить новую дачу вместо старой (где электрика прокладывалась многими поколениями и представляла собой жуткую мешанину из проводов и распаячных коробок), то прежде всего решили, что электрика будет грамотной, а дача – умной.
Читать дальше →
Total votes 114: ↑109 and ↓5+104
Comments304

5 приемов работы с CSS, о которых вам следует знать

Reading time6 min
Views46K


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

Total votes 60: ↑58 and ↓2+56
Comments25

Эффективный расчёт области видимости и линии взгляда в играх

Reading time16 min
Views37K
image

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

image

Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
Читать дальше →
Total votes 130: ↑126 and ↓4+122
Comments27

Лучший игровой движок по версии пользователей хабра

Reading time3 min
Views223K

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

Игровые движки предоставляют средства разработки, которые могут быть использованы программистами, чтобы упростить их работу. Короче говоря, предоставляют инструменты и функциональные возможности для разработки игры.
Читать дальше →
Total votes 54: ↑43 and ↓11+32
Comments91

Стилизация изображений с помощью нейронных сетей: никакой мистики, просто матан

Reading time14 min
Views92K

Приветствую тебя, Хабр! Наверняка вы заметили, что тема стилизации фотографий под различные художественные стили активно обсуждается в этих ваших интернетах. Читая все эти популярные статьи, вы можете подумать, что под капотом этих приложений творится магия, и нейронная сеть действительно фантазирует и перерисовывает изображение с нуля. Так уж получилось, что наша команда столкнулась с подобной задачей: в рамках внутрикорпоративного хакатона мы сделали стилизацию видео, т.к. приложение для фоточек уже было. В этом посте мы с вами разберемся, как это сеть "перерисовывает" изображения, и разберем статьи, благодаря которым это стало возможно. Рекомендую ознакомиться с прошлым постом перед прочтением этого материала и вообще с основами сверточных нейронных сетей. Вас ждет немного формул, немного кода (примеры я буду приводить на Theano и Lasagne), а также много картинок. Этот пост построен в хронологическом порядке появления статей и, соответственно, самих идей. Иногда я буду его разбавлять нашим недавним опытом. Вот вам мальчик из ада для привлечения внимания.


Читать дальше →
Total votes 145: ↑141 and ↓4+137
Comments38

Какие технологии компьютерных игр перетекают в реальность – и обзор технологий на играх живого действия

Reading time8 min
Views33K


Вполне логично, что почти всё то, что было в компьютерных играх, добралось до реальных.

Теперь у вас есть броня и пушки, которые позволяют точно считать хиты (инфракрасные и лазерные с реалистичной перезарядкой); детекторы аномалий из Сталкера, создающие вообще новую реальность вокруг на полигонах; RFID-замки для квестов; разные ардуино-навороченные штуки и ещё куча странных вещей. В целом — повышающих уровень реалистичности реального мира и внутриигровую связность сюжета.

В общем, давайте посмотрим, какой технический антураж сейчас используется в играх живого действия, и что перекочевало в реал из шутеров и RPG.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments78

Сборник песен под гитару ко дню системного администратора (с аккордами!)

Reading time8 min
Views19K

Доброго времени суток, товарищи!


Выкладываю сборник пародийных тематических песен на известные мотивы. Тексты переписаны лично мной. Патчи принимаются на гитхабе


Кусочек кода отправлять кому-то

Оригинал: "Философы в тринадцать с половиной"


Em                      Am
Перелистав известные тома,
       D                  G   E
Мы научились понимать английский.
         Am          H         C
Но разве это не свинцовая тюрьма -  
             Am                H
Плутать всю жизнь меж строчек манов к циске?

      E                  Am
И каждый час, и каждую минуту,
          D                 G   E
О чьём-то софте вечная забота.
          Am    H          C
Кусочек кода отправлять кому-то – 
         Am     H          Em (E) 
Такая, брат, у нас с тобой работа.

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

И каждый час, и каждую минуту,
О чьём-то софте вечная забота.
Коммиты патчем направлять кому-то -  
Слова ничто, когда они без кода.

А если не справляешься один -  
Бредёшь на форум в поисках подмоги.
Часами в ожидании сидишь,
Под спойлер заворачивая логи.

И каждый час, и каждую минуту,
О чьём-то софте вечная забота.
Скупой багрепорт отсылать кому-то -  
Такая, брат, у нас с тобой работа.

С трудом по клаве мечется рука -  
Луна на стол сквозь окна блики стелит,
Да плещется в измученных зрачках
Счастливый сон о выспавшемся теле.

И каждый час, и каждую минуту,
Об общем софте вечная забота.
Лицом на клаве засыпать под утро -  
Такая, брат, сейчас цена свободы.

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

И каждый час, и каждую минуту,
Об общем софте вечная забота.
Держать для сна одну шестую суток -  
Такая, брат, сейчас цена свободы.
Читать дальше →
Total votes 45: ↑29 and ↓16+13
Comments24

Режиссер потратил 7 лет на создание собственной версии Star Trek

Reading time2 min
Views31K
Видео продолжительностью почти в час выложено на YouTube



22 июля выходит Star Trek Beyond. В мире насчитывается несколько миллионов поклонников вселенной Star Trek, которые именуют себя Trekkies (или Trekkers). Все они вместе с любителями научной фантастики ждут выхода фильма на экраны. Кинокритики предрекают картине успех.

До похода в кинотеатр есть еще одна возможность насладиться миром Star Trek. 35-летний режиссер из Баварии по имени Юрген Кайзер (Jürgen Kaiser) потратил семь лет жизни на создание своей версии фильма. Его версия называется Star Trek Enterprise II: The Beginning of the End. Идея создать свой фильм по вселенной Star Trek пришла к режиссеру после завершения третьего сезона Star Trek: Enterprise. В этом сериале зрителю показывали самое начало освоения человечеством космических просторов Вселенной — в 2151 год, за 100 лет до событий основной сюжетной линии. В своем фильме режиссер показывает побочную сюжетную линию.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments46

Веб авторизация доменного пользователя через nginx и HTTP Negotiate

Reading time6 min
Views57K
    Намедни встала задача — обеспечить прозрачную авторизацию пользователей домена в CRM, собственно Microsoft давным давно разработал для этих целей метод аутентификации HTTP Negotiate, это все замечательно работает на IIS и Windows Server, а у нас за плечами Samba4 в роли Primary Domain Controller и проксирующий веб сервер nginx. Как быть?

    В сети куча информации по организации подобной схемы для Apache2 & AD на базе Windows, а вот пользователям nginx приходится собирать все по крупицам, информации кот наплакал. В базовой поставке Nginx нет подобного функционала. Благо люди не пали духом и история началась в мейл рассылках nginx в 2009 году, где один американский товарищ из Огайо нанял разработчика на RentACoder для запиливания модуля с подобным функционалом. Ребята форкнули подобный модуль для апача, прикрутили его к nginx и результаты работы выложили на github, где модуль время от времени допиливался разными людьми и в итоге принял роботоспособный вид. Последнюю версию можно получить на гитхабе.


В данном руководстве я расскажу как заставить работать nginx с SPNEGO модулем и samba4.

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments19

Laravel. Установка, настройка, создание и деплой приложения

Reading time55 min
Views181K
Итак, у вас есть желание попробовать или узнать о фреймворке Laravel.

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

Laravel - PHP framework for artisans!

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

Для ленивых:
GitHub
Приложение

Начнем!
Total votes 37: ↑33 and ↓4+29
Comments68

Мультиплеер в быстрых играх (Часть IV: Хэдшот! Путешествуем во времени)

Reading time3 min
Views57K

  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)

Как повесить идеальный хэдшот если у тебя пинг 2 секунды? Вы узнаете в этой статье.

Текущий алгоритм работы мультиплеера


  • Сервер получает команды с клиентов и времена их отправления
  • Сервер обновляет состояние мира
  • Сервер с некоторой частотой отправляет свое состояние всем клиентам
  • Клиент отправляет команды и локально воспроизводит их результат
  • Клиент получает обновленные состояния мира и:
    • Применяет состояние от сервера
    • Заново применяет все свои команды, которые сервер не успел применить.
    • Интерполирует предыдущие состояния других игроков
  • С точки зрения игрока, есть два серьезных последствия:
    • Игрок видит себя в настоящем
    • Игрок видит других в прошлом.

Обычно это отлично работает, но это становится большой проблемой для событий, которым нужна высокая пространственно-временная точность. Например если хочется разнести врагу башку!
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments77

Мультиплеер в быстрых играх (Часть III: появление врага)

Reading time4 min
Views54K


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)

Введение


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

В этой статье мы рассмотрим последствия одновременного подключения нескольких игроков к одному серверу.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments54

Автоматизируем проверку кода или еще немного о pre-commit hook'ах

Reading time11 min
Views28K
Думаю, нет нужды рассказывать хабрапользователю что такое Git / GitHub, pre-commit и как наносить ему hook справа. Перейдем сразу к делу.

В сети много примеров хуков, большинство из них на shell'ах, но ни один автор не уделил внимание одному важному моменту — хук приходится таскать из проекта в проект. На первый взгляд — ничего страшного. Но вдруг появляется необходимость внести изменения в хук, который уже живет в 20 проектах… Или внезапно нужно переносить разработку с Windows на Linux, а хук на PowerShell'е… Что делать? ??????? PROFIT

«Лучше так: 8 пирогов и одна свечка!»


Примеры, конечно, сильно утрированы, но с их помощью выявлены неудобства, которых хотелось бы избежать. Хочется, чтобы хук не требовалось таскать по всем проектам, не приходилось часто «допиливать», но чтобы при этом он умел:
  • выполнять проверку отправляемого в репозиторий кода на валидность (например: соответствие требованиям PEP8, наличие документации итд);
  • выполнять комплексную проверку проекта (юнит-тесты итд);
  • прерывать операцию commit'а в случае обнаружения ошибок и отображать подробный журнал для разбора полетов.

И выглядел приблизительно так:
python pre-commit.py --check pep8.py --test tests.py

Понятно, что сам хук — всего лишь стартер, а всю особую уличную магию выполняет запускаемый им скрипт. Попробуем написать такой скрипт. Заинтересовавшимся — добро пожаловать под кат.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments16
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity