мая 13, 2010

Давайте нарисуем карту Беларуси!

У кого есть возможность, давайте нарисуем карту Беларуси. Из всего, что нужно - это смартфон (Android, WinMobile, Symbian, Blackberry) с подключением к интернету (EDGE, GPRS, 3G).

ноября 10, 2009

Ubuntu 9.10 + Google Chrome

В общем-то мне нравится FireFox, идущий в поставке с Ubuntu. Решил попробовать как будет себя вести Chromium на linux. Для этого добавим в /etc/apt/sources.list строку:


deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu karmic main

Обновляем базу приложений:

sudo apt-get update

И устанавливаем сам браузер:

sudo apt-get install chromium-browser chromium-browser-inspector libv8-0

Вот и результат:



ноября 02, 2009

MediaCenter: Step 8 - Update 9.10

Случилось так, что дети "нечаянно" нажали reset при обновлении xubuntu на медиацентре. Как результат - обновилось все не в лучшем виде. Но, как говорится горе - не беда. Пришлось обновить все "с нуля".

Результаты радуют :)
  1. Автоматом определился пульт ДУ,
  2. Автоматом определилась звуковая карточка.

Осталось настроить разрешение монитора как описано здесь. И все :)

XBMC в этот раз установил из svn ppa.  Просто и постоянно свежая версия.

Жить становися проще, жить становится веселее :)

сентября 29, 2009

MediaCenter: Step 7 - Result

Вот тут кто-то спрашивал что у меня получилось и как работает. Так вот выкладываю скриншоты (слегка ужатые):

Видеотека - фильмы:




Видеотека - сериалы (горячо любимый Top Gear):



Видеотека - сериалы (не менее любимый Доктор Хауз):



Музыкальная библиотека:



Фотографии:



Погода в Минске :)



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

сентября 23, 2009

MediaCenter: Step 7 - Samba

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

bird@shuttle:~$ sudo apt-get install samba

Так как в своей домашней сети вредить некому, то просто прописываем в /etc/samba/smb.conf следующее:

security = share
unix charset = utf8
dos charset = cp1251
display charset = cp1251
guest ok = yes
guest account = nobody
[Public]
        comment = Public Folder
        path = /home/bird
        writeable = yes
        guest ok = yes
        create mask = 0666
        directory mask = 0777
        read only = no
Для того чтобы уже находящиеся там файлы были доступны обычным пользователям (привет жене :) пишем в консоли:

bird@shuttle:~$ sudo chmod -R a+w ./

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 кода.