2008-05-30

Хостинг

Мастерхост деликатно напомнил мне, что проплаченные полгода в июле подойдут к концу. Я, скорее всего, пойду на продление, но...

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

usr/local/bin/autorespond 10000 5 v/21/214/21487/domains/

Когда исправил и по-новой вбил почтовый адрес - всё тут же заработало. Как такое ловить?... Разве что письма раз в день посылать автоматически и смотреть - дошло или нет.

Не далее, чем вчера созерцали сбой при общении с базой mysql:

Failed obtaining forum access control lists

DEBUG MODE

SQL Error : 2013 Lost connection to MySQL server during query

Ну и тормозит безбожно. Ограничения по памяти, опять же. Я, наверное, слишком многого хочу от 255 рублей в месяц: и так мне доступно 1,5 Гига места на диске, возможность хостить 10 доменов и SSH-доступ. Поскольку я плачу из собственного кармана, особых альтернатив не вижу.

Я бы может и перешел на тариф, на котором "все чутка побыстрее", но это называется уже VPS, и за какие-то 256 RAM для процессов мне придется заплатить 1000 рублей в месяц.

2008-05-29

Магнитная N810

Обратил внимание, что вместе с N810 со стола потянулась... скрепка, которая прилипла к тыльной части корпуса в месте расположения динамиков. Итого, таких места оказалась два - по углам, аккурат за левым и правым спикерфонами.

Как-то я отвык от того, что устройства подобного рода могут работать магнитиками. Надо срочно взять на заметку и постараться не класть в один карман пластиковыми карточками с магнитной полосой.

2008-05-28

maemo-uptime-home

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

Поставил на свою N810, если ничего плохого не случится, пойду выкладывать в гараж: может еще кому-то сгодится... Заодно освоил азы D-BUS, alarmd и glib ;)

2008-05-27

eReaders

Смотрю, в розничные магазины с электроникой стали подтягиваться eBook-и.

OZON, LBook eReader V3:



Спецификация:

Linux OS, Samsung 2440 Arm 9 200 MHz, 32Mb SDRAM, 2Mb ROM, 512Mb Flash Disk, 6” paper-like (eINK) display, 800 x 600 pix, 4 shade of gray, Li-ION 950 mAh, SD/MMC slot (up to 4Gb), USB 1.1, WiFi (802.11b) – optional.

Дальше начинается интересное:

MP3 player stereo out 3.5 mm
Programmable touch keys and mechanical keys
Touch screen + stylus –optional
Weight, dimensions: 200 g. (battery included) 184 x 120.5 x 9.9 mm

Formats supported: PDF, RTF, WOLF, HTML, XML (FB2), RSS, TXT and DOC, Excel, PPT after converting into WOLF file


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

10500 руб. модель третьего квартала 2007 г.

Старт-мастер, EXPLAY TXT.Book:



Спецификации:

64Mb SDRAM, 6" 800x600 дисплей, 176 грамм, 188x118x8.5 мм, USB 2.0 FullSpeed, слот SD-карт, MP3 player

Поддерживаемый формат - всего один - TXT.

Похоже, там тоже Linux. А Touch-дисплея нет. Совсем нет ;)

9490 руб.

Очень забавное устройство. Говорят, что на самом деле, это аппаратный клон STAReBOOK с хорошо урезанным софтом. Правда, что вырезать, если кроме чтения txt-формата ничего нет? По другим сведениям - это клон Booken Cybook, но и без того бедные спецификации уже начинают слишком сильно отличаться, не верю.

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

Одна печаль - стоят они 10000 руб, что совершенно не соответствует той цене, которую готов платить я.

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

Кстати, неплохое сравнение Sony PRS-505 и Booken Cybook V3.

Debian woman



Вот так вот - Дебиан для женщин. Самое интересное, что я туда попал по ссылке с информацией о том, как собирать .deb-пакет из исходников.

Nokia ищет PM на maemo

Собственно, оригинальный текст. Но обратите внимание, что там внутри!

... Мы стремимся расширить возможности платформы [maemo], как программное обеспечение для новаторских коммуникационных и Интернет-устройств, добавив Qt-ориентированную среду разработки приложений в дополнение к существующей GTK+. Кросс-платформенноую технологию Qt уже поддерживает Linux, Mac, Windows CE и в будущем она должна поддерживаться на Nokia Series 40, Symbian S60 и на Linux/maemo...

Амбициозно. Но в любом случае, наконец-то хоть что-то озвучили по поводу причины покупки TrollTech. Хотя, кто бы сомневался ;)

2008-05-23

Локализация ПО

Знаете, как может навредить простая локализация ПО? Я еще могу терпеть "Панель выхода" вместо "Exit panel" или "Печать ярлыков"... Но иногда просто невозможно догадаться. Вот пример:



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



Ну не хулиганы ли работают в SonyEriccson?...

2008-05-22

Первый шаг к разработке для maemo

Чтобы начать писать что-то под maemo, надо принять как данность, что без на Linux - никак. Основной инструмент - среда кросс-компиляции Scratchbox, которая после инсталляции maemo-SDK получает два окружения - CHINOOK_X86 и CHINOOK_ARMEL. Окружения - суть одно и то же, что и набор приложений на таблетке (даже нокиевские бинарники ставятся), плюс утилиты для компиляции и отладки.

Карта отладки следующая: сначала компиляем и запускаем под X86, когда все заработает, берем ARMEL и делаем тоже самое, и, чтобы убедиться окончательно - через SSH на устройстве, дабы проверить на целевом hardware.

Самое удобное - это использовать Debian или Ubuntu, хотя можно и другие дистрибутивы (актуально, если вы любите все делать руками, благо процесс инсталляции хорошо документирован). Я, как пользователь треклятого Windows, поставил виртуальную машину. Тут есть два пути: первый - поставить Debian, например в VirtualBox. Второй, если вам по душе VmWare - то все проще, к нему есть имидж. Может быть, это даже правильнее - там уже все установлено, и, самое интересное - есть окружение не только для chinook (OS2008), но и bora (OS2007). Чтобы пользоваться этим имиджем, не надо покупать VmWare Workstation, достаточно бесплатного VmWare Player-а.

Правда, инсталлятор VirtualBox весит 17Мб, а VmWare Player - 174Mb. С другой стороны, учитывая, сколько придется еще качнуть, это мелочь.

Итак, несколько замечаний по установке, если вы решили не брать готовый имидж.
  1. Скачайте DVD с .iso debian, причем потребуется первый и третий, подключите первый диск прямо имиджем к виртуальной машине (зверски быстрее, чем прямой доступ к DVD, не тратьте зря болванку!), и ставьте. Не хотите качать третий диск ради одного пакета - качайте i386-пакет здесь и потом инсталлируйте при помощи dpkg -i.
  2. Создавая виртуальную машину, выделите ей ~400Мб памяти, субъективно ускоряет процесс.
  3. Инсталлятор принудительно ломится за апдейтами на security.debian.org и если в tasksel вы выбрали список задач по умолчанию, это грозит вытягиванием жирных апдейтов к openoffice. Конечно, наверное есть правильный способ (через параметры инсталлятора), но я просто отключил виртуальную сетевую карту после определения и распознавания сети (учтите, если вы выбрали NAT - а именно он стоит по умолчанию в настройках виртуальной сетевой карты - то просто обязаны выбрать DHCP в гостевой ОС, иначе ничего не заработает) . Это делается через меню окна виртуальной машины - Устройства|Сетевые адаптеры|Адаптер 0
  4. Для гостевых расширений VirtualBox потребуется поставить пакеты с исходниками ядра (как минимум - linux-kbuild-2.6.18). Мелочь, но приятно, когда курсор не надо освобождать по нажатию на специальную клавишу (правый Ctrl по умолчанию), а также можно пользоваться общим буфером обмена.
  5. Не забудьте поставить некоторые пакеты, которые могут пригодиться:
    apt-get install automake autoconf, если исходники пакета приехали вам без скрипта configure, однако в каталоге есть файлы configure.ac (configure.in) и autogen.sh. Да и вообще, autotools рекомендуется при сборке пакетов в maemo.
Итак, машина есть. Теперь надо запастись высокоскоростным интернетом (предстоит качать около 300-400 Mb), и приступать к установке scratchbox. Все описано здесь: http://repository.maemo.org/stable/chinook/INSTALL.txt, надо только не полениться и прочитать. В двух словах:


wget http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.1.sh
chmod a+x maemo-scratchbox-install_4.0.1.sh
sudo ./maemo-scratchbox-install_4.0.1.sh


после установки надо добавить себя в список пользователей scratchbox-а:

/scratchbox/sbin/sbox_adduser yes

чтобы система поняла, что вы теперь в группе sbox, можно отлогиниться и подлогиниться вновь (для продвинутых - замените это действие на newgrp sbox). Дальше попробуйте:

/scratchbox/login

если оно вас пустило - значит треть дела сделана. Жмем Ctrl-D и ставим maemo-sdk:

wget http://repository.maemo.org/stable/chinook/maemo-sdk-install_4.0.1.sh
chmod a+x maemo-sdk-install_4.0.1.sh
./maemo-sdk-install_4.0.1.sh


в процессе оно спросит про то, какое окружение вы хотите. Если не знаете - выбирайте 4 -ый максимальный вариант, хуже не будет. И бинарники нокиевские вы тоже хотите, не отказывайтесь, набирайте "I agree" после прочтения лицензии.

Третья фаза, завершающая. Для отображения разработчики рекомендуют пользовать специальный X-server xephyr, который "отличается высокой скоростью". На наше счастье, в Debian это чудо есть бинарным пакетом. Монтируйте третий DVD и ставьте, примерно так:

apt-cdrom add
apt-get update
apt-get install xserver-xephyr


Теперь из своего любимого X window manager-а запускаете X-term:

$ export DISPLY=:0
$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -extension Composite &


Появится окошко Xephyr-а, пока пустое. Это нормально. Обратите внимание, что таким образом из одной X-сессии вы запустили другую, у вас теперь два дисплея! Выставляя переменную окружения DISPLAY в значение :0 или :2 можно запускать приложения двух разных X server-ах. Об этом надо помнить и в scratchbox-е:

$ /scratchbox/login
[sbox-CHINOOK_X86:~] > export DISPLAY=:2

[sbox-CHINOOK_X86:~] > af-sb-init.sh start

Скрипт af-sb-init.sh - это запуск избранных сервисов таблетки на вашем Debian из-под Scratchbox-а. Обращаю внимание, именно избранных - запустится далеко не всё. В процесее загрузки вас по-всячески обругают. Это ничего, главное - что в окошке Xephyr-а появился hildon-овский стол. Он слегка не похож на тот, что на таблетке, но не смущайтесь: если вы можете запустить приложение с контактами через меню - у вас все запустилось.

Кстати, не вздумайте запускать Xephyr после логина в scratchbox. Это - самая распространенная ошибка ;) Запускайте его строго снаружи, перед /scratchbox/login.

Распространенные проблемы:
  1. You must close your other sessions first. Наш ответ: sb-conf killall. Если не помогает - ищем ps xa | grep scratch и киляем уже по kill -9 .
  2. Забываю команды scratchbox. Наш ответ: sb-menu. И будет, как make menuinstall в ядре linux :)
Что дальше? Хороший вопрос. Хороший ответ: нужна документация. Она делится на три больших категории:
Думаю, очевидно, что разыскивая как делаются какие-то определенные вещи, надо перебирать все источники по-очереди. Общие знания, щедро приправленные ссылками, находятся в официальной части для разработчика.

Без исходников тяжело, поэтому остановлюсь на способах их добывания отдельно. Можно качать и распаковывать тарболлы, но удобнее поручить это занятие менеджеру пакетов. После установки Scratchbox-а у нас образовался второй файл с репозиториями пакетов. Берем файл

/scratchbox/users/<ваш_логин>/targets/CHINOOK_X86/etc/apt/sources.list

(не забывайте про такой же, но для CHINOOK_ARMEL)

дописываем туда несколько строчек и получается приблизительно так:

deb http://repository.maemo.org/ chinook free non-free
deb-src http://repository.maemo.org/ chinook free
deb file:/home/id/maemo-sdk-nokia-binaries_4.0.1 chinook explicit
deb-src http://repository.maemo.org/ os2008 free non-free
deb-src http://repository.maemo.org/rtcomm/ chinook free


апдейтим базу пакетов (из-под scratchbox-а, разумеется!): apt-get update. Далее:

cd && mkdir work-maemo && cd work-maemo
apt-get source maemo-examples


После этих манипуляций apt-get стащит для нас из репозитория пакет с примерами и услужливо распакует исходники в отдельный каталог.

cd maemo-examples-2.0/
make


Если у вас все настроено правильно - соберется туча примеров к туториалу. Можно попробовать запустить их:

$ run-standalone.sh ./example_abook

(Если опустить run-standalone, то не подсоурсятся нужные переменные окружения и приложение не запустится)

К вопросу об избранных приложениях. Типичный пример - example_alarm - после запуска сообщит вам, что имеет место быть ошибка 6. Эта ошибка возвращается на вызов функций библиотеки libalarmd, если собственно сам демон не запущен. А он и действительно не запущен: нет его в af-sb-init.sh. Что же делать? Сам бинарник alarmd есть, поэтому можно выйти из ситуации вполне тривиально:

run-standalone.sh alarmd &
run-standalone.sh ./example-alarm


(Хорошим такой прием не назовешь, более правильный способ я опишу в следующих сериях)

Те примеры, которые есть на сайте maemo.org тоже можно использовать (путем копирования текста из html-страницы в любимый текстовый редактор), но надо давать себе отчет в том, что в Makefile-ах придется ручками расставить табуляции, которые навсегда пропадают в файлах html-страниц. Лучше ищите в конце ссылку на то, как получить их через анонимный svn.

Ну вот на сегодня и всё... так сказать, happy maemo hacking!

2008-05-15

Java и Maemo

Официальной поддержки Java на устройствах maemo нет. И вот теперь понятно, почему.

Со стороны процессора поддержка есть: это т.н. проприетарное расширение "Жазель" (Jazelle), которое обеспечивает две вещи:
  • Jazelle DBX (Direct Bytecode eXecution) прямое исполнение байтовых инструкций Java
  • Jazelle RCT (Runtime Compilation Target) JIT-компиляция (т.е. "на лету") Java-байткодов в инструкции ARM.
Однако, блин, эти фичи заблокированы, пока Nokia не лицензирует ARM Jazelle Technology Enabling Kit (JTEK).

отсюда

Интересно, а чего Nokia тянет? Денег жалко или считают, что JVM пользователям не нужна?

TRENDnet TEW-632BRP

Я начал процесс апгрейда своей домашней беспроводной сети с точки доступа.

Мой старенький 3COM 3CRWDR101A-75, купленный еще во времена пользования ADSL, тянет только 802.11g. А как хочется попробовать 802.11n! Хотя бы даже draft ;)

Офисные решения от 3COM на том же уровне, что и D-Link, но при этом дороже. Да и 802.11n у них нет - только модель g+ (108Mbps). Но мне а) не нужен ADSL б) если уж менять клиентские карты доступа g, то явно не на g+, а сразу на n.

Я долго выбирал между D-Link DIR-615 за 1800 руб. и TRENDnet TEW-632BRP за 2266 руб. Выбор оказался в пользу последнего - в основном, D-Link ругают в буржуйских блогах за плохую чувствительность в режиме n, и даже на нашем www.dlink.ru в спецификациях она опущена (есть чувствительность в режимах b и g, но не для n).

Устройство хорошо походило по обзорам, которые, как обычно, я читал уже после покупки. Если честно, я давно забил на функциональность типа DHCP, NAT, PPTP и даже маршрутизацию в таких устройствах. Ибо во всех домашних роутерах обязательно что-то хромает - то одно, то другое. Естественным путем я пришел к машине на GNU/Linux Debian, которая делает все необходимое и оставил роутеру функции "тупого" свича LAN/WLAN и точки доступа. Главное - чтобы он это делал хорошо, а остальное приложится ;)

