августа 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:)