понедельник, 21 декабря 2009 г.

SyntaxHighlighter

Решил подключить более правильную расцветку синтаксиса.



Подробности тут.

понедельник, 14 декабря 2009 г.

mozilla, bing и личные данные

Пообещал себе не писать на злобу дня, и естественно - сразу же написал. Mozilla видима начала осознавать, что firefox начинает терять аудиторию. И кто же ее забирает? Лучший друг и союзник, теперь уже видимо прошлый, т.е. злейший враг - google. И кто же у нас теперь мил? Ну конечно, microsoft. Все пользуемся bing.

Да, microsoft и bing - это верх демократии и заботы о личных данных. Попробовал естественно bing найти себя. И не смог. Он так заботится о моих личных данных, что даже на CPAN с трудом находит. А уж статьи учебника найти просто не получилось. Ну это конечно же только бета версия. В финальной версии и на CPAN не найдет.

Вообще, наличие таких дешевых шлюшек в стане mozilla заставляет задуматься.

воскресенье, 13 декабря 2009 г.

100

Небольшой юбилей у моего средства приближения власти роботов на Земле. Это 100-й пост.

Поэтому он собственно про это. Что произошло за эти 100 постов. Где-то 10% из них посвящены GnuCash, но именно они получают 90% внимания посетителей. Которых не так мало, так что считаю мой труд в этом направлении не напрасным, что-нибудь я бы все равно писал, а так - еще и кому-то может пригодиться. Дальнейшие планы я уже озвучивал, это систематизация, расширение географии, освоение новых способов донесения информации. Но это всего навсего 10% моего блога, а если взять меня самого, то даже и процента не набежит. Так что буду пробовать писать и о интересных мне вещах, не связанных с финансами, тем более в последнее время я стал снова много программировать. Что не может не радовать.

Забавная деталь, один из самых дешевых и неблагодарных способов повысить посещаемость - это писать о злободневном. Так, написал я про то, как накололся с МТС, и это интересно людям. Народ валит. Кликает на банеры. И может быть кому-то и эта информация полезна. Но, 90% больше ничего не читают, и в целом - просто портят статистику. Мне больше импонируют люди, которые проводят хотя бы 4 минуты на моих страничках, и просматривают хотя бы 2 страницы. Притом посты, которые привлекают таких посетителей - это наш реальный актив, так как со временем он не становится хуже. А вот писать на злобу дня - это все равно, что работать :) А этого нам совсем не надо, так как мы же стремимся к финансовой свободе в ближайшую пятилетку.

воскресенье, 6 декабря 2009 г.

Работа с GnuCash. Часть 7. Плановые проводки.

Один из первых вопросов, который возникает у человека после первого знакомства с gnucash, это - а как автоматизировать получение процентов по депозиту, начислений по кредиту, налоговых отчислений, платежей за квартиру и т.п.

Итак, представим себе простейший случай. Каждый месяц 6 числа мы платим 1000 рублей за обеспечение нас Интернетом. Допустим, что мы это делаем безупречно, или это делаем не мы. Но ровно 6 числа счет оплачен. Для отражения таких проводок в gnucash предназначен механизм плановых проводок. Выбираем меню Действия->Плановые проводки->Редактор плановых проводок. Появляется закладка "Плановые проводки".



Рис 7.1. Закладка "Плановые проводки".

Выбираем создание новой проводки. В наименование вводим "Платеж за Интернет". На закладках оставляем все по умолчанию. Идем на закладку "Шаблон проводки". Здесь мы вводим нашу проводку. Только вот вводим мы каждую часть проводки отдельно. Т.е. сначала вводим кредит счета наличных на сумму 1000 рублей, а затем - дебет счета услуг интернета на 1000 рублей. В итоге получаем следующую картину:



Рис 7.2. Вводим детали шаблона проводки.

Проводка введена. Пора бы попробовать ее исполнить, тем более, сегодня как раз еще нужное нам число. Выбираем Действия->Плановые проводки->С момента последнего запуска...



Рис 7.3. Список сформированных проводок.

Все достаточно просто.

Теперь, как можно это использовать дальше? Не для простейшего случая. Тоже начисление процентов по депозиту - достаточно сложная вещь. В расчете участвует как ставка рефинансирования, так и много других параметров, как срок нахождения средств на счету, средний или наименьший остаток средств и так далее. Да, еще выходные дни, их тоже надо учитывать. Вообщем, я считаю, что к сожалению, механизм плановых проводок gnucash слабо подходит для решения таких задач. Но, для тех кто все же хочет попробовать приходят на помощь формулы. Дело в том, что вместо суммы мы можем указать формулу, которая будет расчитываться. Плюс возможно использование параметров, ну и есть возможность получить номер текущей плановой проводки. Основной недостаток - формуле тяжело получить текущее состояние счета, например (во всяком случае, я пока не знаю, как это сделать, а те, кто в рассылках gnucash про это пишут, утверждают, что это невозможно). Формулы доступные можно посмотреть в /usr/share/gnucash/scm/fin.scm. Вызывать можно формулы с префиксом gnc:, указывать их соответственно надо без этого префикса. Т.е. чтобы вызвать функцию gnc:foobar с параметром 1000 надо писать foobar(1000). Для разделения передачи нескольких параметров используется :. Естественно, определенных стандартных функций мало кому хватит. Поэтому мы создадим простейшую функцию, которая вернет разницу от переданной базы - проценты, притом мы будем передавать базу числом, а проценты - как параметр для уточнения при создании проводки. Забавно, что человек, который в рассылке gnucash отвечает на вопросы предлагал это делать в оригинальном файле. Это явно нехорошо. Мы попробуем сделать это в файле ~/.gnucash/config.user:

(define (gnc:kilork base tax) (- base tax))


Перезапускаем gnucash и снова создаем плановую проводку, но на этот раз вместо 1000 мы пишем kilork(1000,tax), где kilork - наша функция, а tax - переменная, значение которой мы пока не знаем. Хочу обратить внимание, что не получится использовать символ "-" в имени функции, хотя все тот же автор из рассылки приводит именно такой пример.



Рис 7.4. Использование функции в плановых проводках.

Вызываем создание проводок, и видим, что теперь требуется ввести значение параметра tax, чтобы наша проводка создалась:



Рис 7.5. Создание проводки с использование функции и параметров.

Таким образом можно реализовать собственную функцию расчета любой сложности на языке Scheme, но к сожалению, удобного доступа к таким нужным параметрам, как остатки по счетам найти пока не удается.

P.S. На самом деле для учета поступлений из внешних источников мне кажется неправильным использовать плановые проводки. Я вижу правильным в данном случае загрузку из online источников. Т.е. это должно выглядеть так, мы подключаемся к нашему банку, получаем выписку по счету, после чего все остатки меняются соответственно. В gnucash есть возможности online-банкинга, но в нашей стране мало банков поддерживают такой формат. Соответственно, для нас дело чести реализовать провайдеров для как можно большего числа источников, чтобы сделать мир еще чуть-чуть лучше.

понедельник, 30 ноября 2009 г.

Холивары в Швейцарии

Поскольку про холивары в ИТ написали, теперь можно вспомнить про холивары из псевдореальности.

Власти Швейцарии догадались спросить у населения, за они строительство новых разносчиков ислама, или против. И что же ответили швейцарцы? Это все равно что спросить, вы за мракобесие, или против? Конечно, результат вполне предсказуем. Ждем новых оригинальных социологических опросов от Швейцарских властей. Подумываю о приобретении гражданства этой замечательной страны.

Я не политик, так что не буду давать какие-то рекомендации нашему правительству. Просто хотелось бы отметить такой факт, как занимательный. И подумать на тему, в каких государствах исламского толку вам разрешат построить православный храм, например? Провести, так сказать, референдум. Много нового узнаем про терпимость и толерантность. По мне, так уж лучше гей-парады, чем люди в хиджабах. Хотя нет, простите, там же их за людей не держат, о чем это я...

воскресенье, 29 ноября 2009 г.

Холивары

В субботу поставил сестре новый компьютер. Все как положено. Четыре ядра, четыре гигабайта, простейшая компоновка, дешево и сердито. И в очередной раз провел эксперимент по внедрению открытых технологий на местах. Виндовс поставил в виртуальную машину. Преодолели некоторое сопротивление. Но зато все было поставлено быстро и четко. Сканер заработал из коробочки. Теперь проверка временем покажет, удастся ли эксперимент на этот раз.

Но в целом, я конечно не совсем прав. Нельзя наставлять стадо на какой-то путь.

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

Т.е. я никому не буду рассказывать, как мне удобно пользоваться линуксом, и как неудобно - виндовсом. Я просто буду пользоваться тем, что мне удобно. Ну и может расскажу, как именно я делаю свою жизнь чуть проще. И склонять всех к тому же - неблагодарное занятие. Человек может сам выбирать, и выбор не обязательно обосновывать.

вторник, 24 ноября 2009 г.

Дружим java и python через web services

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



Мне потребовалось подружить java с python, для сервера мы используем jax-ws, а для клиента нашли сначала SOAPpy, но уперлись в то, что данная библиотека как-то плохо дружелюбна со сгенерированными jax-ws wsdl. Притом решать я начал проблему не с того конца. Я научился расширять генератор wsdl собственными классиками. Подцепился в самые нутри, добился таки смены targetNamespace... и налетел на ошибку через еще пару строчек SOAPpy.



Стало очевидно, что дальше с SOAPpy нам не по пути. Еще несколько минут поиска, и мы выходим на suds. Пока что моя кожа благодаря этой библиотеке - мягкая и шелковистая.



Про jax-ws выяснились откровенно говоря неприятные подробности: нутри страшные, индусско-японские, и совершенно дурацкие. Я вообще обычно тревожусь, когда для того, чтобы понять, куда надо ткнуться, мало прочитать статью автора, надо еще самолично проанализировать код, выругаться 10 раз, найти хак для того, чтобы сделать то, что надо нам, но что невозможно сделать тем механизмом, что поставил автор, и все это в первую неделю пользования либом. Зачем было пользоваться такими корявыми классами и так их коряво сращивать. И меня бы все это не волновало, если бы оно все работало. Так ведь нет, не работает еще вдобавок. Reference Implementation, называется.