Показаны сообщения с ярлыком eee. Показать все сообщения
Показаны сообщения с ярлыком eee. Показать все сообщения

воскресенье, 28 августа 2011 г.

Говно ли Google Chrome?

Вижу, что народ по прежнему интересуется этим вопросом.

Для Asus Eee PC 901, которым я владею уже весьма продолжительное время - Chrome пока основной браузер. На этой "слабенькой" машинке очень хорошо чувствуется, какой браузер работает быстрее.

На рабочих машинах я постоянно меняю браузер, то Chrome, то Firefox. Зачастую даже одновременно рядом открыты оба браузера. В последнее время еще и Opera добавилась, так как я все больше становлюсь веб-разработчиком и проблема работоспособности под основными браузерами становится актуальна. Так скоро и IE придется открывать под виртуальными машинками и на удаленных рабочих столах (бее... но даже у моего специфичного блога из посетителей 35% - Firefox, 23% - Opera, 21% - Chrome, 15% - IE).

Но мы уходим от темы. Говно ли Google Chrome? Я думаю - не говно. То, что они делают для упрощения интерфейса прекрасно, это одна из причин использования на нетбуке - минималистичный интерфейс, хотя я бы хотел иметь возможность сделать еще минималистичнее, чтобы использовать 600 пикселей высоты более рационально. Производительность по ощущениям выше. А eee я пользуюсь много, так что для меня это однозначно хорошо.

В целом, почему-то симпатизирую Firefox. Хочется, чтобы они догнали и перегнали Chrome. Пока же, я считаю, пальма первенства у Chrome.

А главное - мне не нравится язык реализации что Firefox, что Chrome. Я бы хотел видеть браузер их уровня, но написанный на "чистом C".

понедельник, 11 апреля 2011 г.

Я починил клавиатуру на EEE

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

Ну залил я клавиатуру, сломался Tab, это же пустяки - мы можем в awesome себе спокойно жить.

Но тут я пошел дальше. Я перевел нетбук в спящий режим, засунул в сумочку и поехал в гости. По приезду обнаружил, что сумочка подозрительно нагрелась. Ё... Оказалось, Tab не просто не работал, его клинит. Поэтому он подал команду нетбуку включиться. Тот радостно включился и в сумочке грелся, пока не нагрелся выше всех разумных пределов. От такого нагрева то ли ubuntu переклинило, то ли какую-то железку, но результатом стал потерянный намертво раздел. Привычки держать ценные данные в одном месте у меня нет, а вот малоценные данные, настроенная до всяких удобств ubunta и другое за несколько месяцев были потеряны.

Понятное дело, так дальше жить было нельзя. Спирта для протирки у меня по прежнему не было. Но я нашел альтернативу - одеколон. Отлично пролил одеколончиком все слои (на этот раз я успешно разделил на 3 слоя). Поэтапно собрал, проверяя, что достигнут хоть какой-то результат. В очередной раз помучался с длинными клавишами. И, о чудо, - клавиатура снова боеспособна. Правда пока не без огрехи - табуляция заработала, зато клавиша "ф" стала работать плохо. Вроде бы помогла банальная ее разработка многократными нажатиями.

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

Ubuntu снова с чистого листа, вспоминать придется теперь 100000 и 1 настройку, которые уже делал для разных удобств. В этот раз притом не ушел пока в awesome, решил просто gnome поднастроить стандартный - тему выбрал с минимальной высотой заголовка, панель нижнюю удалил, верхнюю заставил убираться, так что свободное место используется максимально рационально.

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

среда, 30 марта 2011 г.

13000 mAh на Asus EEE 901

Пришла китайская батареечка на EEE. Здоровая, но зато работает теперь 7 часов моя коробочка.

Китайцы смешные. Заказал у них 7 марта. Ни ответа, ни привета. Пошел жаловаться  в PayPal - опять тишина. 9 дней прошло, т.е. пожаловался я 16 числа. Никакой реакции. И только когда поднял выше - опа, а посылку то вам уже отправили. Посылка отправлена 18 числа, а на второй уровень жалобу я толкнул 23. Тогда она уже пришла на нашу почту. Т.е. мои предположения оправдались, отправка произошла только после жалобы, но написали мне только тогда, когда посылка попала на почту. Логика странная, но все же какая-то есть. 29 числа обнаружил уведомление и забрал посылочку. Итого - 22 дня. Долговато, с учетом того, что такие батарейки и у нас уже продаются и не сильно дороже.

Ну да ладно, черт бы с ними, с этими китайцами. Пришла пора радоваться настоящей мобильности. Что я и начал делать.

Радость была омрачена обливанием клавиатуры нетбука чаем. Сначала глючили почти все кнопки, потом проблема локализовалась в районе tab-а. Поразмыслив и погуглив, понял, что в awesome мне tab и не нужен, так что пока можно обойтись. Так же была найдена статья про чистку клавы на eee 901. К сожалению, ничего протирочного в доме не было, но руки все равно чесались все разобрать, что я и сделал. К еще большему сожалению, выковырять tab и практически оторвать пипку крепления я успел еще до прочтения статьи, но надеюсь, что это не будет так критично.

Пруф-картинка:


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

З.З.Ы. Интересно, спирт в аптеках ведь вроде уже не продают? А как протирать контакты? Водка ведь это тоже вода на 60%...

вторник, 25 января 2011 г.

Upgrade ASUS Eee 901 64GB SuperTalent SATA Mini 2 PCIe SSD

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

Unpacking:




В посылочке были Mini 2 PCIe SSD диск на 64Gb от Super Talent: технические характеристики, и память на 8Gb для ноутбука. Память для ноутбука - это в нагрузку, и не мне, а вот первое мне было очень интересно. Флэшка и 10 копеек на последнем фото - для сравнения габаритов.

Заменять SSD диск на Eee 901 можно было бы и проще, но все равно - очень просто. На всякий случай записал видео:


Собирать/разбирать свой компьютер программист должен как солдат - АК. Быстро и четко, и чтобы работало после цикла операций.

Незамедлительно на свежий диск была установлена Ubuntu 10.10. Что-то их изыски с интерфейсом под нетбуки меня совсем не впечатлили, в 10.04 было лучше. Производительность дисковой подсистемы должна вырасти в 5 раз, но пока приятно то, что не надо маяться с разделами на двух дисках и процедурой апгрейда дистрибутива, которая не проходит из-за недостатка места. Да и собственно, нет недостатка места столь сильного. Стоило удовольствие слегка больше 200$, насколько оправдано - время покажет.

Внимание! Перед upgrade необходимо обновить BIOS на Eee, так как железка под старыми версиями видна не будет.

вторник, 10 августа 2010 г.

Ода eclipse

Очень часто люди задаются вопросом, чем пользоваться для разработки программного обеспечения. Однозначного ответа тут нет. У меня очень долго не складывались отношения с eclipse, так как либо он тормозил, так как компьютеры были слишком слабыми, либо он падал, так как что-то с чем-то не срасталось, либо у меня на тот момент оказывались более удобные инструменты. В целом, использование eclipse идет немного мимо желания шире использоват vim. И тем не менее, я сейчас пользуюсь eclipse, и нисколько не жалею. Пользуюсь на маленьком asus eee 901, на котором как утверждается - невозможно им пользоваться. Оказалось - возможно. Главное, очистить как можно больше рабочего пространства. Мое выглядит приблизительно вот так:

Вполне душевно.

Самое вкусное естественно в том, что за время глючной жизни затмения под него было разработано множество плагинов, да и сам он оброс полезным функционалом. Перечислю те, которые сильно помогают мне:
  • Vrapper - делает eclipse похожим на vim. До полного сходства далеко, но зато весь функционал остается в непосредственной доступности.
  • Pydev - теперь мы можем редактировать и отлаживать python.
  • EPIC - если вы еще не забыли о языке perl, этот плагин вам также понадобится. Меня он тут очень выручил, когда выяснилось, что модуль получения котировок вышел из строя.
  • MercurialEclipse - интеграция с mercurial.

Итого, у меня почти vim, я могу править и отлаживать все что мне нужно, все это собрано в одном месте, да и в версии eclipse helios добавили хорошие возможности по созданию ссылок в рабочем пространстве, что сильно упрощает жизнь, очень удобно. В экран влезает, работает достаточно стабильно. Вот и встает вопрос, как же подружить свою любовь к vim и удобность работы с eclipse. Пока ответа нет (eclim не предлагать, хочу его использовать, но я так понимаю - придется его пилить, то, что я попробовал - это слишком мало, по сравнению с тем, что дает мне vrapper), я иду на компромисы и изучаю возможности и того и другого, не отдавая однозначного предпочтения. В конце концов я уверен, что прийду к какому-то хорошему варианту, лучше, чем текущий.

А пока, спасибо eclipse за повышение моей продуктивности.

четверг, 18 февраля 2010 г.

Как я решил проблему скорости D-Link DWA-547 под Linux

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

Попробовал я много чего, вынес антенны наружу, поставил вокруг фольгу. Все это по числам давало мне прирост качества сигнала. Роутер (D-Link 655) показывал 100% сигнал, а карточка 50-60/70, что тоже неплохо. Но при это реальность была гораздо хуже, хуже, чем в лежащем рядом Asus EEE 901 с g карточкой и без каких-либо антенн.

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

И только в одном месте я нашел ссылку на статью, где доходчиво показывалось, что в некоторых конфигурациях лучше не пользоваться режимом с 40 MHz. Я включил режим 20 MHz на роутере, и это волшебным образом увеличило скорость до приемлемого уровня, который для g карточки был недостижим.

Из всего тюнинга оставил только фольгу от шоколадки "Бабаевский" на роутере - это реально дало прирост качества сигнала. Плюс, 20 MHz, и все отлично работает, испытал самые больше свои HD фильмы до 22 Gb - никаких проблем с воспроизведением. Пока нет желания разбираться дальше, кто виноват, свою скорость я получил, и мне ее достаточно, наконец то полностью доволен произведенным upgrade.

Update (2011/09): Довольство сошло на нет, и я отказался от Wi-Fi: альтернатива.

понедельник, 8 февраля 2010 г.

Upgrade

Не удержался и заказал upgrade для домашней системы.

Во-первых, wi-fi до 802.11n, взял d-link в виде роутера dir-655, и карточки dwa-547. Отзывы таковы, что роутер вроде у меня не вызывает сомнений, а вот карточку хотелось бы другую, но под linux есть риск, что могут некоторые хорошие варианты не завестись в 802.11n, так что взял то, что заведется.

Во-вторых, доведу память на нетбуке (asus eee 901) до 2 гигабайт. Так как с 1 все же грустно.

Не понимаю, вроде раньше жил я с 32 метрами памяти и задачи вроде все те же самые решали. Куда они все память жрут, негодяи? В хабре тут было оживленное обсуждение того, как чувачок ни за что не взял бы нетбук. Типа, слабый, глянцевый, и клавиши маленькие. Есть очень простая поговорка: плохому танцору... ну вы знаете. Если руки растут из жопы, хорошая техника все равно не поможет. А с правильно растущими руками даже из говна можно сделать конфетку (печатая вслепую на маленьком и неудобном нетбуке, соединяясь с инетом через роутер, говенее которого придумать сложно). Видимо, я считаю, что у меня руки растут в этом плане неплохо. Хотя сегодня пол дня протрахался с роутером, после чего собственно и решил его поменять. И применение нетбуку всегда найдется, уверен, что это устройство если не окочурится - прослужит мне еще годик. Пока, самое бесполезное мое устройство, это именно полноразмерный ноутбук. Есть еще компьютер старый. Я вот думаю, каковы шансы весь этот хлам куда-то сдать, хоть за символическую цену. У меня тут уже целый парк собрался. Попробую выставить на молотке. Но правда, кому оно может быть нужно, устаревшее железо? Разве что коллекционеру, или дебилу. Первых не так много, а вот последних хватает. Так что хоть копеечку, но срубить с it-хлама можно, главное, чтобы повезло с аудиторией.

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

Воспроизводим звук по сети: pulseaudio + ubuntu + gentoo

Итак, задача. У вас есть компьютер, на котором есть большой монитор, но... нет колонок. Есть еще нетбук, колонки не ахти, но есть. Ну и наушники есть, только провода у них не очень длинные. Что надо сделать, чтобы смотреть кино на большом мониторе и при этом слушать звук на нетбуке?

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

А чего, в первый раз я так и сделал. Но звук немного расползается, да и на паузу ставить неудобно.

Дальше мы включаем google. Находим padevchooser, ставим (на нетбуке, где у нас ubuntu), запускаем:

kilork@pantogan:~$ sudo apt-get install padevchooser
kilork@pantogan:~$ padevchooser &


В трее появляется иконка, жмем на нее, выбираем "Configure Local Sound Server...", там включаем все что понравится на закладке "Network Access". Все, на нетбуке все.

Теперь в gentoo ставим флаг pulseaudio для mplayer'а, запускаем кино воспроизводиться, установив переменную окружения PULSE_SERVER адресом нашего нетбука (да, чуть не забыл, у нас еще и wifi работает, так что способ с флэшкой - это просто позор):

kilork@phoenix:~$ PULSE_SERVER=192.168.1.2 mplayer -ao pulse ~/kilork_the_best.avi


192.168.1.2 - как нетрудно догадаться, адрес нетбука. Если все у нас хорошо, то на большом экране заиграет видео, а звук будет играть на нетбуке. У меня все было именно так.

Но этого мало, ведь чтобы поставить на паузу по прежнему надо пойти и нажать на паузу (у меня конечно, беспроводная клава, но все равно, это не то). Итак, чтобы все было совсем хорошо, заходим по ssh с нетбука и добавляем еще два параметра к запуску: DISPLAY и XAUTHORITY. Приблизительно так:

kilork@phoenix:~$ XAUTHORITY=/var/run/gdm/auth-for-kilork-blablabla/database DISPLAY=:0.0 PULSE_SERVER=192.168.1.2 mplayer -ao pulse ~/kilork_the_best.avi


Теперь, все путем, нетбук превращается в окончание звукового штекера и пульт управления.

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

100000 км, отпуск и ремонт

Лето было весьма насыщенно событиями.

Я проездил на Левине более 100000 км, точно момент перехода не заметил, но все же. Конечно, это уже не та машинка, что была, но он все еще на ходу, что достаточно удивительно, учитывая мое весьма халатное отношение к его техническому и эстетическому состоянию. Один из фактов, что машина и ее обслуживание обошлись дешевле, чем бензин и мздоимство.

С начала лета мы начали ремонт в квартире. Капитальный ремонт. Поменяно все, что только можно было поменять, имея на руках ограниченные в некоторых рамках средства. Теперь я сижу в чистой, уютной, современной, но абсолютно пустой квартире. У вещей нет памяти и надо будет наполнять эту пустоту, думаю, мы справимся.

Надежды провести тяжелое время на даче не оправдались, хотя все же я свой месяц смог умыкнуть. Две недели в командировке, две - на даче. Можно сказать, что я в какой то степени готовился к такой смене обстановки, поэтому у меня был eee и cdma модем skylink. Первый помогал мне вообще везде, пару недель я даже на нем реально работал (но тяжеловато, я люблю работать на большом экране), в основном он был именно тем, чем должен быть - средством для получения информации из глобальной сети. Благодаря модему, я был на связи на достаточно высокой скорости и две дачные недели. Фактически, никакого отрыва от нужной мне цивилизации. Итого, eee - лучшее приобретение последнего года, отдача от него просто потрясающая. Модем себя пока что просто оправдал, я подключил тарифный план, смысл которого только в нахождении на даче, в городе - только на самый крайний случай (1 руб/Мб против 5 руб/Мб).

пятница, 13 февраля 2009 г.

Работа с GnuCash. Часть 5. Finance::Quote. Придание модулю Sberbank полезных функций.

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

Для разнообразия решил писать этот пост в emacs. Несколько странно, поскольку делаю это уже где-то в 4-й раз, привыкаю к emacs, потом начинаешь пользоваться "классическим редактором", и emacs забывается. А зря. На eee есть правда существенный недостаток - справа нет ctrl, что делает пользование несколько осложненным. В четвертый раз вместо забоя пользуюсь backspace, что свидетельствует о наличии застарелых рудиментарных атавизмов, а ведь одна из главных идей emacs - отказ от лишних и утомительных движений, а тянуться к backspace между прочим очень утомительно. Все, хватит о emacs, вернемся к нашим баранчикам.

Чтобы сделать что-то полезное, зайдем на сайт Сбербанка на страничку с котировками ОМС. Текст странички сохраняем на диск. Файл с котировками в формате xls аналогично. Начнем разбираться с последним. Для работы с excel файлами используется модуль Spreadsheet::Read. Все тонкости работы с excel нам не нужны, достаточно с первой странички получить значение из ячейки с известным адресом. Делается это следующим образом:

#!/usr/bin/perl
use Spreadsheet::Read;

my $xls = ReadData("dm1002.xls");

print "$xls->[1]{'A1'}\n";


Этот код выведет первую ячейку, с первой страницы.

Нам надо существенно больше. Найти котировки счетов и вытащить цену покупки/продажи. Но простота обращения с модулем облегчит нам задачу. Теперь надо разобраться со страничкой. Если взглянуть на реализации других модулей для Finance::Quote, то можно понять, что люди предпочитают HTML::TableExtract. Нам же только вытащить ссылку с первой строчкой, так что сойдут и более простые методы. Котировки в Сбербанке идут по месяцам. Страница для января 2009 года это:

http://sbrf.ru/ru/valkprev/archive_1/index.php?year114=2009&month114=01


Получаемая страница содержит котировки с датами, идут они в обратном порядке. Пример HTML кода с котировками:

<li class="xls"><a href="/common/img/uploaded/c_list/sdmet/download/2009/01/dm0131.xls" target="_blank">31 января 2009 года</a><!-- --> (с 00 часов 00 мин.)</li>


Для отбора нам понадобится регулярное выражение. Наверно это самый сложный для понимания кусок, но к счастью, писать регулярные выражения существенно проще, чем читать. Итак, на основе предыдущего текста:

<li class="xls"><a href="(.*\/(\d{4})\/(\d{2})\/dm(\d{2})(\d{2})(?:\_\d+)?\.xls)"[^\(]*\(.+(\d{2}).+(\d{2})


Еще один кусок кода. Пора объединить все это в единое целое. В модуле Finance::Quote::Sberbank находим метод sberbank. Сейчас он имеет следующий вид:

sub sberbank {
my $quoter = shift;
my @stocks = @_;
}


Для получения текста страничек нам понадобится user agent. К счастью, он есть у нас, итак, первая строка:

my $ua = $quoter->user_agent;


Теперь можно и запросить страничку.

my $year = 2009;
my $mon = 1;
my $url = "http://sbrf.ru/ru/valkprev/archive_1/index.php?year114=${year}&month114=${mon}";
my $response = $ua->request(GET $url);


Важно стараться сделать какую-никакую, но обработку ошибок, в случае с запросом странички, стоит проверить успешность операции. А если неуспешно, нам надо правильно выставить статусы ошибок. Статусы ошибок записываются в @stocks следующим образом:
unless ($response->is_success) {
foreach my $stock (@stocks) {
$info{$stock, "success"} = 0;
$info{$stock, "errormsg"} = "HTTP failure";
}
return wantarray() ? %info : \%info;
}


Т.е. для каждого запрашиваемого инструмента ставим статус success = 0 и errormsg = HTTP failure. Какая-то обработка ошибок. Теперь надо разобрать содержимое на предмет интересующих нас ссылок:
my $link = "";
my $content = $response->content;
if($content =~ /<li class="xls"><a href="(.*\/(\d{4})\/(\d{2})\/dm(\d{2})(\d{2})(?:\_\d+)?\.xls)"[^\(]*\(.+(\d{2}).+(\d{2})/g) {
$link = $1;
}


Получили ссылку на файлик xls, теперь надо бы его получить, и наконец уже зачитать наши котировки. Единственное, надо бы определиться как мы их назовем. Например, вот так:
Золото SBRF.AU
Серебро SBRF.AG
Платина SBRF.PT
Палладий SBRF.PD


Итак, ссылка найдена, и мы получаем котировки:

if($link) {
$url = "http://sbrf.ru/".$link;
$response = $ua->request(GET $url);
unless($response->is_success) {
foreach my $stock (@stocks) {
$info{$stock, "success"} = 0;
$info{$stock, "errormsg"} = "HTTP failure";
}
return wantarray() ? %info : \%info;
}
$content = $response->content;


Загружаем его как xls-файл:

my $xls = ReadData($content);


Теперь нам надо найти начало котировок ОМС. Это место начинается со строки, определяемой следующим регулярным выражением:

/\d+\. Котировки продажи и покупки драгоценных металлов в обезличенном виде/


Пробегаем примитивным поиском:

my $start = 1;
while($xls->[1]{"A$start"} !~ /\d+\. Котировки продажи и покупки драгоценных металлов в обезличенном виде/ && $start < 100) {
$start++;
}


Определим хэш значений для поиска, в соответствии с определенными выше кодами для различных ОМС:

my %map = (
'Золото' => 'SBRF.AU',
'Серебро' => 'SBRF.AG',
'Платина' => 'SBRF.PT',
'Палладий' => 'SBRF.PD'
);


Начиная с этого момента нам осталось только пробежать по оставшимся строкам в файле, найти наши котировки и заполнить соответствующие части в info:

while($xls->[1]{"A$start"}) {
$start++;
my $name = $xls->[1]{"A$start"};
if($name) {
my $stock = $map{$name};
next unless($stock);
$info{$stock, "symbol"} = $stock;
$info{$stock, "name"} = $name;
$info{$stock, "currency"} = "RUB";
$info{$stock, "method"} = "sberbank";
$info{$stock, "bid"} = $xls->[1]{"E$start"};
$info{$stock, "ask"} = $xls->[1]{"D$start"};
$info{$stock, "last"} = $info{$stock, "bid"};
$quoter->store_date(\%info, $stock, {today => 1});
$info{$stock, "success"} = 1;
}
}


Теперь осталось только сделать тесты. Здесь на помощь приходит модуль Test::More. Открываем t/Finance-Quote-Sberbank.t и пишем там такое:

use encoding 'utf8';
use Test::More;

plan tests => 5;

use_ok('Finance::Quote');
use_ok('Finance::Quote::Sberbank');

my $quoter = Finance::Quote->new("Sberbank");

ok(defined $quoter, "created");

my %info = $quoter->fetch("sberbank", "SBRF.PD");

ok(%info, "fetched");

ok($info{"SBRF.PD", "name"}, "palladium");



Запускаем тесты в терминале и если все получилось, то видим следующее:

kilork@pantogan:~/Desktop/test/Finance-Quote-Sberbank$ make test
cp lib/Finance/Quote/Sberbank.pm blib/lib/Finance/Quote/Sberbank.pm
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/Finance-Quote-Sberbank....ok                                               
All tests successful.
Files=1, Tests=5,  1 wallclock secs ( 1.05 cusr +  0.06 csys =  1.11 CPU)


Это хорошо, теперь можно смело делать make install и запускать gnucash с загрузкой нашего свежего модуля:

kilork@pantogan:~/Desktop/test/Finance-Quote-Sberbank$ make install
Manifying blib/man3/Finance::Quote::Sberbank.3pm
Installing /home/kilork/perl/share/perl/5.8.8/Finance/Quote/Sberbank.pm
Installing /home/kilork/perl/man/man3/Finance::Quote::Sberbank.3pm
Writing /home/kilork/perl/lib/perl/5.8.8/auto/Finance/Quote/Sberbank/.packlist
Appending installation info to /home/kilork/perl/lib/perl/5.8.8/perllocal.pod
kilork@pantogan:~/Desktop/test/Finance-Quote-Sberbank$ FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash
gnc.bin-Message: main: binreloc relocation support was disabled at configure time.

Found Finance::Quote version 1.15


Заходим в редактор цен, жмем "Получить котировки", убеждаемся, что все получилось:



Рис 5.1. Получение котировок новым модулем Sberbank.

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

package Finance::Quote::Sberbank;

use 5.008008;
use strict;
use warnings;
use encoding 'utf8';

use HTTP::Request::Common;
use Spreadsheet::Read;

require Exporter;

our @ISA = qw(Exporter);

# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.

# This allows declaration use Finance::Quote::Sberbank ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(

) ] );

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw(

);

our $VERSION = '0.01';


# Preloaded methods go here.
sub methods { return ( sberbank => \&sberbank ); }

{
my @labels = qw/name last bid ask date isodate currency/;

sub labels { return ( sberbank => \@labels ); }
}

sub sberbank {
my $quoter = shift;
my @stocks = @_;
my %info;

my $ua = $quoter->user_agent;
my $year = 2009;
my $mon = 1;
my $url = "http://sbrf.ru/ru/valkprev/archive_1/index.php?year114=${year}&month114=${mon}";
my $response = $ua->request(GET $url);
unless ($response->is_success) {
foreach my $stock (@stocks) {
$info{$stock, "success"} = 0;
$info{$stock, "errormsg"} = "HTTP failure";
}
return wantarray() ? %info : \%info;
}
my $link = "";
my $content = $response->content;
if($content =~ /<li class="xls"><a href="(.*\/(\d{4})\/(\d{2})\/dm(\d{2})(\d{2})(?:\_\d+)?\.xls)"[^\(]*\(.+(\d{2}).+(\d{2})/g) {
$link = $1;
}
if($link) {
$url = "http://sbrf.ru/".$link;
$response = $ua->request(GET $url);
unless($response->is_success) {
foreach my $stock (@stocks) {
$info{$stock, "success"} = 0;
$info{$stock, "errormsg"} = "HTTP failure";
}
return wantarray() ? %info : \%info;
}
$content = $response->content;
my $xls = ReadData($content);
my $start = 1;
while($xls->[1]{"A$start"} !~ /\d+\. Котировки продажи и покупки драгоценных металлов в обезличенном виде/ && $start < 100) {
$start++;
}
my %map = (
'Золото' => 'SBRF.AU',
'Серебро' => 'SBRF.AG',
'Платина' => 'SBRF.PT',
'Палладий' => 'SBRF.PD'
);
while($xls->[1]{"A$start"}) {
$start++;
my $name = $xls->[1]{"A$start"};
if($name) {
my $stock = $map{$name};
next unless($stock);
$info{$stock, "symbol"} = $stock;
$info{$stock, "name"} = $name;
$info{$stock, "currency"} = "RUB";
$info{$stock, "method"} = "sberbank";
$info{$stock, "bid"} = $xls->[1]{"E$start"};
$info{$stock, "ask"} = $xls->[1]{"D$start"};
$info{$stock, "last"} = $info{$stock, "bid"};
$quoter->store_date(\%info, $stock, {today => 1});
$info{$stock, "success"} = 1;
}
}
}
return wantarray() ? %info : \%info;
}
1;
__END__




Рис 5.2. Набор этого поста в emacs.

Очередная часть могучего труда готова. Удачи и успехов в освоении gnucash!

воскресенье, 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. Ура, еще одно удобство настроено.