Как стать автором
Поиск
Написать публикацию
Обновить
67
0
Сергей Подлесный @sergeypid

Мышиное обучение

Отправить сообщение

Оптимизация преобразования HSV в RGB для микроконтроллеров

Время на прочтение3 мин
Количество просмотров43K

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

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

Хранится и передаётся цвет пикселя в 24-bit RGB, но значительная часть этого цветового диапазона (ненасыщенные и яркие цвета) не слишком репрезентабельна в отдельных светодиодах. Кроме того, строить симпатичные градиенты в модели RGB не получится — смешивание RGB-цветов даёт не интуитивно-очевидный результат (жёлтый + синий = серый, а хочется — зелёный). Модели HSL и HSV подойдут лучше, но стандартные реализации используют нецелочисленную арифметику. Удобно будет использовать модель, которая сможет компактно хранить параметры цвета и быстро считать их RGB-значения, не используя числа с плавающей запятой и деление на произвольное число — речь идёт о микроконтроллере и сложные алгоритмы нам ни к чему, а деление (кроме небольших степеней двойки) и вовсе противопоказано.
Читать дальше →

Исключительная красота исходного кода Doom 3

Время на прочтение14 мин
Количество просмотров221K
image

Сегодня вас ждет рассказ об исходном коде Doom 3 и о том, насколько он красив.
Да, красив. Позвольте мне объясниться.
Читать дальше →

Ford выпустил SDK для своих автомобилей

Время на прочтение1 мин
Количество просмотров62K


Компания Ford приглашает разработчиков мобильных приложений и всех автовладельцев хакнуть свои машины. Специально для этой цели создана открытая платформа OpenXC, предоставляющая доступ к внутренним сенсорам автомобиля Ford через стандартный интерфейс OBD-II.

Компания Ford выпустила Arduino-совместимый микроконтроллер, который подключается к порту OBD-II (так называемый CAN-транслятор), и Java-библиотеку, которая работает практически на любом устройстве под Android.

Благодаря открытому SDK автомобили Ford превращаются в часть радиоконструктора Arduino. Можете добавлять к автомобилям кнопки, ручки, индикаторы, дополнительные дисплеи и панели управления — на что только хватит фантазии.
Читать дальше →

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

Время на прочтение6 мин
Количество просмотров8.1K
Некоторые пояснения:
В мае 2012 года меня посетила идея систематизации процесса написания технических текстов (в основном, отчётов и статей). Взяв за основу некоторые предположения из области эргономики, я ввел несложные допущения и сделал попытку «на лету» составить текст, который бы описывал сам себя как метод построения текстов. Привожу результат такой попытки.
Читать дальше →

Симуляция жизни в системе Darwinbots. I. Первое знакомство

Время на прочтение3 мин
Количество просмотров30K
Привет, Хабр!

Недавно сдал курсовую работу по генетическим алгоритмам в программе Darwinbots и решил, что это будет интересно сообществу. Тем более, что в данный момент сообщество проекта довольно мало. Статьи будут наполовину переводом документации, а наполовину своими исследованиями программы.
Начать знакомство

12 инструментов, о которых необходимо знать каждому программисту, работающему с Big Data

Время на прочтение5 мин
Количество просмотров35K
Проектируете ли вы систему для анализа Big Data или просто пытаетесь собирать и обрабатывать данные своих мобильных приложений, вам никак не обойтись без качественных инструментов для аналитики. Хорошей новостью является то, что в данный момент множество компаний выпускают на рынок инструменты, учитывающие потребности разработчиков и соответствующие их навыкам.
Читать дальше →

Экспериментальная архитектура GPS-трекеров позволяет снизить энергопотребление на три порядка

Время на прочтение4 мин
Количество просмотров17K
Определение координат с помощью GPS — весьма энергоёмкий процесс. В отличие от смартфонов, которые всё равно каждый вечер ставят на подзарядку, или автомобильных навигаторов, автономные GPS-трекеры, которые используют биологи для отслеживания миграций животных, имеют очень жёсткие требования к энергопотреблению. Довольно часто их снабжают не только мощными аккумуляторами, но и солнечными батареями, чтобы обеспечить работу в течение многих месяцев.

В Microsoft Research предложили разделить процесс сбора геолокационной информации на два этапа — запись «сырого» сигнала со спутников GPS и расчёт координат на основе этой информации. Это позволило снизить расход электроэнергии на запись одной точки трека на три порядка. Чтобы понять, как именно удалось этого добиться, придётся сначала разобраться, как работает GPS.
Читать дальше →

Лучшие практики Netflix при переходе с Oracle DB на Amazon SimpleDB

Время на прочтение5 мин
Количество просмотров4K
Это частичный перевод статьи Netflix, касается только проблемных мест перехода c Oracle DB на Amazon SimpleDB и способов их решения компанией.

