Search
Write a publication
Pull to refresh
0
0
Светлов Александр @Mehalich

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

Send message

Введение в программирование шейдеров: часть 2

Reading time8 min
Views23K
Научившись писать шейдеры, вы сможете максимально эффективно использовать всю вычислительную мощь современных графических чипов, тысячи ядер которых работают параллельно в одном потоке, ведь все шейдерные вычисления производятся на GPU, а не на CPU. Программирование шейдеров требует другого мышления и подхода к написанию кода, нежели написание обычных программ, однако их практически безграничный потенциал с лихвой окупает все проблемы на начальных этапах.


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

Списки действий: простой, гибкий, расширяемый ИИ

Reading time6 min
Views20K
Большинство людей привыкли решать задачи знакомыми и понятными им способами. Мы предпочитаем не сходить с проторенной дорожки и не изобретать велосипед, даже если это сулит очевидную выгоду. Избавиться от такого образа мышления очень сложно, поэтому мы продолжаем использовать устаревшие технологии и решения, тем самым вызывая недоумение у наших более продвинутых ровесников. В этой и следующих статьях я хочу познакомить читателей с широким спектром решений, способных повысить качество разработки. Сегодня мы поговорим о списках действий.


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

Валидация: внутри сущностей или снаружи?

Reading time3 min
Views21K
Обратите внимание, что хотя пост написан от первого лица, это перевод статьи из блога Jimmy Bogard, автора AutoMapper.

Меня часто спрашивают, особенно в контексте архитектуры вертикальных слоев (vertical slice architecture), где должна происходить валидация? Если вы применяете DDD, вы можете поместить валидацию внутри сущностей. Но лично я считаю, что валидация не очень вписывается в ответственность сущности.

Часто валидация внутри сущностей делается с помощью аннотаций. Допустим, у нас есть Customer и его поля FirstName/LastName обязательны:
public class Customer
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
}

Проблем с таким подходом две:
  • Вы изменяете состояние сущности до валидации, то есть ваша сущность может находиться в невалидном состоянии
  • Неясен контекст операции (что именно пытается сделать пользователь)

И хотя вы можете показать ошибки валидации (обычно генерируемые ORM) пользователю, не так-то просто сопоставить исходные намерения и детали реализации состояния. Как правило, я стараюсь избегать такого подхода.
Читать дальше →

Алгоритм жевания для тачскрина

Reading time4 min
Views13K
Не так давно вышла моя первая личная игра для мобильных. Суть заключается в том, что врагов надо пережевывать пальцами. Алгоритм не уникальный, но встречается редко. На первый взгляд, нужно только прослушать зум-движение двух пальцев, вроде ничего сложного, однако в процессе разработки игры выявляются различные подводные камни.
Читать дальше →

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

Reading time4 min
Views15K
image

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

Краткое предисловие:

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

Другой неприятной стороной было то что в качестве мозгов в основном использовались — если не ардуино, то STM32. Мне же хотелось занимтаься программированием. Научить робота бегать за мячиком, обходить препятсвия, передвигаться по открытомй пространству. То есть то, для чего надо больше чем ардуина. Упирались все желания в деньги, которых мало, и руки, которые кривые. Постараюсь поведать как оба этих препятствия я обошел.
Читать дальше →

Генетическое программирование. ELTRUT-проблема

Reading time5 min
Views18K
Бродя по просторам интернета, заинтересовался такой вещью как генетическое программирование. Если в двух словах, это автоматическое создание программ, которые выполняют ту или иную цель, в соответствии с принципом естественного отбора. То есть сначала случайным образом создается поколение «существ»-программ, которые сортируются по разным критериям (близость к достижению цели), затем часть из них мутирует (также случайно), часть вымирает и часть заменяется новыми случайными существами.

Таким образом, самые достойные существа продолжают свое дело и дают потомков, а самые слабые — отсеиваются в процессе отбора. Несколько экспериментов и их результаты — под катом.


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

Геймерам на радость, жабе на погибель: ASUS G20CB

Reading time6 min
Views27K
Игровые ПК – отличная поляна для продуктивных экспериментов. Дизайнеры, не стесненные жесткими форматами ATX стандарта, порой изобретают очень интересные наброски, а умелые инженеры с помощью современной элементной базы умудряются доводить рисунки и макеты до серийных образцов. Штучные работы талантливых моддеров всегда будут вне конкуренции, но существуют они в одном экземпляре, и приобрести накладно: то цена неподъемная, то расстояние велико, а иной раз создатель вовсе не желает расставаться со своим детищем. С поставленным на конвейер продуктом дела обстоят проще: как минимум тысячи экземпляров, разные конфигурации, цена более-менее адекватная.

