Командировка, ремонт, уфф...
Просмотрел сегодня плафоновый мафон, подумалось, что аум синрике не туда пустило свой газ. Не в смысле убийства, но просто, с эстетической точки зрения, морг заваленный стразами - это круто :)
воскресенье, 12 июля 2009 г.
понедельник, 25 мая 2009 г.
Я - фанат Google
Да, я активно пользуюсь всеми сервисами Google. Можно сказать, что в Google мне нравится все. Хочу там работать. Google - возьми меня к себе на работу, хоть внештатником. Жду не дождусь Chrome во всех своих дистрибутивах. Судя по всему, и меня заметили, так как выросли размеры рекламы на моем скромном ресурсе, а в реальный почтовый ящичек пришло даже целое рекламное письмо. Но я не отчаиваюсь, и жду, что в один прекрасный день Google заметит меня и сделает предложение, от которого невозможно отказаться.
P.S. У блоггеров почему-то принято в начале каждого поста ни о чем раз в 6 месяцев писать про свою страшную занятость, про то, что впредь они будут писать и писать, и т.п. и т.д. Люди просто думают, что на них свет клином сошелся, какая разница, пишете, не пишете, если приходится себя заставлять, наверно не надо. По мне, так иногда хочется писать, иногда нет. И все. Поэтому никакого расписания постов нет, может быть как сегодня, а может - и раз в год/другой :)
P.S. У блоггеров почему-то принято в начале каждого поста ни о чем раз в 6 месяцев писать про свою страшную занятость, про то, что впредь они будут писать и писать, и т.п. и т.д. Люди просто думают, что на них свет клином сошелся, какая разница, пишете, не пишете, если приходится себя заставлять, наверно не надо. По мне, так иногда хочется писать, иногда нет. И все. Поэтому никакого расписания постов нет, может быть как сегодня, а может - и раз в год/другой :)
Серые мыши, сидите потише
Милиция в последнее время радует нас заголовками:
- майор устроил бойню в супермаркете
- милиционер отрезал голову за 60 рублей
- милиционер сбил насмерть беременную женщину и скрылся с места проишествия
- пьяные милиционеры пытали и пытались утопить мужчину "потому что лысый"
- омоновец, угрожая оружием, угнал машину на мкад
Было и еще, всего не упомнишь. Вывод только один: гражданин должен соблюдать закон, а если он его не соблюдает, его место - в тюрьме, либо, за пределами общества. Если же те, кто закон соблюдать должны по определению, его в особо циничной форме нарушают, значит они не могут считаться его представителями. Собственно. всегда всю свою жизнь боюсь милиции больше, чем преступников, именно по той причине, что вполне законопослушен. Эти деятели считают, что им закон преступать просто таки на роду написано, поэтому если видишь, что кто-то делает что-то непотребное - 90%, что это либо миллиционер, либо, лицо с милицией аффилированое ("да я сейчас буду звонить своему другу-"грушнику" (фсбшнику, фсошнику, по обстоятельствам)).
- майор устроил бойню в супермаркете
- милиционер отрезал голову за 60 рублей
- милиционер сбил насмерть беременную женщину и скрылся с места проишествия
- пьяные милиционеры пытали и пытались утопить мужчину "потому что лысый"
- омоновец, угрожая оружием, угнал машину на мкад
Было и еще, всего не упомнишь. Вывод только один: гражданин должен соблюдать закон, а если он его не соблюдает, его место - в тюрьме, либо, за пределами общества. Если же те, кто закон соблюдать должны по определению, его в особо циничной форме нарушают, значит они не могут считаться его представителями. Собственно. всегда всю свою жизнь боюсь милиции больше, чем преступников, именно по той причине, что вполне законопослушен. Эти деятели считают, что им закон преступать просто таки на роду написано, поэтому если видишь, что кто-то делает что-то непотребное - 90%, что это либо миллиционер, либо, лицо с милицией аффилированое ("да я сейчас буду звонить своему другу-"грушнику" (фсбшнику, фсошнику, по обстоятельствам)).
GnuCash - лечим получение котировок валют.
С недавних пор (где-то с 12 мая) мой любимый gnucash перестал получать котировки валют. Как всегда программный отказ удачно совпал с сильными колебаниями на валютном рынке, но мои активы вполне себе спокойно поживали, что меня удивило, но с некоторым запозданием.
Все это конечно ужасно, но поправимо. Меня всегда удивляли люди, которые ругали опенсурс за ошибки. Увидел ошибку - докажи, что сам чего-то стоишь: поправь ее. Ну или баг-репорт отправь.
Итак, как вылечить gnucash? Ответ как всегда в модуле Finance::Quote. Надо его немного поправить.
Ищем, куда спрятался Quote.pm в нашей локальной инсталяции (мы же не будем править то, что ставим дистрибутивом):
Правим его. Тут особых подробностей не напишу, кроме того, что освоил debug perl под emacs (M+x perldb). Сами авторы дают резервный вариант для получения котировок валют, но почему-то, чтобы им воспользоваться, приходится попрограммировать. Я для вас поставлю свой вариант исправления, который работает у меня. В upstream пока погожу слать, подожду версии 1.17 Finance::Quote. Ну а если вдруг кому пригодится, то смотрите, как я поправил.
Ищем оригинал (каюсь, не сделал бэкапа, поэтому сравниваем с тем, что идет в дистрибутиве):
Сравниваем:
Данное решение считаю костылем, жду 1.17 с исправлением досадной ошибочки, или 1.16.1. Надеюсь, костыль не будет передаваться из рук в руки, и пригодится только мне :)
Все это конечно ужасно, но поправимо. Меня всегда удивляли люди, которые ругали опенсурс за ошибки. Увидел ошибку - докажи, что сам чего-то стоишь: поправь ее. Ну или баг-репорт отправь.
Итак, как вылечить gnucash? Ответ как всегда в модуле Finance::Quote. Надо его немного поправить.
Ищем, куда спрятался Quote.pm в нашей локальной инсталяции (мы же не будем править то, что ставим дистрибутивом):
kilork@phoenix ~ $ find ~/perl -name Quote.pm
/home/kilork/perl/lib64/perl5/site_perl/5.8.8/Finance/Quote.pm
Правим его. Тут особых подробностей не напишу, кроме того, что освоил debug perl под emacs (M+x perldb). Сами авторы дают резервный вариант для получения котировок валют, но почему-то, чтобы им воспользоваться, приходится попрограммировать. Я для вас поставлю свой вариант исправления, который работает у меня. В upstream пока погожу слать, подожду версии 1.17 Finance::Quote. Ну а если вдруг кому пригодится, то смотрите, как я поправил.
Ищем оригинал (каюсь, не сделал бэкапа, поэтому сравниваем с тем, что идет в дистрибутиве):
phoenix kilork # equery f Finance-Quote | grep Quote.pm
/usr/lib64/perl5/vendor_perl/5.8.8/Finance/Quote.pm
Сравниваем:
kilork@phoenix ~ $ diff -u {/usr/lib64/perl5/vendor,/home/kilork/perl/lib64/perl5/site}_perl/5.8.8/Finance/Quote.pm
--- /usr/lib64/perl5/vendor_perl/5.8.8/Finance/Quote.pm 2009-05-23 23:26:49.000000000 +0400
+++ /home/kilork/perl/lib64/perl5/site_perl/5.8.8/Finance/Quote.pm 2009-05-25 00:56:28.000000000 +0400
@@ -42,9 +42,9 @@
$VERSION $TIMEOUT %MODULES %METHODS $AUTOLOAD
$YAHOO_CURRENCY_URL $USE_EXPERIMENTAL_UA/;
-$YAHOO_CURRENCY_URL = "http://uk.finance.yahoo.com/currency/convert?amt=1&submit=Convert&";
+#$YAHOO_CURRENCY_URL = "http://uk.finance.yahoo.com/currency/convert?amt=1&submit=Convert&";
# If the above URL ever fails, try rewriting this module to use the URL below.
-# $YAHOO_CURRENCY_URL = "http://uk.finance.yahoo.com/q?s=USDCAD%3DX";
+$YAHOO_CURRENCY_URL = "http://uk.finance.yahoo.com/q?s=";# USDCAD%3DX";
@ISA = qw/Exporter/;
@EXPORT = ();
@@ -241,16 +241,11 @@
my $ua = $this->user_agent;
- my $data = $ua->request(GET "${YAHOO_CURRENCY_URL}from=$from&to=$to")->content;
- my $te = HTML::TableExtract->new( headers => ['Symbol', 'Bid', 'Ask'] );
- $te->parse(decode_utf8($data)); # The web page returns utf8 content which gives
- # a warning when parsing $data in HTML::Parser
-
- # Make sure there's a table to parse.
- return undef unless ($te->tables);
-
- my $row = ($te->rows())[0];
- my ($exchange_rate) = $$row[1];
+ my $data = $ua->request(GET "${YAHOO_CURRENCY_URL}$from${to}%3DX")->content;
+ if($data !~ /Bid:.+>(\d+.\d+)<.+Ask:/g) {
+ return undef;
+ }
+ my $exchange_rate = $1;
$exchange_rate =~ s/,// ; # solve a bug when conversion rate
# involves thousands. yahoo inserts
# a comma when thousands occur
Данное решение считаю костылем, жду 1.17 с исправлением досадной ошибочки, или 1.16.1. Надеюсь, костыль не будет передаваться из рук в руки, и пригодится только мне :)
понедельник, 27 апреля 2009 г.
Москва отжигает
Выходные выдались для столицы на редкость интересными.
Гости столицы собираются в автоколонны и паля из огнестрела колесят по Садовому. Где же милиция, спросите Вы? А милиция в это время интенсивно пьет, чтобы затем прогуляться до супермаркета, и там устроить небольшой постал. Правда, в отличие от нормальных постальщиков, эти идут на дело совершенно неподготовленными, да и себя пристрелить не в силах.
Честно говоря, я с ними совершенно со всеми согласен, дали бы мне огнестрел, уже давно бы пошел зачищать улицы. Начинаю подумывать о службе в милиции. Внештатником. Только пушку дайте, а уж бухать и стрелять во всех попало, это я легко :)
А про гостей столицы тоже все понятно, житель столицы должен иметь лицензию на охотничье оружие, и в случае появления горных баранов в столь непривычном месте, немедленно прибивать себе новенькую трофейную баранью башку на стену. Ну или на столбах их на 101 километре выставлять, как это было принято у первобытных племен. Так бы бараны все же выбрали бы себе другой ареал. Притом очевидно, что ассоциировать себя с баранами сможет именно правильная категория живых существ, так что все будет очень правильно действовать.
Единственное, в чем сложность, это в том, чтобы отделить людей от животных законодательно, т.е. нужны какие то общие признаки, которыми обладают как горные бараны, так и майоры милиции, эти признаки должны быть закреплены в законах. Притом пока красную книгу можно даже не трогать, угрозы вымирания для этих видов нет.
Гости столицы собираются в автоколонны и паля из огнестрела колесят по Садовому. Где же милиция, спросите Вы? А милиция в это время интенсивно пьет, чтобы затем прогуляться до супермаркета, и там устроить небольшой постал. Правда, в отличие от нормальных постальщиков, эти идут на дело совершенно неподготовленными, да и себя пристрелить не в силах.
Честно говоря, я с ними совершенно со всеми согласен, дали бы мне огнестрел, уже давно бы пошел зачищать улицы. Начинаю подумывать о службе в милиции. Внештатником. Только пушку дайте, а уж бухать и стрелять во всех попало, это я легко :)
А про гостей столицы тоже все понятно, житель столицы должен иметь лицензию на охотничье оружие, и в случае появления горных баранов в столь непривычном месте, немедленно прибивать себе новенькую трофейную баранью башку на стену. Ну или на столбах их на 101 километре выставлять, как это было принято у первобытных племен. Так бы бараны все же выбрали бы себе другой ареал. Притом очевидно, что ассоциировать себя с баранами сможет именно правильная категория живых существ, так что все будет очень правильно действовать.
Единственное, в чем сложность, это в том, чтобы отделить людей от животных законодательно, т.е. нужны какие то общие признаки, которыми обладают как горные бараны, так и майоры милиции, эти признаки должны быть закреплены в законах. Притом пока красную книгу можно даже не трогать, угрозы вымирания для этих видов нет.
воскресенье, 19 апреля 2009 г.
Религия
Приходит светлый праздник Пасхи. Но все же я никогда не смогу понять верующих, за что они так превозносят своего Бога? Можно очень долго это расписывать, но строго говоря, заслуги просто напросто невелики. Как это может оправдать всю ту боль, мучения, и ложь, которую несут его официальные представители, мне совершенно непонятно. Я даже не против веры в высшие силы, но против воздвижения алтарей и власти веры над людьми. Только мир людей может породить такой вид паразитов.
Всех действительно верующих прошу воспринимать мою ересь как бред заблудшего еретика, продолжайте блеять в своем просветленном стаде.
P.S. Тут решил что-то вроде опроса среди своих провести, кто из верующих в Бога верит также и в инопланетян (в том смысле, что они регулярно посещают всех подряд), и если да, то в какого Бога верят эти инопланетяне, если в того же, то сколько таких миров, ну и так далее...
Всех действительно верующих прошу воспринимать мою ересь как бред заблудшего еретика, продолжайте блеять в своем просветленном стаде.
P.S. Тут решил что-то вроде опроса среди своих провести, кто из верующих в Бога верит также и в инопланетян (в том смысле, что они регулярно посещают всех подряд), и если да, то в какого Бога верят эти инопланетяне, если в того же, то сколько таких миров, ну и так далее...
вторник, 7 апреля 2009 г.
Работа с GnuCash. Часть 6. Получение котировок автоматически.
UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.
Я совершенно забыл рассказать о том, как организовал ежедневное получение котировок.
Собственно, все как всегда просто, если не требовать слишком много. Хотелось бы знать, какое число пользователей gnucash - пользователи Windows. А для пользователей unix-подобных систем вполне удобен способ с использованием cron.
Итак, для получения котировок для файлика $HOME/finans без запуска gui-клиента достаточно выполнить следующую команду:
Кроме этого, нам надо бы загрузить требуемые переменные окружения, так как мы используем наши собственные модули получения котировок (Quote::Sberbank). Есть еще одна занятная особенность, связанная с установкой текущей локали: GnuCash получает котировки для той валюты, которая связана с текущей локалью. Особенность состоит в том, что при запуске cron эта переменная может оказаться и пустой. В итоге оформляем все это в виде небольшого скрипта:
Уже почти все, теперь вписываем вызов этого скрипта в crontab:
Таким образом, каждый день в 23:55 мы будем получать котировки и всегда будем видеть актуальное состояние наших активов без лишних телодвижений.
Я совершенно забыл рассказать о том, как организовал ежедневное получение котировок.
Собственно, все как всегда просто, если не требовать слишком много. Хотелось бы знать, какое число пользователей gnucash - пользователи Windows. А для пользователей unix-подобных систем вполне удобен способ с использованием cron.
Итак, для получения котировок для файлика $HOME/finans без запуска gui-клиента достаточно выполнить следующую команду:
gnucash --add-price-quotes $HOME/finans
Кроме этого, нам надо бы загрузить требуемые переменные окружения, так как мы используем наши собственные модули получения котировок (Quote::Sberbank). Есть еще одна занятная особенность, связанная с установкой текущей локали: GnuCash получает котировки для той валюты, которая связана с текущей локалью. Особенность состоит в том, что при запуске cron эта переменная может оказаться и пустой. В итоге оформляем все это в виде небольшого скрипта:
kilork@phoenix ~ $ cat gnucash_fetch.sh #!/bin/bash if [ -z "$PERL5LIB" ] then PERL5LIB=~/perl/lib64/perl5/site_perl/5.8.8 else PERL5LIB=$PERL5LIB:~/perl/lib64/perl5/site_perl/5.8.8 fi MANPATH=$MANPATH:~/perl/share/man export PERL5LIB MANPATH export LANG="ru_RU.UTF-8" export LC_ALL="ru_RU.UTF-8" FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash --add-price-quotes $HOME/finans
Уже почти все, теперь вписываем вызов этого скрипта в crontab:
kilork@phoenix ~ $ crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.XXXXbHRdTU installed on Sat Jan 10 00:36:54 2009) # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) 55 23 * * * $HOME/gnucash_fetch.sh > $HOME/gnucash_fetch_log 2>&1
Таким образом, каждый день в 23:55 мы будем получать котировки и всегда будем видеть актуальное состояние наших активов без лишних телодвижений.
Подписаться на:
Сообщения (Atom)