Единственная проблема, с которой я столкнулся - переход на WPA2. У меня нет сервера RADIUS и я не использую сертификаты для авторизации. Однако, машинка под Windows XP начала упорно говорить "Системе Windows не удалось обнаружить сертификат для входа в сеть такую-то". Как я не менял настройки безопасности - WPA,WPA2,WPA-AUTO - Vista подцеплялась практически сразу, а XP поднимала физику, но никаких пакетов через это соединение не пропускала (в т.ч. собственные запросы DHCP).


Первым порывом было поставить и настроить RADIUS. Потом я одумался и понял. что надо ставить на XP третий сервиспак или отдельное специальное обновление, которое учит систему поддерживать WPA2. После установки XPSP3 проблема разрешилась.

В следующей серии самое интересное - буду пробовать менять клиентские карточки на 802.11n. Кстати, Nokia N810 подцепилась к сети "на раз", как бы я не менял конфигурацию безопасности (что привело меня в восторг). Яркий пример того, что это устройство вполне подходит для рядового пользователя, с Windows возиться пришлось на несколько порядков больше.

2008-05-13

Maemo repositories

Нашел полезную ссылку на репозитории с приложениями для maemo. Наконец-то всё сложилось в цельную картину.

2008-05-12

Diablo

Чего-то я не пойму: Diablo должно отличаться от Chinook поболе, чем описано здесь. Конечно, быстрый flash-плеер, опция encoding в x-term, два e-mail клиента - здорово, но не верю (с), что на этом отличия заканчиваются.

2008-05-10

Подновляем Panasonic TCD-305/TCA130

Месяц назад я сидел злой, поскольку мне на домашний отзвонился робот и потребовал зарегистрировать АОН. Чтобы хоть как-то себя утешить, я полез искать аксессуары к своему DECT-аппарату и нашел "устройство для развлечений" PE-TCD300 - заливки мелодий, картинок и редактирования записной книги. После долгой опупеи, заказ меня таки посетил.

Устройство выглядит так:



Существенным минусом является то, что на нем COM-порт. И на эмуляторы COM-USB в мануале рассчитывать не советуют. Соответственно, потребуется компьютер с DB9-разъемом на COM и установленной ОС Windows 2000/XP.

Вы меня спросите: а зачем тебе мелодии заливать? А я отвечу - чтобы назначать разные мелодии на разных людей и проигрывать их в зависимости от АОН-а. Ну, тут вы надо мной посмеетесь - русский АОН в таких телефонах, в отличие от CallerID, поддерживается только после снятия трубки ручками - ну и зачем тогда мелодия-то? И так уже трубку в руки взяли, а номер на дисплее отобразится!

А вот и неправда ваша. Берите трубку и делайте:
  • Нажимайте среднюю дислейную кнопку - заходите в меню
  • Выберите "Настройки Базы"
  • Войдите в пункт меню "АОН"
  • Теперь наберите магическое число 255
  • Войдите в появившееся меню "Автополучение"
  • Выберите "ВКЛ"

Теперь попробуйте позвонить на свой телефон: всё будет почти как в наших "советских" АОН-ах: телефон снимает трубочку, считывает и показывает АОН, а сам продолжает слать КПВ в линию ("давать длинные гудки") и проигрывать трель (или проговорит голосом номер, если оно у вас активировано). Настраиваем реквием на номер тещи и наслаждаемся ;)

Так выглядит трубка, когда к ней пристыковывается девайс:



Обратите внимание, как крепление "обнимает" разъем зарядки: в процессе работы с PE-TCD300 трубку на зарядку не поставишь. Да и питается оно от аккумуляторов трубки во время работы. Лично у меня после двух-трех сеансов прошивок даже одно деление на индикаторе зарядки "съелось".

Приложение хочет для работы Microsoft .NET Framework 1.1, очень кстати оно есть тут же, на диске. Инсталлятор без заморочек, запускаем... Сюрприз: разрешение 1024 на 768 просто необходимо, иначе окно программы не помещается на экране. Соответственно, если вы откопали древнюю машинку с СОМ-портом, позаботьтесь и о драйверах видеокарты, иначе вас может постичь жестокое разочарование.

