сентября 23, 2009

MediaCenter: Step 6 - Монитор и проектор

Задача:
Нужно показать одну и ту же картинку на монитор и проектор.

Исходные данные:
Получилось так, что монитор и проектор, подключенные к медиацентру не засинхронизированы по разрешению. То есть у монитора рабочее разрешение - 1440 на 900 пикселей, а у проектора - 1280 на 720. Получается, что даже соотношения сторон не совпадают. Причем, если подключить оба устройства к компу - автоматически при загрузке xubunt'ы устанавливается что то типа 1024 на 768. Это то разрешение, которое поддерживается обоими устройствами. Но это никуда не годится. Смотреть фильмы на 1024. когда знаешь, что можно на 1280 - это не по мне :)

Порывшись по интернетам, выяснил, что решения может быть два (вариант с xrandr - отпадает так как каждый раз запускать его при включении-выключении проектора не хочется). 1) установить для обоих устройств 1280 на 720, 2) как-то настроить виртуальный рабочий стол и на одном из устройств использовать его со смещением.

Если не вдаваясь в подробности - пока что выбрал первый вариант. Но появилась еще одна засада: при попытке установить для монитора разрешение 1280x720 - Xorg написал, что данное устройство не поддерживает такой режим. Не беда. Попробуем воспользоваться утилитой gtf и сгенерить нужный нам режим.

bird@shuttle:~$ gtf 1280 720 75
# 1280x720 @ 75.00 Hz (GTF) hsync: 56.40 kHz; pclk: 95.65 MHz
Modeline "1280x720_75.00" 95.65 1280 1352 1488 1696 720 721 724 752 -HSync +Vsync


Вставляем его в xorg.conf:


Section "ServerLayout"
Identifier "X.org Configured"
Screen "Screen0"
Screen "Screen1"
EndSection

Section "Module"
Load "record"
Load "dri"
Load "extmod"
Load "glx"
Load "dbe"
Load "dri2"
EndSection

Section "Monitor"
Identifier "VGA"
Modeline "1280x720_75.00" 95.65 1280 1352 1488 1696 720 721 724 752 -HSync +Vsync
EndSection

Section "Monitor"
Identifier "PROJ"
Modeline "1280x720_75.00" 95.65 1280 1352 1488 1696 720 721 724 752 -HSync +Vsync
EndSection

Section "Device"
Identifier "Card0"
Driver "intel"
BusID "PCI:0:2:0"
EndSection

Section "Device"
Identifier "Card1"
Driver "intel"
BusID "PCI:0:2:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "VGA"
SubSection "Display"
Depth 24
Modes "1280x720"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "PROJ"
SubSection "Display"
Depth 24
Modes "1280x720"
EndSubSection
EndSection

Перегружаем X сервер - ура! Все получилось! :)

PS. Единственный минус - небольшое искажение изображения на мониторе из-за непропорциональности размеров монитора и проектора. Но совсем немного. Не парит :).

сентября 15, 2009

L.Torvalds "Just For Fun"

Недавно все-таки удосужился прочитать книгу. Очень. Рекомендовано к прочтению всем. Даже тем, кто не интересуется linux. Книга написана так, что после ее прочтения хочется больше свободы. Очередной раз приходит понимание, что что-то не так... и должно быть по-другому. Чище и светлее. Чем-то напоминает времена и дух уже извращенного временем движения хиппи. Ну, по крайней мере, мне так показалось.

сентября 07, 2009

MediaCenter: Step 5 - Пульт ДУ

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

Для начала устанавливаем сам пакет lirc обычным способом:

sudo apt-get install lirc

Затем, идем на официальный сайт lirc и скачиваем последние исходники. Собираем и инсталлируем.

cd lirc-0.8.x
sudo ./configure
sudo make
sudo make install


Но и это еще не все. Останавливаем lirc и выгружаем "плохие" модули:

sudo /etc/init.d/lirc stop
sudo rmmod lirc_mceusb2
sudo rmmod lirc_dev


