Ян. 302009
 

В момента правим тестове за това колко държи ЕСОЕД. Както знаете (от лекцията ми на пролетния семинар на БГПО миналата година), това е част от проекта за електронно правителство. В този проект аз участвам като database експерт – направих дизайна на БД и, по-важно, начините, по които Java приложението ЕСОЕД я достъпва.

Хавата е следната: влизат едни съобщения документи и се записват във входящата опашка. После се обработват на нещо като конвейер – проверяват се разни неща, подписват се, криптират се и т.н; готовите документи отиват в изходящата опашка, от където ги вземат Java процесите, които се занимават с изпращане и ги изпращат. Тук има една тъжна подробност: докато всички предишни обработки могат да стават колкото си искат паралелно, при изпращането трябва да изпращаме само по един документ към всяка система-получател, като този документ е изрично най-стария, т.е. документите се изпращат подредени. Това е един от най-конфликтните моменти, по който сме спорили мнооого дни, защото спъва скалируемостта. Но техническата му реализация е относително проста: има една функция в БД, която се извиква от всеки свободен изпращач. Тази функция намира документ, който:
– е в изходящата опашка, т.е. готов е за изпращане
– не е заключен от друг изпращач
– е най-стария неизпратен документ за тази дестинация, т.е. няма по-стар от него документ за същия получател, в никоя опашка
Щом намери такъв документ, функцията го заключва и връща неговото ID на Java-та, да си се занимава с изпращането.

Цялото това търсене на подходящ документ съм го реализирал с 1 (една!) заявка, която се пада най-тежката заявка в целия ЕСОЕД. И днес се изкефих колко оптимална е тя. В голяма степен заслугата за това е много добре измисления дизайн на БД и на работата с нея, за което претендирам да е моя заслуга.

Та тази заявка, оказа се, е изпълнена 631 147 пъти от последния рестарт на БД до сега, като за това е отнела общо 17 463 906 250 микросекунди процесорно време или общо около 17 960 692 000 микросекунди с включени всички други изчаквания (дискови операции и т.н.). Това е около 0,027670 CPU секунди на изпълнение или 0,028457 секунди по часовник. Пак казвам, това е най-тежката заявка в системата!

А най-красивото е, че при този дизайн, колкото и да се натовари системата (с много съобщения и стари данни), това време няма да скочи значително.

Обичам си професията! 🙂

 Posted by at 18:12
Ян. 302009
 

Реших да понауча малко Perl. Всички го хвалят, че бил супер гъвкав език. Аз, обаче, не съм програмирал от години (ако не броим по някоя друга процедурка на PL/SQL тук-там). Оказа се, че програмирането като работа не се забравя, но сблъсъка с нов език ме изненада.

Както и да е. Предисторията е следната: тази седмица трябваше да инсталираме един тестов Oracle 10.2 на Linux и в знак на оптимизъм избрах Oracle Unbreakable Linux 4 Update 2 x86_64, защото от Oracle 10.2 на RHEL 5 имам лоши спомени. Интересното тук е архитектурата. Не знам RHEL4 дали се държи по същия начин, но се сблъскахме с един много тъп проблем. Преди инсталацията на Oracle DB, когато слагах всички необходими пакети, rpm започна да се държи странно – обясняваше ми, че един пакет го няма, а rpm -q показваше, че го има. Оказа се, че инсталатора е сложил i386 версията, а на мен ми трябва x86_64 версията. И двете си стоят мирно на инсталационното CD, но инсталера по най-тъпия начин е избрал 32 битовата.

Това го преборихме. Но то ме вдъхнови за първата, може би не много смислена, но ПЪРВА за мен програмка на perl. Реших да изнамеря всички пакети, които са инсталирани, но не и в x86_64 вариант.

Почнах наистина а началото, но с много оптимизъм. Примерно, за да взема името на всеки пакет реших най-оптимистично да се боря с regular exressions – това само по себе си е едно дълбоко море. Започнах така:

#!/usr/bin/env perl

use strict;
use warnings;

#my $s = "world";
#print "Hello, $s\n";
my $pn;
my @in=`rpm -qa`;
chomp @in;

foreach (@in) {
  $pn = $_;
  if ($pn =~ /((\w|-)+)-(\d+[-\.]+[-\w\.]*)/) {
        print "For $pn";
        print ", name is $1";
        print " and version is $3\n";
...

Този regexp сам по себе си е голямо заклинание, обаче колкото и да се мъча, не можах да хвана всички случаи. Най-брадатия пакет се оказа java-1.4.2-gcj-compat-1.4.2.0-27jpp – просто няма (или аз не мога да направя) regexp, който да се справи с отделянето на името от версията. Странното е, че като го погледна и ми става ясно коя част е име и коя – версия; но не мога да формулирам точния алгоритъм, поне в тази нова за мен среда. Като стана дума за среда, използвам просто vim, за по-трудно.

Както и да е. Пробите и грешките бяха много. Пешо помага, Xerxes също удари едно рамо в момент, в който бях забил по много тъп начин. И на края успях да стигна до Първата Работеща Програма на Perl (ПРПП), която съм писал лично аз:

#!/usr/bin/env perl

use strict;
use warnings;

my $Str64 = "x86_64";

sub GetArch {
# This procedure checks if some package's architecture is $Str64
# If thеre is more than one package with the same name
# (and different architectures), it will return $Str64
# If there is no package installation with #Str64 architecture
# it will return the first architecture occured

  # get package name from the parameters
  my $PckName = shift;
  # get installed architectures for the package
  my @PckArchs = `rpm --query --queryformat \"%{ARCH}\n\" $PckName`;
  # init $Result with the first architecture found
  my $Result = $PckArchs[0];
  my $CurrArch;

  # lop through architectures
  foreach (@PckArchs) {
      chomp;
      $CurrArch = $_;
      # Check if the architecture is what we are looking for
      if ($CurrArch eq $Str64)  {
          # Victory!
          $Result = $CurrArch;
          }
      }
  return $Result;
}

my $pn;
# we take all package names
my @in=`rpm -qa --queryformat \"%{NAME}\n\"`;
#sort the package names (will look better)
@in = sort(@in);
# remove the new line character
chomp @in;
my $pa;
my $PckCount = 0;

#loop through the package names
foreach (@in) {
    # take thе current package name
    $pn = $_;
    # get package's architecture
    $pa = GetArch($pn);
    chomp($pa);
    #check if the architecture is fine 
    #(and if thе package has architecture at all)
    if (($pa ne $Str64 ) && ($pa ne "noarch")) {
        # this package is not fine, let's report it
        print "$pn is $pa\n";
        $PckCount++;
    }
}
print "Number of bad packages: $PckCount\n";

Може би може да се направи много по-елегантно, но за ПРПП и това е ОК 🙂

P.S. оказа се че има инсталирани цели 41 такива пакета.

P.P.S. Highlight Source Pro плъгина на WordPress, който си сложих днес, не се справя много блестящо с обратните кавички (`)

P.P.P.S. Оправих си Highlight Source Pro. Във файла wp-content\plugins\highlight-source-pro\geshi\geshi\perl.php на ред 63 вместо
'QUOTEMARKS' => array('"'),
написах
'QUOTEMARKS' => array('"','`'),

 Posted by at 15:58
Ян. 292009
 

Аз не искам да обяснявам какво е станало. Нито съм бил там, нито съм виждал лавина на живо. Но съм ходил на планина, дори и през зимата. Ходил съм и на ски. И съм ходил по пътищата. И съм ги виждал тези хора. За това имам мнение.

Това да караш freeride е голяма зарибявка. Супер яко е, има хиляди филми и клипчета. Там можеш да почувстваш истинската свобода. Не че съм го правил, но съм правил малко подобни неща, говорил съм с много хора и ги разбирам. Удоволствието е неописуемо. Това е като наркотик. Невероятно. Истинска свобода!

Но… всички знаем, че свободата си има цена. Голямата свобода има голяма цена. Планината не бива да се подценява. Планината не прощава. Дори и през лятото, да не говорим за зимата. Знам, защото съм ходил много пъти в планината. Дори и лятно време. И знам какво е чувството, но знам и какви са опасностите.

Аз уважавам планината. Уважавам и живота си. Обичам удоволствието. И май това са трите стълба, между които стои компромиса – дали да направиш нещо или не. Не съм freerider, защото по природа съм твърде предпазлив. Но съм замръквал в планината, през зимата, загубил пътеката, в сняг до кръста, при страшна виелица, студ – дърво и камък се пукат буквално! – и знам какво е. Това ми беше предупреждение. Това ми е обеца на ухото.

Има хора, които не уважават планината и живота си. Или поне ги уважават много по-малко, от колкото си уважават кефа. Тук няма черно и бяло, всичко е въпрос на компромис. Но това момче, което е затрупано от лавината, просто си е търсило белята.

Вижте бюлетина на БАССЕС за лавинната опасност в района на Банско вчера:

Avalanche Buletin

Вижте улеите, по които са се пускали тези хлапета (на моята възраст, поне по ЕГН):

Улеи Тодорка
(снимката е от форума на БАССЕС)

Това е пълна безотговорност. Почти като да караш пил. Само дето шанса да пострадат невинни е малко по-малък. Според статистика, спомената във форума на ПСС, „Над 80% от лавините се причиняват от хората – скиори, бордисти, шейнари и туристи„.

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

Умолявам ви, хора, внимавайте. С планината шега не бива – никога! Отидете на някой от курсовете за лавинна безопасност. Посъветвайте се с ПСС за обстановката. Преценявайте условията. Това, че някой хлапак е дърпал дявоал за опашката и е затрупан от лавина си е негов проблем. Но почерня живота на всичките му близки. На хората, които обича (освен ако не обича само себе си). Затруднява живота и на хората от ПСС (според форума по време на издирването са паднали още 2 или 3 по-малки лавини в района), които и сега са там с риск за живота си, за да се опитат да намерят момчето, макар и шанса да е жив да е абсолютно имагинрен.

Моля уважавайте и труда на ПСС. Ще цитирам едно мнение от форума на ПСС. Gaitan:

Днес видях няколко невероятно тъпи човека на Шилигарника, които не правеха път на шейна, тръгнала за участие в акцията. Единия дигна скандал на спасителя, че искал да маневрира оттам, където оня си почивал. Други изобщо не се отместваха, въпреки светлините, звуковия сигнал и внимателното маневриране на човека. Трети искаха да се „напушат нечовешки, да набримчат музиката в слушалките“ и да пускат други улеи -добре, че спряха лифтовете за нагоре.

Още нещо. Много хора се опитват да вменят вина на Юлен (фирмата, която стопанисва ски съоръженията в Банско) за случая. Че не били предупредили, не били забранили, не били оградили, нямало пазачи, които да спират лудите глави. Това са пълни глупости. Такъв човек няма да се спре нито от въже, нито от охранител. Все ще намери от къде да мине. Освен това Юлен отговарят за тези улеи точно толкова, колкото и за всички други неохраняеми части в планината. Ако някой бордист загине в южен Пирин, пак ли Юлен ще са му виновни?

Но има нещо друго. Според Дир.БГ:

Кметът на Банско Александър Краваров, който бе на мястото на инцидента, заяви, че издирваният мъж е и бивш скиучител в дружество „Юлен“.

Това вече би било проблем. Защото аз не бих искал такъв човек да учи мен или децата ми как се карат ски или сноуборд. Ако това е истина Юлен трябва да затегнат реда в собствените си редици.

Е това е… малко дълго стана, но наистина има какво да се каже. Даже още много. Следете темите във форумите на БАССЕС и ПСС. Там и малко по-добре са обсъдени конкретните грешки – че са тръгнали по улей при лавинна опасност, че са се движили заедно вместо един по един, че са тръгнали без PIPSове и т.н.

 Posted by at 11:25
Ян. 282009
 

Много внимавайте, когато четете този блог. Защото аз може и да имам пистолет. Те всички блогъри може да имат пистолет. Kато този: „Блогърът с пистолет“.

Дааа… Опасно е да общуваш с блогъри. Точно те са ония, които отвличат цели автобуси със заложници.

Вестник „24 часа“ е уловил съвсем конкретно отличителните белези на човека, който напълни новините вчера. Той е на първо място блогър – нали се сещате, това са ония, дето са страшни и опасни. А, и освен това, между другото, има и пистолет. Но не е „мъжът с пистолет“, или „свелиевецът с пистолет“, или „частния охранител с пистолет“, или „(регистрираният в психото) с пистолет“. Това не е толкова характерно за него и не може да подскаже с една дума що за чудовище е той.

Не, най-добре ти става ясно като прочетеш „Блогърът с пистолет“.

Е, Миков щеше да е по-щастлив ако дефиницията е по-широка: „(човекът който използва всякакви различни средства за комуникация, ходи по улиците без да е съобщил предварително в МВР къде отива, пътува между различни градове, среща се с разни хора без присъствието на оперативен служител) с пистолет“. Че нашите правоохранителни органи искат да ловят терористи във всякакви комуникационни канали. Обаче – нъц, не изглежда добре като заглавие. За това е доволен и от „Блогърът с пистолет“. Така и така точно сега се бори да прекара интернет трафика през своите очи. За да излови и контролира злите интернетери – блогъри, форумци, чатъри и други подобни опасни елементи.

Бля!

 Posted by at 15:30
Ян. 272009
 

„Нови 1 млн. кв. м. жилища в София“, пише в Дир.БГ. Бърза сметка: цената на жилищата в София средно е малко над 1000 евро на квадрат. Значи ли това, че строителните лами се надяват да лапнат над 1 милиард евро за година само от жилища в София? Това са над 2 милиарда (2 000 000 000) лева. Само от жилищата! Е това е лакомия.

Няма как да стане при БВП около 60-70 милиарда за цялата страна.

Ех… все пак това има и добра страна. В средносрочен план се надявам да се уредим с по-голяма къщичка. И предвид тази ситуация… цените ще стават все по-изгодни 🙂

 Posted by at 10:29
Ян. 262009
 

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

 Posted by at 16:52

Нов интересен блог

 Общи  Коментарите са изключени за Нов интересен блог
Ян. 202009
 

Да ви представя Harald van Breederode.

Аз се запознах с него лятото, когато ходих на изпит в Холандия – Harald беше proctor на изпита. Той ни гледаше да не преписваме. Всъщност „гледаше“ не е точния термин, защото той е напълно сляп.

Загубил е зрението си преди няколко години. Но това не му пречи да участва активно в общността. Има страшно много познания за Oracle, за Unix средите и за ядрото на Linux. Играе си активно с development – разказа ми за един бъг в комуникацията между VMWare Server и ядрото на Linux, който открил, отстранил и е предложил patch (за Unbreakable Linux), който се използва от всички в Oracle (worldwide).

В същото време участва активно в дейностите на Oracle University. Не само че води Advanced курсове (RAC, DataGuard) но и участва в създаването на учебните материали, примерно за курсовете за Oracle 11g. А, и се е сертифицирал като Oracle Certified Master.

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

И човек, който има всички шансове да забърка интересен blog.

 Posted by at 11:53
Ян. 132009
 

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

Ти гласува ли, че сега мрънкаш срещу управниците?

Много ми се иска да разбера, ама няма как… Ако можех щях да дойда утре на протеста с един детектор на лъжата и да попитам абсолютно всеки един от протестиращите дали е гласувал на изборите, на които беше избран този парламент

Щото по избори избирателната активност клони към нула, ама после мрънканици и протести – бол. Щото по избори червените бабички и туристите от югоизток решават кой да ни управлява, а после ревем.

Искам от сега да кажа, а лятото ще го напомня:

Който не е гласувал хич да не се оплаква после от управниците!

(Аз гласувах. И не съм доволен. Но пак ще гласувам)

 Posted by at 19:19
Ян. 102009
 

В радиус от 10 минути (пеша) от нашия офис няма кой-знае колко места за хапване по обяд. Една от възможностите е пицария „Добро“ на улица Якубица. Там готвят много вкусно, обстановката е приятна, обслужването не е никак зле и порциите не са малки. Преди няколко месеца си „актуализираха“ цените, но това се случва навсякъде…

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

Е, беше.

Днес се замъкнахме пак там, 10 човека, и без да ни подканват слязохме в залата за непушачи. И – изненада. Имаше само една заета маса, на която, обаче, пушеха. Попитахме сервитьорката защо така и тя каза „Ами това е управителя, той има гости и така…“. При това го каза сякаш е напълно в реда на нещата!

Вярвайте ми, стана ми супер тъпо. Сега имам огромно желание да избягвам занапред тази пицария. И не защото на другите места няма да съм сред пушачи (само в Мистър Пица има такова разделение). Просто съм изключително обиден от поведението на управителя на Добро. Язък за старанието на готвачите и другия персонал – когато шефа не струва, всичко отива по дяволите.

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

Хайде сега някой да ми каже как след 2010 година ще се спазва пълната забрана за пушене в заведенията.

 Posted by at 14:56