1 нояб. 2010 г.

Простое видеонаблюдение

Для Linux существует множество решений для видеонаблюдения, тот же Zoneminder, однако, большая их часть непригодня для использования среднестатистическим параноиком ввиду чрезмерной навороченности.

Совсем простое наблюдение можно организовать связкой fswebcam+cron+dropbox - это вполне очевидно и доступно каждому. Поэтому я решил сделать это при помощи связки motion+lighttpd±vloopback.

В чем, собственно, плюсы:
  • Возможность состряпать любой удобный веб-интерфейс
  • Можно смотреть mjpeg поток прямо в браузере
  • motion самостоятельно умеет делать скриншоты и/или видео при обнаружении движения
В качестве аппаратной части была взята веб-камера от A4Tech и допилена до инфракрасной в надежде, что потом будет сделана светодиодная ИК-подсветка.


Теперь о конфигах.
В конфиге Motion были изменены следующие опции:

#запуск motion демоном
daemon on
#мне не нужны автоматические снимки при обнаружении движения
output_normal off
#видеоролики тоже не нужны
ffmpeg_cap_new off
#время и дата перенесены в левую часть картинки
text_right
text_left %Y-%m-%d/n%T
#так текст лучше видно на маленьком экране мобильного телефона
text_double on


Конфиг Lighttpd совсем немного отличается от минимального:

#подключено несколько необходимых модулей
server.modules = ( "mod_auth", "mod_cgi", "mod_expire" )
#определены cgi которые нам нужны
cgi.assign = ( "nph-mjgrab" => "", "nph-mjprox" => "" )
#определено время устаревания для файлов
expire.url = ("index.htm" => "access plus 60 seconds", "index.2.htm" => "access plus 60 seconds" )
#настройки аутентификации
auth.debug = 0
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.lighttpd-passwd"
auth.require = ( "/" => ( "method"=>"digest", "realm"=>"auth req", "require"=>"valid-user" ) )


Для генерации файла htdigest используется одноименная утилита из пакета apache-tools
# /usr/sbin/htdigest -c /etc/lighttpd/.lighttpd-passwd "auth req" username

Упомянутые выше cgi нужно скомпилять из пакета MjpegProxyGrab. При этом нужно руками поправить путь к директории cgi-bin в Makefile
bindir = /srv/http/www/cgi-bin
По необходимости поправить #define'ы в исходниках - указать адрес, порт и лимит камер.
Еще можно поменять размер буфера, особенно если используется картинка больше чем 320х240 - в файле nph-proxygrab.c найти
char chbuffer[40000] = "";
и заменить 40000 на, например, 100000.

make && make install

Осталось только сделать пригодный вывод этого счастья.
Я сделал две html'ки в одной из них есть строка:
<img src="/cgi-bin/nph-mjgrab?1" width=320 height=240>
с помощью которой отображается один текущий кадр с камеры;
В другом
<img src="/cgi-bin/nph-mjprox?1" width=320 height=240>
для вывода mjpeg потока, который можно смотреть в любом нормальном браузере, вроде Firefox'а.

Авторефреш по вкусу.

16 мая 2010 г.

Монохромный трей

Монохромный в смысле черно/белый, а не в смысле имени меня :)

Задумка была в том, чтобы сделать значки всех приложений в трее более/менее одинаковыми по стилю.
Здесь мы видим: Exaile, Kupfer, Pidgin и Dropbox. Наибольшую сложность, представляет именно последний, ибо его разработчики запрятали значки где-то в бинарных файлах.
Однако, в последней экспериментальной версии 0.8.55(x86 | x86_64) была реализована поддержка изменяемых значков, но только при использовании Indicator Applet.
Установить его можно из AUR'а, но следует иметь ввиду, что версии некоторых пакетов там устарели. И не прописаны некоторые зависимости, например vala.
После установки и добавления апплета нужно будет перезапустить dbus.

Для обеспечения одинакового расстояния между значками в notification-area и indicator applet'е можно воспользоваться способом, описанным на Хабре. Или скачать модифицированный PKGBUILD для gnome-panel 2.30.0 и пересобрать её.