Один из таких нестандартных игровых компьютеров ASUS G20CB:

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

Как сделать шлем виртуальной реальности своими руками

Reading time6 min
Views62K
Здравствуйте все, кто увлекается гаджетами, стереоскопическим изображением и 3D графикой!

К сожалению, после открытия предзаказов на потребительскую версию Oculus CV1 стало ясно, что данный гаджет оказался не столь доступен, как хотелось бы многим. Действительно, 599$ — это стоимость в США. В России данные устройства будут стоить уже наверняка в районе 800-1000$ первый год-два. HTC Vive начинается от 799$. Пожалуй, сейчас это наиболее передовые устройства VR, но, нужно признать, что они не особо доступны.

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

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

Мы являемся евангелистами компьютерных VR систем в России, и в этой статье хотим показать, каким образом можно собрать-таки настоящий шлем виртуальной реальности у себя дома, даже лучше, чем Oculus Rift DK1, а затем силой инженерной мысли элегантно превратим его в DK2. В итоге, шлем будет совместим с последними версиями SDK и Runtime от Oculus Rift по относительно доступной цене. (Палмер Лаки наверное бы поперхнулся, прочитав эту статью, но мы ведь русские всегда чего-то придумываем и умеем красиво выходить из различных ситуаций).

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



О том, как собрать бюджетный шлем виртуальной реальности, совместимый с Oculus Rift DK2 у себя дома…
...читайте далее, много картинок!

Система сообщений или “мягкая связь” между компонентами для Unity3D

Reading time13 min
Views36K

Введение


В данной статье будут затронуты темы, связанные с реализацией возможности “мягкой связи” компонентов игровой логики на основе системы сообщений при разработке игр на Unity3D.

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

4xiDraw: самодельный перьевой плоттер на Arduino

Reading time1 min
Views43K


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

И пользователь по имени Мигель Санчес (Miguel Sanchez) решил сделать плоттер самостоятельно. В качестве управляющей платформы он выбрал Arduino Uno. В системе также использованы шаговые двигатели NEMA 17 и вспомогательный сервопривод для поднятия и опускания ручки.
Читать дальше →

Пишем shell скрипты на Python и можно ли заменить им Bash

Reading time6 min
Views130K
В этой небольшой статье речь пойдет о том, можно ли легко использовать Python для написания скриптов вместо Bash/Sh. Первый вопрос, который возникнет у читателя, пожалуй, а почему, собственно, не использовать Bash/Sh, которые специально были для этого созданы? Созданы они были достаточно давно и, на мой взгляд, имеют достаточно специфичный синтаксис, не сильно похожий на остальные языки, который достаточно сложно запомнить, если вы не администратор 50+ левела. Помните, ли вы навскидку как написать на нем простой if?

if [ $# -ne "$ARGCOUNT" ]
then
    echo "Usage: `basename $0` filename"
    exit $E_WRONGARGS
fi

Элементарно правда? Интуитивно понятный синтаксис. :)

Тем не менее в python эти конструкции намного проще. Каждый раз когда я пишу что то на баше, то непременно лезу в поисковик чтобы вспомнить как писать простой if, switch или что-то еще. Присвоение я уже запомнил. :) В Python все иначе. Я хоть и не пишу на нем круглые сутки, но никогда не приходилось лезть и смотреть как там сделать простой цикл, потому что синтаксис языка простой и интуитивный. Плюс ко всему он намного ближе к остальным мейнстримовым языкам типа java или c++, чем Bash/Sh.

Также в стандартной и прочих библиотеках Python есть намного более удобные библиотеки чем консольные утилиты. Скажем, вы хотите распарсить json, xml, yaml. Знаете какой я недавно видел код в баше чтобы сделать это? Правильно:

python -c "import json; json.loads..." :)

И это был не мой код. Это был код баше/питоно нейтрального человека.

То же самое с регексом, sed бесспорно удобная утилита, но как много людей помнит как правильно ее использовать? Ну кроме Lee E. McMahon, который ее создал. Да впринципе многие помнят, даже я помню как делать простые вещи. Но, на мой взгляд, в Python модуль re намного удобнее.

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

