Pull to refresh
yvm @yvmread⁠-⁠only

User

Send message

Мелкосерийное производство несложной электроники: в России или в Китае?

Reading time3 min
Views162K
Недавно я разработал одно простое устройство. Пришлось решать вопрос, как изготовить пробную партию в 50 плат. Думаю, этот опыт будет полезен всем DIY энтузиастам, кто уже думает о том, что делать дальше после того, как девайс готов.

Замечу, что настоящая заметка — это не маркетинговое исследование или что-то подобное, претендующее на объективное освещение вопроса. Это исключительно один частный личный опыт.
Читать дальше →

Zend Framework 2: Service Manager

Reading time7 min
Views21K

Service Manager (SM, CM) в ZF2.


Service Manager — это один из ключевых компонентов Zend Framework 2, который существенно облегчает жизнь разрабочика избавляя его от дублирования кода и рутинных операций по созданию и настройки сервисов, позволяя их конфигурировать на максимально высоком уровне. СМ, по своей натуре, является реестром сервисов, основная задача которого — создание и хранение сервисов. Можно сказать, СМ является очень продвинутой версий компонента Zend_Registry из Zend Framework 1.
СМ реализует паттерн Service Locator. Во многих частях приложения (например, в AbstractActionController) можно встретить функции getServiceLocator(), которые возвращают класс Zend\ServiceManager\ServiceManager. Такое несоответствие названия метода и возвращаемого типа легко объясняется тем, что getServiceLocator() возвращает объект, реализующий интерфейс ServiceLocatorInterface:
Читать дальше →

Памятка краудфандеру

Reading time3 min
Views8.1K
image

ВАЖНО
Пока это только теория, компиляция информации из Интернета и немного домыслов, дабы привести информацию в этой памятке в удобный вид для эффективного применения тому, кто хочет найти финансирование для своего стартапа на сайтах вроде Кикстартера и IndieGoGo.

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

Microsoft выпустила драйвера для контроллеров Xbox One под Windows

Reading time1 min
Views88K


Игровые контроллеры для приставок типа PlayStation и Xbox очень удобны, и многим геймерам, играющим в игры для ПК-платформы, хотелось бы использовать эти контроллеры не только с приставками. Тем не менее, ранее это было невозможно (существовали некоторые неофициальные методы подключения, но не так много геймеров об этом слышало/читало).

Теперь Microsoft выпустила специальные драйвера для контроллеров Xbox One (драйвера для контроллеров Xbox 360 доступны здесь). Драйвера позволяют использовать все функции контроллера.

Для подключения контроллера нужно просто установить драйвера, подключив устройство к USB порту.

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

Обзор UP! 3D Printer Mini

Reading time4 min
Views52K

Данная модель привлекла мое внимание и я хочу поделиться с публикой, по той причине, что это готовый, законченный, настроенный (можно достать из коробки и печатать) принтер по цене набора для самостоятельной сборки. (45 000 рублей, цена на складе в Москве, т.е. уже с учетом «таможни»).

Этот принтер прост.
(Если хотите узнать, что такое «сложно» — почитайте здесь, здесь или здесь. А так же можно найти того счастливчика, кто обладает принтером Solidoodle).

Этот принтер дешев.
В сравнении с Up! Plus 2 за 83 тысячи рублей, Picaso, Ultimaker 2, Printbox3d, Replicatort 2 (которые есть в Москве) — больше 99 тыс рублей.

Этот принтер работает. Его не надо собирать по кусочкам, у него уже есть все настройки и драйвера, выставлены все параметры и тд.
Нужно только скачать ПО с сайта, загрузить 3д модель, ввести уровень платформы и отправить на печать.

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

Дерзкий слоган на коробке


Как у американских военных
image
image


Под катом несколько фотографий содержимого принтера и короткие комментарии.
Читать дальше →

Русский перевод Apple iPhone Developer Program License Agreement + Schedule 2 v19

Reading time1 min
Views15K
Всем привет!

На прошлой неделе появилась необходимость предоставить в банк договор, по которому были получены деньги из App Store. Если перевод оригинального iPhone Developer Program License Agreement нашелся в сети довольно быстро, то перевода последней версии Schedule 2 (на текущий момент v19) нигде не было. Мы доперевели разницу и готовы поделиться этими документами.

Простой каркас Rest Api на основе Phalcon

Reading time2 min
Views8.6K
Привет всем.
Вот хочу предложить небольшой пример реализации простого rest api на основе популярного фреймвокра Phalcon. Даже фаткически не реализацию, а её каркас. Сразу уточню что статья расчитана на новичков. Людей обознанных и опытных врядли заинтересует содержимое.
Phalcon предоставляет широкие возможности для разработки, а также очень большую свободу для творчества и создания хороших продуктов, потому пример действительно очень прост.
Читать дальше →

Замыкания в Javascript [Часть 1]

Reading time15 min
Views59K
Перевод статьи Ричарда Корнфорда Javascript Closures.

  • Введение
  • Разрешение имен свойств объектов
    • Присваивание значений
    • Чтение значений

  • Разрешение имен идентификаторов, контексты исполнения и цепь областей видимости
    • Контекст исполнения
    • Цепь областей видимости и свойство [[scope]]
    • Разрешение имен идентификаторов

  • ...

Введение


Замыкание
Замыкание — это выражение (обычно функция), которое может иметь свободные переменные, вместе со средой, которая привязывает эти переменные (т.е. “замыкает” это выражение).

Замыкания относятся к наиболее мощным особенностям ECMAScript (javascript), но они не могут быть применены должным образом без понимания. Несмотря на то, что их легко создать, даже случайно, их создание может иметь пагубные последствия, в частности, в некоторых относительно распространенных окружениях браузеров. Чтобы избежать случайных столкновений с недостатками и использовать преимущества замыканий, необходимо понимать их механизм. Это сильно зависит от роли цепи областей видимости в разрешении имен идентификаторов (identifier resolution) и от разрешения имен свойств в объектах.

Самое простое объяснение замыкания в том, что ECMAScript допускает вложенные функции, определения функций и функции-выражения (function expressions) внутри тел других функций. И эти вложенные функции имеют доступ ко всем локальным переменным, параметрам и функциям, находящихся внутри их внешней функции (внешних функций). Замыкание образуется, когда одна из этих вложенных функций становится доступной вне той функции, в которую она была включена, таким образом, она может быть выполнена после завершения внешней функции. В этот момент она все еще имеет доступ к локальным переменным, параметрам и внутренним декларациям функций (function declarations) своей внешней функции. Эти локальные переменные, параметры и декларации функций (изначально) имеют те же значения, которые были во время завершения внешней функции и могут взаимодействовать с внутренней функцией.

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

Yii 2.0: Динамическое добавление валидируемых полей формы через «пиджак»(pjax) для мульти-модельной формы

Reading time8 min
Views54K
Доброго времени суток, Хабр!
Не так давно передо мной встала задача разработки формы с возможностью динамического добавления полей, каждое поле являлось отдельной сущностью базы данных, то есть поле = запись в базе данных. Не смотря на то, что моя задача была не тривиальна, каждый вполне может столкнутся с чем-то подобным в той или иной мере. Например, с добавлением нового элемента прямо внутри GridView с последующим редактированием и сохранением.

Итак, начнем.
Читать дальше →

Визуальный конфигуратор окон, написанный за один час

Reading time13 min
Views28K
Решал интересную задачу – сделать визуальный редактор-конфигуратор окон.

Подробностями процесса разработки я с вами, коллеги, и поделюсь.


UPD. Добавил скриншоты.
UPD2. Речь идет об окнах оффлайновых, застекленных, деревянных или пластиковых — через которые на улицу из дома смотрят

Спасибо за отклики!
Читать дальше →

Алгоритмы поиска путей на JavaScript

Reading time1 min
Views32K


Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Читать дальше →

Делаем простейший фильтр по свойствам товаров с помощью ElasticSearch на Symfony2

Reading time5 min
Views49K
Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на 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
Читать дальше →

JavaScript F.A.Q: Часть 2

Reading time14 min
Views76K
image

Около 2-х месяцев назад я и TheShock собирали вопросы по JavaScript в теме FAQ по JavaScript: задавайте вопросы. Первая часть, те вопросы, которые достались мне, появилась буквально через несколько дней JavaScript F.A.Q: Часть 1, а вот вторая часть все не выходит и не выходит. TheShock сейчас переезжает в другую страну и поэтому ему не до ответов. Он попросил меня ответить на его часть. Итак вторая часть ответов — те вопросы, которые достались тоже мне.
Читать дальше →

Програмируем символы валют для дисплея покупателя

Reading time4 min
Views19K
Предлагаю небольшое руководство тем, кто как и Squier, автор статьи Автоматизация магазина или как конкурировать с супермаркетами, делает автоматизацию в магазине используя свободное программное обеспечение. В качестве наглядного примера я расскажу и покажу, как подключив дисплей покупателя к Raspberry Pi загрузить на него символы валют для последующего вывода при продажах.



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

Голосовое управление Arduino средствами Processing и Google Speech API

Reading time5 min
Views71K

Идея:


Пришла как-то идея сделать голосовое управление Arduino, но одного Arduino мало, т.к. для системы умного дома нужно еще и общение с компьютером и его системами.
Читать дальше →

Управляем сервоприводами из OpenWRT без Arduino

Reading time7 min
Views40K

Краткий пост о том как можно избежать лишних элементов в системе с сервоприводами и использовать железо по максимуму


Предыстория


Я весьма давно и плотно болен Linux, OpenWRT, сетевыми и беспроводными технологиями, безопасностью, а теперь еще и стал потихоньку заражаться роботостроением и умными домами. Все это очень круто, особенно когда есть столько готовых шаблонов, свободного и открытого исходного кода, а временами можно совсем перейти на сторону зла и быстренько накидать логику в Scratch.
Но потом просыпается интерес уже не просто поморгать светодиодами, вау-эффект проходит и необходимо решать прикладные задачи. Вроде и тут следовало бы восхититься обилием готового, но дьявол как всегда в деталях. Одно дело — управлять логикой ЕСТЬ/НЕТ, это позволяет легко включать или отключать свет, можно даже датчик качества воздуха (MQ-135) подцепить и включать вытяжку при необходимости. Все это круто, но на дворе 21 век, космические корабли бороздят большой театр и душа просит чего-то по-круче. Взор мой пал на управление сервоприводами. Почему бы и нет? Тема весьма широкая, ведь они присутствуют во многих механизмах, от роботов до простых открывалок-закрывалок. Плюсом так же является и то что в летательных аппаратах двигатели управляются аналогично и это расширяет диапазон использования просто в разы.

Заинтересовавшихся приглашаю под кат

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

Вещание онлайн-видео с помощью nginx

Reading time3 min
Views88K

Что такое онлайн-видео?


Под термином онлайн-видео я понимаю длительное вещание какого-то живого видеосигнала (к примеру, из телестудии). Традиционные средства отдачи видео (flv- и mp4-стриминг) в данном случае не работают, просто потому что файла, содержащего весь видеопоток, не существует.

В этой статье речь будет идти не об организации видеохостинга, а об организации видеовещания в прямом эфире. Это две принципиально разные задачи, и обычно способы их решения существенно отличаются друг от друга.
Читать дальше →

Создаём сетевую звуковую карту с преферансом и поэтессами

Reading time6 min
Views114K
Вдохновленный топиками раз и два, решил соорудить нечто похожее.

В наличии:
— Один усилитель с колонками
— Один стационарный компьютер
— Один ноутбук
— Желание слушать интернет радио независимо от двух предыдущих пунктов и перетыканию проводов

В результате родился план собрать «audio card over ethernet». Исследовав вопрос совместимости оборудования, я выбрал роутер TP-link MR3020 и USB аудио-карточку Creative SB Play.

Что из этого получилось:


О том, как это получить, добро пожаловать под кат.
Читать дальше →

Знакомство с GStreamer: Источники данных

Reading time10 min
Views77K
Здравствуй, хабраюзер, интересующийся фреймворком GStreamer! Сегодня мы поговорим о источниках медиа-данных (sources), и тем самым продолжим курс статей посвященный GStreamer.

Предыдущая статья: Знакомство с GStreamer: Введение.

Вступление



Источники данных — это класс плагинов GStreamer который позволяет читать медиаданные из различных источников, таких как файловая система или аудио-входы звуковой карты. Также, они позволяют получать медиапоток с различных серверов потокового вещания, такие как HTTP (ICECast, ShoutCast), RTSP, RTMP, TCP и UDP. А еще имеется возможность читать данные с DVB карт, CDDA-дисков (народе известных просто как «компакт-диски»), и еще много всего, при помощи различных плагинов, которых на данный момент около 30.
Примечание: как говорилось в прошлой статье, источники данных имеют только один pad с названием src, так как его можно подключить к другому элементу, но к нему подключить ничего нельзя.

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

Зачем роботу уши? (опрос: нужен ли OpenTod)

Reading time4 min
Views16K

Второй из законов робототехники, сформулированных небезызвестным американским писателем-фантастом Айзеком Азимовым, гласит, что робот должен повиноваться приказам, которые дает человек. Какими способами можно отдавать приказы роботу? Если верить большинству фантастических фильмов, то наиболее комфортным способом общения с роботом является естественная человеческая речь. Именно поэтому мы предоставили роботу Tod, как настоящему слуге человека, долгожданную возможность понимания голосовых команд управления и синтеза речи на русском языке. Теперь достаточно, например, отдать приказ «Робот, езжай на кухню», чтобы робот выполнил необходимую задачу. Под катом мы расскажем подробнее об используемом на роботе ПО для распознания и синтеза речи, а в видеороликах покажем примеры использования голосовых команд.
Вектор развития нашего проекта зависит от мнения хабрасообщества. Заинтересованы ли вы в использовании робота Tod как open source платформы для разработчиков? Пожалуйста, проголосуйте в нашем опросе.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity