Komentáře k článku

Třídy, dědičnost a OOP v Javascriptu – III

JavaScript

V předchozích článcích na téma objektově orientovaného programování v Javascriptu jsme probrali způsoby, jak k objektům v JS lze přistupovat a řekli jsme si, jaký způsob je přijatelný a proti kterým lze mít výhrady. Na závěr se podíváme, jak se k problému staví ostatní javascriptové knihovny a jak řešit OOP efektivně.

Zpět na článek

37 komentářů k článku Třídy, dědičnost a OOP v Javascriptu – III:

  1. xy

    dotaz

    me by zajimalo, jak se autor dobral k takovemu napadu mam na mysli to $class… nejak se mi nechce verit ze clovek proste jen tak sam od sebe vymysli, protoze me by to asi jen tak nenapadlo… je to teda inspirace ve forme cteni zdrojaku YUI? mimochodem pouzivat za kazdou cenu ten $ to je fakt trosku matouci… clovek kdyz to vidi poprvy tak si mysli ze jde o jQuery a ono ne… chapu ze ten dolar je dneska ve zdrojacich JS v mode asi jako mezi lidma facebook… ale zkusme to bez toho dolaru ne? kdyz jde o ne-Jquery vlastni reseni :P

    1. Daniel SteigerwaldAutor příspěvku

      Re: dotaz

      Člověk to „vymyslí“ asi tak, že zná většinu frameworků, a přirozeně se jim dívá pod kapotu ;) Nicméně, kód je můj. S tím dolarem souhlas, já jej použil záměrně, z didaktických důvodů, a také protože lidé mají dolary rádi. V praktickém nasazení, bych to napsal, třeba takto: var Person = new nette.Class({..})  ;)

      1. xy

        Re: dotaz

        heh, hm dik za odpoved… jinak jeste by me zajimalo, kdyz takhle umis JS, jestli jsi na tom stejne s dalsim programovacim jazykem treba PHP, popripade se znalosti SQL atd, nebo v tom ostatnim trochu plaves… podle myho totiz, tech vedomosti ktery clovek muze mit jenom o PHP (a dnes uz i o JS) je tolik, ze je asi nemozny znat vse

        1. Oldis

          Re: dotaz

          To co je zde uvedeno v serialu, se da velmi snadno najit, samozrejme ne cesky ale anglicky, nejjednodussi je asi najit si stranky Daglese Croforda, popripade jeho prednasku. JS je objektovy jazyk, a pokud clovek umi programovat a zvladne oop, tj. zvlada alnayzu i kodovani, tak je potom jazyk jen otazkou syntaxe, moznosti a api, osobne umim krome c++, i js, javu, php, mysql, actionscript, a jeste par dalsich jazyku, ale ty pouzivam jen zridka a nektere sem nepouzil uz leta.
          Tento serial je velmi dobry, spojuje do jednoho celku, informace ktere se daji najit jen osamocene, a spojuje je velmi dobre, uvadi proc se pro urcitou funkcnost pouziva dany konstrukt tak a i proc nepouzivat jiny.

          1. xy

            Re: dotaz

            jasne, souhlasim s tim, ze programovaci jazyk je otazkou syntaxe… tj, pokud dnes delam v PHP, nemel by byt teoreticky problem pro me prejit na C#, na Visual Basic, Python nebo cokoliv jineho… protoze vse je jen programovaci jazyk… jenze, jsem skepticky vuci tomu, ze je nekdo odbornikem na vse… ze nekdo rika (treba jako ty :) ), ze umis c++, js, javu, php… podle me se da znat vse povrchne, ale ne do hloubky.. myslim si, ze clovek tak nak umi jen to, co pouziva denne… kdyz nebudu denne pouzivat JS, tak 90 procent toho z clanku zapomenu… uz treba za 30 – 60 dni.

            1. Michal Augustýn

              Re: dotaz

              Programovací jazyk je sice otázkou syntaxe, ale aby byl člověk schopen něco rozumného vyplodit, potřebuje znát taky knihovny, které jsou s daným jazykem/prostředím spjaté. A tam už učení nejde tak rychle a vyžaduje to zkušenost…

            2. Oldis

              Re: dotaz

              ano jazyk je otazkou syntaxe, ale uz ne programovani, pokud nekdo dela v php, teoreticky muze prejit na c++ nebo c#, prakticky zalezi na tom jak pracoval v php, v php jde delat proceduralne i pomerne striktne objektove. treba python mi vylozene nesedi, az moc mi pripomina paskal. Odbornik samozrejme clovek nemuze byt na vse, jen na c++ je nekolik ruzne orientovanych platforem, ktere sice maji zakladni knihovny stejne, ale dal se uz deli dle frame worku. Pak je rozdil v tom vymyslet pristup k reseni problemu s navrhovym vzorem v danem jazyce a nebo si o nem uz jen precist a nabyte znalosti pouzivat. pristup vsech oop jazyku je vesmes stejny, klicova slova take, lehce se lisi ve vlastnostech, proto uz je spis dulezitejsi, umet analyzovat problem, a predstavit si oop reseni, a pripadne vedet kde najdu informace o tom jak resit nebo obejit nedostatek daneho jazyka, viz dedicnost v js, jave v php, as3 a podobne. co se tyce znalosti c++, tak napriklad oop v nem zvladam bez problemu, knihovny zanm zakladni, pak zlehka mfc, ale protoze me mfc omezovalo, tak sem presel na win32 a pak sem se podival i na directx. to ovsem bylo pred osmy lety, a v c++ sem denodenne delal asi tak pet let. v jave si obcas napisu nejakou utilitu, typicky kdyz potrebuju prevest nejaka data a potrebuji k tomu jednoduce gui. osobne ji nemam moc rad. pred 16lety sem delal s qbasicem, pak s paskalem, pak s c++, pak s win basicem, pak s visual c++, a ted v php a mysql.

              1. Michal Augustýn

                Re: dotaz

                Nějak jste asi nepochopil, co jsem chtěl říct předchozím příspěvkem.

                Naučit se syntaxi nového jazyka opravdu nedělá průměrnému programátory velký problém. V praxi je ale pro rozumnou produktivitu a kvalitu kódu důležité, aby člověk znal relevantní knihovny a best practices nové platformy. A tahle zkušenost je často mezi jazyky/platformami nepřenosná, takže migrace na nový jazyk pro praktické použití není vždy zas tak hladká…

                1. Oldis

                  Re: dotaz

                  no snazil sem se rict ze obecne porozumeni je dulezitejsi nez konkretni znalost syntaxe, podobne jako v matematice, je dulezitejsi umet z jednoho vztahu odvodit ten ktery potrebuju nez znat nazpamet ten konkretni. a pak ze je dulezitejsi vedet kde informace hledat nez si je opet nazpamet pamatovat. pak existuji napriklad navrhove vzory, ktere jsou obecne a pro jednotlive jazyky existuje vzor implementace. migrace vetsinou neni hladka, pro me nebyla nikdy, ikdyz jsou svele vijimky. Shrnu to, stejne jako jsou absolventi vysokoskolske matematiky dvojiho druhu, prvni se vse nauci nazpamet a druhzi krteri ji skutecne porozumi, tak je tomu i mezi programatory. jsou jedni kteri si pamatuji nazpamet desitky/stovky reseni a jsou druzi kteri porozumi, pro prvni je prechod najinou platformu/jazyk osobni tragedii, pro druhe prilezitost k rozvoji, a podle toho dopadne i vysledek.

  2. Martin Soušek

    pokračování rozhodně ANO

    Je zajímavé, že velkou oblibu si získala knihovna jquery, která nemá žádné objektové vychytávky, její pluginy jsou šílené bastly a pokus o widgety jquery ui je nehorázný humus.

    A relativné krásné mootools nebo google closure se nepoužívají, protože když jsem postaven před projekt, jehož velkou část by vyřešily existující jquery pluginy, tak radši volím jquery, než abych to všechno psal sám za podpory krásné knihovny.

    1. Ped

      Re: pokračování rozhodně ANO

      Ja bych rekl tim ze spousta lidi co pouziva cizi js knihovny js vubec neovlada. Proste najde knihovnu ktera udela to co potrebuji a pouziji ji, vzhledem k ohebnosti js to vetsinou dela i to co chteli, a dokonce dost casto to ani nedela nic co by nechteli. (alespon ja jsem jiz js nekolikrat pouzil, ackoli o nem nic nevim (krome toho ze ma syntax dostatecne C-like, abych si stazeny zdrojak pripadne trochu ohnul pro sve potreby) … az diky teto serii clanku vidim jak moc je odlisny a jak moc ho neznam).

      Proto proste humus jquery jim zustane naprosto skryty a netusi o nem. :)
      Tim nerikam ze je to dobre, jenom popisuji jak dnes vznika SW … se neco nekde veme, trochu se to slepi a kdyz to vypada funkcne, tak se to proda, takova je doba. :)

      1. Bauglir

        Re: pokračování rozhodně ANO

        Jenže od toho knihovny máme, že. Máme je od toho,a by dělali, co chceme, nebudeme vynalézat znovu kolo.
        Váš popis, jak vzniká SW je celkem přesný, jenže nezbytný… kam až byste chtěl jít? Zkuste si představit programování dektopových aplikací, jak byste řešil problémy bez použití systémových knihoven (o kterých nevíte naprosto nic… Kdo přečetl zdrojáky všech linuxových knihoven, které kdy použil, ať se přihlásí, u Win tu šanci ani nedostanete). Zkusil jste si někdy například ve Win vytvořit primitivní formuláříček jenom pomocí Windows API? Různé component library (widgety) rozhodně usnadní práci… Navíc, co je Win32Api jiného, než sada dll (knihovny)…
        Neodběhl jsem jen od JS tak pro nic za nic, protože i pro JS platí naprosto to stejné co jiné jazyky: knihovny ušetří spoustu práce, jen musíte najít… Věřte, že i pro jiné jazyky existuje spousta nesmyslných knihoven.

        Problém JS není v tom, že spousta lidí, co JS knihovny používá vůbec JS neovládá, problém je v tom, že spousta lidí, kteří JS používá JS vůbec neovládá (knihovny neknihovny). Pascal, C, C++, C#, Java… všechno se řádně učí, studuje.. JS nikoliv, přesto, že by se nad tím rok strávit dal…
        A kdo nestuduje (nemyslím nutně ve škole) ani ostatní jazyky, píše jako prase také, jenom to v binárce není vidět :)

        1. Ped

          Re: pokračování rozhodně ANO

          Ano, knihovny jsou v podstate od toho, ale je dobre mit alespon zakladni prehled jak dana knihovna funguje (jak naklada se zdroji, jak je narocna, jakym stylem je psana, nemluvim o neprogramator­skych vecech typu licence, udrzba, atd..).

          Dale by bylo hezke kdyby knihovny psali lide kteri rozumi tomu co pisou, o cem se da nekdy i docela pochybovat, minimalne do doby nez si clovek zkusi napsat vlastni knihovnu na to same a zjisti ze to zas az tak spatne nebylo. ;)

          A samozrejme i kdyz clovek pouziva nejakou js knihovnu, alespon zakladnou syntax js by umet mel. (ja nesplnuji zatim ani tohle, porad to odsouvam a pokazde kdyz potrebuji nejakej kratickej js, tak mne zachrani to ze je tak ohebnej a tolerantni, ale ja aspon vim co nevim, tak se vyhybam delani vetsich js kousku kodu, dokud si nenajdu konecne cas se do nej seriozne ponorit)

          Mne od toho dlouho odrazovala roztristenost web browseru (de facto nema se samotnym jazykem nic, ale web browser je proste hodne oblibena jscript platforma), tak jsem zavrhoval celkove jazyk. Az posledni dobou mu venuji vice pozornosti a zatim spis prijemne prekvapuje, i kdyz mi teda uplne prirozene nesednul, ja jsem spis na low level veci, to vic odpovida memu mysleni. Ale to taky neni chyba js. :)

          1. Bauglir

            Re: pokračování rozhodně ANO

            Tady stojí za reakci jedna věc „Mne od toho dlouho odrazovala roztristenost web browseru … , tak jsem zavrhoval celkove jazyk.“
            A knihovny mají většinou právě tu vlastnost, že fungují všude stejně, nad rozdílností implementace / chybou implementace si nemůsíte lámat hlavu, knihovna o nich ví a podle toho vykonává kód :)

        2. junix

          Re: pokračování rozhodně ANO

          „…Kdo přečetl zdrojáky všech linuxových knihoven, které kdy použil, ať se přihlásí, u Win tu šanci ani nedostanete…“

          My sice ne, ale u takovych projektu, jake jste zminil, kod nekdo reviduje, coz je podminka akceptace zmeny/rozsireni, nekdo ho testuje, a take – zmena vznika na zaklade nejake potreby a nasledne analyzy. Takove projekty maji roadmapu. Cil, navrh, architekturu, treba dilci.

          Knihovny, jako jQuery casto nic z toho nemaji. Maximalne testing, „aby to aspon fungovalo“. Ale nejake review, nebo dokonce design.
          Staci, ze nekdo jednou takovy „hnuj“ vystavi, nekdo dalsi ho pouzije, a uz se siri jako virus.

          A pak v praxi jen velmi tezko rozlisite, jestli dany produkt je dobry (verim, ze Google closure, YUI a dalsi jsou), nebo ne. A jeste mene to vi vas sef, ktery vi jen, ze „jQuery je rozsirenejsi, takze to udelej v jQuery“ ;)

    2. Aleš Roubíček

      Re: pokračování rozhodně ANO

      Ne na vše je OOP vhodným nástrojem. jQuery jde cestou funkcionálního programování a není na tom vůbec nic špatného. Jeho užití je snadné i pro lidi, co nejsou v JS zběhlí, najdou spoustu plug-inů a velice snadno a rychle vytvoří věci, které fungují. Obrovsky se tím snižují náklady na vývoj.

      1. Daniel SteigerwaldAutor příspěvku

        Re: pokračování rozhodně ANO

        Aleši máš i nemáš pravdu. Ano, jQuery je velmi rozšířené, a proto velmi pravděpodobně najdeš a můžeš použít, hotový plugin. To je jistě lepší, levnější, efektivnější, než psát si všechno sám. (málokdo se tak spálil jako já :-/)
        To ale neznamená, že architektura jQuery a jeho pluginů je ideální. Doufám, že někdy vznikne něco jako jQuery2, bez zpětné kompatibility, protože inkrementální, a nijak nesměrovaný vývoj, je na jQuery sakra znát :(
        Rozhodně bych neřekl, že jQuery je snazší, a že se pro něj lépe píše, protože nepodporuje OOP. Opak je pravdou.

        1. Aleš Roubíček

          Re: pokračování rozhodně ANO

          Ale, to já nikde netvrdím. :) Já říkám, že se snadno používá lidem, kteří nemají znalosti JS. Jako DSL pro práci s DOMem je jQuery prostě bezkonkurenční.

          BTW plug-in přeci klidně můžeš napsat objektově a pro jQuery udělat jen fasádu, která integruje tvůj plug-in konvenčním způsobem.

        2. Martin Soušek

          Re: pokračování rozhodně ANO

          Detaily toho pálení se pochlubíte? To musel být extra průser, když se to stalo tak zkušenému js programátorovi! Třeba by se mohli ostatní poučit a vyvarovat.

          1. Daniel SteigerwaldAutor příspěvku

            Re: pokračování rozhodně ANO

            Poučit možná, vyvarovat těžko. Osobní zkušenost je nepřenosná. Jen opravdu moudří, se dokáží poučit z chyb ostatních dříve, než z chyb vlastních. Průser? Nevím, asi ano :-/.. takhle to raději neberu, konec dobrý, všechno dobré, u konce doufám ještě nejsem.. Zkušenému? Zkušenost je limita, té se blížíte, ale nikdy ji nedosáhnete. Proč sem se spálil? Protože sem věnoval příliš mnoho času a příliš mnoho úsilí jednomu projektu, respektive jeho detailům, a ten projekt (zatím?) nepřinesl zisk ani mě, ani klientovi, prostě proto, že sem jej nedokončil. Přesto že sem mu věnoval dva roky života. Propadl sem dojmu, že dokonalost se skrývá v detailu, a proto by se detailem mělo začít. To je špatně!
            Programy by se měli psát, stejně jako mistři malují, začít skicou, nástřelem, a postupně, pomalu a s citem, doplňovat detail. Přečtěte si tyto článeky, je v nich hodně pravdy: http://www.facebook.com/note.php?note_id=296776388471&ref=mf, http://37signals.com/svn/posts/386-dont-be-a-hero-giving-up-is-good
            Koukněte se na tohle mistrovské dílo: http://www.kultur-online.net/files/exhibition/01_730.jpg
            Rembrandtův slon, stačí pár linek a šmouh, a jak je realistický!
            Pro vývoj software platí to samé, jako pro kresbu. Začít se má s celkem, a ten může být, ba dokonce má být, v hrubých rysech, kontury se doplní posléze, šrafování, linka, stínování a hmota, až naposled!
            Dobře si prohlédněte tohle video, takhle se má psát software! http://www.youtube.com/watch?v=uxsH4YBDJso&feature=related
            Kdyby malíř začal s dokonalou tlapkou nebo naprosto realistickým okem, nikdy by to kotě dohromady nedal.
            Další příklad: http://www.youtube.com/watch?v=WSKruiv9Ul8&feature=fvw, opět si všimněte, malíř začíná figurou, hrubými obrysy, celkem. Až postupným cizelováním se dobere fotorealistické dokonalosti.
            Já se spálil tím, že sem na jednom projektu strávil dva roky, přepsal snad všechny widgety co existují, vyzkoušel snad všechny frameworky co existují, logicky tak nestíhal termíny, zrušil volný čas, přítelkyni a koníčky, nasral kde koho, přišel o spoustu peněz, vypěstoval si silnou závislost na nikotinu a kafi, ale co považuji za nejhorší, ztratil sem rovnováhu mezi prací a volným časem. A ta se zpětně dost blbě hledá, protože programování má kurva blízko k hracím automatům.

            1. Martin Soušek

              Re: pokračování rozhodně ANO

              Tak to jsem zvědav, na spuštění. To musí být bomba!

              Ale trošku mi to připomíná prezentaci jednoho člověka na Google Dev Day, který nadšeně vyprávěl o svém super projektu na editaci stránek v prohlížeči, na kterém pracuje tým 5 lidí už 3 roky a investor do toho sype miliony. Programované to bylo v GWT a už několikrát to portovali na novou verzi GWT. A následovala prezentace, kde ukázal tak neuvěřitelný shit, až jsem zapomněl zavřít pusu :)

              1. aprilchild

                Re: pokračování rozhodně ANO

                Nevim, jestli bomba, ale neverejne uz to bezi pres par mesicu :). Nechci to psat sem, ale muzete mi poslat mail a dostanete pristup. Dan to zacal, pak jsme to vyvijeli spolu, vysledna podoba uz vznikala jinak.

                1. martinsousek

                  Re: pokračování rozhodně ANO

                  Poslal jsem mail.

                  Ale jestli jde o ten editůrek, tak vám řeknu rovnou, že jste blázni :)

            2. Lokutus

              Re: pokračování rozhodně ANO

              Odvážím se tvrdit, že tímhle si projde snad každý vývojář.
              Jinak perfektně popsáno.

              1. xy

                Re: pokračování rozhodně ANO

                tou usilovnou praci na vlastni pest jak lici daniel? ja bych rekl ze ne… poznal jsem nekolik programatoru v zamestnani, a nikdo… NIKDO z nich nebyl takovy, aby po praci na necem jeste delal…

            3. xy

              Re: pokračování rozhodně ANO

              heh, tak to ja jsem neco podobneho :)) vyvojem svych 4. projektu jsem v souctu taky stravil 10 let, a z toho jen 1 se mi podarilo dokoncit :( ;). btw vsechno to byly windows aplikace, tedy newebove… delal jsem je v dobe, kdy internet jeste nebyl tak popularni… dneska nevim jestli bych jeste delal win aplikaci…….. tezko rict :(.

              no a jak to dopadlo s tim projektem a proc spalil? mam to chapat jako ze jsi chtel vytvorit neco svyho, ze jsi pracoval na necem svym, a kyzeny efekt se stejne nedostavil v tom, ze se projekt nestal popularnim.. nebo jak. (to neni vyslech, ale zvedavost). ;)

              1. keff

                Re: pokračování rozhodně ANO

                Já jsem taky zvědavý, a rád bych na zdrojáku viděl rubriku Post mortem, jako má např. Gamasutra o hrách – s články popisující zpětně po dokončení webových projektů co se povedlo, proč se to dělalo zrovna takhle, kde se vývojáři spálili, atd., a to z programátorského, architektonického i marketingového hlediska… :)

                1. Martin Malý

                  Re: pokračování rozhodně ANO

                  Rubrika „post mortem“ není vůbec špatný nápad! Ještě ale najít někoho, kdo bude schopen a ochoten rozpitvat vlastní chyby, kterých se dopustil v existujícím projektu ;)

    3. Bauglir

      Re: pokračování rozhodně ANO

      Pokud hledáte knihovnu s objektovými vychytávkami, nepoužívejte jQuery, její je účel je odstínit programátora od DOM. Jedná se o knihovnu, která nahrazuje DOM, nic víc. A nic víc není ani jejím účelem (jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.). Jedná se jenom o API zaměřené na úzkou část. Asi jako byste libmysql nadával za to, že neumí reflexi mezi řádkem tabulky a objektem: není na to určená.
      A proto se jQuery používá, je to velmi jednoduchá. A jestli v ní někdo zbastlí šílený plugin není chybou jQuery, ale programátora :)

  3. junix

    Klicove slovo $class

    Konstrukce pro vytvoreni tridy, uvedena v clanku, je velmi pekna. Je velmi blizka pristupu deklarativnich jazyku, ktere pro tyto ucely prave pouzivaji klicova slova a definicni syntakticke konstrukce.

    Na druhou stranu, pristup striktne objektovych jazyku jde opacnou cestou, ktera je urcite nemene zajimava. Jazykove konstrukce minimalizovat, a co nejvice problemu resit prave pouze principem „objekt“ – „zprava“ (volani metody).

    To co zde nyni uvedu neni v souladu s doporucenim clanku (se kterym jinak souhlasim :) ), nemenit built in objekty. Rozsirim nasledujicim zpusobem Function:

    Function.prototype.extend = function(constructor) {
        function parent() {};
        parent.prototype = this.prototype;
        constructor.prototype = new parent();
        return constructor;
    }
    
    Function.prototype.mixin = function(mixin) {
        for(var i in mixin.prototype) this.prototype[i] = mixin.prototype[i];
        return this;
    }
    
    var IFace = Object.extend(
        function() {}
    );
    
    IFace.prototype.show = function() {return this.name;}
    
    var MyObject = Object.extend(
        function(name) {this.name = name;}
    );
    
    var Other = MyObject.extend(
        function(name, car) {
        MyObject.call(this, name); this.car = car;
        }
    ).mixin(IFace);
    
    alert(new Other('Jmeno', 5).show());

    Vytvoreni potomka je tim padem „pouze“ volani metody extend na predkovi (coz dava i smysl). V prikladu je parametrem pouze primo konstruktor, ale muze zde byt i komplet definice.
    No a zminene mixovani je opet pouze metoda, tentokrat uz primo daneho „potomka“.

    Toto neni zadny spor s clankem. Vysledek bude uplne stejny (pokud se tedy doplni o nastavovani constructor a __superClass, coz pro ilustraci neni potreba). Pouze jiny pristup a dalsi demonstrace variability a svobody vyjadreni v JavaScriptu :)

      1. junix

        Re: Klicove slovo $class

        To je velmi pekny clanek. Myslim, ze je trochu skoda, ze internet je takove roztristene medium. Informace jsou rozesete po ruznych clancich, a aby si clovek udelal kompletni prehled, musi hodne hledat, a odpovedi nachazi po castech (to je dano i tim, ze rozsah clanku je vetsinou omezen tak, aby byl stravitelny behem desitek minut).

        Co tak se pustit do neceho vetsiho? Treba pdf kniha? Bylo by hezke mit vsechno pohromade, od zakladu po pokrocile techniky.

        1. Michal Augustýn

          Re: Klicove slovo $class

          Takovou myšlenku jsem měl taky a proto jsem dal ke stažení článek ve formě PDF (odkaz na konci článku). Ale Ty máš možná na mysli ještě nějaké pokročilejší techniky, které já tak nějak nepotřebuju, takže je moc nepoužívám, takže o nich ani nehodlám psát…

  4. jjjjj

    chcem pokracovanie

    myslel som si ze o JS co to viem ale vdaka tomuto serialu som sa dozvedel ze este vela neviem. bol by som zvedavy hlavne na AOP v JS :-O

Napsat komentář

Přihlásit se

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: http://www.zdrojak.cz/?p=3193