Архив за 15 июля 2014 - 7

Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на ElasticSearch», а задача сделать это у меня стояла чётко и непоколебимо. Удавалось находить отрывочную справочную информацию, но никак не cookbook по решению самых тривиальных задач.

Акцентирую ваше внимание именно на symfony2, поскольку буду использовать FOSElasticaBundle, который позволяет описывать mapping индексов elasticsearch в удобных yaml конфигах и привязывать к ним сущности Doctrine ORM или документы Doctrine ODM. Промаппленные индексы заполняются из связанных доктриновских сущностей с помощью одной единственной консольной команды. Кроме того, он включает в себя вендорную библиотеку для конструирования поисковых и фильтрационных запросов. Результаты поиска возвращаются в виде массива объектов сущности или документа Doctrine ORM/ODM, привязанной к поисковому индексу. Подробнее о FOSElasticaBundle, традиционно, на гитхабе: github.com/FriendsOfSymfony/FOSElasticaBundle

Использование бандла позволяет полностью абстрагироваться от манипуляций с чистым JSON, что-то кодировать и декодировать функциями json_encode и json_decode, лезть куда-то с помощью сurl. Здесь только ООП подход!

Немного о схеме данных в SQL

Поскольку мои товары хранятся в реляционной СУБД, мне понадобилось реализовать EAV модель для их свойств и значений (подробнее: en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model )

В результате, у меня вышла вот такая схема данных:
image
Читать полностью »

Привет, читатели! Рад снова вас всех видеть.

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

image
Читать полностью »

Инверсия управления (Inversion of Control) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах (“Википедия”).

Простой как Pimple, мощный как Symfony DI

Syringe — простой IoC Container написанный на PHP с большим количеством возможностей и декларативной конфигурацией.

В нем реализованы: внедрение параметров, фабричные методы, основные виды инъекций, в том числе и через интерфейс, области видимости, внедрение тега и триггеры.

Далее возможности расписаны более подробно.
Читать полностью »

Sentri: домашняя система безопасности для гиков

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

Поэтому разработчики Sentri пошли немного другим путем, и добавили возможность интеграции в свою систему других умных устройств, включая всем известный термостат Nest, умный выключатель и розетку Wemo, не менее умную лампочку Hue и замок Lickitron. В общем, любители разного рода устройств могут быть довольны.

Sentri: домашняя система безопасности для гиков

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

Читать полностью »

Программист Джим Бамгарднер (Jim Bumgardner) в свободное время увлекается составлением лабиринтов. На днях он посетил супермаркет и увидел пачку с печеньем Kraft Mac & Cheese, на которой изображено «что-то очень знакомое».

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

Авторское право на сгенерированный лабиринт?
Читать полностью »

image

Здравствуйте, читатели!

Прочитав здесь о сравнении смс-сервисов для рассылок, мы решили рассказать вам о своем опыте построении подобной системы, которая верой и правдой служит нам в i-Free несколько лет и постоянно дорабатывается и совершенствуется. Надеемся, наш опыт будет вам полезен. В общем, тем, кому интересно, прошу под кат.
Читать полностью »

История проекта SHOPPILOT: От факапа до стартапа
Дисклеймер: Мы, проект Witget, развиваем собственный сервис повышения конверсии. Сейчас наша команда проходит акселерацию во ФРИИ вместе с двадцатью тремя другими проектами. В одной из предыдущих статей мы рассказывали о буднях акселерации, а именно о том, как проходят traction-митинги. В продолжение сегодня хотим поделиться историей одного из проектов, идейно близкого нам сервиса SHOPPILOT – платформы отзывов и рейтингов для e-commerce, направленной на рост продаж интернет-ритейла.

Читать полностью »

Цели

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

Задачи:

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

Тема

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

• Низкое разрешение и высокий уровень шумов (характерно для большинства фронтальных VGA камер смартфонов и ПК);
• Невысокие производительные требования мобильных устройств и компьютеров для обсчитывания данных с частотой 25 кадров в секунду;
• Высокая скорость работы (для обработки видео в режиме онлайн).

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

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

Ассортимент компании Apacer пополнил твердотельный накопитель AS220 типоразмера mSATA. Устройство, оснащенное интерфейсом SATA 6 Гбит/с, соответствует спецификации JEDEC MO-300A. В режиме последовательной записи накопитель развивает скорость до 550 МБ/с, в режиме последовательной записи — до 475 МБ/с. Максимальная производительность на операциях чтения и записи с произвольным доступом блоками по 4 КБ заявлена равной 22 000 IOPS.

Доступны SSD Apacer AS220 объемом 32, 64 и 128 ГБ

Читать полностью »

Перевод статьи «Building robust web apps with React: Part 2, optimising with Browserify», Matt Hinchliffe

От переводчика: это перевод второй части цикла статей «Building robust web apps with React», вот ссылка на перевод первой части. Перевод следующей части появится через несколько дней.

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

Код, который в начальном демо был представлен на выполнение браузеру, не проходит ни один базовый тест производительности; скрипты должны быть прекомпилированы, объединены и минифицированы перед отправкой на продакшн.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js