Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Písmena arb pocházejí z arbitrary, pracujeme tedy s obecnými mnohostěny a je zcela na nás, jak budou vypadat. Při vytváření zadáváme postupně souřadnice jednotlivých vrcholů počínaje dolní podstavou bodem vlevo vpředu a pokračujeme proti směru hodinových ručiček.
Také bychom mu mohli říkat trojboký jehlan. První tři body tvoří podstavu, čtvrtý bod je vrchol.
mged> in arb4.s arb4 Enter X, Y, Z for point 1: 3 -1 0 Enter X, Y, Z for point 2: -1 3 0 Enter X, Y, Z for point 3: -2 -2 0 Enter X, Y, Z for point 4: 0 0 4
Též čtyřboký jehlan, lidově pyramida. Prní čtyři body tvoří podstavu, pátý je vrchol.
mged> in arb5.s arb5 Enter X, Y, Z for point 1: 2 0 0 Enter X, Y, Z for point 2: 0 2 0 Enter X, Y, Z for point 3: -2 0 0 Enter X, Y, Z for point 4: 0 -2 0 Enter X, Y, Z for point 5: 0 0 4
Mohli bychom mu říkat trojboký hranol, ale můžeme vytvořit i trojboký komolý kužel.
mged> in arb6.s arb6 Enter X, Y, Z for point 1: 2 0 0 Enter X, Y, Z for point 2: 0 2 0 Enter X, Y, Z for point 3: -2 0 0 Enter X, Y, Z for point 4: 0 -2 0 Enter X, Y, Z for point 5: 1 1 4 Enter X, Y, Z for point 6: 1 -1 4
Kongolemerát čtyř čtyřúhelníků a dvou trojúhelníků. Nejlepší představu získáte, když krychli jednu hranu nahradíte bodem. Suverénně jedno z nejblbějších těles, jaké jsem kdy potkal.
mged> in arb6.s arb6 Enter X, Y, Z for point 1: 4 -4 -0.5 Enter X, Y, Z for point 2: 4 4 -0.5 Enter X, Y, Z for point 3: 4 4 7.5 Enter X, Y, Z for point 4: 4 4 -3.5 Enter X, Y, Z for point 5: -4 -4 -0.5 Enter X, Y, Z for point 6: -4 4 -0.5 Enter X, Y, Z for point 7: -4 4 3.5
Šest čtyřúhelníků, je na vás, jestli z nich uděláte krychli, kvádr, komolý čtyřboký jehlan atd.
mged> in arb8.s arb8 Enter X, Y, Z for point 1: 2 0 0 Enter X, Y, Z for point 2: 0 2 0 Enter X, Y, Z for point 3: -2 0 0 Enter X, Y, Z for point 4: 0 -2 0 Enter X, Y, Z for point 5: 1 0 3 Enter X, Y, Z for point 6: 0 1 3 Enter X, Y, Z for point 7: -1 0 3 Enter X, Y, Z for point 8: 0 -1 3
Od šestistěn dále už nperacujeme se souřadnicemi vrcholů, ale s normálovými vektory jednotlivých stěn. Slouží k tomu těleso třídy arbn, s jehož pomocí vyrobíte libovolný mnohostěn. Nejprve zadáte počet stěn kýženého tělesa a pak určíte každou jeho stěnu pomocí čtyř údajů. Stěna je vynášena jako kolmice na danou polopřímku, proto první tři čísla orientují polopřímku s počátkem v bodě 0 0 0 a čtvrtá hodnota určuje, v jaké vzdálenosti od počátku bude vynesena rovina. Lépe to asi demonstrovat na příkladu.
mged> in ctrnactisten.s arbn # toto asi není nutné vysvětlovat, kdyžtak se podívejte na minulý díl Enter number of planes: 14 # nebudeme troškařit, uděláme čtrnáctistěn Enter coefficients for plane 1 : 1 0 0 1 Enter coefficients for plane 2 : 0 1 0 1 Enter coefficients for plane 3 : -1 0 0 1 Enter coefficients for plane 4 : 0 -1 0 1 Enter coefficients for plane 5 : 0 0 1 1 Enter coefficients for plane 6 : 0 0 -1 1 Enter coefficients for plane 7 : .5 .5 0 .75 Enter coefficients for plane 8 : -.5 .5 0 .75 Enter coefficients for plane 9 : -.5 -.5 0 .75 Enter coefficients for plane 10 : .5 -.5 0 .75 Enter coefficients for plane 11 : .5 .5 .5 1 Enter coefficients for plane 12 : -.5 .5 .5 1 Enter coefficients for plane 13 : -.5 -.5 .5 1 Enter coefficients for plane 14 : .5 -.5 .5 1
Všimněte si, že roviny 1-6 vytvářejí krychli, roviny 7-10 jí odřezávají 4 hrany a roviny 11-14 odřezávají 4 rohy.
Pro detailisty a všechny hnidofily: od bodu 7 jsou používána desetinná čísla, ačkoliv .5 .5 0 .75 má stejný význam jako 1 1 0 .75. Je to proto, že ve vykreslovacím enginu je bug, který u takto orientovaných rovin zadaných celými čísly nevykreslí linie. Schválně to zkuste, s trochou šikovnosti určitě vyrobíte i neviditelné těleso (které ovšem vyrenderujete). Vývojářům jsem to napráskal, tak to snad brzy zmizí.
Z mnohostěnů jsou nejvyužívanější šestistěny a pětistěny, nejčastěji ve formě trojbokých a čtyřbokých hranolů. A právě pro práci s nimi máme k dispozici usnadnění, respektive speciální třídy těles. Cílem těchto usnadnění je eliminovat zbytečné koumání, jaké zadat souřadnice pro jednotlivé body.
Je to těleso třídy arb8, jehož protilehlé stěny jsou navzájem rovnoběžné. Nezadáváme souřadnice všech osmi vrcholů, ale pouze výchozího bodu, vektorů výšky (H), šířky (W) a hloubky (D).
mged> in box1.s box Enter X, Y, Z of vertex: 1 1 1 # výchozí bod Enter X, Y, Z of vector H: 2 2 10 # výška vzhledem k výchozímu bodu Enter X, Y, Z of vector W: 3 0 0 # šířka vzhledem k výchozímu bodu Enter X, Y, Z of vector D: 0 3 0 # hloubka vzhledem k výchozímu bodu
Opět těleso třídy arb8, které už známe z minulého dílu. Kromě toho, že sousední stěny jsou nazvájem kolmé jsou i rovnoběžné s osami x y z a proto těleso nezadáváme pomocí bodů, ale souřadných rovin.
mged> in rpp1.s rpp Enter XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX: -5 5 -3 3 -2 10
Jedná se o těleso třídy arb6 a zadáváme ho podobně jako box.
mged> in raw1.s raw Enter X, Y, Z of vertex: 3 3 0 Enter X, Y, Z of vector H: 0 0 10 Enter X, Y, Z of vector W: -3 0 0 Enter X, Y, Z of vector D: 0 -3 0
Rotační tělesa si můžeme pracovně rozdělit na elipsoidy, paraboloidy, hyperboloidy, anuloidy, válce a kužely. V této skupině máme relativně málo vyloženě základních tvarů, ale zato hodně odvozených, které nám usnadňují život.
Základ všech ostatních elipsoidů. Zadává se pomocí středu a tří vrcholů.
mged> in ell.s ell Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of vector A: 7 0 0 Enter X, Y, Z of vector B: 0 5 0 Enter X, Y, Z of vector C: 0 0 4
Tu už známe z minula. Jelikož je to vlastně elipsoid, jehož ABC jsou shodné, můžeme zadat pouze střed a poloměr.
Enter X, Y, Z of vertex: 0 0 0 Enter radius: 6
Toto je elipsoid vzniklý otáčením elipsy kolem její delší osy. Zadáváme střed, ohniska a délku osy x (myšlena osa x patřící elipse).
mged> in ellg.s ellg Enter X, Y, Z of focus point 1: 2 0 0 Enter X, Y, Z of focus point 2: -2 0 0 Enter axis length L: 5
Podobně jako předchozí vzniká i tento rotací elipsy kolem její delší osy, ovšem tentokrát zadáváme de facto délku k hlavní poloosy (vector A) a vedlejší poloosy (radius of revolution).
mged> in ell1.s ell1 Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of vector A: 5 0 0 Enter radius of revolution: 2
Toto je pro změnu těleso vzniklé rotací paraboly po eliptické dráze. Nejprve zadáváme střed elipsy (vertex), následuje výška (H), hlavní poloosa (A) a vedlejší poloosa (B).
mged> in epa.s epa Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z, of vector H: 0 0 8 Enter X, Y, Z, of vector A: 5 0 0 Enter magnitude of vector B: 3
Jedná se o těleso vzniklé rotací jednoho ramena hyperboly po eliptické dráze. Podobně jako u paraboloidu zadáváme parametry elipsy (střed, hlavní a vedlejší osa), dále výšku tělesa (vzdálenost od středu elipsy k vrcholu tělesa) a navíc ještě délku hlavní poloosy, tedy vzdálenost od vrcholu k průsečíku asymptot.
mged> in ehy.s ehy Enter X, Y, Z of vertex: 0 0 0 # střed podstavy Enter X, Y, Z, of vector H: 0 0 8 # výška Enter X, Y, Z, of vector A: 5 0 0 # hlavní vrchol podstavy Enter magnitude of vector B: 2 # vedlejší vrchol podstavy Enter apex-to-asymptotes distance, c: 1 # hlavní poloosa hyperboly
Opět základ pro spousty ostatních těles. Terminologií mého bývalého deskriptiváře úplně blbý komolý kužel, podstavy jsou navzájem rovnoběžné elipsy libovolně orientované vůči ose.
mged> in tgc.s tgc Enter X, Y, Z of vertex: 0 0 0 # střed první podstavy bude na počátku Enter X, Y, Z of height (H) vector: 2 2 10 # osu trochu vychýlíme Enter X, Y, Z of vector A: 3 0 1 # hlavní vrchol spodní podstavy Enter X, Y, Z of vector B: 0 2 -1 # vedleší vrhol spodní podstavy Enter scalar c: 5 # délka hlavní poloosy horní podstavy Enter scalar d: 3 # délka vedlejší poloosy horní podstavy
Náš známý z minulého dílu, válec, jak ho známe ze základní školy.
mged> in rcc.s rcc Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of height (H) vector: 0 0 10 Enter radius: 2
Obecný válec, podstavy mohou být vůči ose orientovány libovolně.
mged> in rec.s rec Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of height (H) vector: 0 0 10 Enter X, Y, Z of vector A: 3 0 1 Enter X, Y, Z of vector B: 0 2 -1
Chce to trochu volné nakládání s termínem válec. Ale uvážíme-li, že válcová plocha vzniká z libovolného uzavřeného rovinného útvaru, jehož každým bodem vedeme vzájemně rovnoběžné přímky, tak je vlastně i toto možné. Jen do roviny nakreslíme kus hyperboly a přetneme ji kolmicí na osu.
mged> in rhc.s rhc Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z, of vector H: 0 0 10 Enter X, Y, Z, of vector B: 5 0 0 Enter rectangular half-width, r: 2 Enter apex-to-asymptotes distance, c: 3
Podobně jako předchozí případ, ovšem výchozí křivkou je parabola.
mged> in rpc.s rpc Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z, of vector H: 0 0 10 Enter X, Y, Z, of vector B: 5 0 0 Enter rectangular half-width, r: 3
Pokud platí, že elipsa je kružnice, na níž si sednul hroch, tak toto je komolý kužel do něhož hroch nacouval. Zadáváme střed spodní podstavy, výšku, hlavní a vedlejší vrchol a poměr zmenšení horní podstavy.
mged> in tec.s tec Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of height (H) vector: 0 0 10 Enter X, Y, Z of vector A: 5 0 0 Enter X, Y, Z of vector B: 0 3 0 Enter ratio: 2
Tady není co vysvětlovat, zadáte střed spodní podstavy, výšku, poloměr spodní a horní podstavy a je hotovo.
mged> in trc.s trc Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of height (H) vector: 0 0 10 Enter radius of base: 5 Enter radius of top: 3
Anuloid je těleso vzniklé otáčením kruhu kolem osy, která se nachází v rovině dané kruhem. Zádáváme střed (vertex), osu (normal vector), hlavní poloměr (radius 1, od středu anuloidu ke středu kruhu) a poloměr kruhu (radius2).
mged> in tor.s tor Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z of normal vector: 0 0 1 Enter radius 1: 5 Enter radius 2: 1
Je podobný předchozímu, ovšem neotáčíme kruhem, ale elipsou, a od toho se odvíjí o malinko komplikovanejší zadání. Střed (vertex), osa (normal vector) a poloměr otáčení (radius of revolution) jsou shodné, hlavní vrchol elipsy (vector C) a délka vedlejší poloosy (semi-minor axis) jsou navíc.
mged> in eto.s eto Enter X, Y, Z of vertex: 0 0 0 Enter X, Y, Z, of normal vector: 0 0 1 Enter radius of revolution, r: 10 Enter X, Y, Z, of vector C: 2 0 2 Enter magnitude of elliptical semi-minor axis, d: 1
Součástí GUI je i dialog pro vytváření základních těles. V CW, nebo GW rozbalte nabídku Edit a vyberte Primitive Editor. Do políčka Name stačí vyplnit libovolné jméno tělesa a z nabídky Type zvolit jeho třídu, podle níž se upraví výšet hodnot k nastavení. Vždy jsou doplněny defaultní hodnoty, ovšem ne všechna základní tělesa jsou podporována.
Editovat základní těleso může někdy dát víc práce než ho vytvořit k obrazu svému rovnou, ovšem pokud už to musíte dělat, je nutné těleso nejprve zobrazit a poté vybrat k editaci. To uděláme sekvencí příkazů e těleso (zobrazí těleso) a sed těleso (zahájí jeho editaci). Máme tu ještě druhý způsob výběru těles, který se bude hodit, pokud jich máte zobrazeno více najednou, třeba v nějaké kombinaci, a najednou přijde vnuknutí, že právě tohle je potřeba upravit. Nuže, máte-li aktivní GW stiskněte klávesu s a vyberte si těleso pomocí myši. Pohybem nahoru a dolů se střídavě nabízejí jednotlivá tělesa, výběr potvrdíte prostředním myšítkem. Konečně třetí možnost je zvolit z menu Edit položku Primitive Selection..., jež dá vyskočiti oknu se seznamem právě zobrazených těles a tam stačí dvakrát kliknout na požadované těleso.
Jakmile máte těleso vybrané, změní se v závislosti na jeho třídě nabídka Edit. Vždy je na výběr Rotate (otočit), Translate (posunout), Scale (zvětšit, nebo zmenšit) a None of Above, kterou použijete, když potřebujete pomocí myši posunout výřez, nebo si jen chcete oddychnout. Druhá skupina nabídek, která je vždy k dispozici zahrnuje pokyny Reject (odmítne změny a ukonší editaci tělesa), Accept (přijme změny a ukončí editaci), Apply (přijme změny a pokračuje v editaci) a Reset (odmítne změny a pokračuje v editaci).
Pro otáčení, posunování a škálování jsou k dispozici zkratky:
Dále nabídka edit obsahuje položky dle jednotlivých těles, například tělesa třídy arb4 až arb8 nabízejí Move Vertices (posunout vrcholy), Move Edges (posunout hrany), Move Faces (posunout stěny) a Rotate Faces (otočit stěny). Elipsoidy nabízejí posuny jednotlivých vrholů atd. atp.
Během editace těles přijde k užitku příkaz p
, který značí parametr. Například máme těleso, jež chceme dvakrát zvětšit. Vybereme ho k editaci, zvolíme Scale, ale co teď? Šmrdláním myši bude sotva přesně dvakrát větší. V této situaci, totiž se zvoleným Scale z nabídky Edit prostě zadáme do CW
p 2a je vymalováno.
Častý požadavek při modelování se vztahuje k hromadnému zkopírování a rozmístění jednoho objektu. Konečně jsme vyladili ten spojovací prvek a teď ho potřebujeme strčit do všech spojů. Jak na to? Pomocí Build Pattern tool, které najdete v horní liště CW v položce Tools.
Nyní se podíváme jak to funguje. Stáhněte si ukázkový soubor s objekty, které budeme klonovat.
Zobrazte si objekt (e snehulak) a v CW zvolte Tools > Build Pattern Tool. Pomocí tohoto nástroje můžeme vytvořit větší než malé množství kopií jednoho předmětu, rozstrkat je prostorem a ještě je navíc pootáčet. Vezměme to ale popořádku.
Ujistěte se, že jste v záložce Rectangular, měla by vypadat podobně jako na obrázku.
Nabídka Depth of duplication dává možnosti tops, region a primitives. Zde ovlivníte, do jaké hloubky bude klonování fungovat, čili jestli na úrovni vrcholových objektů, regionů, nebo základních těles. Tato volba má své důsledky. Pokud například zanecháte volbu tops a naklonujete objekt, úprava jednoho regionu, nebo základního tělesa se promítne do všech naklonovaných objektů, pokud zvolíte hloubku klonování až na úroveň základních těles, bude každý naklonovaný objekt stát sám za sebe.
Do kolonky Group name vepište libovolné jméno pro skupinu klonovaných objektů.
V kolonkách X Y Z Direction lze nastavit orientaci os. Výchozí nastavení je pravoúhlé, ovšem to není nijak závazné, osy můžete libovolně vychýlit a pomocí znaménka minus orientovat do čtyř základních kvadrantů.
Políčka Source string a Replacement string vám usnadňují nomenklaturu nových objektů. Do políčka Source string vyplňte jméno, nebo jen tu část jména, zdrojového objektu, kterou si přejete nahradit a do políčka Replacement string zadejte nový řetězec.
Kolonka Increment slouží k zadání kroku v číslování nových objektů a má smysl pouze tehdy, pokud klonujete na úroveň základních těles (primitives).
Konečně to nejdůležitější, políčko Objects. Zde vepište jméno zdrojového objektu.
Tím jsme se vypořádali se základním nastavením, teď určíme kolik bude výsledných objektů a jak budou rozmístěny. Máme na to dvě možnosti, a sice buď rovnoměrně v jednotlivých směrech (Use Directions), nebo pomocí seznamu hodnot pro každou osu (Use Lists). Začněme první možností, tedy rovnoměrným rozmístěním. Políčka No. in X (Y, Z) Direction slouží k zadání počtu výsledných objektů, kolonky Delta in X (Y, Z) Direction určují vzdálenost mezi středy jednotlivých objektů. Podle delty program určí i počátek pole klonovaných objektů. Podle příkladu na obrázku tedy bude první sněhulák na pozici 25,25 a další budou následovat v pravidelném intervalu.
Druhá volba, Use Lists je v porovnání s předchozí velmi přímočará. Prostě zadáte na jaké pozici v daném směru se mají klonované objekty vynášet.
Zobrazíme si jiný objekt, šipku (e sipka), a v CW zvolímee Tools > Build Pattern Tool a přejdeme na záložku Spherical. Šipku proto, abychom lépe viděli, jak funguje automatické otáčení objektů. Políčka Depth of Duplication, Group Name, Source String, Replacement String, Increment a Object List jsou stejná jako v předchozí záložce, proto je už nebudeme rozebírat.
Pro klonování objektů na kouli je podstatný střed oné koule (Pattern center), její poloměr (Starting Radius) a střed objektu, který budeme klonovat (Object center). Políčka Starting Azimuth a Starting Elevation určují počátek, od kterého budou vynášeny klonované objekty.
Podobně jako u klonování v rovině máme i zde možnost vynášet buď v pravidelným intervalech zadáním počtu opakování a rozestupu (Create Az/El) nebo vynášet klonované objekty na přesné pozice (Use Lists). Pokud se rozhodnete pro Use Lists, pamatujte, že zde zadáváte stupně.
Poloměr koule (Starting Radius) se uplatní pokud pracujete s možností Create Radii. Defaultní hodnoty Number of Radii 1 a Radius Delta určují kolik objektů se má každé pozici vynést. Položka Radius delta značí rozestup mezi těmito objekty. Pokud použijete volbu Use Radii List, musíte zadat jednotlivé poloměry, podobně jako u Number of Radii větší než 1 neklonujete tedy na jedné kouli, ale na několika soustředných.
Pokud chcete objekty orientovat vůči ose koule, zatrhněte volbu Rotate Azimuth. Orientaci objektů vůči vůči rovině xy zajistí zaškrtnutí možnosti Rotate Elevation. Jestliže zatrhnete obě volby, budou všechny ukazovat do středu koule.
V dialogu Build Pattern nám zbývá poslední záložka, Cylindrical. Jak název napovídá, zde se klonují objekty na válcové ploše.
V dialogu na obrázku určitě poznáváte staré známé, čili stručně pohovoříme pouze o novinkách. Base Center je střed spodní podstavy válce. Starting Height určuje první úroveň, na níž budou klonované objekty vynášeny. Height direction určuje osu válce a tento vektor musí být kolmý na vektor Starting Azimuth Direction. Poloměr válce udává už známé, leč trochu zastrčené políčko Starting Radius. Zaškrtávací políčko Rotate použijete, pokud budete chtít klonované objekty automaticky otáčet vzhledem k ose válce. Rozmístění klonovaných těles určují tři oddělení: Create Az, Create Heights a Create Radii. Ve všech máte možnost buď rozmisťovat pravidelně zadáním počtu opakování a rozestupem (Number of, Delta), nebo pomocí daných hodnot (Use lists).
Dnešní díl byl nadmíru nudný a také jsem se ním dlouho mořil, ale byl nutný k utřídění chaotických sdělení z minulého dílu. Příště se podíváme detailněji na editaci těles, projdeme zbylá základní tělesa a budeme renderovat.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Diskuse byla administrátory uzamčena
25.1.2012 22:24