Затем идем в /lib/modules/2.6.28-15-generic/misc и копируем оттуда скомпиленные ранее модули в соответствующие папки по адресу /lib/modules/2.6.28-15-generic/kernel/ubuntu/lirc

Вот теперь с чистой совестью можно запустить

sudo /etc/init.d/lirc start


и проверить работу пульта в irw.

сентября 05, 2009

MediaCenter: Step 4 - CD

А! Вот еще что.
Дабы при нажатии на кнопку лотка CD-рома не вылетало некрасивое системное сообщение поверх XBMC что, дескать, не могу размонтировать устройство, добавим строку dev.cdrom.lock=0 в файл /etc/sysctl.conf

сентября 03, 2009

Новый XBMC

Пока я прохлаждался на берегах Черного моря, вышел новый релиз моего любимого XBMC. И не только релиз. Сменился сайт, появилось вменяемое вики и т.п. Что немало доставляет.



В "официальном" доступе появился скин Aeon. По скриншотам - очень красивый. Пока что нарисовалась одна проблема. В общем-то ожидаемая - русские буквы. Буду искать решение. Может быть попробовать подложить что-нибудь похожее с русскими символами?

августа 19, 2009

MediaCenter: Step 2 - Torrents

Естественно, что самый массовый источник контента для медиацентра - это торренты. Для себя в качестве клиента я определил deluge. Всем хорош, но вот одна беда - пока что не умеет работать с расписанием. А в ситуации, когда твой провейдер ограничивает время работы в сети это важно (у меня ночной unlimited пакет, соответственно днем качать нельзя).

Нам на помощь приходит вот этот скрипт в связке с cron'ом.

D_CTRL = /home/bird/deluge/deluge_config.py
D_FAST = "200"
D_OFF = "0"

# каждые 10 минут от 18 до 9 утра по будним дням
# поддерживаем максимальную скорость
*/10 18-23,0-8 * * 1-5 ${D_CTRL} ${D_FAST}

# днем все отключаем
*/10 9-17 * * 1-5 ${D_CTRL} ${D_OFF}

# в выходные качаем весь день на полной скорости
*/10 * * * 0,6 ${D_CTRL} ${D_FAST}

августа 17, 2009

MediaCenter: Step 1 - Sound

Решил заново переустановить свой медиацентр. С нуля. Показалось, что mythbuntu какая-то некрасивая и перегружена ненужным мне. Как и прежде все будет работать на старой конфигурации, описанной здесь. Единственное, что добавилось - второй винт на 1Тб.

Описывать саму установку системы (а это бужет Xubuntu) я не буду. Там все тривиально. Почему именно она? Из-за легкого xfce.

Итак, какие вещи не работают "из коробки" на моем шаттле и что нужно допиливать по месту:
  1. Не идет звук на ресивер через оптику. Именно звук. Потому, что сам сигнал есть - это показывает светящийся значок "PCM" на панели ресивера.
  2. Система не откликается на нажатия кнопок пульта ду.
