21 юли 2008

Връх Синаница

От няколко седмици на няколко човека ни се въртеше в главата да се качим на връх Синаница. Беше ясно, че за изходна точка ще се ползва хижа Вихрен, докъдето ще се замъкнем с кола, но няколко други детайли се решиха в последния момент. Като че ли най-читаво беше да се отделят два дни с нощувка на хижа Синаница, но тъй като един човек от групата не се чувства комфортно по хижи, това отпадна като вариант и се реши цялото ходене да стане в едни ден. Вариантът да се мине без нощувка някъде също отпадна, тъй като това предполагаше ранно тръгване от София, което също не допадна на част от хората. Така че спането в Банско стана неизбежно. И така в петък вечер след работа се замъкнахме до Банско, а на следващия ден стартирахме от хижа Вихрен прехода си.

Връх Вихрен отдолу изглеждаше прелестен.

Като всяко начало и това бе трудно. Не знам дали поради факта, че не бях закусвал или просто още преди да влезна в някакъв ритъм започнахме да катерим, но определено не се чувствах в кондиция. Тъй като за първи път минавам по този маршрут, Бъндеришката порта (или поне това, което изглеждаше за било) ми се струваше не чак толкова далеч, но въпреки набирането на височина продължаваше да остава недостижима. Някъде след Муратовото езеро ...

... батериите съвсем сдадоха багажа и трябваше да се хапва. Един сандвич комбиниран със сникърс обаче подействаха доста добре. Като се драпнахме горе, гледката ...

... си заслужаваше усилията, които бяхме положили по камънаците.

След кратка почивка поехме по периферията ...

... на Голямото спано поле.

Някъде след около час трамбоване стигнахме до Синанишкия превал и видяхме нашата крайна цел.

Имаше чуденки дали може да се стигне по билото до него или трябваше да слезем долу в ниското до хижата и да го катерим от там. Понеже сме мазохисти избрахме второто. Всъщност никой от нас не беше катерил върха по билото от превала, а пък имаше няколко назъбени участъка, ...

... които не беше ясно дали се минават лесно. Като се има предвид натрупания опит покрай обхождането на Мальовишкия циркус (колкото и малко да изглеждат разстоянията, то не се взимат толкова бързо), някак си пътят надолу ни се стори естествен. Това си имаше и друг плюс. Напълнихме бутилките с вода на хижа Синаница, ...

... както и се поосвежихме с хубав планински чай. Той пък от своя страна вървеше с едни хубави „захарчета“.

Заредени със сили тръгнахме нагоре. Драпането щеше да е зловещо.

За сметка на това гледката отгоре бе страхотна.



Хижарката ни обясни, че после няма смисъл да слизаме по обратния път, а по билото за половин час ще стигнем до превала. С малко изключения, пътят по билото изглеждаше читав.

А гледката през отделните процепи си заслужаваше.

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

с всичките гледки по пътя.



17 юли 2008

Печат с qt4 под линукс

Едно от хубавите неща на свободния софтуер е, че с него може да се постигне всичко за крайно време. Вярно, че някой път това отнема по-малко от час, а друг път се точи с дни, но при наличие на желание няма невъзможни неща. Най-забавната случка, която съм имал, бе свързана с подкарването на една ISDN връзка под linux. След няколко часа борене, решихме да погледнем изходния код на драйвера на картата, за да разберем защо не стават нещата (имаше някакво съобщение за грешка) и веднага разбрахме, че не сме включили правилния кабел, където трябва. Ако правехме това нещо под windows едва ли щяхме да разберем за тази дребна грешка.

За съжаление борбата ми с печатането от qt4 програма под linux не беше толкова кратка (май съм отделил към 40 часа) и честно казано е малко спорно до колко краят е успешен. В тази връзка се сблъсках и с един от основните проблеми сред решенията с отворен код, който е свързан с това, че за да се свърши конкретна работа се ползват каскадно доста наброй приложения. Те от своя страна се развиват и начините на комуникации се изменят. При тези промени се чупи връзката между тях и в цялата тази ситуация не е ясно кой е виновен - извикващият или извикваният? Поради тази причина си мисля да споделя натрупаният опит, който макар и след 6 месеца да не е вече актуален, може да е от полза на някой.

Всичко започна със следния казус – едно и също приложение веднъж реализирано на qt3 и веднъж на qt4 печата в qt3 варианта си, а в qt4 варианта си не иска (всъщност на един от принтери печатът даваше грешка, а на друг просто част от текста беше отрязан). Разбира се, в такава ситуация веднага идва на ум, че проблемът е в qt4 библиотеката, която в конкретния случай бе 4.2.1. Всъщност проблемите се оказаха няколко, като част от тях са решени в qt 4.4.0, но имаше и такива в cups (поне във версия 1.2.7).

Може би сега е моментът да кажа как е организиран печата под linux. Като че ли в повечето случаи хората използват cups, който прави какви ли не работи. Qt4 библиотеката не прави изключение и, ако е компилирана (стандартно е) с такава опция, също го използва. Тук идва и първия нюанс. До преди 4.4 версията qt4 печата използва lpr командата като през тръба предава към нея това, което генерира като печат. Всичко хубаво, но е много вероятно тази команда да не ви е инсталирана. Особено ако правите минимални инсталации и bsd style командите на cups са пропуснати. От версия 4.4 нагоре работата вече е друга, тъй като печата става директно през cups библиотеката, като печата се съхранява във временен файл.

Интересно е в какъв формат се генерира това, което ще се отпечати? Отговорът е в native формат, което за windows и mac може би е ясно какво означава, но за linux e postscript при cups < 1.0.2 и pdf за по-високите версии. Всъщност точно тази иновация чупи печата по няколко линии. От една страна повечето програми ползват postcript към cups и съответно има разни неизчистени проблеми с използването на pdf (например landscape печат при pdf формат). От друга страна в qt3 се ползва postscript и тези нововъдения в qt4 променят доста логиката и не са тествани достатъчно. Например в qt 4.2.1 (оправено е в 4.4.0) при използване на pdf формат не се зареждат коректно данните за принтерите, което прецаква печата в ранна фаза. Принципно човек може явно да укаже дали да ползва pdf или postscript формат при печат, но с това се натриса на следващия проблем, който се наблюдава при печат на landscape неща. Ако се печата в pdf формат към cups трябва да се предаде параметър landscape, но ако се печата в postscript той трябва да се пропусне. Пичовете от Trolltech са съобразили това нещо, но за съжаление го правят на база версия на cups и пропускат факта, че програмата само може да си е избрала формата за печат. Единствения начин да се спасите от този проблем (освен да чакате коригирана версия или сами да пачвате библиотеката) е вие да укажете каква външна програма да се ползва. В този случай qt4 не слага допълнителни опции към командата освен името на принтера. Лошото е, че ако се налага и вие не може да слагате и за целта трябва да минавате през външни скриптове. Което прави работата съвсем куца. Явно, докато KDE4 не влезе в масова употреба, проблемите с печата няма да се изчистят. Принципно, ако не ви се налага на печатите landscape, qt 4.4 ще свърши работа. Отделен е въпросът дали върви във всяка дистрибуция (в debian etch го няма и правенето на пакети за него беше едно голямо изживяване най-малкото, защото засмука 4G от диска и трябваше ударно да трия неща, за да не се окаже, че съм батисал няколко часа), макар че тези, които ще предлагат kde 4.1 ще го мъкнат. Ако сте в останалите случаи, то временно ще ви се налага да правите хватки като описаните по-горе, което в код се изразяват на нещо от сорта:

void print()
{
QPrinter* printer = new QPrinter();
QPrintDialog printDialog(printer, this);
if (printDialog.exec() == QDialog::Accepted)
{
#if defined (Q_OS_UNIX) && ! defined (Q_WS_MAC)
if (printer->outputFileName().isEmpty())
{
printer->setOutputFormat(QPrinter::PostScriptFormat);
printer->setPrintProgram("/usr/bin/lpr");
}
#endif
…
}
}

02 юли 2008

През Урдиния циркус

В петък след работа се вдигнахме в района на Мальовица (между Говедарци и ЦПШ-то се намират разни възможности за спане). Бяхме една дузина хора, всеки със собствени виждания какво му се прави. Някои просто искаха да се напият здраво (не е толкова лесно на чист въздух) и да покрещят подобаващо сред природата, пък други като мен имаха идеята да се наспят (режимът от последната седмица с лягане след 12 през нощта и ставане в 6 сутринта не ми се отрази добре) и да се поразходят.

Възможните маршрути за еднодневна разходка бяха доста: врътка през седемте езера, обикаляне на Мальовишкия циркус по билото, разходка из Урдиния циркус, както и още много възможности с продължителност в едната посока под 2 часа. Единственото, което беше притеснително, че даваха да вали на следващия ден. Поради тази причина не ми се щеше да се поема по маршрути без маркировка. Хвърляхме (няколко пъти) монета на къде да тръгнем и (все) се падна Урдиния циркус.

Работата със спането не стана, като се има предвид, че си легнах след 1, но се надявах на сутринта да има яко дъжд, така че да не ходим никъде. Времето обаче ни беше направило изненада. Слънчевите лъчи започнаха да влиза от ранни зори през стъклото и ми стана ясно, че ще ходим. На небето нямаше и грам облаче. Малко след 8 часа закусихме. След това се метнахме с кола до ЦПШ-то и към 9 започна нашата разходка. Пътят до хижа Мальовица го взехме за норматив и отпрашихме към втора тераса. Времето беше повече от чудесно.


За сметка на това реките бяха доста пълноводни и съответно преминаването им беше една идея по затруднено.


Малко преди втора тераса кривнахме в дясно, за да потеглим към Ушите. В началото „пътеката” трудно се виждаше, но след като преминахме няколко камари с камъни всичко си дойде на мястото. Гледката надолу си заслужаваше.


Гледката нагоре също.


Там някъде мярнахме коза (или поне на такова ми прилича).


На бързо минахме покрай трите Мальовишки езера.


И някъде след 12 вече бяхме стигнали до Ушите и се отвори хубава гледка към Урдиния циркус.


За съжаление облаците на небето взеха да се сгъстяват и потъмняват. От тук следваше и по-трудната част - спускането надолу. Макар и да не е ясно откъде минава „пътеката” (честно казано почти веднага я загубихме), то посоката беше ясна. Единственият неприятен участък е едно спускане в клекове, където човек много лесно може да се загуби (преди 8 години успяхме) и ще е крайно неприятно, ако бъде съчетано с дъжд. Е, не успяхме да се загубим.

Долу в ниското ни се наложи на няколко пъти да преджапваме разни реки. Стига да не е по-дълбоко 5 см, нямах проблеми да преминавам с моите обувки, без да се намокря, но трябваше да се внимава да не се подхлъзна на някой камък. Част от групата бяха с платнени маратонки и събуването беше неизбежно. На едно място реката беше толкова дълбока, че май трябваше всички да се събуваме. Аз реших да се изхитря и да я прескоча в най-тясната и част (някъде около метър и половина). За мое съжаление кракът, с който отскочих получи схващане, от което доста ме заболя, а времето на скока ми се стори цяла вечност. Не успях да падна в реката, но се строполих с някакви гримаси от другата страна и всички помислиха, че съм изкълчил нещо. Разбира се, истината беше друга, макар и през следваща половин минута да ми беше трудно ходенето.

За капак на всичко започна и да вали. В началото слабо, но никой не изпитваше съмнение за потенциала, който можеше да се достигне. Започнахме да си слагаме дъждобраните в подготовка за най-лошото, но то ни се размина. Не че не валя, но хората от една колибка, която са направили покрай гледането на животни в планината, ни поканиха на сухо.


Блаженството беше голямо като извадиха и ракията. В приказки прекарахме около час. Събраха се и други туристи. Не съм подозирал, че е толкова населено в този район.

Като попремина дъжда се спуснахме надолу по долината. Мислех си, че това ще е най-лесната част, но бях сбъркал. Покрай избуялата растителност трудно се виждаше пътека, а освен това беше доста мокро и мочурливо. В един момент успях да затъна почти до коляно в някаква кал.


Усещането беше неприятно. Обувката ми се напълни с вода (условно казано) и мембраната загуби смисъла си. Предстоеше ми няколко часа джвакане. След около три часа бяхме стигнали отново до ЦПШ-то и мръсни като прасета се вместихме в колата.

29 юни 2008

Електронно банкиране с ОББ

В края на юни блогът става на три години. Всичко започна от една случка с ОББ и сега по случай трите години ще им посветя още един постинг. Не, не съм станал техен клиент, но помагах в активирането на електронно банкиране за една фирма.

Представа си нямам как е уредено електронното банкиране из другите банки, но специално регистрацията на това на ОББ е мъка. Обезателно трябва да се спазват всички инструкции. Лошото е, че само това не е достатъчно, както и че на сайта им има доста неактуални вече неща. Например, навремето ползваха самоподписани сертификати на web сървърите и имаше инструкция да се отговаря с yes на всички въпроси (много несериозен подход). Времето със самоподписаните сертификати е отдавна минало, но инструкцията седи.

Та да започнем с регистрацията. В зависимост как стигнете до нея, може да минете и през кратки инструкции как протича цялата процедура. Има една стъпка, в която се генерира сертификат и там задължително ви трябва IE заради някакви ActiveX неща. По отношение на регистрацията не срещам такова изискване и смело решавам да пробвам с Firefox под Linux. Груба грешка. Първоначално казва, че ми трябва IE, но след един refresh работата тръгва. Макар и самата регистрация да е преминаване през няколко форми, в които се събира информация и после се изпраща на някъде, тя е така направена, че се чупи под Firefox (това е толкова невероятно, че направо си мисля, че е направено нарочно). Отделно има някакви недомислици, че не може да въведе запетая в полето за адрес или пък са ви ограничили паролата да съдържа само букви и цифри.

Регистрирам се през IE, след което започвам да чакам да ми обработят регистрацията. Макар и в инструкциите да пише да проверя какво става след 24 часа, всъщност мина цяла седмица. Не знам защо е толкова бавно и какви са административните процедури, но поне на мен ми се струва, че този срок е ужасно дълъг.

След като заявката е обработена, следващата стъпка е подписване на договор. Титулярът мина през банката да свърши тази формалност и му дадоха едно листче, като тези за дебитните карти на Борика, на което имаше потребител (някаква дълга комбинация от цифри) и парола за генериране на сертификата. Тук е мястото да отбележа, че тази парола е за генериране на сертификата. За логване в системата се ползва паролата зададено в процеса на регистрация, така че е хубаво да се помни.

С генерирането на сертификата падна голяма борба. Има едни инструкции, в които пише как трябва да се настрои IE, така че да няма проблеми с изпълнението на ActiveX нещата. Всичко точно, но греда. Първо трябваше да разкарам блокирането на popup-и, но след това забих на някаква доста неинформативна грешка. Няколко опита, но все същото. Така или иначе без сертификат, може да се прави всичко без нареждане на преводи. Тъй като искам да се ползва електронен подпис (като си говорих с човек от ОББ работят със всички доставчици), се чудя защо ми е да генерирам този сертификат (всъщност недостатъка на подхода със сертификата на ОББ е че трябва да се импортира в browser-а, което означава, че всеки който знае паролата за импортираните сертификати, както и паролата за вход в системата може да банкира на воля, което на мен ми се вижда не много надеждна работа. От друга страна, ако го запишете на някаква карта и съответно имате и устройство за четене е далавера, тъй като важи три години и не плащате нищо за него, а разходите за карта и устройство ги има и при УЕП), и не мога ли да действам с подписа. Системата разпознава наличието на подписа, но също така информира, че е нужно ръчно да се регистрира. От профила за електронното банкиране намирам регистрация на УЕП, но това не променя крайния резултат.

Тъй като и регистрацията и генерирането на сертификат ги правя привечер в извън работното време на банката, то опцията да се обадя на поддръжката не е изпълнима. Някак си попадам на някакъв FAQ. Та там някъде имаше въпрос какво се прави, ако има проблем с генерирането на сертификата. Разбира се, имаше предположение че не са спазени инструкциите за настройка на IE, което веднага бе отхвърлено. Таман започвам да се чудя защо работата не върви и виждам коментар – може би ползвате Windows Vista. Аха, ето къде бил ключът от палатката. В крайна сметка това е единственият Windows във фирмата, намиращ се на един ново закупен лаптоп. Добре че си носа моя лаптоп и на него имам XP, което си бях взел за да компилирам програмите, които пиша и под Windows, та работата минава успешно. Но като цяло ситуацията е много тъпа. Ако вие сте новорегистрирана фирма, няма откъде да си купите Windows различен от Vista (ако сте фирма с история, може да се надявате, че поне веднъж сте сглупили да си купите XP) и съответно за един кратък момент от време трябва да се правите на пирати, за да подкарате електронното банкиране на ОББ. Честно казано не знам какво би станало, ако ползвате IE с wine под linux, но така или иначе пак се нарушава лиценза.

На следващия ден показвам на титуляра как става ауторизацията в системата и таман дойде негов ред да пробва, и се оказа, че сертификатът, с който се борих предишната вечер, вече не може да се използва. Явно в ОББ са валидирали електронния подпис. Разбира се, срещнах малко затруднения с подкарването му, но в този случай вината си беше моя, че не съобразих няколко неща (под Firefox първо ти иска PIN-а замаскиран в термина „главна парола“, а след това се избира сертификат) но работите тръгнаха.

Самото банкиране изглежда доста приятно направено и няма никакъв проблем да се ползва под Linux с Firefox. Единственото, което ме дразни, е че всеки път изкача съобщение за миграция от сертификати издадени от банката към използване на УЕП, макар и вече да се ползва УЕП.

20 юни 2008

Няколко мита относно застаряването на населението в България

Последиците от застаряване на населението са едни от големите предизвикателства, пред които изправени редица страни, включително и България. Доколко този процес може да се квалифицира като проблематичен и въпрос на гледна точка, но така или иначе в пространството витаят разни предложения за политики, които в по-голямата си степен се базират на митове.

Демографски митове. Едно от схващанията, което циркулира е, че трябва да се увеличи раждаемостта. Сега ще обясня защо това не е хубаво да се прави. Принципно застаряването на населението е следствие на увеличаващата се продължителност на живота, което при равни други условия води до увеличаване на дела на хората в по-високите възрастови групи. Този ефект в някаква степен се засилва от това, че успоредно с него намалява и коефициента на плодовитост. Доколко има причинно следствена връзка между двете неща, не ми е в компетенцията да се изкажа, но според теорията (която е на ниво хипотеза, макар и подкрепена от редица изследвания в биологията) за генетичната информация този феномен се обяснява така: тъй като организмите стареят, то те се възпроизвеждат, за да не се загуби генетичната информация. Когато поради промяна на средата процесът на стареене се забавя, то необходимостта от възпроизвеждане е по-малка.

Разбира се, ако е възможно през някакви политики да се стимулира увеличаване на раждаемостта, то това би компенсирало „негативите” от увеличаване на продължителността на живота, но не е трудно да се покажа, че за да се неутрализират процесите на застаряване, то населението ще трябва расте с бясна скорост. Последното едва ли е лошо, ако бяхме започнали да колонизираме Слънчевата система и не само, но при сегашните ограничени природни ресурси, този подход няма да може да се прилага много дълго.

По отношение на България ситуацията е още по-интересна, тъй като според доста прогнози населението през следващите 50 години ще намалее с около 30%. Разбира се, като причина за това се посочва ниската раждаемост измерена като брой новородени на 1000 души от населението, но се пропуска фактът, че като коефициент на плодовитост (брой деца родени от една жена) сме доста далеч от последните в ЕС. За 2006 (за 2007 май още няма данни) според Евростат числата са:


Страна Коефициент на плодовитост
Словакия 1.24207
Полша 1.27277
Литва 1.30665
Словения 1.31293
Румъния 1.31307
Германия 1.32126
Чехия 1.32605
Унгария 1.33823
Латвия 1.34807
Португалия 1.35008
България 1.37534
Испания 1.37943
Гърция 1.39411
Австрия 1.39892
Кипър 1.47228
Естония 1.54896
Люксембург 1.65468
Холандия 1.69994
Дания 1.83267
Великобритания 1.83716
Финландия 1.83814
Швеция 1.8526
Франция 2.00306
Интересно тогава откъде идват демографските проблеми на България? Отговорът е много прост, от структурата на населението. Структурата на населението в България в началото на 2007 според Евростат има вида:
Както може да се забележи, началните години на прехода са направили деформация в структурата на младото тогава население, което няма как да не се отрази на броя на родените по това време деца. Това от своя страна се връща сега със страшна сила (всъщност ще окаже и значително влияние за доста голям хоризонт напред), защото дори и да имаме най-високия коефициент на плодовитост в Европа, то няма кой да ражда деца (жените във фертилна възраст спрямо общото население са малко). За да се компенсира този ефект, то за следващите 10-15 години средно една жена трябва да ражда поне три деца, което е прекалено амбициозно като цел. От някаква такава гледна точка е неизбежен фактът, че след 50 години населението в България ще е между 5 и 6 млн. души. Също така е ясно, че с демографски мерки няма как да се решат проблемите (в пенсионната система и здравеопазването) дължащи се на застаряване на населението и те трябва да бъдат адресирани по друг начин.

Разбира се, и с не чак толкова амбициозно повишаване на коефициента на плодовитост ще се „подобри” положението, но трябва да се има предвид, че ефектът ще е минимален, а също така възниква въпросът дали има ли смисъл? Демографски шок от 90-те години е формирал доста вълнички във възрастовата структура на населението и ако коефициента на плодовитост се доближи до 2.1, то те ще се запазят във времето, което погледнато в един по-дълъг хоризонт от време ще доведе до повече предизвикателства както на пазара на труда (чрез влизане и излизане на някоя вълна от него), така и на пенсионната система и образователния сектор. И за да не бъда разбран погрешно, аз не казвам, че сегашната стойност на коефициента на плодовитост в България е приемлива и не трябва да се правят мерки за неговото увеличаване. Лично според мен той ще се увеличи (причините за сегашните „ниски” стойности са свързани със социалните промени в страната и изместване на възрастта на раждане на първо дете и през този период са минали повечето от „отличниците” в горната таблица). Това, което поне за мен е важно, акцентът на демографската политика (ако има такава) да не бъде броя на населението в страната, а по скоро как да се изгладят в дългосрочен план вълните, които са се формирали в структурата на населението.

Митове за пенсионната система. Най-големият мит, който се върти около застаряването на населението (респективно увеличаващата се продължителност на живота) и пенсионната система, е това, че ако България премине на капиталова пенсионна система, то проблемите за пенсионната система идващи от застаряване на населението ще изчезнат. Това твърдение не е вярно. Няма да се спирам на това какви са ползите от капиталовата пенсионна система, както и каква глупост е пенсионната система да е на 100% капиталова. Това, на което ще обърна внимание, е ефектът идващ от застаряването на населението, което както вече стана ясно се движи от увеличаващата се продължителност на живота. При разходопокривната пенсионна система пенсиите на пенсионери се плащат от осигуровките на работещите. При застаряване на населението, това, което се получава е, че един работещ започва да издържа повече пенсионери и крайният резултат е, че при равни други условия пенсионерите трябва да получават по-ниски пенсии.

При капиталовата система този проблем е също на дневен ред. Ако сте натрупали една сума във вашата партида, то като се пенсионирате на заветната дата, тази сума на някакъв принцип ви се изплаща на месечни вноски (пенсии). Едва ли е трудно да се съобрази, че ако ви остават повече години живот (напълно естествено при увеличаваща се продължителност на живота), при равни други условия ще получавате по-ниска пенсия. Това води до влошаване на коефициента на заместване (размер на пенсия към размер на последна заплата) и определено няма да ви направи щастлив.

И в двете ситуации изходът е един - по-висока възраст за пенсиониране. При разходопокривната система, това означава по-малко пенсионери и по-високи пенсии, а при капиталовата система по-малко години като пенсионер и по-висока пенсия. За съжаление в България липсват дебати на тази тема (в крайна сметка увеличаването на възрастта на пенсиониране с 5 години е убийствено да бъде разхвърляно за по-малко от 10 годишен период и ако има необходимост от такива действия, то те трябва да са планирани от доста по-далеч) и хората, които говорят за реформи на пенсионната система имат доста по-къс хоризонт, а реформите все се свеждат до това как работодателите да плащат по-малко (нямам предвид отношението работник работодател, тъй като така или иначе и двете вноски влизат в разходите за труд на работодателите).