Велкам под кат.
Читать дальше →

Аутентификация пользователей на Arduino с RFID

Reading time15 min
Views23K
Arduino

Введение


В предыдущей статье я только начинал работать с Arduino, в результате чего закономерно получилась метеостанция. В этой статье пойдём дальше — будем делать аутентификацию с помощью RFID карт и Arduino в приложении InterSystems Caché.
Читать дальше →

3D-сканер из молока и смартфона

Reading time2 min
Views18K


На сайте Instructables опубликована инструкция, как собрать самый простой и дешёвый 3D-сканер из подручных средств. Автор проекта GotMesh подсмотрел идею использовать молоко у коллег из проекта Milkscanner, которые применили его для создания сложных 3D-моделей ещё до того, как 3D-печать пошла в массы. Новый способ намного проще, автоматизирован с помощью скрипта и OpenCV, а также оптимизирован конкретно для 3D-печати отсканированного предмета.
Читать дальше →

AAduino — ардуинка в форм-факторе батарейки AA

Reading time2 min
Views16K
image

Энтузиаст автоматических систем и любитель платформы Arduino из Швеции Йохан Канфло [Johan Kanflo] разработал и опубликовал для свободного использования схему построения платы AAduino. Это беспроводной клон Arduino в необычном форм-факторе, совпадающем по размеру со стандартным элементом питания AA.

Плата специально разработана для использования в стандартных корпусах для 3-х элементов питания, куда вставляется вместо третьей батарейки. Это беспроводной клон Arduino на чипе ATMega328p, со вспомогательным чипом RFM69C, двумя температурными датчиками DS18B20 и индикаторным светодиодом. AAduino работает на частоте 8 МГц для экономии энергии.

Плата использует контакты элементов питания от Keystone, при этом они расположены на ней так, что AAduino получает питание от других батареек, размещённых в тройном корпусе. Схема, список использованных материалов и программа для проверки работоспособности свободно доступны на Github.
Читать дальше →

Urho3D: Материалы

Reading time9 min
Views11K
Графическая подсистема является, вероятно, самой сложной и запутанной частью движка. И вместе с тем это именно та часть, в которой нужно очень хорошо ориентироваться. Вы можете легко обрабатывать ввод, воспроизводить звуки и даже не задумываться о том, как оно там внутри устроено. Но редкая игра обойдется без собственных красивых эффектов и тут без определенного набора знаний не обойтись. В одной статье невозможно охватить весь объем информации по данной теме, но я надеюсь, что смогу предоставить вам базу, опираясь на которую вы гораздо легче освоите все нюансы и тонкости рендера Urho3D.

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

Введение в программирование шейдеров: часть 3

Reading time12 min
Views16K
Освоив азы работы с шейдерами, мы попытаемся на практике обуздать всю мощь GPU, создав систему реалистичного динамического освещения.


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

Модуль универсального контроллера для интернета вещей. Тестирование FatFs

Reading time4 min
Views11K


В этой статье я продемонстрирую проекты тестирования библиотеки FatFs портированой на модуль K66BLEZ1. Библиотека с открытым исходным кодом FatFs хорошо известна программистам микроконтроллеров и реализует поддержку файловой системы FAT32 на SD и MMC картах. Незаменимая вещь при разработке логгеров, программируемых логических контроллеров, звукозаписывающих устройств, треккеров и проч. Но иногда она может стать узким местом в системах реального времени.

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

Open-source open-hardware TC/«variwatt» мод для вейпинга на STM32

Reading time2 min
Views11K
Так как мой предыдущий мод на ардуине имел много ограничений, а также в плане самообразования — я решил сделать новую версию на STM32F373C8T6. Это мой первый проект на STM32, в нем довольно много недоработок. Надеюсь, кого-нибудь еще заинтересует, и мы сможем сделать его лучше!

Проект на github-е



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

Реинкарнация «народной» платы TP4056 или самодельная зарядка для лития на 3А

Reading time6 min
Views123K
Всех приветствую, кто заглянул на огонек. Речь в обзоре пойдет, как вы наверно уже догадались, об одной интересной модификации «народного» зарядного модуля TP4056 на ток 3А и небольшом применении в качестве самодельной зарядки для лития. Будет небольшое тестирование и простенький пример изготовления зарядки из дешевых компонентов, поэтому, кому интересно, милости прошу под кат.

Итак, вот та самая модификация «народной» платки:


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

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity