20 апр. 2011 г.

Quick'n'dirty скрипт для fucking-great-advice.ru

Быстро сляпаный скрипт для получения рандомного совета с сервиса охуенных советов:
  1. #!/bin/sh
  2. advice=$(curl 'http://fucking-great-advice.ru/api/random' -s | sed -e 's/^{"\(..\)":"\(.*\)","\(....\)":"\(.*\)"}/\4/' | sed -e 's/&nbsp\;/ /g')
  3. /usr/bin/printf "$advice\n"

Используются только curl, sed и printf, которые, скорее всего, будут присутствовать в любом дистрибутиве.
Печаль в том, что иногда в советах встречаются html-теги и escape-последовательности, парсить которые было бы слишком накладно для скрипта подобного масштаба

15 апр. 2011 г.

Как обычно запоздалая, заметка из серии "Музыкальных Ништяков". И по просьбам трудящихся никакого пост-рока :)

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.

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