Database independence?

 Общи  Коментарите са изключени за Database independence?
Ное. 172008
 

Един много интересен анти-JABORAC пост: тук. Интересен не само заради поста, но и заради коментарите.

Не един и два пъти съм изразявал остро (дори малко крайно) мнение срещу идеята за „database independence“. За това сега с удоволствие чета писаниците на Карън и нейните гости.

 Posted by at 11:31
Ное. 172008
 

Представям ви Иван Славов, мой колега и виден блог-четец (а често и блог-критик).

Най-после, след 2 години ръчкане, е решил да си направи собствен такъв (блог). Идеята му е да бъде предимно професионален (блог). Аз се надявам и той като мен да се изкриви в по-лична посока (в блога). По-интересно ми е да чета лични мнения, от колкото за нек’ви там джави (в блог)…

Успех, Иване (с блога)!

 Posted by at 10:55
Ное. 152008
 

Дали пак гръмна някой склад с амуниции, или си беше естествено земетресение? Аз усетих 2 слаби труса през няколко секунди. Е, не са съвсем слаби, щом съм ги усетил. Съвсем субективно мисля, че при първия се отместихме поне на 2-3 сантиметра. Втория беше по-слаб.

Погледнах dir.bg, news.bg и focus-news.net. Фокус реагираха първи (дори преди bTV, които по същоот време имат новини). От друга страна техния нет се оказа най-слаб – загубиха ми се няколко refresh-а при тях. Дира публикуваха втори, за сега не съм имал роблем с рефреша при тях. News.bg са последни от трите.

 Posted by at 23:24
Ное. 132008
 

Преди малко в един от прозорците на стаята се блъсна странна птица. Отначало помислих, че е гълъб, но зoркото око на Ники (чието бюро е точно до този прозорец) забеляза, че е нещо по-едро.

След като се удари в стъклото птицата се приземи на перваза и стоя известно време, за да се освести. Това беше достатъчно да отворим съседния прозорец и да я фотна с GSM-a:

Птичка

Птичка

Може да не е бяла лястовица, но нищо не ми пречи с моето позитивно мислене да приема случката като обещание за нещо хубаво. Нали ни посети (и изтрая снимките) нещо доста интересно 🙂

И все пак, някой има ли идея какво е това и какво търси в града?

 Posted by at 11:37
Ное. 112008
 

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

bike

Ясно се виждат подробности като педалите и дори каската ми 🙂

 Posted by at 20:37
Ное. 112008
 

Както писах, нашата смела община е решила да пребори проблема с паркиралите по тротоара коли чрез поставяне на колчета. Аз смятам това за доста тъпо, защото всъщност не е проблем това, че автомобилите спират по тротоара. Проблемите са два
1. Пешеходците няма от къде да минат.
2. Има твърде много автомобили, които няма къде да спрат.

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

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

Ама… дали са само строителите? Май много неща биха се „възползвали“ от отвоюваната територия. Ето пример:
1

И още
2

Хммм… май идеята с колчетата не действа дори и за точка едно. Уф, още пари са пръснати на вятъра от някой, който не вижда по-далече от собствения си нос. Не че е за първи път…

 Posted by at 20:29

Аналичитна заявка – коя е датата на промяна

 Общи  Коментарите са изключени за Аналичитна заявка – коя е датата на промяна
Ное. 102008
 

Днес е борих с една интересна заявка и искам да споделя резултата. По принцип аналитичните функции не са ми непознати, но далеч не ги използвам всеки ден. За това видях доста зор за да измисля максимално добро решение.

И така, заданието се следното:
Имаме историческа таблица с колонки id, name, date_from, date_to (и други). Примерно:

ID Name Date_from Date_to
------------------------------
1 AAA 01.Nov.08 03.Nov.08
2 AAA 03.Nov.08 04.Nov.08
3 BBB 04.Nov.08 05.Nov.08
4 BBB 05.Nov.08 08.Nov.08
5 BBB 08.Nov.08 09.Nov.08
6 CCC 09.Nov.08 11.Nov.08
7 CCC 11.Nov.08 12.Nov.08
8 AAA 12.Nov.08 13.Nov.08
9 AAA 13.Nov.08 15.Nov.08
10 AAA 15.Nov.08 (null)

Целта е с една заявка да се хване всяка промяна на името – от кога е станала, на какво е променено и до кога важи. В конкретния пример трябва да се покаже следното:

ID Name Date_from Date_to
------------------------------
1 AAA 01.Nov.08 04.Nov.08
3 BBB 04.Nov.08 09.Nov.08
6 CCC 09.Nov.08 12.Nov.08
8 AAA 12.Nov.08 (null)

За начало започнах с опростена задача – да се покаже стойността и датата, от която е валидна. По грубия начин с вложени заявки това може да стане така:

select distinct name,
                (select min(date_from)
                   from table1 p2
                  where p2.name = p1.name
                    and p2.date_from > (select max(date_from)
                                          from table1 p3
                                         where p3.name != p2.name
                                           and p3.date_from < p1.date_from)) date_from
  from table1 p1