Где-то в конце 2008 года, у Netflix был всего один датацентр. И этот ДЦ поставил перед нами несколько вопросов. Как единственная точка отказа, к примеру, из-за проблем с электричеством, он мог привести к недовольству наших пользователей сервисом. К тому же, с одновременным ростом трафика потокового вещания и подписок на услуги, Netflix скоро бы переросла этот дата центр — мы видели неизбежную потребность в электроэнергии, лучшем охлаждении, нам требовалось больше места и больше оборудования.

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

Вместо того, чтобы встать на этот путь, мы выбрали более радикальный. Мы перешли на решение IAAS (инфраструктура как сервис), предлагаемое в то время веб-сервисом Amazon. Со множеством уже работающих центров обработки данных, многократным уровнем избыточности различных сервисов (таких как, S3 и SimpleDB), AWS обещал лучшую доступность и маштабируемость за относительно короткое время.

Отдавая различные сетевые и фоновые задачи в аутсорсинг, Netflix сосредоточилась на своем основном бизнесе, поставке фильмов и сериалов.

В процессе перехода на инфраструктуру AWS мы сформулировали набор лучших практик, необходимых для работы с AP системами, такими как SimpleDB.
Читать дальше →

Erlang on Xen — запуск приложений Erlang на голом виртуальном железе

Время на прочтение2 мин
Количество просмотров19K
Erlang on Xen позволяет запускать приложения Erlang без операционной системы, на голом гипервизоре Xen. От момента запуска VM до начала работы приложения проходит всего 50 миллисекунд — в 100-1000 раз меньше, чем нужно для запуска привычного сочетания Linux+Erlang, а размер образа машины составляет лишь около 1 Мб. Это позволяет добиться практически мгновенного масштабирования, вплоть до запуска экземпляра VM после того, как пришёл запрос от клиента.

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

Лежащая в основе Erlang on Xen виртуальная машина Ling показывает производительность, сравнимую со стандартной для Erlang VM BEAM (Bogdan/Björn’s Erlang Abstract Machine).
Читать дальше →

Методика проектирования CORE

Время на прочтение12 мин
Количество просмотров14K
Я работаю программистом более 5 лет (web), и хотел бы поделиться методикой, которая экономит силы, время и помогает автоматизировать процесс проектирования.

Методика основана на объектно-ориентированном проектировании, но несколько необычна. Зато имеет очевидные плюсы:
— в идеале, программирование по CORE сводится к описанию задачи (код близок к бизнес-логике)
— чётко разделяет систему на слабосвязанные компоненты
— легко автоматизируема, позволяет генерировать осмысленный код

Почему методика называется CORE и как это расшифровывается? Отчасти потому, что у меня тяга к красивым названиям. По буквам:
Context — контекст вычислений (что инициировало вычисления)
Object — объект, который производит вычисления
Request — действие, которое нужно совершить, чтобы объект смог продолжить вычисления
Event — событие, которое происходит с объектом

Плюсы по сравнению со стандартными способами разработки:
— ускорение стадии проектирования за счёт формализованной схемы проектирования
— ускорение стадии разработки за счёт умной генерации кода
— автоматизация создания юнит-тестов
— неглючная реализация бизнес-логики практически любой сложности
— простая поддержка кода
— простота совместного владения кодом

Минусы стандартных способов по сравнению с CORE:
— часто нельзя окинуть одним взглядом всю часть системы
— нужно самому продумывать когда и в каком месте будут вызываться обработчики тех или иных действий. CORE разруливает вызовы автоматически.
— часто вводятся дополнительные уровни абстракции, не связанные с бизнес-логикой, чтобы реализовать её особенности. в CORE это не нужно.
— программист часто совершает кучу однообразных действий, которые легко можно автоматизировать
— юнит-тестирование внедрять тяжелее

Немного теории

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Время на прочтение25 мин
Количество просмотров188K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

[Перевод] Современный веб-разработчик, или 6 вещей, которые вы должны знать, чтобы выжить

Время на прочтение4 мин
Количество просмотров97K
Это статья об изменениях, которые произошли в мире веб-разработки. Я наблюдаю огромное количество веб-разработчиков, которые буквально застряли в устаревших технологиях, особенно в мире .NET. Если вы еще не начали совершенствовать свои навыки, и адаптироваться к изменяющимся трендам, вы должны начинать уже сегодня.
Читать дальше →

Как понять, хорош ли ваш проект для инвестора: чеклист стандартных грабель стартапа

Время на прочтение9 мин
Количество просмотров74K

Бизнес-ангел часто смотрит на стартаперов с недоумением

Предположим, вы придумали какое-то железо, и теперь хотите начать его производство. У вас уже есть прототип: вот он, в руке, коряво выглядит, в 4 раза больше нормального размера и из него торчит провод. Но он работает. У вас горят глаза: ведь осталось только «допилить» его и начать производить по всему миру. Из маркетингового плана у вас есть только «запостить про железку на Хабр – и всё закрутится».

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

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

Реализация Restricted Boltzmann machine на c#