В этом посте рассмотрим решение, которое подходит для звуковой карты моего компа: Intel HDA, чип Realtek ALC888. Звук будет выводится через ALSA. Конфигурация, с которой все заработало:

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC888 Analog [ALC888 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC888 Digital [ALC888 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0


cat /etc/asound.conf:

pcm.!default iec958:Intel

cat /etc/modprobe.d/alsa-base.conf - здесь важна последняя строчка. Остальное все стандартная конфигурация от Ubuntu.

# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
options snd-usb-caiaq index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from beeing loaded as first soundcard
options snd-pcsp index=-2

options snd-hda-intel model=3stack-6ch-dig


После настройки не забываем настроить в микшере каналы, поднять там где надо громкость и включить галочки напротив IEC958.

августа 11, 2009

Чего не хватает в CSS?

Мне кажется в спецификациях CSS не хватает одной важной вещи. А именно, как бы это назвать, - метаклассов что-ли.

Смысл №1 (простой)

$meta myColor1 { orange } /* определяем метакласс */
.myClass { color:$myColor1; } /* используем метакласс */


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

Смысл №2 (более сложный)

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

$meta myMeta {
color: orange;
background: white;
padding: 10px;
/* можно добавить что-нибудь еще */
}

И использовать примерно так:

.myClass$myMeta {
/* здесь описываем дополнительные стили к этому классу */
}


В этом случае .myClass наследует все определенные стили в метаклассе, ну и плюс добавляет свои. Получилось некое подобие ООП :).

Понятное дело, что синтаксис разметки придуман "на ходу" и может быть каким угодно, но смысл, я думаю, ясен. Мне кажется, что этим можно значительно упростить задачу верстальщикам. Ведь при более-менее сложном проекте приходится верстать "простыни" CSS кода.

августа 04, 2009

Twitter & Jabber

Все-таки завел себе аккаунт на твиттере. Просто потому, что недавно очень нестабильно работал dreamhost'овский хостинг. Оказывается, они все, что у них происходит пишут в своём аккаунте. Мне показалось это удобнее, чем искать проблему, писать в саппорт и ждать ответа - что же случилось с сервером. К тому же сразу нашел там парочку друзей и знакомых.

Делее родилась мысль: а не может же такого быть, что бы не было какого-нибудь транспорта из Twitter в Jabber! Таки есть. Теперь все, на кого я подписан в Twitter, пишут мне в Jabber:)

июля 28, 2009

Укрощение manage.py в Eclipse

Сегодня додумался до вроди бы очевидной вещи.

Уже давно использую этот совет для отладки Django приложения в Eclipse. И почему же то те метод не использовать для других рутинных операций. Ведь каждый раз (по крайней мере раз в день, учитывая сильные стороны консоли в Linux :) приходится в консоли набирать:

python manage.py ...

А если при этом гуляешь по директориям, то приходится каждый раз возвращаться в корень проекта. Очень напрягает. Итак, так почему бы не создать несколько конфигураций для запуска этих комманд в самом Eclipse? Все очень просто.

Создаем новую конфигурацию для запуска:



  1. Называем конфигурацию "Run syncdb", если мы собираемся синхронизировать базу данных.
  2. Выбираем главный модуль. Это будет "manage.py".

Заполняем поле "Program arguments":



... желаемой коммандой. В данном случае это будет "syncdb". И нажимаем "Apply" и "Close". Все. Можно пользоваться этой коммандой из меню.

июля 15, 2009

Пост про копирайт

Навеяно вот этим постом в живом журнале.

Да, я тоже грешен и пользуюсь торрентами для скачивания интересного мне контента, но в этом случае я готов за него заплатить. Я готов платить за музыку, которая мне нравится. И это касается не только atmoravi и музыки вообще. Я готов платить за софт, который мне нравится, провайдеру за интернет, за еду, за горячую воду, за проезд, и за воздух. Главное условие - чтобы понравилось и засело в голове.

Например, за byfly - платить не хочется :)

июня 30, 2009

Windows Media Center

... идет лесом. Буду переходить на XBMC. Потому как это глючливое поделие от Microsoft порядком надоело. Единственное, что меня пока удерживало - это поддержка tv-тюнера (вроди как нашел решение под мой Aver 116, на днях попробую). Но как показала практика - смотреть в белоруском эфире нечего. Поэтому винду - в топку!

Основные проблемы (для меня) в Windows Media Center:
  1. Тормоз. Не понятно почему, но периодически начинает тормозить.
  2. Пульт. Непонятное время отклика на нажатие клавиш на пульте ДУ. То срабатывает сразу, то надо давить на кнопку по нескольку раз.
  3. ОЧЕНЬ слабенький функционал. XBMC на порядок выше.
Так что... винда наверное поживет пока на втором винте пару дней пока жена не привыкнет к новому интерфейсу :) и достаточно с меня этого геморроя...



XBMC + Mediastream skin - мой выбор. Boxee пока что всетаки в "альфе".

июня 19, 2009

Снова в Хельсинки

Вернулись в понедельник из поездки в Хельсинки. Ездили к друзьям. Хорошая поездка получилась. Обновил свой S-Max :). Фотоотчет по ссылке.