юли 242009
 

Преди 3 дни зададох на учтивите блогочитетели един статистически въпрос. Това, че получих отговори, при това то доста (като за моя блог), ме кара да се чувствам задължен да споделя решението, до което достигнах. Естествено, не мога да претендирам, че е перфектно (или окончателно). Но успях да се вслушам в препоръките и да измисля начин на извличане, при който:
– извличам данните за произволен период (в случая – 90 дни)
– от множеството премахвам всички наблюдения, чиито стойности са под 11% или над 89% (това има още да се доработва, в момента не се държи добре при много еднакви стойности)
– взимам медиана и средно отклонение, с които да правя сравнение на текущата стойност. Не съм намерил начин да взема лесно очакваната стойност (expected value), за това разчитам на медианата
– имам голям контрол върху периодите, за които извършвам наблюденията: примерно мога да премахна уикендите, наблюдавам само за опредени часове и т.н. (това го правя с pl/sql, иначе заявката става твърде брадата)

Както се досещате, смятам с такава заявка да следя определен процес в работата си. В момента тествам решението, за да уточня параметрите. Но за сега се получи нещо такова:

select sum(decode(period, 0, rec_cnt, 0)) Current_records,
       median(case
                 when rec_rank < 0.11 then
                  null
                 when rec_rank > 0.89 then
                  null
                 else
                  rec_cnt
               end) Records_median,
       stddev(case
                 when rec_rank < 0.11 then
                  null
                 when rec_rank > 0.89 then
                  null
                 else
                  rec_cnt
               end) Records_deviation,
  from (select percent_rank() over(order by rec_cnt) rec_rank, rec_cnt, period
           from (select get_sum_period_hrs(input_time) period, sum(people_count) rec_cnt
                    from input_stats
                   where input_time > sysdate - 90
                   group by get_sum_period_hrs(input_time))
          where period >= 0)

Това работи с таблица, в която имам статистика за наблюдаваните стойности, която се попълва на произволен кратък интервал (няколко минути). Ако използвам аналогията от предния пост, в таблицата имам колонка input_time (кога е направен текущия запис) и people_count (колко души са влезли след последния запис). Имам функция get_sum_period_hrs, която ми връща 0 за текущия период, >0 за предишен период на наблюдение и <0 за записи, които са извън желаните от мен периоди на наблюдение.

Не смятам това решение за съвършено или дори за добър пример, но се чувствам длъжен да споделя резултата след като получих толкова помощ от вас 🙂

 Posted by at 9:50

Oracle RAC rolling patchset installation

 Без категория  Коментарите са изключени за Oracle RAC rolling patchset installation
юли 242009
 

Колкото и невероятно да звучи, това нещо е не само възможно, ами и доста лесно. Снощи направихме zero downtime rolling patch на един клъстер от 10.2.0.2 на 10.2.0.4 (само на CRS). Необходимите стъпки са описани в Metalink Note 338706.1 и наистина работят 🙂

Напомням, че който иска да прави rolling upgrade на CRS от 10g на 11g, може да погледне тази статия на Jason Arneil.

 Posted by at 9:17
юли 212009
 

Днес си блъскам главата над сления проблем:

Имам няколко стойности, примерно брой хора, които са влизали между 8:00 и 10:00 часа в сградата, за една седмица назад (може и за повече, ако се налага). Примерно:
Понеделник: 1180
Вторник: 1177
Сряда: 1184
Четвъртък: 1197
Петък:1148
Събота: 1181
Неделя: 1155

За днес имам числото Х. Искам да проверя дали Х е нормално, или се различава значително от другите в множеството.

Най-простият отговор е да намеря средноаритметично на старите стойности и да гледам дали се различавам с повече от зададен процент. Средноаритметичното в случая е 1174.57. Ако приемем, че е допустима разлика от 10%, тогава всяко число между 1068 и 1292 ще се приеме за нормално.

Днес, обаче, има стачка и никой не идва. Така за днес имам стойност 0 и получавам аларма, че нещо не е наред (както се очаква).

Обаче утре за сравнение ще имам следнтие данни:

Вторник: 1177
Сряда: 1184
Четвъртък: 1197
Петък:1148
Събота: 1181
Неделя: 1155
Понеделник: 0

Средноаретметичното е 1006 и границите стават много ралзични: от 914 до 1106. Лесно се вижда, че никоя от „нормалните“ за миналата седмица стойности не влиза и ако дойдат, примерно 1150 души, аз ще получа аларма, че нещо не е наред. И така ще получавам „фалшиви“ грешки цяла седмица, докато нулата не излезе от статистиката.

Въпроса ми е има ли някакъв (за предпочитане, относително прост) метод да се избегне това? Т.е. стойности, които очевидно не принадлежат на множеството, да не се взимат предвид, или поне да влияят по-слабо на стойността, с която сравнявам (средноаритметичната в случая). Сигурен съм, че този проблем е решен и не ми се иска да откривам топлата вода 🙂

 Posted by at 11:54
юли 032009
 

Преди няколко дни си поръчах компютърни компоненти от онлайн магазина Ango.bg. Понеже пуснах поръчката вечерта, нещата бяха задействани на другия ден, след като ми се обадиха да потвърдя. Веднага, след като потвърдих поръчката, започнах да получавам email известяване за статуса и: „Обработва се“, „Предадено на куриер“, „Доставя се“. Дори в последнтие 2 mail-а беше вписан и номер на товарителница. Като цяло за сега съм много доволен от обслужването от Ango.

И така, зареден с оптимизъм реших да проверя дали на сайта на куриера (Speedy) няма случайно възможност за проследяване на пратката. Оптимизамът ми се отплати – наистина има проследяване на пратка по номер на товарителница. И ето, проследявам си аз пратката:

От тук разбрах, че моята пратка е приета в офис цели 6 пъти, и е изпратена от офис 2 пъти. Не е като да няма информация 😉

 Posted by at 8:55
юли 022009
 

Флейма на сутринта беше хакнатият сайт на Станишев. До преди половин час изглеждаше така:

Народа казва – каквото повикало, такова се обадило. Или ако сееш вятър, ще жънеш буря. Червените направиха една изключително черна предизборна кампания, която надмина дори бълванията на Атака. И двата „запомнящи се“ клипа залагат на разпалване на страхове. А, както казва учителя Йода, Fear leads to anger. Anger leads to hate. Hate leads to suffering“.

Направо съм изненадан колко много се издъниха. В последните години стратегията на БСП беше да се гради младежкото крило на партията, да се привличат младите, които никога не са им били сила. (Всъщност доста добър ход в тази посока е и концерта на Любе, който организират в петък – браво.) Но с тези черни клипове, с които се опитват да наплашат „ядрото“ на електората си – червените бабички – нещата изглеждат съвсем различно. Изобщо не искам да говоря и до колко са истински (как така Костов ще насече „АЕЦ Козлодуй“ с брадва?). Просто самото внушение, което си е доста силно, отблъсква младите.

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

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

BTW, браво на админите на сайта. Не знам кога е станало deface-ването, но към 9:20 сайта се върна в оригиналният си вид. От това си вадя два извода:
– имали са достатчно пресен бекъп, поздравления
– не са служители в някое министерство (за да вършат работа толкова рано…)

 Posted by at 9:53