пятница, 28 мая 2010 г.

Погода в Conky

Обычно настройка погоды в Conky делается через ConkyForecast, но у меня был полный провал на этом пути. Я совершенно случайно нашел другой вариант. Погоду можно получать в виде xml-документа. Затем обрабатывать в командной строке, т.е. в bash, и выводить на десктоп. На сайте TreadStates я нашел ссылку на архив с bash-сценарием и xslt-документом, с помощью которого xml-информация превращается в читаемый человеком вид. Но погода с xoap.weather.com мне не подходит. Xml-документ можно получать с других сайтов. А именно с GISMETEO.RU. Сайт погодовещателя выводит информеры как сервис и примочку для вебмастеров и сайтовладельцев. Там представлены как простые баннеры с цифрами и картинками или флеш баннеры, так и ссылка на xml-документ с погодой для продвынутых вебмастеров (Не считаю себя продвинутым).
В сценарии были прописаны команды и файлы которые следует использовать для получения погоды. Я немного модифицировал его. Выглядит он следующим образом:
#!/bin/sh
RUNDIR=/home/borilav/bin/
CURLCMD=/usr/bin/curl
XSLTCMD=/usr/bin/xsltproc
CURLURL="http://informer.gismeteo.ru/xml/27612_1.xml"
XSLT=/home/borislav/bin/gis1.xsl
#####
eval "$CURLCMD \"$CURLURL\" 2>/dev/null | $XSLTCMD $XSLT"


В качестве шаблона для xml с гисметео используется gis.xsl. Признаюсь над ним пришлось потрудиться. В статье я нашел способ обработки (это оказывается называется "парсинг") xml от гисметео. Там описали способ представления для html-документа. Я адаптировал его для текстового формата. Выглядит вот так.

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns=">http://www.w3.org/1999/xhtml">
<xsl:output method="text" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<!--Шаблон, преобразующий порядковый номер месяца в его текстовое представление-->
<xsl:template name="hour-abbreviation">
<xsl:param name="hour"/>
<xsl:choose>
<xsl:when test="$hour = 03">ночь</xsl:when>
<xsl:when test="$hour = 09">утро</xsl:when>
<xsl:when test="$hour = 15">день</xsl:when>
<xsl:when test="$hour = 21">вечер</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--Шаблон, показывающий текстовое представление облачности-->
<xsl:template name="get-cloudiness">
<xsl:param name="cloudiness"/>
<xsl:choose>
<xsl:when test="$cloudiness = 0">ясно</xsl:when>
<xsl:when test="$cloudiness = 1">малооблачно</xsl:when>
<xsl:when test="$cloudiness = 2">облачно</xsl:when>
<xsl:when test="$cloudiness = 3">пасмурно</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--Шаблон, показывающий текстовое представление атмосферных явлений-->
<xsl:template name="get-precipitation">
<xsl:param name="precipitation"/>
<xsl:choose>
<xsl:when test="$precipitation = 4">дождь</xsl:when>
<xsl:when test="$precipitation = 5">ливень</xsl:when>
<xsl:when test="$precipitation = 6">снег</xsl:when>
<xsl:when test="$precipitation = 7">снег</xsl:when>
<xsl:when test="$precipitation = 8">гроза</xsl:when>
<xsl:when test="$precipitation = 10">без осадков</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--Шаблон, отображающий атмосферные явления-->
<xsl:template match="PHENOMENA">
<xsl:call-template name="get-cloudiness"> <xsl:with-param name="cloudiness" select="@cloudiness" /></xsl:call-template>, <xsl:call-template name="get-precipitation"><xsl:with-param name="precipitation" select="@precipitation" /> </xsl:call-template>
</xsl:template>
<!--Шаблон, отображающий температуру-->
<xsl:template match="TEMPERATURE">
<xsl:value-of select="@min"/>..<xsl:value-of select="@max"/> °C
</xsl:template>
<xsl:template match="RELWET">
<xsl:value-of select="@min"/>..<xsl:value-of select="@max"/> %
</xsl:template>
<xsl:template match="PRESSURE">
<xsl:value-of select="@min"/>..<xsl:value-of select="@max"/> мм рт.ст.
</xsl:template>
<!--Корневой шаблн результирующей страницы-->
<xsl:template match="/">
<!--Здесь мы выбираем только самый первый(ближайший) прогноз под номером 1 -->
<xsl:apply-templates select="MMWEATHER/*/TOWN/FORECAST[1]"/>
<xsl:apply-templates select="MMWEATHER/*/TOWN/FORECAST[2]"/>
<xsl:apply-templates select="MMWEATHER/*/TOWN/FORECAST[3]"/>
<xsl:apply-templates select="MMWEATHER/*/TOWN/FORECAST[4]"/>
</xsl:template>
<!--Базовый шаблон, отображающий информер-->
<xsl:template match="MMWEATHER/*/TOWN/FORECAST">
<xsl:apply-templates select="TEMPERATURE"/>
<xsl:apply-templates select="RELWET"/>
<xsl:apply-templates select="PRESSURE"/>
<xsl:apply-templates select="PHENOMENA"/>
</xsl:template>
</xsl:stylesheet>



Далее в файл настроек Conky вставляется строка.

${execpi 60 /home/borislav/bin/gis.sh}


Но не все гладко и точно работает, потому что я не знаю почему и как нужно исправить во всем этом коде для нормального отбражения.
Получилось сделать, чтобы не было кривизны это разбить эту массу цифр и букофф на четыре файла, каждый обращается в гисметео и получает погоду. Потом обращается к своему шаблону xsl и выводит погоду для своего прописанного времени суток (благо у гисметео погода приведена на 3 часа ночи, 9 - утра, 15 - дня и 21 - вечера). В conky-мониторе кривизна вывода компенсируется приставками и надстройками.

$alignc GISMETEO.RU

${color #7E0000} Ночь${color}
${execpi 60 /home/borislav/bin/gis.sh}

${color #7E0000} Утро${color}
${execpi 60 /home/borislav/bin/gis2.sh}

${color #7E0000} День${color}
${execpi 60 /home/borislav/bin/gis3.sh}

${color #7E0000} Вечер${color}
${execpi 60 /home/borislav/bin/gis4.sh}





Вот такая вот погода.

четверг, 27 мая 2010 г.

Conky

Первый вариант



Содержимое конфигурационного файла .conkyrc
# conky configuration
#
##############################################
# Settings
##############################################
background yes
use_xft yes
xftfont Sans:size=16
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
own_window_type desktop
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 400 200
maximum_width 200
draw_shades yes
draw_outline no
draw_borders no
draw_graph_borders no
default_color C7C7C7
default_shade_color black
default_outline_color
alignment top_right
gap_x 12
gap_y 12
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale no
##############################################
# Output
##############################################
TEXT
$nodename
$uptime
$cpu%
$mem/$memmax
${fs_used /}/${fs_size /}
$processes/$running_processes

${font Sans:size=40}${time %H h.}${font}
${font Sans:size=40}${time %M min.}${font}
${voffset 2}${time %A
%d %B %Y}
${font Sans:size=10}Alt+F2$alignr Run Dialog
Alt+F3$alignr Alt Menu
Super+space$alignr Main Menu
Super+tab$alignr Client Menu
Super+t$alignr Terminal
Super+f$alignr File Manager
Super+e$alignr Editor
Super+m$alignr Media Player
Super+w$alignr Web Browser
Super+g$alignr Graphics Editor
Super+c$alignr Clock
Super+l$alignr Lock Screen
Super+v$alignr Volume Control
Super+u$alignr System Update
Super+x$alignr Logout
PrtSc$alignr Screenshot${font}



Второй вариант



Содержимое конфигурационного файла .conkyrc
background yes
font Snap.se:size=8
xftfont Snap.se:size=8
use_xft yes
xftalpha 0.1
update_interval 1.0
total_run_times 0
own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
minimum_size 240 50
maximum_width 240
default_color ffffff
default_shade_color 000000
default_outline_color 000000
alignment top_right
gap_x 3
gap_y 3
no_buffers yes
cpu_avg_samples 2
override_utf8_locale yes
uppercase no # set to yes if you want all text to be in uppercase
use_spacer none
TEXT
${font Sans:size=40}${time %H:%M:%S}${font}
$alignc${voffset 2}${time %A %d %B %Y}
${color}${font Mono:bold:size=10}${execpi 60 DJS=`date +%_d`; cal | sed '1d' | sed '/./!d' | sed 's/$/ /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${alignc} /' | sed /" $DJS "/s/" $DJS "/" "'${color2}'"$DJS"'${color}'" "/}
Host: $alignr$nodename
Kernel: $alignr$kernel
Uptime: $alignr$uptime
Processes: ${alignr}$processes ($running_processes running)
Load: ${alignr}$loadavg
${hr 2}
Interface: $alignr ${gw_iface}
IP address: $alignr ${addr eth0}
Mask: $alignr ${execi 1 /sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $4}' | sed 's/Mask:/\ /'}
Gateway: $alignr ${gw_ip}
Downloaded: $alignr ${totaldown eth0}
Uploaded: $alignr ${totalup eth0}
${hr 2}
Download Speed: ${alignr}${downspeedf eth0} k/s
${downspeedgraph eth0 20,240}
Upload Speed: ${alignr}${upspeedf eth0} k/s
${upspeedgraph eth0 20,240}
${hr 2}
CPU Freq $alignr${freq_g} GHz
${cpugraph cpu0 20,240}
${hr 2}
Alt+F2$alignr Run Dialog
Alt+F3$alignr Alt Menu
Super+space$alignr Main Menu
Super+tab$alignr Client Menu
Super+t$alignr Terminal
Super+f$alignr File Manager
Super+e$alignr Editor
Super+m$alignr Media Player
Super+w$alignr Web Browser
Super+g$alignr Graphics Editor
Super+c$alignr Clock
Super+l$alignr Lock Screen
Super+v$alignr Volume Control
Super+u$alignr System Update
Super+x$alignr Logout

воскресенье, 9 мая 2010 г.

Агора - площадь гибели цивиллизации

Агора - потрясающий и интересный исторический фильм, который можно посмотреть как одному, так и вместе с друзьями. В Агоре снималась очень талантливая актриса Рейчел Вайс, известная по "Мумиям". Однако, против своей историчности фильм изобилует моментами из американских фильмов.
Преподаватель философии Гиппатия общается с учениками как Девид Гейл в своей "Смерти". На театральной сцене отчаявшийся поклонник дает экспромт-концерт для своей возлюбленной, как это делает Хит Леджер в "Десяти причинах моей ненависти" для обиженной девушки. Сама гиппатия ведет себя как доктор Хаус, если ей в голову приходит удачная мысль она забывает о собеседнике и убегает в кабинет и занимается загадкой, которая красной линией проходит через весь весь фильм.
Не малую часть фильма занимает проблема ранних христиан. То как они пришли к власти и как насаждали свою религию. Брали к себе серых да убогих, коих много. С начала они отобрали здание библиотеки у языческих ученых. Затем стали требовать больше власти. В конце концов прикрываясь священным писанием, спасающим от личной ответственности, потребовали отстранения от политической деятельности единственной женщины способной думать.
Христиане выглядят как стая зверей.
Все знают, что это не единственный пример. Движимые своим пастырем, который желает власти и злата, христиане насилием, огнем и мечом создают истинно христианский город. Но живых свидетелей нет и сказать о том что там было некому.
А что такое христианство вообще. Это хорошая попса. А народ любит попсу. Тезисы Христа говорил еще Конфуций, Зороастр, Будда. Но понимали их только просвященные. Чтобы до народа дошел глас божий, нужно упростить логику повествования. Еще нужно чтобы с самого рождения человек был в чем-то виноват. И всю свою жизнь посвятил покаянию. И соответственно ради этого делал все что ему скажут не из под палки. Как в "Книге Элая", библия нужна чтобы собрать людей в какую-то управляемую группу.
Вспоминается толи Зороастр, толи другой мудрец, который придумал 10 основных заповедей и унитарные религии по заказу своего царя. А именно, заказ выглядел как самомотивированная работа подданных на царя. И все это для того, чтобы можно было управлять дураками. [1]
Еще вспоминается Хасан ибн Сабах и его правление, которое практиковало религиознй нигилизм. Тогда как сами ассасины были глубоко верующими и одурманенными людьми. [2]
Грустная правда фильма в том, что умных людей мало. И почему их становится меньше. Глупые хотят есть и жить, а это возможно засчет конфискации у умных. Не напоминают ли действия христиан - действия революционеров. Как они вели себя в Александрийской библиотеке? "Мы старый мир разрушим, мы новый мир построим!" Очень напоминают. А сама Гиппатия? Была вся такая интеллигентная учительша, но тут пришли революционеры и стала она просто ведьмой. "Умная женщина не может быть тенью мужчины."
Но как она вывела на песке с помощью палки и веревки закон Кеплера! Потрясающе!

среда, 5 мая 2010 г.

Хлоя

Хлоя - это фильм Атома Эгояна.
Вроде бы создан по мотивам фильма "Натали". Зная, что у французов "Танго во тьме" получилось лучше, чем воссозданный по нему "Соблазн", я решил посмотреть сначала "Натали", а потом саму "Хлою".
Однако, меня не особо заинтересовало французское. Не легла душа к нему. Позже посмотрел Хлою и мне понравилось.
Стареющая женщина перестает интересовать своего мужа, флиртующего со студентками, теряет участие в жизни взрослеющего сына, который водит домой подружку и ночует с ней. Каждое утро эта женщина видит из окна молодую и красивую Хлою, знакомится с ней, устраивает сделку на соблазнение своего мужа и полный отчет об этом. Хлоя видимо сипатизирует ей почему и соглашается. Но вместо соблазнения мужа она занимается психоанализом своей клиентки, что естественно приводит к горизонтальному лесбийскому положению. Неожиданно для Хлои ее отвергают и просят больше не беспокоить семью. На что та соблазняет уже сына клиентки. Но мать и жена ловит Хлою с поличным и та погибает при несчастном случае.
Смотреть "Хлою" мне тоже не хотелось, но несколько дней назад карты сами легли удачным образом. Я проникся и не мог отлипнуть от экрана. Привлекательная Аманда Сейфрид оказалась в моем вкусе, большие глаза и пухлые губы, светлые и немного рыже волосы, - из-за нее то я и задержался.
Хлою можно рассматривать как борьбу в душе героини. Она чувствует себя 19-летней, но в зеркале видит непривлекательную старуху. Хлоя - альтер эго. И та, и другая пользуются одним лосьоном для тела, носят одинаковую булавку для волос. И, как мне показалось, имеют схожие черты во внешности. Если одна собирает волосы в узел, то другая наборот распускает их. Так и происходит превращение из клиентки в Хлою и обратно. Главное, что булавку для волос Хлоя несколько раз предлагала в подарок своей клиентке-подруге, но та отказывалась и все равно в ее доме возле зеркала на комоде лежит эта булавка. Как она туда попала? Сидя верхом на соблазненном мальчишке, Хлоя смотрит на чужие и так родные ей вещи и одежду, а не на любовника. Персонажи отождествляют себя друг с другом до такой степени, что не могут обойтись одной связью через мужчину, им нужна сама постель. И только лишь, когда Хлоя и неХлоя, держа друг друга в объятиях, как одно целое, предстают перед фактом инцеста, неХлоя отталкивает от себя альтер эго и оно погибает, выпав из окна. НеХлоя остается с мужем и сыном и булавкой в прическе.