abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:44 | Nová verze

    Byl vydán LineageOS 23.2 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu.

    Ladislav Hagara | Komentářů: 0
    dnes 03:44 | IT novinky

    Od března budou mít uživatelé Discordu bez ověření věku pouze minimální práva vhodná pro teenagery.

    Ladislav Hagara | Komentářů: 0
    včera 23:43 | IT novinky

    Evropská komise (EK) předběžně shledala čínskou sociální síť pro sdílení krátkých videí TikTok návykovým designem v rozporu s unijním nařízením o digitálních službách (DSA). Komise, která je exekutivním orgánem Evropské unie a má rozsáhlé pravomoci, o tom informovala v tiskovém sdělení. TikTok v reakci uvedl, že EK o platformě vykreslila podle něj zcela nepravdivý obraz, a proto se bude bránit.… více »

    Ladislav Hagara | Komentářů: 3
    včera 18:33 | Nová verze

    Offpunk byl vydán ve verzi 3.0. Jedná se o webový prohlížeč běžící v terminálu a podporující také protokoly Gemini, Gopher a RSS. Přibyl nástroj xkcdpunk pro zobrazení XKCD v terminálu.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | Zajímavý projekt

    Promethee je projekt, který implementuje UEFI (Unified Extensible Firmware Interface) bindingy pro JavaScript. Z bootovacího média načítá a spouští soubor 'script.js', který může používat UEFI služby. Cílem je vytvořit zavaděč, který lze přizpůsobit pomocí HTML/CSS/JS. Repozitář se zdrojovými kódy je na Codebergu.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 12:44 | Bezpečnostní upozornění

    Zpráva Justičního výboru Sněmovny reprezentantů upozorňuje na cenzurní kampaň Evropské komise, mířenou proti svobodě projevu na sociálních sítích. V dokumentu se uvádí, že se Evropská komise během posledních šesti let účastnila více než 100 uzavřených jednání, během nichž po platformách požadovala úpravy pravidel moderování obsahu, přičemž toto úsilí Komise zahrnovalo i cenzuru politických názorů a pravdivých informací. Výbor zdůrazňuje, že tento přístup Bruselu ohrožuje ústavou zaručená práva Američanů na svobodu projevu.

    NUKE GAZA! 🎆 | Komentářů: 11
    včera 04:33 | Nová verze

    Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).

    |🇵🇸 | Komentářů: 0
    8.2. 03:33 | IT novinky

    Do prodeje jde tichá bezdrátová herní myš Logitech PRO X2 SUPERSTRIKE s analogovými spínači s haptickou odezvou (HITS, Haptic Inductive Trigger System). Cena je 4 459 Kč.

    Ladislav Hagara | Komentářů: 8
    7.2. 21:00 | Zajímavý projekt

    Microsoft na GitHubu zveřejnil zdrojový kód projektu LiteBox, jedná se o 'knihovní operační systém' (library OS) zaměřený na bezpečnost, využívající systémovou architekturu LVBS k ochraně jádra před útoky z uživatelského prostoru. LiteBox je napsán v Rustu a uvolněný pod licencí MIT. Projekt je teprve v rané fázi vývoje.

    NUKE GAZA! 🎆 | Komentářů: 3
    7.2. 16:11 | Zajímavý software

    BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (5%)
     (0%)
     (11%)
     (26%)
     (3%)
     (5%)
     (2%)
     (12%)
     (28%)
    Celkem 819 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    25.9.2009 18:43 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Nebylo by mozno z tohoto vytvorit good clanek ci dokonce serial?
    USE="-gnome -kde";turris
    25.9.2009 22:39 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Možné by to bylo, ovšem nevím jak by to bylo s pravidelností takového seriálu.

    11.7.2019 00:33 jsClass
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Mezi prvními odkazy na OOP v JS na abcLinuxu mi vypadne tento a aktuálního nic moc, ačkoliv se to od té doby změnilo a postup, který například definovala Mozilla se už trochu liší a v budoucnu (od ECMAScript 2015) nás čeká objektová dědičnost pomocí class, ačkoliv na pozadí je stále prototyp. Dovolím si proto přidat link na aktuálnější informace o OOP v JS až je někdo bude hledat podobně jako já.
    25.9.2009 18:56 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Tak, můj očekávaný komentář je zde:)

    Hned na začátku článku demonstrujete rozdíl mezi klasickou prototypovou dědičností a vaší dědičností bez používání operátoru new a this. Klasická dědičnost je na 7 řádků, ta vaše na 12 (už tady je možné vidět, že vaše řešení není z hlediska délky kódu zrovna šťastné). Navíc má problémy, které jsou popsané v diskuzi u minulého zápisku, konkrétně "problémový, nepřehledný, paměťově náročný a nevýkonný".

    Vaše řešení omlouváte tím, že se může stát, že zapomenete operátor new, a pak se to strašně špatně hledá. Já vám ukážu takový malý trik, pomocí kterého se to bude hledat velice snadno. Modifikuji váš příklad:

    var Clovek = function () {
      if (this === window) throw new Error('New instance must be created by new operator!');
    }
    Clovek.prototype.pozdrav = function () {
     alert('ahoj);
    }
    var karel = new Clovek();
    karel.pozdrav();
    

    Co na to říkáte? Podle mě to celkem obstojně řeší váš problém s new.

    Dále se věnujete problémy s this, ale podle mě se jedná o zcela vykonstruované příklady v praxi se nevyskytující. Kdo by proboha chtěl psát takto vnořené metody a komplikovat si tím život? Není jednodušší dát před metodu podtržítko jako upozornění, že zrovna tato metoda slouží k interním účelům, než to takto obalovat? Podtržítku snad každý rozumí, a když jsou třeba 2, je to hodně silné varování:) Vždyť ten obal vám přináší zase jen problémy a zanáší další komplikované zápisy do kódu (a nic to nepřináší). Je sice hezké, že se snažíte s dědičností šetřit, ale co až bude potřeba? Váš model je podle mě spíš o Anti-OOP, protože degradujete objektově orientovaný jazyk opravdu jen na tu hash-tabulku.

    Nechtěl bych, aby to celé vyznělo špatně, ale všechny vaše problémy s new a this jsou naprosto jednoduše řešitelné, bez vytváření zbytečných komplikací. V životě bych nechtěl po někom číst takový kód, který zde popisujete (představte si tak splácaných třeba 2000 řádků), protože opravdu jediné řešení by bylo to celé zahodit a napsat znovu:-)

    25.9.2009 20:03 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Základní pricipy OOP jsou identita, zapouzdření a skládání. Rád bych konkrétně slyšel, který z těchto principů porušuje můj kód. Označením tohoto přístupu za Anti-OOP je zcela mimo mísu. Netuším s čím v tomto máte konkrétní problém, prosím o vysvětlení. Pokud se jedná o reuse kódu, patternů na reuse kódu je celá spousta (není to jen dědičnost), každý se volí v určité situaci. Já se tomuto tématu ovšem vůbec v článku nevěnuji, tak proč se o něm zmiňujete?

    25.9.2009 20:24 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Ten váš příklad je úplně to samé, jako kdybych třeba v pythonu nepoužíval zabudované 'class'. Za Anti-OOP to považuju proto, protože javascript nabízí zcela standardní OO model, který vy naprosto z nelogických důvodů obcházíte a vytváříte vlastní, který nic nenabízí. Mi to nevadí, že si tak píšete pro sebe, ale když už prezentujete tento model na netu, tak musíte počítat i s kritikou, a podle mě zcela oprávněnou.

    Já jsem vám dokonce nabídl řešení, díky kterému se můžete vyhnout vaši chybě, kterou popisujete v první polovině článku. To byl podle mě asi váš nejsilnější argument, o který jste tímto přišel:)

    Takže ještě jednou, můžete sepsat rozumné důvody (nebo alespoň jeden), proč by někdo ze čtenářů abíčka měl zvolit k OO programování právě model prezentovaný vámi? Prototypová dědičnost se v JS používá snad v každé knihovně a frameworku, je to standard v JS, tak proč používat něco jiného a mnohem komplikovanějšího?

    Neberte to špatně, ale já fakt pořád nechápu, co vás k tomu vede, vždyť vy si dobrovolně komplikujete vlastní kód:)

    25.9.2009 20:51 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Já ale přece proti prototypové dědičnosti nic nemám. Jenom není součástí mých blogpostů. Mě o ni vůbec nejde. Nechci na ni nic demonstrovat a tak není pro potřeby mých článků vůbec potřebná. Už ovšem začínám tušit kde je problém. To že nepoužívám nikde v produkčním kódu 'new' neznamená, že ho nepoužiji v jedné funkci pro dosažení dedičnosti.

     

    function vytvorObjektDedenim(objektKDedeni) {
     var dedic = function (){};
     dedic.prototype = objektKDedeni;
     return new dedic();
    }
    
    25.9.2009 22:06 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    No já nevím, ale prototypovou dědičnost jste použil hned v prvním příkladu, a mluvil jste o tom, že se tam blbě hledá zapomenuté new, na což jsem odpověděl, že se to hledá naprosto jednoduše (máte tam i příklad).

    Tím příkladem zde sice dosáhnete dědičnosti, ale prototypové, o té přece nemluvíte, já už ani nevím, o čem teda mluvíte? :-)

    25.9.2009 22:32 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Vám se to možná jednoduché zdá, mě ne. Dávat tento kód na každý první řádek své třídy je zbytečná repetice. Navíc já na javascriptu oceňuji právě jeho beztřídovost, o tom ty články jsou hlavně. Na té beztřídovosti se dají krásně pochopit základy OOP. Když se někdo začne učit OOP, první s čím přijde do styku je třída. Přirozenější mi přijde přijít do styku prvně s objektem. Vy mě stále osočujete z toho, že jdu proti javascriptu. Ale nejsem jediný kdo si myslí, že new je v javascriptu jaksi navíc a dokonce jde proti prototypové dědičnosti. Nebylo by lepší místo

    var auto = {};
    var sportak = function () {
    }
    sportak.prototype = auto;
    

    napsat toto

    var auto = {};
    var sportak = {};
    sportak.prototype = auto;
    

    samozřejmě auto musí obsahovat něco k podědění.

    nebo vy snad píšete v javascriptu věci jako

    var objekt = new Object();
    
    25.9.2009 23:18 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Já píšu buď:

    BLite.Object.define("mynamespace.Auto", {
      extend: BLite.Object,
      ...
    });
    BLite.Object.define("mynamespace.Sportak", {
      extend: mynamespace.Auto,
      ...
    });
    

    nebo

    qx.Class.define("mynamespace.Auto", {
      extend: qx.core.Object,
      ...
    });
    qx.Class.define("mynamespace.Sportak", {
      extend: mynamespace.Auto,
      ...
    });
    

    Výhoda je taková, že to za mě udělá všechny ty nudné věci, a různé typové kontroly jako bonus.

    Moc často nevidím, že by někdo používal javascriptovou dědičnost přímo, ale použije se něco high-level (třeba to co jsem napsal já, ale i jiných možností je dost). Ale jinak jde o to, že function(){} je konstruktor, kdežto {} je vytvoření instance třídy Object. Takže pokud chci obyč hash tabulku, vytvořím si ji pomocí {}, ale pokud chci vytvořit instanci nějaké třídy, použiji new JmenoTridy. Pokud vám nesedí new, tak si to můžete obalit třeba takto: function create(clazz) { return new clazz; }, pořád mi to přijde jako celkem čisté řešení, které navíc bude kompatibilní se vším, s čím přijdete do styku (a neříkejte mi, že si chcete dělat úplně všechno sám).

    nebo vy snad píšete v javascriptu věci jako ...

    new Object() psát nemusím, protože mi stačí {}, ale jiné i svoje třídy vytvářím pomocí operátoru new, tak jak se to normálně dělá (a přijde mi to přehledné).

    25.9.2009 23:35 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Ale moje řešení je kompatibilní se vším s čím přijdu do styku. Navíc já nehaním váš způsob, tak jako to děláte vy s mým. Já jsem proti němu měl na svých projektech výhrady a tak jsem si našel workaround. Postupem času jsem zjišťoval, že nejsem sám kdo tyto problémy řeší. Chtěl jsem pomoci dalším lidem, kteří nevědí jak pojmenovat svůj problém a jak ho vyřešit a ukázat jim jistou cestu. Není na ní nic špatného, nic co by odporovalo dobrým mravům obecného programováni, OOP nebo dokonce javascriptu. Není to ohýbaní javascriptu, je to jen vynechání určitých jeho vlastností. Tak se to děje v mnoha jazycích. Například již zmíněná vícenásobná dědičnost v C++.

    25.9.2009 21:14 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Za Anti-OOP to považuju proto, protože javascript nabízí zcela standardní OO model
    no a co... neni bezvedne, ze JS je tak pokrocily jazyk, ze v nem jde definovat i jiny objektovy model, nez ten ktery vymyslel vyrobce(tm) a ktery nekomu vyhovuje lip. kam se hroubou ruzne javy, c-sharpy nebo snad c++. ;-]
    Mi to nevadí, že si tak píšete pro sebe, ale když už prezentujete tento model na netu, tak musíte počítat i s kritikou, a podle mě zcela oprávněnou.
    ja treba osobne vim, ze takto jdou delat v JS objekty... ale jelikoz v JS neprogramuju, tak se rad podivam jak to delaji ostatni.
    Takže ještě jednou, můžete sepsat rozumné důvody (nebo alespoň jeden), proč by někdo ze čtenářů abíčka měl zvolit k OO programování právě model prezentovaný vámi?
    protoze se nekomu muze libit.... (myslim ten model, ne autor).
    Prototypová dědičnost se v JS používá snad v každé knihovně a frameworku, je to standard v JS, tak proč používat něco jiného a mnohem komplikovanějšího?
    a kdyby vsichni skakali z okna... to byl hodne laciny argument.... jinak... vsichni pouzivaji windows, tak proc pouzivat linux, ...neco jineho a mnohem komplikovanejsiho?
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    25.9.2009 22:21 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    no a co... neni bezvedne, ze JS je tak pokrocily jazyk, ze v nem jde definovat i jiny objektovy model, nez ten ktery vymyslel vyrobce(tm) a ktery nekomu vyhovuje lip. kam se hroubou ruzne javy, c-sharpy nebo snad c++. ;-]

    No bezvadné to je, ale zahodit Object.prototype v js je podle mě špatné:)

    protoze se nekomu muze libit.... (myslim ten model, ne autor).

    Chtěl jsem opravdu rozumné důvody, líbit se někomu může cokoliv, třeba i autor:-)

    a kdyby vsichni skakali z okna...

    Úmyslné nepochopení? to se stavá i na abc:)

    25.9.2009 22:33 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Ale tady nikdo netvrdí, že chci zahodit Object.prototype. Celou dobu se snažím vám to vymluvit. Já jen nechci new a nechci this. Object.prototype je v pořádku.

    25.9.2009 21:35 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    V minulém článku mě jeden komentující upozornil na podobné články. Nakonec mi to nedalo a jal jsem se je hledat. Píše je pan Staníček a ejhle, shodli jsme se. http://zdrojak.root.cz/clanky/javascript-a-oblast-pusobnosti-promennych-dil-druhy/

    25.9.2009 22:03 dark
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Je potřeba přečíst i komentáře;-)

    25.9.2009 22:15 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP a Javascript 2

    Ano chybička se vloudila právě v použití onoho this. Já osobně bych ho tam nepoužil, to je ovšem jediné na čem se s panem Staníčkem neshodneme.

    1.11.2019 20:15 Marcel
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Dobrý den, chtěl bych se zeptat, zda někdo pracujete na pozici IT v Praze? Poradíte mi de se dá dobře vydělat? funguji jako java vývojář v menší firmě, a hledám změnu....
    3.11.2019 20:41 Daniel
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Také jsem řešil změnu pracovního místa, a podařilo se mi to přes agenturu, která pod sebou má několik IT pracovníků, a dosazuje je přímo na místa podle jejich specifikace.
    6.11.2019 17:59 Marcel
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Mohl bych se prosím zeptat, odkud ta agentura je? A kolik jste za to zaplatil?
    10.11.2019 20:44 Daniel
    Rozbalit Rozbalit vše Re: OOP a Javascript 2
    Dejte si do vyhledávač agenturu coolpeople, přes kterou jsem si našel novou práci, neplatíte za to vůbec nic, je to pro Vás celé zdarma, takže si můžete v podstatě jen polepšit.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.