Apple představil nový MacBook Pro s čipy M4, M4 Pro a M4 Max.
Na GOG.com běží Halloween Sale 2024. Při té příležitosti lze získat zdarma počítačovou hru Return of the Phantom.
Společnost OpenAI spustila internetový vyhledávač ChatGPT search.
Konference OpenAlt 2024 proběhne již tento víkend 2. a 3. listopadu v prostorách FIT VUT v Brně. Začíná ale už v pátek na warm-up party ve Studentském klubu u Kachničky v 17:00. Pokud jste ještě areál FITu nenavštívili, k dispozici jsou pokyny k orientaci. Na programu je 54 přednášek a workshopů. Témata jsou od silně technických témat jako je třeba GCC nebo PostgreSQL po méně technické témata jako eGovernment, nebo třeba detailní analýzu … více »
Byla vydána nová verze 6.9 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 14.0.1. Tor client na verzi 0.4.8.13. Thunderbird na verzi 115.16.0.
Vývojáři free a open source synchronizačního nástroje (a p2p náhrady Dropboxu) Syncthing oznámili, že z důvodu odporu ze strany Google Play ukončují podporu OS Android. Bohužel v rámci toho zmizí i vydání Syncthing na F-Droid, který má slabší uživatelskou základnu. Syncthing je na Androidu implementován formou wrapper aplikace, která spustí Syncthing démon, vyžádá potřebná oprávnění a zpřístupní webové rozhraní démona. Ve srovnání se
… více »V červnu 2022 bylo oznámeno, že z K-9 Mailu se stane Thunderbird pro Android. Trvalo to poněkud déle, než vývojáři předpokládali, ale včera byl první stabilní Thunderbird pro Android 8.0 vydán.
Projekt microDMG Racer na Kickstarteru nevyšel, tak se autor rozhodl uvolnit na ESP32 postavené autíčko i ovladač jako open source.
Byl vydán TrueNAS SCALE 24.10 „Electric Eel“. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Byla vydána nová verze 24.10.29 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nově s podporou AI (whisper.cpp) pro generování titulků. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
30. listopadu nyní již minulého roku zde na AbcLinuxu.cz vyšel článek Michala Vyskočila Otevřená Java 1: Přehled, je androidí Dalvik Java?, který vysvětloval některé pojmy z oblasti „Javy“. Tento můj text obsahuje několik dodatků, dovysvětlení a odkazů.
Co je to vlastně Java? Pojem je to trochu nejednoznačný, jelikož se v dávných dobách, snad v záchvatu čirého nadšení nad šikovnou ochrannou známkou v laboratořích společnosti Sun rozhodli pojmenovat Java úplně vše.
Jde např. o Sun Java System Application Server (SJSAS), Sun Java Desktop System (SJDS) nebo JavaScript.
Zatímco některé zmíněné výrobky na slovo Java v názvu mají bezesporu nárok (SJSAS je prostě aplikačním serverem zaměřeným na prostředí Javy), jiné využívají toho, že se jich Java týká alespoň okrajově (SJDS je GNOME s několika přidanými komponentami, z nichž jsou některé založeny na Platformě Java), a u dalších jde vyloženě o obchodní strategii (JavaScript nemá s Javou téměř nic společného).
Bez zajímavosti není, že SJSAS byl před nějakou dobou přejmenován a slovo Java již v názvu nemá…
Java .class soubor … Binární soubor obsahující posloupnosti instrukcí pro virtuální stroj, který je vykonává. Programy v jazyce Java jsou nejčastěji překládány (ale ne nezbytně) právě do tohoto mezikódu.
„Mezikódu“ se říká bajtový kód nebo jednoduše bajtkód, případně anglicky bytecode. Vzniká obvykle jako produkt kompilátoru, který jej vytváří ze zdrojových kódů napsaných v jazyce Java (ale i jiných jazycích).
O bajtkódu si lze přečíst ve čtvrté kapitole knihy The Java Virtual Machine Specification.
Další významnou úlohou stroje je automatická správa paměti – garbage collecting.
To znamená, že programátor nemusí explicitně alokovat a uvolňovat paměť. Paměť je automaticky alokována virtuálním strojem, nejčastěji na základě určitých událostí, např. při žádosti o vytvoření nového objektu. Uvolnění paměti zajišťuje také virtuální stroj. Každá instance virtuálního stroje to může provádět jinak; obecně je ale paměť uvolňována tehdy, když už není potřeba — např. pokud na objekt nevede žádný odkaz (a nelze k němu z programu přistupovat, takže je prakticky zbytečný).
(Upřesnění: garbage collecting jako takové se zabývá pouze uvolňováním paměti, nikoli alokací. Stará se tedy o vyhledávání „uvolnitelné“ paměti a její následné skutečné uvolnění.)
Platforma Java je kombinace běhového či vývojového prostředí spolu se standardní knihovnou.
Pěkné schéma Platformy Java lze nahlédnout v dokumentaci.
Platforem existuje několik – od "klasické" Java Standard Edition, přes Java EE, což je v podstatě SE verze s obohacenou standardní knihovnou, po Java ME pro mobilní telefony, která používá jiný virtuální stroj, tak i dosti odlišnou standardní knihovnu.
Tyto „platformy“ jsou ve skutečnosti „edice“ Platformy Java. Nejdůležitější edice jsou tři (existuje ještě několik dalších):
(Poznámka: dodnes se lze setkat se staršími označeními: Java 2 Platform, Standard Edition neboli J2SE, Java 2 Platform, Enterprise Edition neboli J2EE a Java 2 Platform, Micro Edition neboli J2ME.)
Prapůvodním cílem prapůvodních autorů dnešní „Javy“ byla tvorba programů, které by bylo možné „spouštět kdekoli“. To se nakonec ukázalo jako komplikované, zejména vzhledem k mimořádné rozličnosti zařízení, na nichž by tyto programy měly být provozovány, a rozličnosti účelů těchto programů. Např. je zbytečné, aby mobilní telefon mohl provozovat rozsáhlé serverové programy, stejně tak je zbytečné, aby server mohl přistupovat k vlastnostem malých osobních počítačů.
Z tohoto důvodu vzniklo několik edic Platformy Java, které se liší především místem předpokládaného nasazení (z čehož plynou rozdílné nástroje, rozdílné standardní knihovny atd.). Např. JEE je určeno k tvorbě serverových řešení a naopak JME je určeno k nasazení na mobilní telefony a další „malá“ zařízení. JSE je jakýmsi pojítkem a zároveň nejobecnější technologií.
(Teoreticky ale nic nebrání nasadit JEE na mobilní telefon nebo JME na server.)
Obecně, mluví-li se o „Platformě Java“, míní se tím obvykle jen JSE. JSE je totiž základem všech ostatních edicí, což ilustruje toto schéma:
(JEE je nadmnožinou JSE. JME je podmnožinou JSE a navíc obsahuje další komponenty.)
Význam výrazu „spouštění kdekoli“ se tak změnil a dnes se obecně týká především kompatibility bajtkódu atd., respektive znamená „spouštění kdekoli v rámci edice“.
Tiskni Sdílej:
Tohle rozdeleni neni zcela presne, napriklad existuje jeste realtime nebo embedded edice.Vždyť tam autor píše: "Nejdůležitější edice jsou tři (existuje ještě několik dalších)"
Navic neni mozne pouzit JSE (napriklad OpenJDK nebo Harmony) v mobilnim telefonu, porusilo by to licenci k Technology Compatibility Kit.Už jsem to vysvětlovat pod článkem, ale asi marně. Kde se prosím v OpenJDK Community TCK License Agreement (nebo jiném relevantním dokumenty) píše, že testy neplatí pro použití v mobilním telefonu? A patenty - viz bod 7 GPLv2. Oracle vás může zažalovat pouze za porušení copyrightu (to jest neoprávněné používání OpenJDK, Java, J2SE, ...), ale ne za patenty, protože by v tom případě porušil podmínky GPL a musel OpenJDK přestat distribuovat.
JavaScript nemá s Javou téměř nic společnéhoPokud vím, JavaScript nemá s Javou ani Sunem společného kromě názvu vůbec nic. Je to jenom marketingové označení – asi jako když se po nástupu Windows XP najednou začalo pyšnit přívlastkem „XP“ kde co, od aplikací přes harddisky po slipy.
u dalších jde vyloženě o obchodní strategii (JavaScript nemá s Javou téměř nic společného)To znamená, že „Java“ v názvu „JavaScript“ je obchodní strategií, ale zároveň mají ještě něco společného (to „něco“ je rozdíl mezi „nic“ a „téměř nic“). Co tedy mají společného?
Jinak se Sunem JS něco málo společného má - Sun ho spoluvyvíjel.Takhle překvapivou informaci by bylo dobré uvést i se zdrojem. Normálně se totiž člověk dočte jen to, že Sun JavaScript následně licencoval…
To znamená, že „Java“ v názvu „JavaScript“ je obchodní strategií, ale zároveň mají ještě něco společného (to „něco“ je rozdíl mezi „nic“ a „téměř nic“). Co tedy mají společného?Jste natvrdlý? Vždyť to píšu výše - třeba některé classy byly částečně převzaty z tehdejšího J2SE.
Takhle překvapivou informaci by bylo dobré uvést i se zdrojem. Normálně se totiž člověk dočte jen to, že Sun JavaScript následně licencoval…Předpokládám, že jsem to viděl v knížce JavaScript profesionálně (?) od Wroxu. Přesný název knihy dodám někdy večer. Tak či onak, Sun se na JS podílel, což sám přiznáváte, takže nechápu, o čem diskutujete.
Jste natvrdlý? Vždyť to píšu výše - třeba některé classy byly částečně převzaty z tehdejšího J2SE.Vzhledem k tomu, že počet tříd v JavaScriptu je 0, je vaše tvrzení formálně pravdivé. Normálně česky by se to ale řeklo tak, že se JavaScript – jako každý jiný programovací jazyk – inspiroval jazyky, které v té době existovaly.
Tak či onak, Sun se na JS podílel, což sám přiznáváte, takže nechápu, o čem diskutujete.Kde jsem něco takového psal? Pokud vím, JavaScript byl do podoby JavaScriptu vyvinut pod křídly Netscape, Sun do toho vstoupil jenom tak, že se s Netscapem dohodli na tom, že bude možné do prohlížeče vkládat Javu v podobě appletů a bude možné s nimi komunikovat přes JavaScript, a Sun na oplátku umožní využít slovo „Java“ jako součást názvu skriptovacího jazyka.
Vzhledem k tomu, že počet tříd v JavaScriptu je 0, je vaše tvrzení formálně pravdivé.No jasně, když dojdou argumenty, tak se začne slovíčkařit. V tom případě ale JavaScript obsahuje nenulové množství tříd (a některé z nich, například Date, jsou založeny na třídách J2SE), protože třída není nutně definovaná pomocí klíčového slova class, jelikož se obecně jedná o šablonu objektů. A toto JS prostě má, i když se vám to třeba nelíbí, ale takový už je život.
Kde jsem něco takového psal? Pokud vím, JavaScript byl do podoby JavaScriptu vyvinut pod křídly Netscape ...Vaše "pokud vím" mám někde. Ukončíme tedy spor... Psal jsem:
Jinak se Sunem JS něco málo společného má - Sun ho spoluvyvíjel.Vy jste z toho byl celej vyjevenej, což jste vlastně doteď. Takže citace z knížky (slova krácena mnou):
Pro včasné dokončení implementace jaz. LiveScript spojila spol. Netscape své vývojářské úsilí se spol. Sun Microsystems. Těsně před ofic. vydáním prohlížeče NN 2 změnila spol. Netscape název LiveScript na JavaScript, čímž chtěla těžit z pozornosti, které se dostávalo jaz. Java ze strany tisku.Jedná se o knížku "JavaScript pro webové vývojáře: Programujeme profesionálně", nakl. Wrox / Cpress. Doufám, že už je vám to jasné a přestanete otravovat nepodloženými nebo nevěcnými plky.
JavaScript uses prototypes instead of classes for inheritance. It is possible to simulate many class-based features with prototypes in JavaScript.Wikipedia: JavaScript – History.
K nejrozšířenějším chybným představám o JavaScriptu patří, že jde o „zjednodušenou verzi“ Javy, programovacího jazyka od firmy Sun Microsystems. Až na neúplnou syntaktickou podobnost a skutečnost, že jak Java, tak i JvaScript mohou doručovat po sítích „proveditelný obsah“, jsou si tyto dva jazyky dost vzdálené. Podobnost názvů je čistě marketingovým tahem. … Tyto jazyky mají odlišné sady schopností.David Flanagan: JavaScript – kompletní průvodce. O'Reilly, česky ComputerPress.
JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, which was later renamed to LiveScript, and finally to JavaScript. LiveScript was the official name for the language when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but it was renamed JavaScript in a joint announcement with Sun Microsystems on December 4, 1995 when it was deployed in the Netscape browser version 2.0B3.Wikipedia: JavaScript – History. Pokud chcete prezentovat něco, co je v rozporu s jakoukoli informací, kterou lze o dané věci zjistit jinde, bylo by asi dobré zakládat to na robustnějším základu, než jsou tři slova „spojila vývojářské úsilí“, která mohou znamenat cokoli. Buď máte velmi podrobné informace o historii JavaScriptu, takové, které se ani nedostanou na internet nebo do knížek; buď máte velmi rozsáhlé znalosti o programování, a rozdíl mezi objektovým modelem založeným na třídách a na prototypech je pro vás maličkost pod vaši rozlišovací schopnost. A nebo jste si o JavaScriptu právě přečetl pár vět, tak o tom hned musíte poučovat celý svět, a v tom fofru jste si zatím nestihl všimnout třeba toho, že prototypová dědičnost v JavaScriptu je dost odlišná od třídní dědičnosti používané v mainstreamových objektových jazycích nebo jejich rozšířeních jako C++, Java, C#, Python nebo PHP.
JavaScript uses prototypes instead of classes for inheritance. It is possible to simulate many class-based features with prototypes in JavaScript.To nijak nevyvrací slova, která jsem řekl. Jestli skutečně umíte anglicky a nevložil jste sem cizojazyčnou citaci jen tak pro legraci, tak to pochopíte.
K nejrozšířenějším chybným představám o JavaScriptu patří, že jde o „zjednodušenou verzi“ Javy, programovacího jazyka od firmy Sun Microsystems. Až na neúplnou syntaktickou podobnost a skutečnost, že jak Java, tak i JvaScript mohou doručovat po sítích „proveditelný obsah“, jsou si tyto dva jazyky dost vzdálené. Podobnost názvů je čistě marketingovým tahem. … Tyto jazyky mají odlišné sady schopností.Toto nejenže nevyvrací, co jsem řekl, to má tvrzení dokonce potvrzuje.
JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, which was later renamed to LiveScript, and finally to JavaScript. LiveScript was the official name for the language when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but it was renamed JavaScript in a joint announcement with Sun Microsystems on December 4, 1995 when it was deployed in the Netscape browser version 2.0B3.Vy jste masochista, že se vám líbí, když vás někdo ponižuje? Zjevně ano. Nezdáte se jako klasický blb, protože se dokonce svá slova snažíte podkládat zdroji, ale asi jste v tom začátečník, protože dát sem tři citáty, z nichž ani jeden nerozporuje to, co jsem řekl já, je fakt úlet. Sice se pokoušíte tahat za záchrannou brzdu pokusy o změnu tématu, ale to se vám taky moc nedaří. Musíte se holt zlepšit. Tímto diskuze z mé strany končí. Nechám historii, aby posoudila, kdo z nás měl pravdu, protože zalévat pařez opravdu nemá cenu.
To nijak nevyvrací slova, která jsem řekl.Upozorňuje to na drobný fakt, že v JavaScriptu žádné třídy nejsou. Takže veškerá vaše tvrzení o tom, co dělají a nedělají třídy v JavaScriptu, jsou nesmysl.
Toto nejenže nevyvrací, co jsem řekl, to má tvrzení dokonce potvrzuje.Opravdu? Podle vás se tvrzení „podobnost názvů není jen marketingovým tahem, ty jazyky mají společného něco víc“ a „podobnost názvů je čistě marketingovým tahem“ potvrzují? Podle mne jsou v rozporu. Zbytek je krásná ukázka, jak si někdo pečlivě připraví vidle a pak se na ně ještě s rozběhem sám napíchne. Čekat na rozsouzení historií je v tomto případě zbytečné. Teda pokud nečekáte, že se ukáže, že 3.1.2011 byl přesně ten den, kdy jsem se najednou z ničeho nic zbláznil, a vy jste to jako první poznal…
Upozorňuje to na drobný fakt, že v JavaScriptu žádné třídy nejsou. Takže veškerá vaše tvrzení o tom, co dělají a nedělají třídy v JavaScriptu, jsou nesmysl.Co je třída je otázkou definice. Já výše uvedl definici ("šablona objektů" - tato definice není můj výmysl) a následně na jejím základě určil, že takové konstrukce v JS jsou. Mohl bych i citovat literaturu, ale protože vím, že pro vás to nic neznamená, nebudu to dělat. Melte si svou a tvařte se spokojeně.
Opravdu? Podle vás se tvrzení „podobnost názvů není jen marketingovým tahem, ty jazyky mají společného něco víc“ a „podobnost názvů je čistě marketingovým tahem“ potvrzují? Podle mne jsou v rozporu.1. Název je obchodní strategie. 2. JS přesto obsahuje věci převzaté z Javy. => Převzatých věcí není tolik, aby si zasloužily odkaz v názvu, ale jsou.
Zbytek je krásná ukázka, jak si někdo pečlivě připraví vidle a pak se na ně ještě s rozběhem sám napíchne.Souhlasím. A neměl byste si je sám vyndavat, zní rada lékařů.
Teda pokud nečekáte, že se ukáže, že 3.1.2011 byl přesně ten den, kdy jsem se najednou z ničeho nic zbláznilNemyslím. Podle mě to bylo o mnoho roků dřív. A rozhodně nejsem sám, kdo si to myslí.
Co je třída je otázkou definice. Já výše uvedl definici ("šablona objektů" - tato definice není můj výmysl) a následně na jejím základě určil, že takové konstrukce v JS jsou.Za prvé je to vaše definice, za druhé takové konstrukce sice jsou v JS, ale nejsou v Javě.
Mohl bych i citovat literaturu, ale protože vím, že pro vás to nic neznamená, nebudu to dělat.Víte houby, a citovat nechcete proto, protože nemáte co citovat. Vaše výmluva je ubohá.
Převzatých věcí není tolik, aby si zasloužily odkaz v názvu, ale jsou.Dokonce jich není ani tolik, aby si zasloužily jedinou zmínku v diskusi. Je potřeba o tom pořád jenom mluvit, že jsou, ale je potřeba je pečlivě tajit. Teda vlastně ne úplně – lze odtajnit, že jsou převzaté takové objevy, jako třeba základní datové typy.
„Mezikódu“ se říká (možná někdy) bajtový kód nebo jednoduše bajtkód, případně anglicky bytecode, nebo taky mezikód, zkompilovaný kód, class, binární kód… Pokud by ta synonyma byla uvedena v závorce u prvního použití termínu v rozsáhlém článku, proč ne. Ale stavět na tom výběrový zápisek? Druhá věta už je prakticky jen opis druhé citované věty z článku – pokud chtěl autor zdůraznit to, že to mezikódu lze přeložit i jiné jazyky, než Javu, měl škrtnout předchozí dvě zbytečné věty, a rozepsat se o těch čtyřech slovech v závorce.Java .class soubor … Binární soubor obsahující posloupnosti instrukcí pro virtuální stroj, který je vykonává. Programy v jazyce Java jsou nejčastěji překládány (ale ne nezbytně) právě do tohoto mezikódu.„Mezikódu“ se říká bajtový kód nebo jednoduše bajtkód, případně anglicky bytecode. Vzniká obvykle jako produkt kompilátoru, který jej vytváří ze zdrojových kódů napsaných v jazyce Java (ale i jiných jazycích).
Pokud někdo netuší, co znamená „automatická správa paměti / garbage collection“, nebude tušit ani co jsou „alokace / uvolnění paměti“, „instance virtuálního stroje“ nebo „odkaz na objekt“. Takže vysvětlení pojmů to asi nemělo být, tak možná upřesnění? Jenže „alokace paměti“ není pojem ze světa programování v Javě, jde o popis fungování části virtuálního stroje, v tomto případě správy objektů. Jenže pak je to zase velmi nepřesné – virtuální stroj nealokuje paměť pro každý nový objekt extra a s každým objektem, který přestane být odkazován, ji zase neuvolňuje. Navíc se najednou nepozorovaně přešlo od objektů k paměti, aniž by bylo jasné, jaký je mezi tím vztah. Prostě je to takový dodatek, který neznalému jenom zamotá hlavu dalšími termíny, a znalého jen napadne, že by se to se stejným počtem slov a pro stejný účel dalo popsat přesněji. Kombinace „spouštět kdekoli“ a jednotlivých edicí Javy v zápisku dohromady míchá věci, které spolu nijak nesouvisí. Ono „spouštět kdekoli“ nikdy nemělo znamenat, že by se serverová aplikace spouštěla na mobilním telefonu. Bylo to vymezení proti programování zejména jednoúčelových zařízení, která každá měla svůj jazyk nebo jeho variantu, vývojové nástroje, svou knihovnu… Java neměla přinést to, že všechno bude stejné a jednou napsaná aplikace poběží bezezměny na jakémkoli zařízení, ale že se budou používat společné základy. Poměrně brzy se tenhle princip zopakoval s Javou na mobilních telefonech – buď bylo možné vyvíjet aplikace skoro pro každý mobil zvlášť (a u většiny výrobců mohl být autorem softwaru jen výrobce mobilu), JME aplikace jsou univerzální napříč výrobci. To neznamená, že by každá JME aplikace byla spustitelná na každém telefonu – ale používají společný jazyk, společné nástroje, společnou základní knihovnu. Algoritmus napíšete jednou a pak jej obalíte černobílým zobrazením pro jeden typ mobilu, barevným zobrazením pro jiný a zvukovým výstupem pro třetí. Což je výrazný rozdíl proti tomu, když ten samý algoritmus musíte jednou napsat v C pro jeden mobil, v C ale s jinou knihovnou pro druhý, v assembleru pro třetí, v Objective C pro čtvrtý atd. V poslední době to znova zopakoval Google s Androidem – „spouštět kdekoli“ opět neznamená, že by každá androidí aplikace běžela na každém systému s Androidem, ale opět je zde jednotné základní prostředí – jazyk, vývojářské nástroje, knihovny. Edice Javy pak prakticky určují jen to, co bude v základní knihovně. Respektive Sun/Oracle určuje, že aby něco mohlo být nazýváno takovou a takovou edicí Javy, musí to splňovat určité požadavky (z pohledu programátora dané hlavně „velikostí“ standardní knihovny). Ve volnějším výkladu se pak ten termín využívá pro platformu, která poskytuje standardní knihovnu dané „velikosti“. Takže třeba Google App Engine odpovídá JavaSE, i když technicky vzato tam některé třídy ze standardní knihovny JavaSE nejsou a nebo nedělají, co by dle standardu měly. Takže „spouštět kdekoli“ ani tady neznamená, že jakýkoli „JavaSE“ kód spustím na desktopu pod JRE od Sunu/Oracle, IBM i OpenJDK, ten samý kód spustím v aplikačním serveru i na Google App Engine. Ne. Znamená to „jenom“ tolik, že pro programování pro všechna ty prostředí mohu použít stejný jazyk, stejné nástroje, stejné postupy a často mohu použít stejný kód.Další významnou úlohou stroje je automatická správa paměti – garbage collecting.To znamená, že programátor nemusí explicitně alokovat a uvolňovat paměť. Paměť je automaticky alokována virtuálním strojem, nejčastěji na základě určitých událostí, např. při žádosti o vytvoření nového objektu. Uvolnění paměti zajišťuje také virtuální stroj. Každá instance virtuálního stroje to může provádět jinak; obecně je ale paměť uvolňována tehdy, když už není potřeba — např. pokud na objekt nevede žádný odkaz (a nelze k němu z programu přistupovat, takže je prakticky zbytečný).