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

Поскольку HDin.TV как онлайн-кинотеатр популярных сериалов в 720p-разрешении прекращает свою деятельность 1 апреля 2010 года, поделюсь рецептом создания подобных ресурсов (как и обещал в заключительном обращении). На самом деле все это фрагментами уже освещалось в данном блоге, поэтому постараюсь выстроить приведенные знания в единую цепочку, при этом попробую описать проект, как если бы его делал с нуля.
Подробнее »»
JW Player, ActionScript и тройка маленьких плагинов
Как известно, видео на стороне клиента можно проигрывать большим количеством вариантов:
- через Flash-проигрыватель – наверное, самый распространенный вариант;
- через Silverlight-проигрыватель;
- через ActiveX-элемент, реализуемый каким-либо установленным проигрывателем в системе (Windows-метод);
- через тег video согласно стандарту HTML5 (если браузер поддерживает);
- через системный видео-проигрыватель (например, VLC);
- посредством медиа-центра (например, Plex и XBMC).
Соответственно, чем больше средств предоставлено пользователю на сайте, тем больше вероятность, что он с комфортом посмотрит интересующий его видеоролик (сейчас мы сознательно упрощаем вопрос, игнорируя тот факт, что пользователь может хотеть смотреть видео на нетбуке, таблетке или смартфоне). Однако в крайнем случае можно использовать Flash-проигрыватель, как самый распространенный вариант.
Подробнее »»
Накопившееся
За прошедшее время накопилось множество работ на ниве персонального труда, потому не буду презентовать их поодиночке, а расскажу о движении по всем фронтам одновременно:
Подробнее »»
Вещание видеопотока при помощи erlyvideo
Каким бы хорошим не был Wowza Media Server, но у него есть одно очень неприятное (но вполне справедливое) неудобство – версия для разработчика ограничена 10 одновременными подключениями, а финансирование некоторых проектов не позволяет приобретать полноценную версию. Поэтому с самого момента работы с RTMP мною рассматривались различные варианты использования открытых разработок. Увы, более-менее рабочим решением до недавнего момента был Red5 – медиа-сервер, сделанный на платформе J2EE, который оставлял впечатление тяжелого и неповоротливого монстра, а остальное и вовсе не выдерживало никакой критики.
Подробнее »»
Ограничения на воспроизведения видео на iPhone
В предыдущей заметке я рассказал про то, как сделать видео для iPhone, которое можно передавать на гаджет с использованием принципа Smooth Streaming. И даже дал ссылку на собственный проект, где применил результаты своего знания. К сожалению, как оказалось – весьма поспешно: люди, проверившие ресурс на iPhone 3G, сообщили, что ничего не работает и выдается одна и та же ошибка, схожая с той, которую получал я на своем аппарате – «Формат видео не поддерживается».
То, что я посчитал ограничением первой версии аппарата, оказалось более системным. Сложилось так, что эмуляция iPhone в SDK, распространяемом Apple, строится на немного иных принципах, нежели традиционная эмуляция аппаратуры, как это делали в QEMU в проекте OpenMoko. Если во втором случае действительно эмулировался ARM SoC, то разработчики iPhone пошли по пути меньшего сопротивления – они просто пересобрали среду под традиционную платформу (которая x86), и когда запускался эмулятор – по сути дела работает родной для платформы код, но с ограничениями, налагаемыми эмулятором. А когда программу для гаджета необходимо перенести на устройство – используется кросс-компиляция и уже генерируется код для платформы ARM.
Разумеется, при первых испытаниях трансляции псевдо-потока я использовал iPhone первого поколения и результат был плачевен – устройство от казалось играть данный формат. Но попытка воспроизвести тот же самый фрагмент в эмуляторе оказалась успешной, что и привело к ошибочному выводу, позднее опровергнутому посетителями ресурса. Скорее всего, эмулятор использует мультимедиа-прослойку операционной системы, гораздо менее привередливую, нежели та, которая используется в iPhone OS (у которой ноги растут тоже из Mac OS X). Поэтому он беспроблемно показал то видео, которое мой телефон посчитал сбойным.
Причина же невоспроизведения видео кроется не в формате, а в кодеке видео h.264. В его реализации для мобильной платформы Apple внесло ряд ограничений, нарушение которых ведет к тому, что файл просто не воспроизводется. Поэтому правильно подобранные параметры из ссылки в предыдущей статье приводят к закономерно успешному результату.
Мне остается выразить благодарность всем тем, кто протестировал мой ресурс и указал на ошибку. Спасибо большое!
Потоковое видео на iPhone
Как я уже ранее писал, вещать видео на iPhone можно было начиная с самых первых версий прошивки в псевдо-потоковом режиме, как, собственно, и делал популярный сервис YouTube. Т.е. через сеть поверх HTTP-протокола отдавался mp4-файл, а сервер умел отрабатывать параметры, передаваемые плеером и формировать заголовки формата в случае, если пользователь желал посмотреть ролик с середины.
Подробнее »»
Как сделать гаджет для Google Wave
Google Wave – новый инновационный сервис Google, призванный заменить одновременно электронную почту, чат и средство групповых обсуждений. В основе лежат волны (wave) и вейвлеты (wavelet), представляющие собой ветви дискуссии, посвященные какой-либо теме. Сообщения, или всплески (blip), могут создаваться и редактироваться в рамках волн как участниками обсуждения, так и роботами, следящими за дискуссией и дополняющие ее данными (например, автоматическим переводом фраз между языками). Помимо текста во всплески можно добавлять гаджеты – объекты, реализующие дополнительную функциональность, например, систему голосования, интерактивную карту и т.п. Изготовлением гаджетов и займемся в нашей статье.
Для начала рекомендую посетить описание Google Wave API – это полезное чтение, особенно если вы решили, что возможностей гаджетов недостаточно и нужно написать робота. В отличие от последних, гаджеты пишутся на традиционной для клиентской части вэба связке HTML + CSS + JS и представляют собой некий контейнер с данными, помещенный во всплеск через iframe.
Git-репозитарий с доступом по HTTPS
Время, когда правил только CVS, прошло безвозвратно, а посему сейчас много систем контроля версий, хороших и разных, централизированных и распределенных. Прелесть последних состоит в том, что каждая рабочая копия репозитария может также служить как сервер для создания других рабочих копий, поэтому даже если с основным хранилищем произойдет что-то нехорошее – можно воспользоваться рабочей копией.
Прелесть распределенных систем не ограничивается подобной «устойчивостью к отказам». Если проект очень сложен, требуется сложная и инвариантная разработка с последующей интеграцией изменений, без распределенных систем контроля версий приходится очень туго. В частности, Git, написанный Линусом Торвальдсом, используется для разработки ядра ОС Linux, сложность разработки которого можно себе представить, если поглядеть на размер кода. Git очень удобен, с учетом многообразия его возможностей, которые позволяют построить на его базе действительно распределенное хранилище данных. К сожалению, использование Git ограничено в основном не-Windows системами, для разработки в рамках гетерогенных сред следует использовать Mercurial и другие DSCM.
Подробнее »»
Jabber-бот на PHP
Существует множество задач, где требуется уведомление о наступлении некоторого события (например, на сайте любимой компании появилось уведомление о срочном получении зарплаты в бухгалтерии). К сожалению, когда объектов наблюдения становится значительное количество, постоянный мониторинг всего и вся становится весьма обременительным и даже раздражающим (не в случае с зарплатой, конечно же). Существует множество программных решений, автоматизирующих данное занятие, но универсальнее кода, написанного на коленке, сложно что-то придумать (да-да, изобретем велосипед).
Подробнее »»





