Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

2017-09-12

Файлы с фото: упорядочиваем имена

Недавно вернулся из поездки, притащил оттуда фотки аж на трёх фотоаппаратах. Так уж получилось: Honor 8 Pro хорошо умеет делать фотографии в условиях низкой освещенности и на него можно сделать селфи, Note 4 поражает четкостью и насыщенностью в нормальных условиях, но на него селфи не сделаешь (попала пыль в переднюю камеру), а Canon EOS 1100D и вовсе не телефон, а полноценная камера, хоть и старенькая, но как минимум с оптическим зумом.

Иногда в процессе съемки я делаю один и тот же снимок различными камерами, надеясь потом отобрать наиболее удачный. 

В итоге, скачанные c одной камеры файлы называются датой-временем, типа 20170830_121103.jpg, на другой - тоже самое, но с неотключаемым префиксом IMG_20170830_121103.jpg, а Canon и вовсе лепит снимки с номерами по возрастанию: IMG_5678.JPG. Как их теперь объединить в один упорядоченный по имени файловый массив, да еще и соблюсти хронологию?!... Ах да, дополнительая беда: перед съемкой я совершенно позабыл выставить на них одинаковое время... 

Ругать кроме себя некого, но можно все-таки попробовать разобраться. Мне помогла замечательная утилита exiftool из пакета libimage-exiftool-perl. Она умеет читать EXIF-информацию из файла (не только из картинок, кстати) и производить над ней несложные, но чертовски востребованные мной операции. Используем её, чтобы получить все файлы с именами типа 20170830_121103.jpg.

Итак, среди двух страниц разнообразных тегов нам нужен только CreateDate, его можно получить так:

$ exiftool -CreateDate IMG_5555.JPG
Create Date                     : 2017:09:03 15:20:01

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

$ exiftool -CreateDate -d "%Y%m%d_%H%M%S.jpg" IMG_5555.JPG 
Create Date                     : 20170903_152001.jpg

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

$ exiftool -CreateDate -d "%Y%m%d_%H%M%S.jpg" IMG_5555.JPG | awk -F':' '{print substr($2,2)}'
20170903_152001.jpg


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

Не отчаиваемся! Выбираем одну из камер, которая будет "эталоном". Берем вторую, наблюдаем разницу во времени, хоть с точностью до секунды (но обычно это минуты или даже часы, из-за разных таймзон). Пусть это будет 24 минуты, например. 

Используем опцию exiftool -globalTimeShift, указывая аргументом ей это самое смещение (знак впереди указывает в каком направлении надо сдвинуть временную метку). И натравливаем нижеприводимый скрипт на файлы этой камеры:

#!/bin/bash

for fname in *.JPG; do
  newname=$(exiftool -CreateDate -globalTimeShift "+0:0:0 0:24:0" -d "%Y%m%d_%H%M%S.jpg" $fname | awk -F':' '{print substr($2,2)}')
  mv "$fname" "$newname"
done

Если камер несколько, вычисляем для каждой из них свое смещение от "эталонной", меняем в скрипте зачение аргумента -globalTimeShift и натравливаем на файлы с фотографиями.

Ура, готово! Теперь все файлы называются единообразно, упорядочены по времени, и только внутри у них в EXIF по-прежнему сохранено исходное значение.

В моем случае это не важно, но если нужно, то всемогущий exiftool может и это исправить тоже. 

man exiftool ;)


2011-01-25

Caanoo

Перелистывал на досуге первый в 2011 году номер LXF и наткнулся на описание игровой консоли на Linux, называется Caanoo:

Технические характеристики следующие:

  • SoC (система на чипе): MagicEyes Pollux VR3520F
  • CPU: ARM926EJ 533 MHz, встроен в SoC (тег архитектуры - ARMv5TEJ)
  • GPU: аппаратный 3D engine, тоже встроен в SoC (поддерживается OpenGL ES 1.1)
  • производительность 3D: 133M треугольников/с и 1,33M полигонов в сек.
  • основная RAM: 128 МБайт DDR SDRAM 133 MHz (пиковая пропускная способность: 533 Мбайт/с)
  • видео буфер: около 16 Mbytes от основной RAM резервируется на видео и текстуры
  • ОС:GNU/Linux 
  • Flash-память: отсутствует (128 Мбайт зарезервировано для OS)
  • Подключение к PC: USB 2.0 High Speed через EXT порт
  • USB Host: USB 1.1 стандартный разъем
  • Поддерживает карты памяти SD / SDHC (до 32 Гигабайт)
  • G-сенсор/монитор вибрации
  • Аналоговый джойстик с высоким разрешением
  • Дисплей: 3.5" LCD 320×240 пикселов (резистивный тачскрин)
  • Встроенные микрофон и стерео-динамики
  • Питание: литий-полимерный аккумулятор 1850mAh (около 5-6 часов просмотра видео/игр)
  • Размеры : 146 × 70 × 18.5 мм
  • Вес : 136г
  • WiFi через адаптер (USB донгл - покупается дополнительно)
  • Цвета: Черный/Голубой/Белый

