3. září 2008

Normální formy a AJAX

Tvoříte weby? Nebo alespoň jeden? Pak jste určitě narazili na AJAX. Pokud nevíte o čem mluvím, tak dál nečtěte. Možná jste také narazili na "normální formy". Pokud ne a při tom používáte technologie AJAX, tak rozhodně čtěte dál.
Normální formy tady rozhodně nemíním rozebírat. Můžete nechat Google zobrazit stránky s výrazem: normální formy.
Google, je moc pěkný AJAXem poháněný web. Dobře se s ním pracuje.
Proč?
Protože grafika neruší, odezvy jsou vynikající, našeptávač nabízí i počty výsledků, ... Prostě skvělá práce.
Proč nejsou Vaše aplikace taky takové?
Začneme od Adama. Takže klasický příklad, který programovali už všichni. Seznam čísel.

Tabulka by mohla vypadat asi takhle:
Jméno | Příjmení | Číslo
Adam | První | 000000001
Eva | Třetí | 736510007

Proč ta Vaše vypadá:
Jméno a příjmení | Číslo
Adam První | 000000001
Eva Třetí | 736510007

Jasně, dáme dva indexy - jeden na Jméno a příjmení, druhý na Číslo a pošlape to jako hodinky.

Ne, obě tabulky jsou špatně. Použiji citát z root.cz:
1. normální forma (1NF)
Relace (tabulka) je v první normální formě, pokud každý její atribut (sloupec) obsahuje jen atomické hodnoty. Tedy hodnoty z pohledu databáze již dále nedělitelné. Tato podmínka není splněna například u tabulky, kde je jméno a příjmení v jednom sloupci a přitom aplikace pracuje s těmito položkami jako samostatnými.

Co je na tom špatně?
Návrh by mohl vycházet z předpokladu, že přesně víte, co chcete, ale v praxi jsem se s tím nesetkal. Takže pokud nevíme, co vlastně chceme, ale máme k dispozici vstupní data a trochu inteligence, znormalizujeme tabulky. Pěkně je to předvedeno například v článku
Databáze a jazyk SQL.

Tak teď byste měli vědět, jak dostat tabulku do třetí normální formy.

Já bych k tomu doplnil, že moje tabulka by se rozpadla na dvě.
V té první by byly sloupce: IDjméno, Příjmení, Číslo.
V té druhé: IDjméno, Jméno

Proč?
Protože jmen je konečný počet a nemá smysl nechat uživatele zadávat své jméno. Pomůžete mu "našeptávačem", který bude brát jména z databáze, ke které se bude (jak jinak) asynchronně připojovat dle potřeby, tedy na základě vstupu od uživatele.
Já si dokáži představit tabulku s milionem řádků a AJAXový našeptávač, který dělá do této tabulky dotazy:
SELECT * FROM seznam WHERE `Jmeno_a_prijmeni` LIKE '%$vstupoduzivatle%' ORDER BY `Jmeno_a_prijmeni`;

To je ještě ta lepší varianta. MySQL podporuje v dotazech regulární výrazy.
Raději neuvedu příklad, protože bych ho nejpozději do týdne našel použitý ve zdroji nějakého webu.
Můj dotaz by vypadal:
SELECT IDjméno FROM Jmena WHERE `Jméno` LIKE '$vstupoduzivatle%' ORDER BY `Jméno`;


Při představě, že na planetě, je 68404451 tisíc obyvatel (zdroj:
World Population na http://www.ibiblio.org/lunarbin/worldpop ), mě napadlo, jestli by si i sloupec Příjmení nezasloužil vlastní tabulku.

Proč?
Které dotazy děláte nejčastěji? Když nabídnete možnost vybrat si jméno, nebo napsat nové, proč neudělat to samé s příjmením. Uživatel tuto vlastnost podvědomě čeká a pokud mu nebude nabídnuta, bude zklamán. Návštěvníci Vašeho webu nechtějí být zklamáni. Nezapomínejte na to, když děláte web.

Takže máme tři tabulky. Ideální pro AJAXem posílený web, který po zadání prvních pár písmen křestního jména nabízí nalezené tvary a totéž dělá i u dalšího vstupního pole, tedy příjmení.

Pro dnešek stačí.








11. srpna 2008

Dovolená

Jak jste si mnozí všimli, jsem již několik dní na dovolené.
Dnes jsem seděl na lavičce před domem na vesnici, kde jsou dvě hospody a čtyřista obyvatel. Přemýšlel jsem o tom, jak pomalu plyne čas a co vlastně celou tu dobu tady dělám. Shrnul jsem to pro sebe slovy: žeru, chlastám, hulím a chrápu. To je hrozný, jak se na vesnici vleče čas. Jak jsem tu vlastně dlouho? Dlouho.
Měl bych někam napsat, že mám nový rekord. Už dva dny jsem se nepřipojil k netu a nepodíval se, kde se co děje. Ani poštu jsem nečetl. Vlastně četl. Včera. Tak to jsem závislejší, než jsem si myslel.
To jsem tu teprve dva dny.
To přece není možné. Za tu dobu jsme stihli, položit dlažbu, vypít dva kastle piva, několik lahví slivovice, grilovat. Několikrát jsem byl na procházce se synem, udělal jsem pár fotek, ...
Tak proč mám pořád pocit, že se ten čas tak vleče?
Chybí mi práce. Moje zničující, stresující, vyčerpávající, proklínaná, ale pořád ta moje. Proti ní, je všechno ostatní jenom pomalá a vleklá nuda.
Ale dost o práci, mám přece dovolenou.
Jdu si ubalit cigáro a otevřít si pivo. Dal bych si točené, ale Karel si vzal dovolenou a na dva týdny zavřel hospodu. No a konkurenční hospoda? Ta zkrachovala.
Jo, někdy nevyjde jenom počasí. :-)
Tak si užijte dovolenou.

17. června 2008

Máš právo měnit realitu

Přemýšlel jsem: "Co vlastně dělá člověka člověkem?"
To je otázka, nad kterou se dá meditovat stovky let a pořád se budou objevovat další a další odpovědi. Postupně jsem vyloučil lásku, emoce, používání nástrojů, schopnost přežít atd. Nakonec jsem konstatoval, že člověk je člověkem proto, protože má schopnost nejrychleji měnit realitu. Musíte uznat, že v tomto oboru jsme jako rasa naprosté jedničky.
Každý měníme realitu po svém. Někdy k lepšímu, někdy k horšímu. Někdo mění globální realitu, někdo jenom místní. Někdo dokonce mění pouze virtuální realitu a někdo dokonce pouze svou vlastní realitu. Přijde mi to v pořádku.
Máš právo měnit realitu.

4. května 2008

Dělej svou práci a usmívej se na lidi

Byl jsem včera ve své oblíbené hospůdce.
Je to docela malá hospůdka na našem sídlišti. Chodím tam rád. Personál je na mě milý a zpravidla mám pivo před sebou dřív než si sednu. Obsluha je nevtíravá a já mám příjemný pocit, že tam patřím.
Včera to ale bylo jinak. Za barem stála osoba, kterou jsem tam nikdy předtím neviděl. Aha, asi nový personál. Jinak nikdo. Seděl jsem na své židli a nikdo mě neobsluhoval. Přestal jsem mít tu osobu automaticky rád. Nerad čekám a měl jsem žízeň. Naštěstí se objevila paní šéfová a bez řečí mi natočila pivo. Usmála se, postavila pivo na stůl a odešla. Neusmívala se. Asi má starosti.
U druhého piva byl scénář velmi podobný až na to, že nová osoba (jestli slečna, nebo paní jsem si nevšiml) stála za barem, vypadala že nemá co dělat a kouřila cigaretu. Pak se odněkud vynořila paní šéfová, donesla mi pivo a usmála se na mě, když ho stavěla na stůl.
Po nějaké chvilce se zvedla hladina hluku u kuchyně a když jsem se tam podíval, tak se paní šéfová hádala s tou novu osobou - od té doby vím že se jmenuje Monika.
Třetího piva jsem se málem nedočkal. V té době už jsem silně uvažoval o tom, že odejdu do vedlejšího baru.
Jako stálý host chápu, že točit pivo, roznášet ho po celém lokále a u toho dělat inventuru skladových zásob je na jednu ženskou moc. Takže jsem zůstal, ale po celou dobu jsem nepřestával kroutit hlavou nad novým personálem. Ten přístup. Několikrát jsem uvažoval že jí řeknu: Haló, slečno! Jste tady barmanka, měla byste točit pivo a starat se o hosty.
Jako stálý host chápu, že je tady nová a neví co má dělat, nezná ceny, nezná hosty. Ale jako ostřílený šéf a znalec povah můžu říct, že ta tady nevydrží. Nikdo se nebude dívat na její znuděný obličej a čekat jestli se rozhodne, že ho konečně obslouží.
Takže Moniko, tady je rada pro tebe: Dělej svou práci a usmívej se na lidi.
Možná nejen pro tebe.

9. dubna 2008

Mort post mortem

Dnešní den začal divně. Na svém ICQ jsem našel od Morta zprávu a link. Tam jsem se dočetl, že můj přítel Jan Kebrle (alias Mort) ukončil svůj život v noci ze 4. na 5. dubna 2008.
Přiznám se, že mě to vzalo. Letos už druhý z mých přátel. Ten první žije.
Ale vrátím se k Honzovi.

Seznámili jsme se na 13. brněnském conu (tenkrát to ještě byl Dracon), kde jsem měl přednášku o telepatii. Přišel za mnou po přednášce do baru mladík se vzhledem Chucka Norrise s tím, že by se mnou rád probral nějaké věci ohledně mé přednášky. Tehdy jsme dost popíjeli, ale to už ke conu patří. Od té doby jsem se s Mortem potkával pravidelně, kdykoli měl cestu přes Brno. Vzhledem k tomu, že tehdy se zbláznil do jakési baletky Katky ze Vsetína, tak ty návštěvy byly celkem časté.

Katka.
To je samostatná kapitola v Mortově životě. Nikdy jsem se s ní nepotkal, ale podle toho co si o ní myslím, to byla vypočítavá mrcha, která Morta akorát vysávala. Pamatuji si na několikahodinové telefonáty. Pamatuji si jak do ní neustále "tlačil" nové telefony, platil kredit, kupoval dárky, a vzpomenu si i na to, jak jednou zjistil, že nemá na účtu nic, protože mu ho Katka vybrala svou kartou do nuly.
Tady někde začala Honzova cesta směrem ke dnu, i když možná přišla, mnohem dřív, ale možná také mnohem později, ale u toho jsem já nebyl, takže nevím.

Pamatuji si Morta v době, kdy se plně věnoval Linuxu. Pamatuji si Morta v době, kdy pracoval pro Asima, kdy jsme seděli na zahrádce v Asimově kavárně, pili pivo a já mu postupně boural databázový model jeho aplikace na správu wi-fi hotspotů. V té době byl celkem v pohodě. Katka ho sice ještě nepustila, ale něco dělal a to ho drželo nad vodou.

Pak se stala spousta věcí, ale já bych si z dovolením svého přítele Honzu "Morta" Kebrleho rád zapamatoval právě v té době, kdy to byl vynikající profík přes Linux a především dobrý kamarád.

Takže ať se stalo, co se stalo, Morte, zůstal tady po tobě smutek. Nevím, co je po smrti. Tak daleko jsem nedošel. Já došel jenom k tunelu, ale ty už jsi na druhé straně. Někde jsem četl, že se ti splní, to v co jsi věřil. Doufám, že (i přes to že jsi si silně narušil karmu) to není nic tak hrozného, jako byl tvůj život tady.

Morte, pokud ten někde nahlížíš do Matrixu a hledáš něco o sobě, čeho by ses zachytil, tak pro tebe mám jeden citát. Doufám, že z něj pochopíš, že tě chápu a nezlobím se na tebe. Tady je:
Morte mori melius quam vitam ducere mortis.

4. dubna 2008

Antidepresivní fotky

Tento anaglyf (3d fotka pro červeno/modré brýle) jsem pořídil na procházce po lese vloni na podzim. Když je mi smutno, nasadím brýle a za dvě vteřiny jsem zpátky v lese. Funguje to. Vyzkoušej to taky.

Pro tvorbu byl použit Zoner 3D Photo Maker.
Pokud sháníte jenom brýle, lze je objednat samostatně .
3D fotografie je úžasná zábava. Jenom ještě přidám varování - je to návykové.

Pár dalších z mých 3D fotek.