Теперь можно заняться сменой значков.
Прежде всего стоит установить темой значков Elementary-monochrome. Именно на основе неё сделаны некоторые значки для Pidgin'а и Exaile.

Для Dropbox'a
Заменить значки в /opt/dropbox/icons или в ~/.dropbox-dist/icons значками из архива. 
Сделаны на основе вот этого.


Для Exaile
Распаковать в /usr/share/exaile/data/images . Да, это значки ритмбокса, лучше ничего не придумал :)

Для Pidgin'а
Положить файлы в /usr/share/pixmaps/pidgin/tray/hicolor/22x22/status

И, пожалуй, стоит сделать вот так:

echo /usr/share/applications/pidgin.desktop > ~/.config/indicators/messages/applications/pidgin

Дабы меню сообщений в indicator applet не пустовало.

Upd:
Я забыл про Transmission.
Надо скачать этот значок, и положить его в /usr/share/icons/elementary-monochrome/status/24

11 мая 2010 г.

Значки стандартных директорий в GNOME

Меня давно интересовало почему во всяких убунтах для директорий "Музыка", "Документы" etc используются няшные значки, отображающие их суть, а у меня в арче обычные унылые значки папок.

А всего то надо было поставить пакет xdg-user-dirs и немного поправить файл ~/.config/user-dirs.dirs чтобы он выглядел примерно так:

XDG_DESKTOP_DIR="$HOME/Рабочий стол"
XDG_DOWNLOAD_DIR="$HOME/Загрузки"
XDG_TEMPLATES_DIR="$HOME/Шаблоны"
XDG_PUBLICSHARE_DIR="$HOME/Общедоступные"
XDG_DOCUMENTS_DIR="$HOME/Документы"
XDG_MUSIC_DIR="$HOME/Музыка"
XDG_PICTURES_DIR="$HOME/Картинки"
XDG_VIDEOS_DIR="$HOME/Видео"

19 апр. 2010 г.

Вот сижу, довожу до ума музыкальную коллекцию и кое-где встречаю такие комментарии:

† Infernal-Death † collection
Vik Mefisto collection
Demon37's collection
и [N]ormand collection.

Собственно выражаю благодарность сим людям, благодаря которым в эпоху тугих и дорогих интернетов моя музыкальная коллекция пополнялась.

30 мар. 2010 г.

Школьный линукс

Сегодняшнее происшествие, произошедшее во время установки школьного линукса в одном детском саду, заставило меня усомниться в адекватности и умственных способностях его создателей.

Началось всё с того, что я обнаружил неспособность инсталлера сделать шринк существующего NTFS раздела с виндой – "Ошибка операции". Без каких либо дополнительных сведений. Вполне себев духе винды.

Перезагрузившись, я таки сделал шринк сторонней утилитой, однако имел неосторожность оставить свою флэшку в разъёме.


Выбрав в инстеллере пункт "Использовать свободное пространство", я откинулся на спинку кресла и ждал окончания установки, которая, под конец копирования пакетов встала.
Протер диск, выдернул флэшку и уже вручную создав разделы установку я закончил.

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

PS: Я еще не совсем дурак, и точно помню, что не мог сделать это сам. Тем более, что никогда не делаю своп равным по размеру ОЗУ, прибавляя к нему еще приблизительно четверть. Своп-раздел на флэшке ровно один гигабайт, то есть по размеру ОЗУ.

9 февр. 2010 г.

Intel C++ Compiler в Archlinux

Несколько дней назад на хабре была статья как использовать ICC в gentoo. Все основные сведения, о том что это и для чего это нужно, можно узнать из неё, я лишь обобщу некоторые нюансы установки и использования ICC в арче.

Поставить его можно из AUR'a, однако на архитектуре x86_64 пакет не собрался из-за ошибки(?) в скрипте инсталлятора - неправильного определения архитектуры для бинарика распаковывающего rpm файлы.
Так что проще будет скачать модифицированный PKGBUILD.

Также в логе инсталлятора встречается ругань на слишком длинный серийный номер. Не знаю насколько это плохо, но файл лицензии я переименовал из NCOM_L_CMP__XXX-XXXXXXXX.lic просто в XXX-XXXXXXXX.lic.

Дальше сборка должна пройти без каких либо происшествий.
Кстати, скачать придется 767 мегабайт.


Следующим шагом предстоит настроить использование ICC в makepkg. Можно скачать патчи отсюда, а можно взять уже пропатченный скрипт и заменить им имеющийся в /usr/bin.

Пакеты собираемые с помощью ICC должны быть указаны в файле /etc/packages.icc просто как:
tar
python
mplayer-vdpau-nogui
gnome-mplayer-svn


Особые флаги компилятора сборки для пакетов указываются в /etc/packages.icc-cflags:
tar -O2 -xP -ip
python -O3 -xP -ip
mplayer-vdpau-nogui -O2 -xT -ip
gnome-mplayer-svn -O3 -xT -ip


Всё, можно качать pkgbuild'ы с aur'а и компилять.

Пока у меня собраны и нормально работают только указанные выше пакеты. Bzip2 и gzip не собираются, libarchive и sqlite3 собираются и работают, но рушат некоторые важные службы и программы вроде pacman'a и sshd.

Вообще лучше собирать те программы которые не потребуется пускать от рута.

Конкретных данных о приросте производительности привести не могу, но точно могу сказать, что видео в mplayer'е при снятии с паузы стало подтормаживать значительно меньше.

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

PPS: однако надо еще попробовать флаг -march=native для gcc, утверждается что будет не хуже чем icc.

UPD от 11.02.2010:
Так и знал, что что-то забуду..
Нужно ведь еще добавить icc к списку BUILDENV в /etc/makepkg.conf
Например:
BUILDENV=(icc fakeroot !distcc color !ccache)

23 янв. 2010 г.

Desperation ptso

Попалась мне на глаза одна статейка..
Если вкратце:

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

Для него в Лондоне подходящих девушек всего 0,14% или 0,017% во всем Объединенном Королевстве.

Собственно формула: G = N* ⋅ fW ⋅ fL ⋅ fA ⋅ fU ⋅ fB

Где:
N* - Население страны;
fW - женщин от населения;
fL - женщин от населения живущих в Лондоне;
fA - женщин от населения живущих в Лондоне подходящих по возрасту;
fU - женщин от населения живущих в Лондоне подходящих по возрасту и с высшим образованием;
fB - женщин от населения живущих в Лондоне подходящих по возрасту и с высшим образованием внешне привлекательных;

Подставив в формулу, наскоро найденные, статистические данные, получилось следующее:
G = 142.000.000 ⋅ 0,55 ⋅ 1 ⋅ 0,1 ⋅ 0,2 ⋅ 0,055 = 85.910

Вроде бы не так уж плохо?

Но стоит добавить дополнительные параметры, например:

fS - свободные (половина)
fma - те, что найдут меня привлекательным (1/25)
fga - и те, с кем я смогу поладить (1/10)

Все это сокращает количество подходящих девушек до 214.

Таким образом, шанс того, что я, выйдя на улицу ВНЕЗАПНО обнаружу разумную внеземную цивилизацию гораздо выше, чем шанс ВНЕЗАПНО обнаружить разумную земную девушку :)

22 янв. 2010 г.

Управляем окнами почти как в б-гомерзкой Windows 7

Я знаю что это не труэ и всё такое, но мне нравится как сделано прилипание окон к левому/правому краям экрана с одновременным их ресайзом до половины десктопа, как это сделано в 7й винде.

И сделал тут набор костылей к, теоритически, любому оконному менеджеру в линуксе.

Понадобится установить пакеты wmctrl и xbindkeys;

В конфиг ~/.xbindkeysrc вписать следующее:


"wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e '0,0,0,632,1000'"
  Mod2 + Mod4 + Left


"wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e '0,640,0,632,1000'"
  Mod2 + Mod4 + Right


Значения справедливы для разрешения экрана 1280х1024. Для других разрешений, и что самое смешное, других тем декоратора окон, их нужно будет поправить.