Собственно, устройство появилось не на пустом месте - у него были предшественники, сделанные славной фирмой Gamepark в Южной Корее (так сказать, южнокорейский ответ японским игровым консолям - почти нацпроект ;). Существует оно с осени 2010 года, так что уже успело достаточно насытить определенные круги ;)

Привлекло меня в этой железке два фактора: невысокая цена (около 5000 руб) и полная открытость. До такой степени, что можно на ней резвиться практически как угодно - например, модифицировать в рутовую файловую систему. Ну и писать программы, конечно же - существует полноценный SDK и toolchain, которые можно свободно скачать и установить.

Что потребуется для программирования под Ubuntu? Попросите apt-get установить следующее:
  • codeblocks ( весьма симпатичная IDE с плагинами );
  • g++
  • libgl1-mesa-glx
  • libfreetype6-dev, libgl1-mesa-dev, libglu1-mesa-dev, etc
Итак, скачайте и распакуйте в домашний каталог SDK (я для примера буду использовать /var/caanoo).  В зависимости от того, что у нас выступает в качестве хоста - Windows или Linux, делать надо немного разные вещи, но суть едина, поэтому я буду рассматривать только Linux. 

Обязательный пункт программы: скопируйте файлы для wizard-а из распакованного SDK в  Code::blocks:

sudo cp -r /var/caanoo/GPH_SDK/tools/codeblocks/wizard/* /usr/share/codeblocks/templates/wizard

После этого команда New|Project будет показывать возможность создать GP2X-проект:



Далее, надо зайти в настройки Settings|Compiler and debugger и выставить там на закладке Toolchain следующее:

Чтобы проверить правильность настройки, можно открыть любой из примеров, входящих в SDK и попробовать скомпилировать. Компиляция возможна либо в host, либо в target (выбирайте через Select|Build target) - в первом случае в каталоге проекта создается файл target.out, во втором - target.gpe, для запуска на вашем компьютере и на консоли соответственно. Во всех каталогах с примерами есть Makefile, они достаточно простые и помогут сориентироваться тем, кто с недоверием относится к GUI и предпочитает командную строку.

Если в процессе компиляции вы наблюдаете сообщения о ненайденных библиотеках, например GL или GLU - надо установить соответствующие пакеты, только с -dev на конце. Именно там находятся статические библиотеки типа libGL.a, которые требуются для линковки в проектах.

Продолжение обязательно следует

2010-06-15

Your distro, your rules

По работе пришлось решать попутную задачу сборки собственного дистрибутива Devil Linux aka DL: так я познакомился с Linux From Scratch (существует онлайновая книга, где концепция LFS изложена довольно подробно). После apt-get и dpkg несколько непривычно, но что-то в этом есть. Основная идея: "твой дистрибутив - твои правила". Я бы добавил сюда "...и твои проблемы" ;) Конечно, если есть документация - просто следуйте ей и будет все ОК. На момент написания статьи документация на последнюю версию DL пребывала в состоянии дописывания, поэтому пришлось поразбираться самостоятельно, благо не очень сложно. Основными ресурсами, которыми пришлось запастись, оказались терпение и свободное место на жестком диске ;)



Хотя с сайта и скачивается дистрибутив 1.4RC4,  в CVS такого тэга я не обнаружил, и поэтому сначала ошибочно взял за основу своих экспериментов 1.4RC3. Однако, очень скоро я понял - при самостоятельной сборке надо брать всё самое последнее (более подробно об этом см. ниже) и собирать с самого начала.

Строим рабочее окружение

Выбираем какой-нибудь каталог (советуют /usr/src, но реально-то надо там, где хватит свободного места - после компиляции у меня оказалось занято около 8,5 Гиг).

Перво-наперво, убедитесь, что у вас есть утилита lftp - если нет, поставьте пакет (apt-get lftp) или качните исходники и скомпилируйте: ftp://ftp.devil-linux.org/pub/devel/sources/tools/. Наличие lftp - обязательный пункт программы.

Сначала качаем базовый архив бинарников Linux From Scratch для DL, он же lfssystem, который обитает в ftp://ftp.devil-linux.org/pub/devel/sources/ - заходите и выбрайте соответствующий каталог (например, lfssystem-for-DL-1.3.4_and_up), далее надо распаковать содержимое - можно сразу из-под рута. Не пугайтесь, просто в DL существует очень немного пользователей, и единственный с настоящей консоль - root, поэтому именно он является владельцем всех файлов в архиве:

sudo tar -xjf lfssystem-SVN-20070314-cleaned.tar.bz2

Далее качаем исходники базовой системы DL из CVS с анонимным доступом на чтение, складывая внутрь распакованного каталога:

cd lfssystem/data


сvs -d:pserver:anonymous@devil-linux.cvs.sourceforge.net:/cvsroot/devil-linux login


sudo cvs -z3 -d:pserver:anonymous@devil-linux.cvs.sourceforge.net:/cvsroot/devil-linux get build

Наконец, вынимаем архивы исходников-компонентов при помощи специального скрипта:

cd build/


sudo ./update_src

Это довольно длительный процесс, к тому же при использовании зеркал (а почти все они - неработающие), его надо сделать дважды - второй раз надо указать главный сервер №1, чтобы скачать самые распоследние  исходники компонентов.

Замечу, что из CVS вы только что получили сборочные скрипты последней версии. CVS хранит все ревизии исходных файлов для каждой версии дистрибутива DL, но вот беда - они логически привязаны к исходникам программ, которые лежат на ftp и, следовательно, имеют всего одну "версию". Поэтому собрать более ранние версии DL, обновите CVS по тегу и ищите файл md5sum.lst - там перечислены все имена файлов с исходным кодом. К счастью, основная их часть выложена на ftp в каталогах "0.5", "1.0", "1.2", "1.4", но как видите - это только основные ветки. Не исключено, что, например, для 1.2.5 придется добыть десяток-другой пакетов исходников. С другой стороны, надо еще поискать педанта, которому все это понадобится.   

Пока идет закачка, добавляем себе alias в ~/.bashrc или ~/.bash_alias:

alias cr='sudo chroot /полный/путь/к/рабочему/каталогу/lfssystem /usr/bin/env -i HOME=/root TERM=$TERM /bin/bash -login'

После выполнения будут подсчитаны md5 для скачанных файлов и после сравнения скрипт может выругаться на те, у которых она не сошлась. Не скажу, что это нормально, но попробовать собрать все-таки можно (на то она и девелоперская ветка). Мне надо было получить ядро 2.6, поэтому пришлось примириться с мелкими несостыковками и пожертвовать некоторыми ненужными программами. Надеюсь, к тому моменту, как вы прочтете эту статью, мэйнтейнеры уже все пофиксят ;)

Компилируем "с нуля"

Настало время расчехлить наш alias! Выполняем cr и попадаем в каталог /data/build с рутовыми привилегиями. Если набрать makе без параметров, он покажет возможные варианты запуска.

make unpack

Закаченные исходники сейчас покоятся в каталоге /data/build/src, по этой команде они все будут распакованы в /data/build/tmp.

make menuconfig 

Попадаем меню конфигурирования. Здесь конфигурится всё. Можно выбирать приложения, некоторые специфические драйвера, тип/количество процессоров, число параллельных процессов make.  Кстати, лично меня сразу же начала раздражать разговорчивость скрипта /data/build/scripts/settings, чтобы его успокоить, поставьте в последней строке перенаправление STDERR в никуда:

test -n "${PACKAGEDIR}" && cd ${PACKAGEDIR} 2> /dev/null

В конфигурации можно оставить все как есть, а можно повыкидывать лишнее - главное, не забудьте сохранить результат (файл .config). Для первого раза все-таки рекомендую оставить все.

После этого, по идее, все готово к сборке... ну разве что исправить в /root/.bash_profile определение временной зоны с EST на Europe/Moscow (надо перелогиниться, конечно же).

make prepare


Вывода вы не увидите, он будет аккуратно сложен в  /data/build/tmp/LOGS/prepare/*.

make build


Тоже самое, но логи будут складываться в /data/build/tmp/LOGS/build/*. Сборка происходит для всех пакетов, вне зависимости от того, что выбрано в конфигурации. Все пакеты должны собираться нормально, но у меня не смог завершиться ./confire для git, причина была в отсутствии в базовом бинарном пакете LFS /usr/bin/python. Чтобы избавиться от git можно зайти в Makefile.build и удалить оттуда эту цель. Так можно поступать с любыми проблемными пакетами, если от них не зависят другие пакеты. В противном случае придется предметно разобраться, в чем причина и сделать патч, чтобы пакет все-таки собирался.

make install

Происходит выполнение цели install у всех Makefile всех программ. Учтите, что для некоторых пакетов нельзя сделать make install повторно: он может неожиданно завершиться с претензией о том, что какой-то каталог/файл уже, видите ли, создан.

make iso

Происходит "стаскивание" всех компонентов в каталог tmp/ISO, формирование рутовой файловой системы, а затем все необходимые шаги для получения файла tmp/bootcd.iso.

ГОТОВО!

Я смог дойти до конечного результата только спустя сутки, что даже на моем не самом отсталом Duo T5550/1.83 - мучительно долго. Кроме того, приходилось начинать несколько раз заново: unpack-prepare-build-install-iso. Казалось бы, можно "переигрывать" тот или иной пункт сборки довольно просто - удалить флаг tmp/FLAGS/<фаза>/<программа> (например, после удаления tmp/FLAGS/build/linux make build должен по-новой запустить компиляцию ядра). Но на практике, надо знать некоторые зависимости и особенности, иначе - нас ждет unpack-prepare-build-install-iso.

Если Вам интересно прочитать о составе программ и про то, как работать с этой сборкой (так сказать, информация для пользователей) - рекомендую статьи Александра Деревянко - часть 1 и часть 2.

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

2010-05-11

Google Chrome для Linux

Я использую нестабильную ветку Google Chrome для Linux вот уже как скоро год, и никаких проблем не замечал - до последнего времени. При старте он стал писать Не удалось корректно загрузить ваш профиль, и чуть ниже - некоторые функции могут работать некорректно. Поскольку я заметил лишь один эффект - пропадание иконок в закладках, я забивал на это довольно долго (месяц).

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

Настройки живут в каталоге ~/.config/google-chrome/, и если не жаль содержимого - можно удалять. Еще можно установить гуманную опцию --user-data-dir на другой каталог и "начать новую жизнь". Но тогда плакали мои несохраненные закладки и сохраненные пароли :(

В итоге все вылечилось довольно просто - в каталоге ~/.config/google-chrome/ надо снести все файлы истории (особое удовольствие прибить файлы с цифрой 1970 в названии), т.е. файлы ~/.config/google-chrome/History*.

Наверное, получилась косячная база SQLite (именно в ней хранится история), когда переполнился home-раздел...

2009-12-24

Linux на Лаптопе

Linux в качестве серверной ОС - весьма привычное решение, зато на ноутбуках подавляющее большинство людей по-прежнему подразумевают Windows. Эту ситуацию немного подломили нетбуки, стартовавшие в лице Asus EEE именно с linux. Купив два года назад Asus F7Sr, я решил оставить там "родную" Windows Vista Home Premium, дабы насладиться щедрым даром Microsoft, типа ТВ-тюнера или интеграцией с домашним кинотеатром. Реальность оказалась ужасна, но, к счастью, недавно сдох винчестер, и мне предоставился шанс начать все с чистого листа винта. Займет ли его снова лицензионная Vista?

2009-10-21

Linux Mint

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

Раздумывая, как бы мне выцарапать с полудохлого винта драгоценные незабекапленные файлы, я обратился к своему рабочему столу (я имею ввиду обычный аппаратный стол из древесины - с виртуальным его роднит только чрезмерная захламленность).

Первое же, что мне попалось под руку - диски-приложения от LinuxFormat. С твердой уверенностью, что сверхъестественные силы меня не оставили, я загрузился с первого, что подвернулось под руку в режиме liveCD (без установки на жесткий диск).

И - о чудо! Linux Mint 7 правильно разобрался со звуком, видео, кард-ридером, тачпадом, проводной и беспроводной сеткой, а самое главное - оказался способен читать и писать диски NTFS. Специально потом посмотрел - этот диск был в приложении к номеру за август 2009 года. Лаптопу около двух лет, неудивительно, что с оборудованием не возникло проблем.

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

UPD: раздумываю, не установить ли на ноутбук linux, а всевозможные винды гонять в виртуальных машинах. Если получится - с меня статья ;)

2009-02-17

Debian 5.0

Вышел новый Debian 5.0.

Теперь бинарные пакеты размещаются уже на 5-ти DVD.... Растем!

2008-10-16

Первое устройство на ALP

Access Linux Platform наконец нашел себе устройство для материального воплощения, это платформа Edelweiss. Компания-изготовитель - израильская Emblaze Mobile Ltd.

Спецификации:
  • Экран - 3,5", 480 x 854, 262000 цветов.
  • Размер - 115 x 56 x 12.4 мм, вес - 130 г.
  • GSM/GPRS/EDGE/WCDMA(UMTS), вибра есть
  • Micro USB 2.0, WiFi b/g, BT 2.0, HSDPA, GPS
  • Камера 3.2 мегапискелей
  • Процессоры TI OMAP серия 3 и ВВ (?)
  • Аккум 1450 mAh, 8 часов разговора и 550 ожидания (!)
Презентуют его в России, 23.10.08 в Москве.

Чудеса какие-то, просто слов нет. Хочу пожелать ребятам всяческих успехов.

2008-07-29

RSS вместо почты

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

Получается, что система уведомлений мягко повисает в воздухе, потому что честно сгенерированные ей предупреждения... просто никуда не отсылаются. Однако, есть log-файл, есть доступ через VPN. Следовательно, информация все-таки доступна, просто надо ей грамотно ей распорядиться!

Решение пришло как-то само собой - откачивать логи, элементарно парсить и отдавать наружу RSS-лентой. Нововведение с RSS населению понравилось ;) Честно говоря, я готовился к смертельной схватке с ретроградами, но обошлось (хотя и пришлось провести ликбез по общению с liferea).

Ингридиенты: postgresql, perl (5.8), libdbi-perl, libdbd-pg-perl, libxml-rss-perl, liferea (у клиента). Написание двух скриптов (один - зкаладка в базу логов, другой - отдача по RSS) заняла в неспешном режиме 2 рабочих дня, шлифовка - еще 3 дня. В принципе, я доволен, потому что получилось просто, а я люблю простые решения...

2008-07-10

Неученье - тьма

Сегодня на работе тщательно убеждал коллегу, что ядро linux 2.6.9 - вовсе не последнее в ветке 2.6, и точно менее свежее, чем 2.6.20.

Дошло до такой степени, что потом даже сам полез на kernel.org. Бывает же, однако... Ведь там на заглавной же странице написано, какое из них последнее...

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-пакет из исходников.

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. Рассинхронизация видео и звука

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

2007-10-31

Повисания сервера

Сижу я дома, никого не трогаю, и вдруг в мою ssh-консольку мой линух сплевывает следующее:

Message from syslogd@idsrv at Wed Oct 31 00:18:34 2007 ...
idsrv kernel: ------------[ cut here ]------------
idsrv kernel: kernel BUG at mm/slab.c:608!
idsrv kernel: invalid opcode: 0000 [#1]
idsrv kernel: SMP
idsrv kernel: CPU: 0


.... и торжественно повисает.

Ну и как после этого жить на свете?!...

UPD: вылечилось более свежим ядром. Бывает...

2007-06-01

Palm Foleo



Типа на Linux, и скоро будет SDK к нему. Стоит $500. Что внутри - пока неясно, за исключением того, что память у него на flash - энергонезависимая. От батареи непрерывно живет 5 часов.

2007-01-16

Памятка

Как делать бинарный пакет Debian из исходников:
  • Идем на страницу бинарного пакета (например, сюда), внимательно смотрим в самом низу страницы после More Information on... ссылки на файлы и качаем три - исходный тарболл (orig.tar.gz), пакованный diff (diff.gz) и описание(dsc)
  • Натравливаем на это дело dpkg-source -x файл.dsc получается новый каталог с исходниками, которые правильно пропатчены.
  • Делаем cd этот замечательный каталог и запускаем dpkg-buildpackage -rfakeroot -b
  • Уровнем выше получаем вожделенный пакет, готовый к установке в нашей системе :)
Вообще, конечно, FAQ

2006-10-24

Debian Sarge

Произвел эксперимент по установки Debian Sarge 3.1r3 на домашний комп. Новый инсталлятор и система детекта оборудования сначала порадовала наличием, а потом обломала тем, что загрузила ~30 модулей устройств, что вызвало отказ со стороны сетевой карты что-либо передавать.

Поставил в expert-моде, с ядром 2.6. Ничего так, все-таки завелось, на лаптопе.