воскресенье, 25 января 2009 г.

Татьянин День

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

Весь день не мог понять, к чему это вообще? Хотя раз в два-три месяца мне такое снится. Но в данном случае это Татьянин День. Праздник студенчества. Все, теперь понятно, что за сон, знать, в руку он...

З.Ы. Считаю студенчество одной из застарелых форм рабства, как и любую другую полупринудиловку из общественной жизни. Поэтому и праздник сродни празднованию рабами своего рабского положения. Странный праздник.

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

Logitech QuickCam E2500 - оживляем всевидящее око...

Прокопавшись по форумам нашел нужную информацию для запуска этого устройства. Теперь спешу поделиться с Вами.

Итак, используем поставляемый в ядре 2.6.28 драйвер gspca. Только придется его чуток пропатчить. Всего навсего прописываем идентификатор нашей камерки.

kilork@phoenix ~ $ diff -u /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ /usr/src/linux/drivers/media/video/gspca/zc3xx.c
--- /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ 2008-12-25 02:26:37.000000000 +0300
+++ /usr/src/linux/drivers/media/video/gspca/zc3xx.c 2009-01-19 01:21:08.000000000 +0300
@@ -7530,6 +7530,7 @@
{USB_DEVICE(0x0458, 0x700c)},
{USB_DEVICE(0x0458, 0x700f)},
{USB_DEVICE(0x0461, 0x0a00)},
+ {USB_DEVICE(0x046d, 0x089d), .driver_info = SENSOR_MC501CB},
{USB_DEVICE(0x046d, 0x08a0)},
{USB_DEVICE(0x046d, 0x08a1)},
{USB_DEVICE(0x046d, 0x08a2)},


Пересобираем ядро с нужными модулями. modprobe gspca_zc3xx. dmesg. Видим что наше устройство зацепилось. Теперь пробуем запустить cheese. Ни фига. Одни квадратики.

На этот случай есть замечательный пакет libv4l:
kilork@phoenix ~ $ emerge -s libv4l
Searching...
[ Results for search key : libv4l ]
[ Applications found : 1 ]

* media-libs/libv4l
Latest version available: 0.5.7
Latest version installed: 0.5.7
Size of files: 84 kB
Homepage: http://people.atrpms.net/~hdegoede/ http://hansdegoede.livejournal.com/3636.html
Description: V4L userspace libraries
License: LGPL-2.1


После установки пробуем еще раз, на этот раз таким образом:

kilork@phoenix ~ $ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so cheese


Ура, на какую-то долю секунды показалась картинка с камеры, страшная, но живая. Потом куда-то делась яркость. На форумах расписано как и с этим побороться, но мне было уже как-то влом. Поэтому я зашел в настройки cheese. Выбрал разрешение 320х240, потом обратно в 640х480, картинка стала поживее. Итак, камера работает, картинку кажет.

Поскольку считаю такой способ запуска устройства сильно извращенным, жду ядра 2.6.29 - там обещали добавить эту строчку, а может быть и победить косяки с яркостью, сообщениями о битых mjpeg, а так же загрузкой процессора под завязку. Ждем ebuild'ов!

P.S. Интересная штука с скайпом, пока не разбирался, но он игнорирует мои попытки подключить камерку, и даже когда я ее выбираю (/dev/video1) все равно в предпросмотре показывает изображение с тюнера (/dev/video0). Могу конечно организовать телетрансляцию через skype, но все же как-то это странно, ругнулся бы хоть как. Ладно, запустим с libv4l и из консольки, может разберемся с бякой.

воскресенье, 18 января 2009 г.

Наконец-то! Поиск по истории bash через PgUp/PgDown

В gentoo это работает по умолчанию. В других дистрибутивах почему-то нет. Наконец-то дошли руки разобраться, где собака зарыта. Дело все в файлике /etc/inputrc. На моем eee в ubuntu он по умолчанию содержит две закомментированые строки:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward


Раскомментируем, открываем новый терминал. Вбиваем начало любой команды, PgUp (Fn+Вверх на eee), находится первая команда, еще раз, слудующая. Никаких Ctrl+R. Ура, еще одно удобство настроено.

пятница, 16 января 2009 г.

CPAN Finance::Quote::Sberbank - Модуль для получения котировок ОМС Сбербанка

Выложил свои труды на CPAN. Теперь любой желающий сможет это установить.

kilork@pantogan:~$ cpan

cpan> i Finance::Quote::Sberbank
Strange distribution name [Finance::Quote::Sberbank]
Module id = Finance::Quote::Sberbank
CPAN_USERID KILORK (Alexander Korolyoff )
CPAN_VERSION 0.01
CPAN_FILE K/KI/KILORK/Finance-Quote-Sberbank-0.01.tar.gz
MANPAGE Finance::Quote::Sberbank - Obtain quotes from Sberbank (Savings Bank of the Russian Federation)
INST_FILE /home/kilork/perl/share/perl/5.8.8/Finance/Quote/Sberbank.pm
INST_VERSION 0.01


cpan> install Finance::Quote::Sberbank


Сразу, правда, в gnucash это не заработает - требуется немного магии. Магия заключается в том, что надо поправить сам Finance::Quote и добавить туда загрузку модуля, выглядит это приблизительно так:

kilork@pantogan:~/perl/share/perl/5.8.8/Finance$ diff Quote.pm~ Quote.pm -u
--- Quote.pm~ 2008-10-26 11:15:50.000000000 +0300
+++ Quote.pm 2009-01-08 11:13:02.000000000 +0300
@@ -170,7 +170,7 @@
DWS FTPortfolios Fidelity FinanceCanada Fool HEX IndiaMutual
LeRevenu ManInvestments NZX Platinum SEB StockHouseCanada
TSP TSX Tdefunds Tdwaterhouse Tiaacref Troweprice Trustnet Union
- USFedBonds VWD ZA Cominvest Finanzpartner
+ USFedBonds VWD ZA Cominvest Finanzpartner Sberbank
Yahoo::Asia Yahoo::Australia Yahoo::Brasil
Yahoo::Europe Yahoo::NZ Yahoo::USA/; }


Т.е. просто дописываем модуль в список загружаемых. В данном примере подразумевается, что cpan для пользователя настроен на локальную директорию в папке пользователя, и туда же установлены модули Finance::Quote и Finance::Quote::Sberbank. Подробнее о настройке установки модулей в локальную директорию можно посмотреть здесь. Я пока сомневаюсь, что мой модуль включат в официальный дистрибутив, так что пока так.

UPDATE: Внимательно прочитал модуль, можно сделать гораздо проще, надо назначить переменную окружения:
FQ_LOAD_QUOTELET="-defaults Sberbank"

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

kilork@mexidol ~$ FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash finans



Итак, если мы все сделали правильно, то в gnucash->Инструменты->"Редактор ценных бумаг" можно будет настроить следующее:




Теперь, надеюсь более подробно описать собственно сам процесс разработки новых модулей для gnucash. Цепочка отработана.

UPDATE2: Добавил отдельный сайт для работы с котировками ОМС Сбербанка - пользовательский и программный интерфейс: http://kilork.blogspot.com/2012/01/sberbank-quotes.html.

среда, 14 января 2009 г.

Месть козлов

Все же иногда правило вселенской несправедливости дает осечку. Жаль, что редко.

вторник, 13 января 2009 г.

Работа с GnuCash. Часть 2. Валюта в личной бухгалтерии

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Курс доллара продолжает расти, чем неизменно радует всех обладателей зеленых бумажек. До сих пор мы работали только с рублями, но тут случилось чудо - мы нашли в загашниках некоторое количество $. Теперь есть только одна проблема - как все это учесть в домашней бухгалтерии?

В текущей структуре счетов нет валютных счетов, поэтому идем в Активы->Текущие активы, в контекстном меню выбираем пункт меню "Новый счет". Это будет счет для имеющихся у нас наличных долларов. Назовем его Cash, валюту выбираем USD, следим, чтобы тип счета был "Активы", а родительски счет "Текущие активы".



Рис 2.1. Создание нового счета в иностранной валюте.

Поскольку деньги у нас уже есть, то перед тем, как создать счет, зайдем на закладку "Начальное сальдо", здесь вводим имеющуюся у нас сумму $. В примере это 1000.



Рис 2.2. Закладка "Начальное сальдо".

Снова посмотрим на общий список счетов.



Рис 2.3. Вид счетов после добавления счета Cash, номинируемого в USD.

На лицо явное противоречие - у нас на 1000 USD больше, но активы по прежнему 99700. Все дело в том, что GnuCash пока не знает курсы обмена, чтобы правильно отразить сумму активов. Заходим в меню Инструменты->Редактор цен.



Рис 2.4. Редактор цен.

Сейчас у нас нет котировок. Жмем кнопку "Получить котировки".



Рис 2.5. Редактор цен после получения котировок.

Теперь виден полученный курс обмена USD к RUR. Отлично. Закрываем редактор цен. И снова смотрим на общий список счетов. Замечательно, мы видим именно то, что хотелось видеть.



Рис 2.6. Вид счетов после получения котировок.

Проведем типичную обменную операцию. Для этого встаем на счет Cash, выбираем в контекстном меню "Перевести". Выбираем для передачи счет наличных, который номинируется в рублях, после этого снизу становится доступным для ввода курс обмена. Вводим там 30.5, подтверждаем "Ок".



Рис 2.7. Перевод между счетами в разных валютах с указанием курса обмена.

Теперь список счетов выглядит так:



Рис 2.8. Счета после проведения обменной операции.

Видно, что наша прибыль по прежнему равна -300, но активы значительно выросли. Все очень удобно и просто, курс обмена легко задавать для отдельных операций, и очень просто следить за общими изменениями активов в той или иной валюте из-за колебаний курсов. В дальнейшем я покажу, как вводить новые инструменты учета, такие, как золото в граммах, и т.п., а также - расскажу детали работы механизма получения котировок на примере написания модуля для получения котировок обезличенных металлических счетов с сайта Сбербанка России.

воскресенье, 11 января 2009 г.

Знакомство с GnuCash - программой по учету личных финансов

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Предисловие.

В этом руководстве мне бы хотелось осветить аспекты начала работы с программой GnuCash - представителем семейства программ для учета личных финансов. Если вы пробовали записывать свои расходы и составлять семейный бюджет - то эта программа для вас. Если вы храните деньги в нескольких валютах - эта программа для вас. Если вы имеете депозиты и кредиты в банках - эта программа для вас. Если вы купили акции, или золото в слитках - gnucash снова может вам пригодиться.

Я не буду рассматривать аспекты установки программы, в случае Windows это обычный инсталлер, для Linux это ваш любимый пакетный менеджер используемого дистрибутива, руководство я пишу используя ubuntu на eee pc, непосредственно учет веду в gentoo на большой машинке. Никаких проблем нигде не возникало, либо удавалось их достаточно легко решить.

Запуск gnucash.

Итак, выбираем либо пункт меню, либо иконку на рабочем столе. Я набираю gnucash в терминале, интересно, что он напечатает в output:

kilork@pantogan:~$ gnucash

Если все установлено и нам повезло, мы увидим симпатичный логотип gnucash, и загружаемые модули, так же, возможно покажутся и многочисленные советы новичкам и продвинутым пользователям, которые могут оказаться весьма полезными:



Рис 1. Запуск gnucash.

Начало работы.

Работа с gnucash начинается с создания набора счетов. Если вы запускаете gnucash в первый раз, то мастер покажется автоматически. В противном случае он будет показан при выборе пункта меню Файл->Новый...->Новый файл.



Рис 2. Мастер создания новой иерархии счетов.

После показа приветствия жмем "Далее" и попадаем на выбор валюты по умолчанию. Валюта выбирается на основе стоящей в системе локали, но может быть изменена на этом этапе мастера. Если все правильно, то вы увидите в качестве валюты счетов RUB (Russian Ruble).



Рис 3. Выбор валюты счетов.

Далее gnucash предлагает несколько вариантов структуры счетов. Предполагая чисто домашнее использование системы на начальном этапе оставляем все по умолчанию.



Рис 4. Выбор структуры счетов.

Хотелось бы сразу увидеть на наших счетах какие-то деньги. Считаем, что в начале у нас есть только наличность. Выбираем счет "Наличные" (Активы->Текущие активы->Наличные), щелкаем в колонке "Начальное сальдо", и вбиваем имеющуюся сумму наличных. Для примера я ввел значение 100000, надеюсь, хватит на первое время.



Рис 5. Начальные параметры счетов.

Вот и все, мы создали начальную структуру счетов, у нас есть какие-то средства на них, можно начинать работать.

Закрываем окно мастера, перед нами появляется основное окно gnucash.



Рис 6. Главное окно gnucash с открытым списком счетов.

Теперь перейдем к некоторым деталям. Для начала разберемся откуда у нас взялись наличные, и что нам дает "Начальное сальдо". Разворачиваем в счетах Активы->Текущие активы->Наличные. Двойным щелчком переходим на список транзакций по счету. Сейчас в этом списке присутствует единственная транзакция со счета начального сальдо. Притом, если найти этот счет в списке счетов, его остаток так же будет равен 100000. Это одна из главных концепций бухучета - активные и пассивные счета. В данном случае счет наличных активный, а счет начального сальдо - пассивный. Перевод со счета начального сальдо на счет наличных приводит к увеличению остатка на обоих счетах на 100000. И никаких отрицательных значений. Вот так и делается начальный капитал банка.



Рис 7. Список транзакция счета "Наличные".

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

Продолжаем. Настало время что-нибудь купить за наши наличные деньги. Допустим нам понадобился дорожные путеводитель. В списке счетов находим Расходы->Книги, вызываем контекстное меню, выбираем пункт "Перевести". На экране появляется диалог для перевода средств между счетами. Слева выбираем счет наличных, справа оставляем выбор на книгах. Вводим сумму, описание. У меня получилось что-то в этом духе:



Рис 8. Ввод перевода со счета наличных на счет расходов по книгам.

После этого мы видим, что расходы стали равны 100, наличность вместе с активами - 99900. Ну и прибыль, что логично, стала -100. Начались наши непростые финансовые будни.



Рис 9. Состояние счетов сразу после ввода перевода.

Откроем список транзакций по счету "Книги". Здесь видно, как отразились введеные нами атрибуты.



Рис 10. Список транзакций по счету "Книги".

Собственно, гораздо проще вводить транзакции именно со списка транзакций. Что я и делаю, ввожу еще одну транзакцию по счету книги, но на этот раз не прибегая к пункту меню, а непосредственно со списка. На этот раз это будет атлас дорог за 200.



Рис 11. Ввод транзакции со списка.

На этом можно считать законченным первый этап знакомства с gnucash. Мы создали структуру счетов, ввели начальные данные, выполнили операции по счетам. На текущий момент наши активы равны 99700, расходы - 300, доходы - 0, прибыль - -300, начальное сальдо - 100000. В следующем посте я создам счет в USD, сделаю перевод между счетами в разной валюте, а также покажу, как получать котировки из интернета. Да в целом, все это может сделать и любознательный читатель, так как это очень просто и весьма занимательно. Мои цели чуть другие, кроме ведения просто своих расходов, мне требуется полная автоматизация процесса, так что будут посты и про написание собственных модулей для получения котировок, и по интеграции с банковскими системами. Надеюсь это будет интересно, и не только мне.