Время на прочтение12 мин
Количество просмотров42K
Привет. Закончился курс по нейронным сетям. Хороший курс, но мало практики. Так что в этом посте мы рассмотрим, напишем и протестим ограниченную машину Больцманастохастическую, генеративную модель нейронной сети. Обучим ее, используя алгоритм Contrastive Divergence (CD-k), разработанный профессором Джеффри Хинтоном, который кстати и ведет тот курс. Тестировать мы будем на наборе печатных английских букв. В следующем посте будет рассмотрен один из недостатков алгоритма обратного распространения ошибки и способ первоначальной инициализации весов с помощью машины Больцмана. Кто не боится формулок и простыней текста, прошу под кат.

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

IntelliJ IDEA 12 раскрывает темную сторону продуктивного программирования

Время на прочтение3 мин
Количество просмотров83K
Привет, Хабр!

Несколько недель назад мы закончили Early Access Program, позволявшую опробовать предварительные билды IntelliJ IDEA 12. Спасибо всем, кто принял участие в программе и присылал нам свои отзывы и комментарии. Ваше пристальное внимание ко всем новым фичам, ваши идеи, предложения, баг-репорты — без всего этого продукт был бы совсем другим.

И вот, после целого года трудов, IntelliJ IDEA 12 официально выпущена и доступна для загрузки.



Конечно, все новые фичи и улучшения релиза здесь не перечислить. Каждый день мы не только добавляем что-то новое, но и пересматриваем существующую функциональность, чтобы сделать ее еще полезнее и «юзабельнее». Вот краткий список главных возможностей, ожидающих вас в IntelliJ IDEA 12.
Читать дальше →

Сам себе сотовый роуминг. Создание GSM гейта на asterisk + донгл от сотового оператора

Время на прочтение7 мин
Количество просмотров156K
Случилось так, что езжу я в командировки и отпуски не настолько часто чтобы пользоваться какой-то международной телефонией или виртуальным провайдером, но и не настолько редко чтобы вообще не забивать себе этим голову и пользоваться роумингом не заморачиваясь на расходах.
Езжу я не в те страны и не так надолго чтобы покупать симку местного оператора, зато в те страны где вай-фай есть почти везде.
Так уж вышло что в последнее время я плотно познакомился с программной АТС asterisk и перед очередной поездкой подумал о том как было бы классно воткнуть свою сим-карту в качестве входящего транка в asterisk, стоящий в остающейся позади снежной Москве, а самому цепляться к нему sip-клиентом по интернету. Это же и сам звони не хочу, был бы интернет, и звонки принимай на свой же номер, что важно для тех у кого много контактов (всех не оповестишь, да и половина забудет) — сотовый-то с сим-картой фактически стоит в домашнем регионе.

Как это реализуется — под катом.
Читать дальше →

Прогресс в разработке нейросетей для машинного обучения

Время на прочтение3 мин
Количество просмотров44K
В пятничном номере NY Times опубликована статья о значительных успехах, который демонстрируют в последние годы разработчики алгоритмов для самообучаемых нейросетей. В глубоких структурах есть несколько скрытых слоёв, которые традиционно тяжело было обучать. Но всё изменилось с использованием стека из машин Больцмана (RBM) для предварительной тренировки. После этого можно удобно перенастраивать веса, применяя метод обратного распространения ошибки (backpropagation). Плюс появление быстрых GPU — всё это привело к существенному прогрессу, который мы наблюдаем в последние годы.

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

Собираем wi-fi устройство управления электроприборами с веб-сервером и JS-фронтэндом

Время на прочтение12 мин
Количество просмотров255K
Добрый день, уважаемые хабровчане. В этой статье я несколько отойду от своего традиционного подхода к DIY – нашей основной целью станет быстрое и эффективное получение результата, а не изобретение велосипедов с целью самообучения, поэтому даже люди, впервые держащие паяльник, смогут все это повторить и получить готовое устройство за ~1000 рублей и один день.
Читать дальше →

Конкурс «Интернет-математика: Яндекс.Карты» — опыт нашего участия и описание победившего алгоритма

Время на прочтение12 мин
Количество просмотров42K
Прошло уже больше года после завершения конкурса "Интернет-математика: Яндекс.Карты", но нас до сих пор спрашивают об алгоритме, который принёс нам победу в этом конкурсе. Узнав о том, что недавно Яндекс объявил о старте очередной "Интернет-математики", мы решили поделиться опытом нашего прошлогоднего участия и описать наш подход. Разработанный алгоритм смог с точностью 99.44% правильно определить лишние изображения в сериях панорамных снимков, например, как здесь:



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

Исходный код нашего решения доступен на github (C++ с использованием OpenCV).
Читать дальше →

Python — оптимизация хвостовой рекурсии

Время на прочтение1 мин
Количество просмотров33K
Не секрет, что Python не оптимизирует хвостовую рекурсию. Более того сам Гвидо является противником этого. Но если кому нужно, есть небольшое изящное решение. Под катом…
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность