Обновить
10
0
Андрей Годин@xilix

Разработчик

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

Кроссплатформенное Smart TV приложение в одном экземпляре. Библиотека SmartBox для Samsung, LG, Philips, STB Mag 200/250 и других

Время на прочтение4 мин
Охват и читатели71K
Копаясь в памяти своего неискушённого идеальным миром мозга, я, припоминаю, как два года назад начиналась наша история по разработке приложений для SmartTv. Если коротко, то это был АД!!! богатейший опыт.

image


Однако, хотелось бы получить этот опыт сразу, не наступая на недокументированные грабли, разложенные по всей технологии, и специальные детские грабли разложенные каждым вендором отдельно. Но как говорится «c'est la vie» и нам пришлось пробиваться сквозь тернии к звёздам!

В итоге мы получили кроссплатформенную расширяемую библиотеку для всех SmartTv.
Описание, демки, скрины, видео данной библиотеки

Пример работы jQuery UI + PHP и GD. Нанесение аппликаций на изображение

Время на прочтение7 мин
Охват и читатели22K

Вступление


Всем привет! Здороваюсь с хабром я в первый, и надеюсь не последний, раз. Не смотря на то, что читаю хабр довольно давно, идея написать что-то полезное появилась совсем недавно, когда на работе я столкнулся с весьма интересной задачей — разработка он-лайн редактора коллажей. Поскольку особого ассортимента инструментов разработки не было, решили делать средствами js+jQuery и php GD. Процесс реализации задуманного оказался весьма интересным, и куча полученных положительных эмоций и новых навыков подтолкнули меня на написание статьи на хабр. В этой статейке я постараюсь рассказать о некоторых интересных моментах, с которыми столкнулся при разработке он-лайн редактора.

Задача


По изначальному плану статьи я хотел описать весь процесс разработки, но потом передумал, поскольку статья получилась бы слишком длинной и имела бы много очевидных и итак всем понятных вещей. Поэтому план статьи был переработан, и я решил оставить только самые интересные и важные, как мне кажется, моменты.
Итого: речь пойдет об использовании jQuery UI в связке с PHP библиотекой GD. В статье я постараюсь, как можно доходчивее, показать и рассказать об использовании таких возможностей jQuery UI, как перетаскивание и ресайз элементов. А также формирование картинки из созданных и обработанных пользователем элементов (картинок).
Чтобы было более понятней и наглядней думаю будет не плохо сделать рабочий пример(посмотреть можно тут). В примере реализована одна из частей он-лайн редактора, а именно работа с аппликациями, в которой пользователь может наложить на картинку дополнительные элементы, перетаскивать их как угодно и ресайзить, после чего все это «искусство» должно собраться в единую картинку.
Что-то я много говорю, пора уже и к делу приступить, начнем.
Читать дальше →

UNIX_TIMESTAMP, ROUND и другие DQL запросы через queryBuilder в Symfony 2

Время на прочтение3 мин
Охват и читатели6.9K
Как известно у Symfony 2 в Doctrine 2 из «коробки» нет поддержки некоторых стандартных функций Mysql, таких как UNIX_TIMESTAMP или ROUND и еще несколько других. В первую очередь статья для того чтобы понять как дополнять DQL своими функциями. Но перед написанием как следует «похабрить» и по «гитхабить», а вдруг уже кто-то написал, советую не городить велосипеды и воспользоваться уже готовыми наработками, например GitHub MysqlDoctrineFunctions.

Статья больше подходит для новичков.
Читать дальше →

Подсказки: API для ввода почтовых адресов и ФИО одной строкой

Время на прочтение2 мин
Охват и читатели29K
Если вам когда-нибудь приходилось разрабатывать форму регистрации или оформления заказа, то вы знаете, что для получения из формы качественных данных нужно прикрутить множество проверок для ФИО, почтовых адресов, e-mail, телефонов. При этом так уж исторически сложилось, что разработчики пишут код валидации информации каждый раз заново. Ну а потом эти проверки приходится еще и поддерживать, а на поддержку, как известно, приходится 80% усилий.

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

Так не должно быть.

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

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

Время на прочтение4 мин
Охват и читатели13K
MediaElement language learning plugins

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

За эталон, к которому я стремился при разработке, был взят проигрыватель http://www.yabla.com (не буду скрывать, изначально планировалось склонировать ресурс целиком, но проект не завёлся). Этот проигрыватель обладает следующими особенностями:
  1. навигация по таймлайну осуществляется не с точностью до секунды, а с точностью до предложения. Человеку, изучающему язык по видеороликам, часто приходится проматывать видео назад, чтобы несколько раз переслушать неразборчивую фразу и гораздо удобнее одним кликом переместиться к началу фразы, а не искать её начало несколькими кликами.
  2. Каждая фраза может быть зациклена, чтобы прослушать её многократно.
  3. Разбивка таймлайна на фразы не требует от редактора какой-то особой подготовки: данные о таймингах выбираются из стандартного srt-файла с титрами.
  4. Титры на всех доступных языках выводятся под видеороликом (при желании могут быть скрыты). Эта особенность позволяет, например, показывать пользователю титры на языке оригинала видео и на родном языке пользователя. Клик по слову в титрах ставит видео на паузу и показывает пользователю перевод слова, по которому сделан щелчок.
  5. Таймер показывает не только время от начала видеоролика, но также номер фразы и общее число фраз в ролике.
  6. Скорость проигрывания ролика может быть замедлена или ускорена.
  7. Переход между фразами возможен не только кликом по таймлайну, но и при помощи хоткеев Ctrl + стрелки влево/вправо. Другие горячие клавиши: пробел — зациклить фразу/снять зацикливание, Ctrl + стрелки вверх/вниз — изменение скорости ролика.

Подробности в продолжении

Отладка с помощью XDebug и PhpStorm на примере сайта 1С-Битрикс

Время на прочтение3 мин
Охват и читатели133K
В этой статье я расскажу как удобно осуществлять отладку кода в PhpStorm на примере работы с веб-сайтом, работающем в системе 1C-Битрикс. Работать будем с IDE PhpStorm и отладчиком XDebug. Я предполагаю, что на вашем сервере уже установлен XDebug и у вас уже создан проект в PhpStorm.

В данной статье примеры приводятся с таким набором инструментов:
  • Веб-сервер — MAMP PRO
  • XDebug v2.2.3.
  • IDE PhpStorm 7.1
  • На моем локальном серевере установлен 1С-Битрикс 14 версии с решением интернет-магазина.


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

Netavis Observer — ПО IP-видеонаблюдения на базе Linux. Установка, настройка и небольшой взлом

Время на прочтение9 мин
Охват и читатели52K

Netavis Observer — программный продукт для организации видеонаблюдения с помощью IP-камер на базе Linux-сервера.


Netavis Observer написан на Java, так же используются такие продукты как Apache Tomcat, Webmin, Munin, Mysql.

Существует два варианта Netavis Observer — Bundled(поставляется в виде установочного iso-образа на базе Centos5 или Centos6) и Unbundled — набора rpm-пакетов для самостоятельной установки на сервер под управлением Centos или RedHat.
основные функциональные возможности и особенности:
— Поддержка популярных IP-камер и видеосерверов, таких как AXIS, ArecontVision, D-link, ACTi, Sanyo, Samsung и других (полный список можно посмотреть на сайте Netavis).
— Поддержка разделения прав доступа к камерам, просмотру архива, экспорту видео, управлению PTZ (управление поворотными камерами) с возможностью создания групп и пользователей под конкретную ситуацию(только просмотр онлайн-видео, просмотр онлайн-видео и архива, но без права экспорта видеоматериала из архива и т.д.)
— Наличие клиента под Windows, IPhone/IPad.
— Возможность работать через браузер (требуется установка JAVA).
— Возможность создания кластера для работы с большим количеством камер.
— Поддержка Active Directory (в редакции Enterprise).
— Поддержка Анализа видео ( iCAT — обнаружение движения с вариациями, обнаружение саботажа, обнаружение удаленного объекта, маска конфиденциальности).
— Настройка качества отображения видео онлайн и при записи в архив.
— Настройка расположения камер и формирование пользовательских наборов с возможностью копирования этих наборов другим пользователям.
— Возможность ограничения полосы пропускания для камер и клиентов при просмотре живого видео и архива.
— Экспорт архива в AVI или SAFE (создается исполняемый файл .EXE c примитивным плеером и собственно видео, можно экспортировать сразу нужное количество камер за один промежуток времени, будет создан один EXE-шник).
— Возможность запуска графической оболочки непосредственно на сервере — запускается сессия LXDE, после чего запускается клиент Netavis.

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

Программист готовится к получению инвестиций: пошаговое руководство

Время на прочтение4 мин
Охват и читатели17K
Скажу честно, сам я не теоретик, а скорее практик. Потому что считаю чтение различных учебников по построению своего бизнеса и бизнес-тренинги хоть и полезными (а некоторые из тех, куда я попадал, даже показались мне увлекательным и интересным), но в разы менее эффективным занятием, нежели усиленная работа над проектом. Однако необходимость некоторого знания минимальной «теории» в любом вопросе отрицать нельзя. За последние несколько лет у меня сформировалось видение того «сухого остатка» теории из всевозможных рекомендаций стартаперам, который полностью соответствуют реалиям. При этом я постарался выкинуть, все то, что потребует существенных временных затрат, но не приблизит Вас к созданию собственного бизнеса. Сразу уточню, что это полностью моё субъективное видение, основанное на нашем личном опыте.
image
Упакуем за 10 шагов?

Загрузка модуля по требованию в AngularJS

Время на прочтение11 мин
Охват и читатели18K
Если вы очень спешите: то да, отложенная загрузка модулей в AngularJS возможна, и код необходимый для этого вы можете видеть ниже.

Неужели AngularJS не поддерживает отложенную загрузку в каким либо способом?


AngularJS является одним из лучших шаблонов для front end разработки, но он все еще молод, и не имеет нескольких важных возможностей (кто сказал хорошего маршрутизатора?).
В то время как большинство из этих возможностей может быть добавлено в виде модулей, которые можно найти в google или на специализированных веб сайтах, есть некоторые функции, которые не получится добавить таким способом.
В настоящее время многим требуется асинхронная загрузка модулей, и кажется Google собирается реализовать ее во второй версии фремворка, но кто знает, когда это будет…
Читать дальше →

Создание собственных драйверов под Linux

Время на прочтение24 мин
Охват и читатели214K


Многие мои друзья и знакомые крутят пальцем у виска или задаются вопросом: не жмёт ли мне череп, когда узнают, что я пишу драйвера под Linux. Слово “драйвер” окутано каким-то почти мистическим смыслом, и постичь Дао его написания способны лишь избранные гуру.
К счастью это не так. Не знаю, как обстоят дела с написанием драйверов под другие операционные системы, в т.ч. и наиболее популярные, но под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс (базовые), понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Всё.
Вы хотите посмотреть как написать драйвер для своего устройства? Тогда ныряйте под кат!
Читать дальше →

60 FPS? Легко! pointer-events:none!

Время на прочтение2 мин
Охват и читатели99K


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

.hover .element:hover {
  box-shadow: 1px 1px 1px #000;
}
Читать дальше →

Играем в программирование

Время на прочтение3 мин
Охват и читатели51K
У программистов есть дети. В этом плане статистика непоколебима.
И эта статья будет интересна как раз тем, у кого есть ребенок в возрасте 5-~9 лет, тем кто уже задумывается или уже задумывался над вопросом как посвятить ребенка в азы программирования.

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

O Backbone.js очень просто и кратко для любителей MVC-фреймворков

Время на прочтение5 мин
Охват и читатели38K
Об использовании JavaScript-фреймворка Backbone.js написано много, но просто и кратко — мало. Я постараюсь исправить этот недостаток и рассказать разработчикам web-приложений максимально просто, доступно и кратко о том, зачем им может пригодится этот фреймворк и как, в общих чертах, он работает. Профессионалы и специалисты по Backbone.js: можете не тратить время, этот рассказ для новичков. Если быть честным, то для чтения этой заметки не обязательно быть Rails-developer'ом, надеюсь, статья пригодится всем, кто работает с любым из МVC-фреймворком.

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

Коллекция ресурсов для frontend и backend разработчиков

Время на прочтение1 мин
Охват и читатели55K
image

Некий dypsilon выложил на GitHub огромную коллекцию ссылок на ресурсы по веб-разработке, за что ему огромное спасибо.

Список состоит из ссылок на библиотеки, руководства и статьи.

Frontend: github.com/dypsilon/frontend-dev-bookmarks
Backend: gist.github.com/dypsilon/5819528 (много node.js)

Ссылок много, но все — строго по делу и упорядочены по группам (пример для фронтенда):
  1. Архитектура
  2. Фреймворки
  3. Cross Browser
  4. Cross Device
  5. Паттерны и сниппеты
  6. Манипуляция с DOM
  7. … и многое другое

matmuchrapna советует еще frontdesk Вячеслава Олиянчука.
Настоятельно рекомендуется добавить в закладки, а лучше — почитать.

Редактирование древовидных структур с SonataAdminBundle в Symfony2

Время на прочтение9 мин
Охват и читатели14K
Редактирование древовидных структур — довольно частая задача в веб-разработке. Это очень удобно пользователю, поскольку дает ему возможность создавать любые иерархии у себя на сайте. Естественно, что после перехода на Symfony2, одной из первых задач стало создание такого иерархического списка страниц и написание админки к нему. А так как в качестве админки я использую SonataAdminBundle, то задача сводилась к настройке его для редактирования деревьев.
Читать дальше →

Symfony 2: Полезные библиотеки и бандлы

Время на прочтение9 мин
Охват и читатели54K
Уже около полугода для разработки веб-проектов используем Symfony 2. Накопился список полезных библиотек и бандлов, не входящих в состав symfony-standard, но значительно экономящих время и избавляющих от изобретения велосипеда.



Обзор больше теоретический и включает следующие разделы:
  • Админгенераторы
  • Пользователи
  • Импорт/экспорт xls
  • API и OAuth 2.0
  • Меню/навигация
  • Мультимедиа
  • Формы
  • Поиск
  • Пагинация
  • Файловая система
  • HTTP клиент

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

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

Знакомство с Symfony 2

Время на прочтение7 мин
Охват и читатели101K
Выход Symfony 2 показался мне достаточно веской причиной чтобы наконец-то найти время и посмотреть что же из себя представляет один из самых популярных PHP-фреймворков в мире. Своё знакомство с ним я и описал в данной заметке. Так как это мой первый опыт работы с Symfony буду рад если заметите какие-то ляпы или недочёты и сообщите мне о них.
Читать дальше →

jQuery изнутри — парсинг html

Время на прочтение6 мин
Охват и читатели66K
Продолжаем дело первой статьи и пытаемся разобраться с тем, что же делает за нас jQuery, когда мы с помощью этой библиотеки создаем DOM-элементы.

В прошлом выпуске мы упомянули, что при передаче в jQuery вместо селектора html-строки, на основе нее функция parseHTML создаст соответствующие элементы и вернет их в привычном jQuery-объекте. Сейчас мы рассмотрим все это более тщательно и затронем кроме core.js еще manipulation.js и attributes.js (мельком).
Я клевый, мне интересно!

Тонкие моменты в договоре на разработку сайта

Время на прочтение7 мин
Охват и читатели101K
Привет, хабр! Продолжаю свой цикл материалов про маркетинг, продажи и клиентский сервис веб-студий и агентств. Сегодня хочу рассмотреть такую локальную тему, как заключение договора на создание сайта, и поговорить про его тонкие места.

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

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

Итак, я подготовил некий список неочевидных моментов, с которыми мне неоднократно приходилось сталкиваться на практике. Начнем:

Установка копирайта и публикация в портфолио


Очень часто при общении с заказчиком при запуске нового проекта конфликтным моментом становится размещение «марки» студии на сайте («Сделано в XXX » и пр.). Если данный момент никак не обозначен в договоре, то убедить заказчика прислушаться к вашим доводам бывает сложно. Часто проблемы возникают в самый последний момент, даже если изначально лейбл присутствовал и на макетах, и на тестовой зоне: «Ой, а мы не думали, что так и пойдет на основную версию сайта». Итак, что рекомендуется сделать:
Читать дальше →

Простая техника Parallax Scrolling

Время на прочтение2 мин
Охват и читатели126K
Доброго времени суток уважаемые хабраюзеры. На сегодняшний день Parallax Scrolling является неким трендом и я хочу рассказать о простой реализации данного эффекта. Техника основана на скорости изменения свойства background-position. Эффект Parallax Scrolling заключается в том, что фон движется медленнее чем содержимое

HTML разметка


Создаем два блока с атрибутами "data-type" и "data-speed":
<section id="home" data-type="background" data-speed="10" class="pages">
         <article>Простая техника Parallax Scrolling</article>
</section>
<section id="about" data-type="background" data-speed="10" class="pages">
         <article>Простая техника Parallax Scrolling</article>
</section>

Для управления значениями скорости и позиции в JavaScript, data-type используются как ключевые атрибуты при передачи необходимых параметров.

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

Информация

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