Това решение е много лошо. Първо, кода е доста неразбираем. Но по-големия проблем е, че Oracle ще прерови 3 пъти таблицата. Ако таблицата стане по-голяма, никакви оптимизации няма да помогнат. Освен това за да взема и date_to ми трябват още 2 преравяния в таблицата - общо 5. Ужас! За това още отначало се насочих към аналитичните функции.

Хубавото на аналитичните функции е, че може да се направят много неща с едно минаване през данните. Лошото е, че ако не си свикнал да ги използваш, може да ти е трудно в началото. А понеже аз ги използвам адски рядко, всеки път ми е ново начало.

Една от идеите на аналитичните функции е, че може да си дефинираш "прозорец" от данни, в които да търсиш нещо. Това е и пътя, по който (погрешно) тръгнах в началото. Харесах си функцията FIRST_VALUE и се засилих да дефинирам разни брадати прозорци:

select name,
       FIRST_VALUE(date_from) OVER (partition by name ORDER BY date_from ASC range between ??? PRECEDING and UNBOUNDED FOLLOWING)
  from table1

Лошото е, че синтаксиса на дефинирането на прозорци е доста слабо описан в документацията. Доста се поблъсках, но не можех да го измисля. В един момент, понеже е и малко спешно, реших да поискам помощ от другарчетата в oracle-l. Колкото и дa е срамно за мен, почти веднага получих 5 решения, като и петте нямах нищо общо с моя подход. Явно много хора са се борили с това и си го знаят. Решението на малката задачка е с функцията LAG. За да стане ясно, ще го разкажа малко по малко.

Първо, започваме с тази заявка:

select name, date_from, lag(name, 1, '*') over(order by date_from) prev_name from table1

Тази заявка ще върне за всеки ред името от реда, записаната в реда дата и името от предния ред, като редовете са подредени по Date_from:

Name Date_from prev_name
--------------------------
AAA 01.Nov.08 *
AAA 03.Nov.08 AAA
BBB 04.Nov.08 AAA
BBB 05.Nov.08 BBB
BBB 08.Nov.08 BBB
CCC 09.Nov.08 BBB
CCC 11.Nov.08 CCC
AAA 12.Nov.08 CCC
AAA 13.Nov.08 AAA
AAA 15.Nov.08 AAA

Следващата стъпка е проста. Вземаме само редовете, в които има промяна, т.е. редовете, за които name е различно от prev_name.

select name, date_from
  from (select name, date_from, lag(name, 1, '*') over(order by date_from) prev_name from table1)
 where name != prev_name

Получаваме отговора на малката задача:

Name Date_from
-----------------
AAA 01.Nov.08
BBB 04.Nov.08
CCC 09.Nov.08
AAA 12.Nov.08

След това трябваше да добавя и датата, до която е била валидна дадена стойност. Тук отново използвах LAG, с която намерих за всеки от показаните редове, до кога е бил валиден предишния (пък бил той и непоказан) ред:

select name, date_from, prev_date_to
  from (select name, date_from, lag(name, 1, '*') over(order by date_from) prev_name, lag(date_to, 1) over(order by date_from) prev_date_to from table1)
 where name != prev_name

След това с функцията LEAD изместх във външната заявка prev_date_to към предния ред. В крайна сметка се получи следното хитро решение:

select id, name, date_from, lead(prev_date, 1, null) over (order by date_from) date_to
  from (select id, name, date_from, 
               lag(name, 1, '*') over(order by date_from) prev_name, 
               lag(date_to, 1, null) over(order by date_from) prev_date
          from table1
         where ...)
 where name != prev_name
 Posted by at 15:49
Ное. 072008
 

Може и аз да не съм разбрал правилно. Но според CNN, цитирани от bTV снощи, бъдещата първа дама на САЩ е заявила, че „щом влезе в белия дом, единствената и задача ще бъде семейството и”. И следва цитат от нейната реч:

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

Още, от щаба на Обама споделили, че през цялата предизборна кампания Мишел не е прекарвала повече от една нощ извън дома си.

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

Късно е вече. Мишел Обама вече не е просто един човек. Не е просто една жена, майка на две деца. Тя е първа дама и трябва да действа като такава. То ако съпругът и трябва да подеме тази линия, трябва да каже „Първата ми задача в белия дом е да си отгледам децата на спокойствие. Да нося достатъчно парички вкъщи за да осигуря нормален живот на семейството си и в моя дом да цари идилия”

Събуди се, како! Грижата за семейството, колкото и благородно да звучи, не е първата задача на първата дама.

 Posted by at 11:01
Ное. 062008
 

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

На N-тата година на министерството му писва и ти прави подпорна стена пред къщата. Така си защитен. Но водата не се спира – тя отива на друго място. Примерно отнася къщата на другия бряг, която до сега се е отървала на косъм. За това след година и там „решават“ проблема – малка дигичка, колкото да запази къщата. Ама водата не може да изчезне, нали? Тя залива друга къща…

Всъщност решава ли се проблема с дигата пред една къща? Не. Как ще се реши проблема? Вероятно с язовир, или цяла каскада, които да поемат големите води. Да, ама язовира е скъпо и бавно начинание. Я по-добре да сложим диги пред по-важните къщи и да кажем, че се борим с проблема…

* * *

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

(Какво, да строим подземни/надземни паркинги на по няколко етажа? Както казах, това е скъпо и бавно начинание…)

 Posted by at 16:03

Какво търсят хората

 Общи  Коментарите са изключени за Какво търсят хората
Ное. 062008
 

Това с преглеждането на search terms е настина забавно. Учудвам се с какви търсения са попадали при мен разни заблудени души. Реших и аз като други блогъри да споделя някои от по-интересните, та да се порадвате и вие. Няма да ги подреждам по нещо, просто ровя из лога и слагам каквото ми хареса:

как да паркирам mejdu dve koli – Това му викат софийско паркиране. Не съм правил описание, щото и аз не съм голям майстор. Но човека все пак е попаднал при мен, към статията за идиотските лепенки.

попълване на готова бланка на компютър – Ми същото като на хартия, само дето не се налага да задраскваш / да ползваш коректор. Къде е попаднал тоя search – на приключенията ми с американското посолство.

плюсове и минуси на това да бъдеш различен – Виж, това е дълга тема. Ама аз не съм я разисквал, защото този тип философстване не ми е по сърце. Все пак съм малко по-различен с това, че карам колело, та там е попаднал и този търсач.

явор работа за шофьори – Не, не предлагам такава работа. За сега сам си карам колелото. Този е попаднал на втората част на сагата с идиотските лепенки.

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

алтернатива на топлофикация – алтернативи много, коя от коя по-скъпа (или мръсна, избирай сам. Ясно е, че и тоя е тук.

римляните откриха топлата вода – и този е за тук.

„пещера“.“фалос“ – Ъ… Интересни въжделения. Явно фетишистките сайтове на български са много слаби, за да попадне тук това търсене. И то баш на културна статия.

buferi za komputer – Не знам както точно си търсил, но едва ли е било това, което си намерил.

играчките им са по скъпи – И аз точно това казвам. Но го казвам на приятели, на читатели и т.н., не на гугъл.

можеш ли да се отвори като караш колело – Не искам да си помислям какво се крие зад този въпрос. Това, което ми хрумва е доста по-нецензурно от написаното тук.

ще мога ли да се наспя днес? – Ей, тия хора го взеха за врачка тоя гугъл! Ето къде ги е завел. Иначе този въпрос и аз си го задавам, напоследък все по-често, ама само на себе си. И по-скоро като желание, а не като въпрос. Задаването му под формата на въпрос ми навява усещане за отчаяние.

сглобяване на душ кабина – това е много правилно търсене, попаднало на много неправилно място. Иначе ако дадеш 150 лева наистина ще дойда да ти я сглобя – 15 минута работа е.

имало едно време едно което много се ядосвало – И сега го има. Попаднал си на точното място.

да си плащаме ли парнотоДа! няма какво да питаш гъугъл, питай съвестта си.

в какво аз виждам щастието в здравето, в колите и т.н. – А може и в здравословното физическо натоварване докато се опитваш да избегнеш колите

kak se raboti s advancedТрудно. Трябва много мерак, много усет и късмет.

username password кабината – Каква е тая кабина? Да ти иска да се логваш… Попаднал тук.

жената и колело – много добре си подхождат. Няма проблем, действай.

длъжностна характеристика на сладкар – Е това пък как е попаднало тук, грам идея нямам.

бой иване луд джигит – Имам чувството, че понякога гугъл да сам си избира произволни съчетаня от думи и си ги търси. Кой би написал такава глупост? Влиза тук.

къде е това чифлика – Намира се в троянския балкан. Много хубаво място, посети го. Аз поне съм много доволен.

Приложение на топологията – Леле, човек, тук ме хвана натясно. Но пък си попаднал в тема, в която се чувствам добре.

kolko vreme karam kolelo – поредния въпрос, на който гугъл трудно би ти отговорил. Иначе аз карах активно към месец, когато написах това.

защо Oracle – Е как защо? Как защо? Пише си тук.

тъпкан градски транспорт – още един, дето си е взел гугъл за душеприказчик. Попаднал е на моето мнение по въпроса.

романтично извинение – Леле, пич, явно си сгазил лука. Ама то ако не ти идва от сърцето, няма да стане. Гугъл може да ти покаже само разни глупости.

закон има ли право топлофикация да спре парното на хората – а защо не потърси „закон имат ли право хората да не си плащат за услугата„?

от къде да си сваля „A Matter of Life and Death“ – По принцип гугъл точно тези сайтове не ги индексира.

… айде стига толкова. Иначе от единичните думи най-често попадат при мен с търсене на „спомени“, „мисли“, „есен“, „вражалец“, „простотии“

 Posted by at 12:58