Теперь надо выбрать модель трубки. Вариантов всего два: TCA-130RU (v6.08) и TCA-132RU (v6.08). Так что если у вас другие трубки - тогда ничего не получится. Затем выбираем номер COM-порта и теперь можно выбирать тип операции. Тут все относительно просто, но:
  • перед заливкой записной книжки, войдите в меню телефона, иначе программа напишет, что нет связи с устройством;
  • суммарная длина файлов с мелодиями не должна превышать 64К (а не только длина одного файла с мелодией, как гласит мануал);
  • строго следуйте инструкциям при заливке мелодий и картинок - но не раньше, чем они появятся в виде диалогового окна на экране.
В заключение, на диске есть список "хитовых" мелодий. Эдакая гремучая смесь из попсы, шансона и русского народного. Предлагаю заценить этот список:
  • Hi-Fi "Школа"
  • Агутин + Отпетые Мошенники "Граница"
  • Агутин "Оле оле"
  • Алсу "Зимний сон"
  • Алсу "Иногда"
  • Анофриев "Есть только миг"
  • Орбакайте "Мой мир"
  • "Ах, Самара, городок..."
  • Блестящие "А я все летала"
  • Блестящие "Ча-ча-ча"
  • Боярский "Городские цветы"
  • Виа-Гра + Меладзе "Океан и три реки"
  • Валерия "Часики"
  • Варум "Ля-ля-фа"
  • "Выйду на улицу..."
  • Глюкоза "Невеста"
  • Губин "Девушки, как звезды"
  • Дискотека Авария "Новогодняя"
  • Дискотека Авария "Песня про яйца"
  • Дискотека Авария "ХХХИРНР"
  • Жасмин "Дольче вита"
  • "Живет моя отрада..."
  • Запрещенные барабанщики "Убили негра"
  • Иван Купала "Кострома"
  • Иванов "Боже, какой пустяк"
  • "Из-за острова на стрежень"
  • "Калинка"
  • "Коробейники"
  • Круг "Владимирский централ"
  • Лада Дэнс "Аромат любви"
  • Катя Лель "Мармеладный"
  • Лицей "Паровозик-облачко"
  • Ляпис-Трубецкой "Ты кинула"
  • "Мурка"
  • "Ой при лужку при лужке..."
  • "Очи черные"
  • "Под окном черемуха"
  • Премьер-Министр "Девочка с севера"
  • Пропаганда "Холодно"
  • Пьер Нарцисс "Шоколадный заяц"
  • Ржевская "Когда я стану кошкой"
  • "Семь-сорок"
  • Сюткин "42 минуты под землей"
  • "Ты ж мене пiдманула"
  • "Хас-булат удалой"
  • Чичерина "Блюдца"
  • Чичерина "Ту лу ла"
  • "Я встретил Вас"
Я немного подредактировал этот список, потому что даже я знаю, что Орбакайте пишется через "О" , а не через "А". Интересно, они хоть платят авторские отчисления-то?

2008-05-08

FreeBSD 7

Инсталлирую FreeBSD в VirtualBox-е. Дохожу до... ну короче как tasksel в Debian. А там пункт:
  • [4] Developer: Full sources, binaries and docs but no games
Всю жизнь мечтал о таком варианте!

2008-05-04

Perl на N810

Secondly, there is no Perl in the system. It has been left out from the standard maemo environment to save space but can be installed separately by the user.

Отсюда.

Простите, а кто тогда мне пишет на perl --version:

This is perl, v5.8.3 built for arm-linux-gnueabi-thread-multi

BusyBox, что ли?!...

2008-05-03

mediaserv

У меня дома живет Debian GNU/Linux, я там держу HDD с фильмами. Как только у меня появилась N810, я сразу задался вопросом - а как бы мне смотреть фильмы прямо с сервера, не затевая муторное копирование и перекодирование? Ответ мне подсказали достаточно быстро: mediaserv.

В основе этого решения лежит MPlayer, который запускается из-под скрипта tablet-encode для перекодирования видео. Данные в сеть раздает другой перловый скрипт - mediaserv. Вся эта связка уже натаскана на maemo, осталось только запустить и насладиться. Решение годится скорее для домашней сети, чем для вещания в инет, хотя некие наметки для многопользовательского режима все-таки есть.

Итак, последовательные шаги.

1. Установка MPlayer.

Качаем исходники MPlayer, распаковываем. Качаем оттуда же бинарные кодеки, распаковываем и копируем в /usr/local/lib/codecs.

Поскольку мы будем собирать пакет .deb, нам потребуются fakeroot и debhelper, установите их, если только вы уже не занимаетесь сборкой пакетов debian на этой машине. Также для MPlayer потребуется libconfhelper-perl и liblogfile-rotate-perl:

sudo apt-get install fakeroot debhelper \
libconfhelper-perl \
liblogfile-rotate-perl
Только после всего этого заходим в распакованный MPlayer и говорим:

DEB_BUILD_OPTIONS="--enable-largefiles --disable-tv" fakeroot debian/rules binary


Полный список опций скажет ./configure --help, с другой стороны можно не пижонить и набирать просто fakeroot debian/rules binary. Результат, как всегда, лежит каталогом выше, устанавливаем его в систему:

sudo dpkg -i ../mplayer_1.0svn_i386.deb

2. Качаем и распаковываем tablet-encoder. Его можно закинуть в PATH, но это необязательно, главное помнить путь.

3. Качаем и распаковываем mediaserv. Распакуйте и запустите install.sh: он создаст в каталог ~/.mediaserv и поместит туда файл config. Пробегитесь по настройкам и установите как минимум путь к tablet-encoder.

Кроме того, надо позаботиться об установке пакетов, от которых зависит mediaserv:


sudo apt-get install libdatetime-format-mail-perl \
libdatetime-format-w3cdtf-perl \
libdatetime-perl \
libtest-manifest-perl


Для отдачи наружу RSS-ленты, потребуются перловые модули XML::RSS и XML::Parser. Автор рекомендует ставить их через CPAN, но в Debian уже есть пакеты:

sudo apt-get install libxml-rss-perl libxml-parser-perl

4. Запускайте mediaserv, он напишет конфигурацию и форкнется, повиснув сервером.

5. Идите в браузере по адресу и порту, который вы пробили в ~/.mediaserv/config, выбирайте нужное видео. Далее, запускается встроенный медиапроигрыватель и... можно смотреть.

Нюансы (а как же без них?)

1. Перекодированные файлы не проигрываются

У меня замечательно генерировались страницы с тумбалисами в браузере, но при тычке на картинку, перекодированные файлы решительно отказывались проигрываться. Почти сразу я выяснил, что перекодированный видеофайл имеет нулевую длину. Причиной этого оказалось нежелание tablet-encode работать с ключами -p smallest и -p small: отредактируйте config и выставьте качество в average - все должно заработать.

2. Русский язык в наименованиях файлов

(если вы - фанатик транслитерационного наименования файлов, можете смело пропускать)

Поскольку HTTP-страницы mediaserv генерирует, считывая имена файлов "как есть", а Contnet-Type выставляет как "text/html; charset=utf-8", это может породить проблемы. Возьмем мой случай: локаль ru_RU.CP1251, скрипт считывает и выводит имена файлов в файловой системе, но браузер пытается истрактовать их как UTF-8. Получается нечитаемо по определению.

Казалось бы, нет ничего проще: поменять Content-Type с utf-8 на windows-1251, и дело с концом! Но в браузере-то все будет ОК, а вот медиа-плеер на таблетке будет решительно промахиваться и не находить фильм для просмотра, если в нем были русские буквы. Обратно получается ерудна.

На свою беду, я не поклонник правильных решений. Мой рецепт: перед выводом страниц и RSS-лент, перекодировать из текущей кодировки в UTF-8. Для этого надо подредактировать скрипт: в начале загрузить модуль Encoding:

use Encode qw(from_to);

а в процессе формирования текстовых строк использовать функцию form_to, например:


sub doBrowse {
...
$response->header( 'Content-Type' =>
'text/html; charset=utf-8' );
from_to($content, "cp1251", "utf8");
$response->content($content);
}
(и точно так же в других местах, например функция doRSS).

3. Рассинхронизация видео и звука

Получил такое на некоторых медиа-файлах. Как бороться - пока не понял...