Vidlák

Všem, kterým není Dan Zejda alias Vidlák lhostejný, doporučuji toto krátké zamyšlení:

Download this MP3 – (Right Click)

2012

Vše dobré do Nového Roku, krátce se ohlédneme za zbytkem roku minulého:

  • Mělnické vinobraní – spousta legrace pro děti.
  • Příjemný pobyt na Lipně se dá strávit i v zimě.
  • Saša všem popřála k vánocům.
  • Anička začala jezdit na snowboardu – na Benecku.
  • Saša napsala pár dalších článků na aktualne.cz
  • A děti toho spoustu napovídaly:
    • František poučuje Aničku: “Genealogie je inspekce, která se chodí podívat domů, jestli je všechnno v pořádku.”
    • Anička o dědovi: “Dědu hrozně miluju. Je stejně roztomilej jako já.”
    • Anička a jazykolamy: “Strč prst skrz prd.”
    • “Aničko, co to maluješ?” “To je pro tebe úplně fuk.”
    • František rozumuje: “Matrika je opak adaptace.”
    • Anička a hudební výchova: “Já už taky umím houskový klíč.”
    • Anička už se nebojí: “Kdyby ke mně do pokojíčku přišel zloděj, tak ho přepereme jako bejci.”
    • “Františku, jaké znáš dětské nemoci?” “Spalničky, záškrt a sardinky.”
    • Anička si zpívá ve školce: “A já sám, vždycky sám, svý koníčky pomiluju.”
    • Anička se chlubí: “Já jsem postavila tak hezkej hrad z kostek, že se mi zboural.”
    • Ukazuju na švadlenku: “Jak se jmenuje tohle povolání?” Anička: “Šitka”
    • Anička si stěžuje: “Špatně slyším, musím si provrtat ouško.”
    • Anička má rády svoje spolužáky: “Lukáška miluju jako svýho pejska.”
    • “Aničko, co by sis přála k vánocům?” “Nějaký dáreček.” “A jaký?” “Martina Bílka”
    • "Aničko, chceš psát na zádíčka?” “Ano, ale přikrej mě, ať mi není zima na tabuli.”
    • Dědeček na Aničku, ukazuje v tramvaji do okna: “Kdopak je to v okýnku?” Anička: “Odráží se tam moje tvář.”
    • Anička chce elektrický kartáček na zuby: “Dej mi kartáček, co vrtí.”
    • Anička dostala k vánocům myšku s velkýma ušima: “Jééé, to je krásnej slon.”
    • Anička odchází po spaníčku od babičky a chce, abych jí vzal kolo do ruky: “Babi, bohužel nemohu jet na kole, jsem moc unavená.”
    • Anička běží na záchod: “Kdyby se něco stalo, jsem vedle.”
    • Anička chce, abych vstal: “Postav se na zadní nohy.”
    • Anička si chce hrát: “Tatínku, já vím že jsi Alvar, ale teď jsi beruška.”
    • Anička po zkouknutí přírodopisného dokumentu, v kterém jsou sardinky požírány druhy vyššími v potravním řetězci, otevře ledničku, najde sardinky v plechovce a povídá: “Pojď, seželeme je.”

Zoo

Povedla se nám náramná projížďka po Vltavě, zlatý hřeb Český Krumlov. Ještě jsme stihli navštívit pražskou ZOO, než se definitivně zkazilo počasí. Letošní podzimní pánskou jsme strávili v Berchtesgadenu (příp. fotky od Muluse). A alkoholu už se dnes neubrání ani zvířata.

  • “Dobré ráno, lásko”, povídám Saše. Anička: “Láska už je zbuděná?”
  • “Já si vezmu starý boty”. “Ty jsi starej?”, ptá se Anička. “Ne, ty boty.” “Tak jsi novej?”
  • Anička na dědu: “Tati, mami, já jsem blbá, dědo!”
  • Anička na prohlídce stáje zklamaně: “Samý bejci, žádná kráva.”
  • Anička popisuje spoustu dospělých na hřišti: “Byli tam tatínek, maminka a všichni moji ostatní rodiče.”
  • František se ve škole pyšně přihlásil: “Jan Ámen Komenský”.
  • “Aničko, kdo Ti přinesl dárečky?” “Ježeček!”
  • “To metro muselo ale papat”, žasne Anička. “Jak to?” “No podívej jak je dlouhý.”
  • Anička je pyšná, že už je velká holka: “Miminka si cucaj prsty, dělaj nic a trucujou.”
  • “To mám ale strašidelnej hlad.”

Home! Sweet Home!

Ještě před návratem nás stihl navštívit děda Petr. Po přestěhování do Prahy se nám tak stýskalo po Rakousku, že jsme si první dovolenou udělali v Katschbergu. A pak se nám podařilo strávit rodinný víkend nedaleko Monínce.

Starší zprávy ze světa:

Šprochy:

  • “Aničko, nechoď do silnice nebo tě přejede auto!” “Neboj, já se sehnu.”
  • Aniččina zatím nejdelší německá věta: “Schau mal, ein Schmetterling und fliegt schnell”.
  • Anička vstala zase jednou v šest. “Aničko, pročpak nemůžeš ještě chvíli spinkat?” “Já nemám čas spinkat.”
  • “Maminko, máš ještě chřipku?”, ptá se Anička. “Už je pryč Aničko.” Anička sundá mamince kalhoty od pyžama, a podívá se mamince na zadeček: “Ano, už je pryč.”
  • Spoluobčan arabského původu má na autě napsáno “Ali Hrabi”. Anička se ptá: “Co je na tom autě napsáno?” “Ali”, odpoví zjednodušeně maminka. “Jééé, a je tam taky Bártič?”
  • Anička se dívá do podchodu: “Tady de zeměkoule dolů.”
  • “Aničko, pozor na toho pejska!” “Neboj, ten je roztomilej a ani moc nekouše.”
  • “Aničko, tu pohádku už jsi viděla stokrát.” “Co stokrát, tisíckrát”, trvá na svém Anička.
  • “Tatínku, naše mamínka je zpěvavá,” chválí maminku Anička.
  • Anička se nemůže dočka, až přijede dědeček: “Já už to na dědečka nemůžu vydržet!”
  • “Jestli si nevyčistíš zoubky, tak dědeček nepřijde!” “Tak přijede babička.”
  • Chlapeček na hřišti se chlubí Aničce: “Moje babička je bohatá, má v lahvích od okurek dva miliony.”
  • “Maminko, pojď si promítat”, žadoní Anička. “Aničko až večer, až bude tam”, vytáčí se maminka. “Ale v koupelně je tma už teď!”, kontruje Anička.
  • “Já jsem Aničko silnější než ty”, říkám Aničce. “Ale já jsem pevnější”, nedá se Anička.
  • “Jejda, venku prší”, povídám. “To bude mokrá celá Praha”, přidává se Anička.
  • “Aničko pojď, přečtu ti z téhle větší knížky, když už jsi velká holka.” “Ale my velký holky máme radi malý knížky.”
  • “Proč nemůžeme jít na hřiště?”, ptá se Anička. “Protože musíme vyložit jídlo z tašek do ledničky.” “Proč?” “Protože by se jinak zkazilo.” “Proč?” “Protože by tě z toho zkaženého jídla bolelo bříško.” “Proč?” “Protože lidi nemůžou papat zkažený jídlo.” “Proč?” “Protože lidi takhle prostě fungujou”, zařval jsem. “Aha, tak teď už tomu rozumím.”

Zoo

jako každý rok jsme i letos navštívili Quattro na Šumavě – fotky si můžete prohlédnout zde. Pro více rodin s dětmi je to ideální místo. Naposledy jsme ještě navštívili vídeňskou zoo – fotky zde.

Zajímavosti ze světa:

Pár šprochů:

  • “Takhle se gorily bijou do prsou”, ukazuju Aničce. “A kde sou prsa?”, ptá se Anička. “Tady”, ukazuju ji. “Tak to už sem velká, když nosím prsa.”
  • Anička si občas na procházce s maminkou zaleze do telefonní budky a volá tatínkovi. Takto vypadá běžný záznam hovoru: “Tati, co žíkáš? To si děláš leglaci, to snad ne, tak já zavěsím. Tak pa, už musím končit.”
  • Ptám se uražené Aničky: “Aničko, ty s tátou nemluvíš?” Anička odsekne: “Já nemám ráda mluvení.”
  • Anička se mě ptá: “Tatínku, můžu ven s maminkou?” “Už je pozdě kočičko”, povídám. Anička běží za maminkou: “Tatínek říkal že ano, ale neříkej mu to.”
  • “Aničko, nenamoč se!” “Neboj, já se nenačumičím.”
  • “Aničko, kde je měsíček? Vidíš ho?”, ptám se. Anička ukazuje na noční oblohu: “Ano, tamhle na stropě.”
  • Anička se rozčiluje, že se jí smějeme: “Ticho! To není žádná smícha!”
  • Ptám se Aničky před usnutím: “Mám ti přinést kakao nebo už nemám chodit?” “Kakao ať přijde, ale ty už tady nemáš co chodit, tady spinkám já!”
  • Anička už se nemůže narvat do malých bot: “Mám malý boty. Moc jsem papala a mám tlustý nožičky.”
  • Saša popisuje Františkovi jistý kus rakouské historie, oba s Aničkou bedlivě poslouchají. Až se dostane k větě “… a pak bylo Rakousko pěkně v prdeli.” Anička okamžitě: “Ááá, tomu rozumím.”
  • Maminka kárá Aničku: “Aničko, mladá dáma se na prdelce neškrábe.” “Ale tam jsou blešky, proto se tam škrabu. Tatínek už to chápe, ale ty to ještě nechápeš.”
  • Anička ukořistila na poště pohlednici plnou srdíček, přitiskla se mamince k noze a povídá: “Mamiii, to je romantika.”
  • Anička si všimla, že má maminka ve vlasech její gumičku: “Maminko, ty máš moji gumičku. Můžeš mi to nějak vysvětlit?”
  • František referuje o filmovém festivalu ve Zlíně: “Při poslechu německy mluveného filmu mě trochu rušil tlumič.”
  • Další postřeh z filmového festivalu: “Pro děti ten film nebyl, ale pro dědu Slávka byl akorát.”

A Saša se ke konci našeho pobytu vyznává z toho, co Rakušákům závidí.

.NET Large Object Heap (LOH) – collection of links

I have written this post just to collect links to interesting articles with respect to using large objects in your .NET application. It should help not only me to quickly revive information needed to analyze any issues concerning using large objects in a .NET application.

I have sorted the links by post time, and always extracted a few interesting points highlighting anything connected to large object heap.

Yun Jin’s WebLog – OutOfMemoryException and Pinning

  • January 2004
  • just a basic information about pinning with respect to OutOfMemoryException

Maoni’s WebLog – Using GC Efficiently

  • June 2004, Maoni Stephens
  • A good practice with large objects is to allocate one and keep reusing it so you don’t incur more full GCs
  • Many very temporary large objects is a very bad idea ‘cause you’ll be doing full collections all the time

Maoni’s WebLog – Large Object Heap

  • April 2006, Maoni Stephens
  • Explicitly setting a reference to null could prevent the LOH from growing faster than the collection rate
  • Maoni believes the GC does a good job controlling fragmentation

Maoni’s WebLog – Fundamentals of Memory

  • September 2006, Maoni Stephens
  • just a basic information about memory, a good preposition for reading other articles

CodeProjectt – Trouble with the Large Object Heap

  • October 2006, Keith Vinson
  • LOH is never compacted for performance reasons
  • If you create and destroy lots of very large objects, your LOH might become fragmented
  • Once the LOH fragments, there is no way back from the edge, you must simply jump off. In other words, restart your process.
  • Microsoft introduced a new class in the 2.0 framework, MemoryFailPoint, which can be used to test if a memory allocation can succeed or not. Throwing an InsufficientMemoryException if an allocation of the requested size would result in an OutOfMemoryException.

MSDN Magazine – Investigating Memory Issues

  • November 2006, Claudio Caldato and Maoni Stephens
  • The !eeheap –gc SOS command will show you where each garbage collection segment starts. You can correlate this with the output of !address to determine if the virtual memory is fragmented by the managed heap

MSDN Magazine – Identify And Prevent Memory Leaks In Managed Code

  • January 2007, James Kovacs
  • The basic strategy is to determine how to reduce the application’s reliance on temporary large objects, which are causing the gaps in the large object heap
  • If the fragmentation is due to re-allocating buffers, maintain a fixed set of buffers that are reused

MSDN Magazine – Large Object Heap Uncovered

  • June 2008, Maoni Stephens
  • LOH and Heap
    • Large objects are collected only when there is a generation 2 collection (also known as a full garbage collection)
    • If an object is greater than or equal to 85,000 bytes (there’s also some objects that are less than 85,000 bytes that are allocated on the LOH by the runtime itself but usually they are very small) it’s considered a large object. This number was determined as a result of performance tuning. When an object allocation request comes in and meets that size threshold, it will be allocated on the LOH.
    • For LOH, because compaction is expensive the CLR team chose to sweep them, making a free list out of dead objects that can be reused later to satisfy large object allocation requests. Adjacent dead objects are made into one free object.
    • An important thing to keep in mind is that even though today we don’t compact LOH, we might in the future. So if you allocate large objects and want to make sure they don’t move, you should still pin them.
    • If I don’t have enough free space to accommodate the large object allocation requests, I will first attempt to acquire more segments from the OS. If that fails, then I will trigger a generation 2 garbage collection in hope of freeing up some space.
  • When a Large Object Gets Collected
    • A garbage collection occurs if one of the following conditions happens
      • Allocation Exceeds the Large Object Threshold (this is the most typical case). Threshold is a property of each generation and is dynamically tuned as the program runs.
      • When someone calls GC.Collect on generation 2 (by passing either no arguments to GC.Collect or passing GC.MaxGeneration as an argument), the LOH will get collected right away along with the rest of the managed heap.
      • System Is in Low Memory Situation and I think doing a generation 2 GC will be productive
  • LOH Performance Implications
    • The allocation cost of a large object is completely dominated by memory clearing
    • If it takes two cycles to clear 1 byte, it means it takes 170,000 cycles to clear the smallest large object.
    • It’s not uncommon for people to allocate large objects that are a bit too large. For a 16MB object on a 2GHz machine, it will take approximately 16ms to clear the memory. That’s a rather large cost.
    • LOH and generation 2 are collected together: If either one’s threshold is exceeded, a generation 2 collection will be triggered. If a generation 2 was triggered because of the LOH, generation 2 itself won’t necessarily get much smaller after the garbage collection. if generation 2 is big, it could cause performance problems if many generation 2 garbage collections are triggered.
    • If many large objects are allocated on a very temporary basis and you have a big SOH, you could be spending too much time running garbage collections.
    • It’s best if you can allocate a pool of large objects and reuse them instead of allocating temporary ones.
  • Collecting Performance Data for the LOH
    • Performance counters that are relevant to the LOH are the number of generation 2 collections and the large object heap size
    • The number of generation 2 collections displays the number of times generation 2 garbage collections have occurred since the process started. The counter is incremented at the end of a generation 2 garbage collection (also called a full garbage collection). This counter displays the last observed value.
    • Large object heap size is the current size in bytes, including the free space, of the Large Object Heap. This counter is updated at the end of a garbage collection, not at each allocation.

EpiWiki – Fragmented large object heap

  • 2008, Mattias Lövström
  • short summary of analyzing out of memory exception due to LOH fragmentation
  • excerpt from Large Object Heap Uncovered

Maoni’s WebLog – So, what’s new in the CLR 4.0 GC?

  • November 2008, Maoni Stephens
  • For server applications, I would recommend you to look at the full GC notification feature we added in .NET 3.5 SP1: Basically you register to get notified when a full GC is approaching and when it’s finished. This allows you to do software load balancing between different server instances – when a full GC is about to happen in one of the server instances, you can redirect new requests to other instances

Simple Talk – The Dangers of the Large Object Heap

  • March 2009, Andrew Hunter (Software Engineer at Red Gate who is responsible for much of the recent rewrite of ANTS Performance Profiler and ANTS Memory Profiler)
  • Depending on the design of the code, a simpler approach might simply be to make the “temporary” but large structures more permanent.
  • If a program needs to deal with a set of large files, it will make more efficient use of memory if it allocates enough space to deal with the largest one first, and then re-uses that for every file instead of allocating just enough for each and then throwing the memory away later.
  • Many of the classes in System.Collections have a ‘Capacity’ property to facilitate this design pattern, and thread local static variables can be used (with care) to help share a large data structure in multithreaded applications.
  • The effect of fragmented LOH is similar to a memory leak, but one where we get no clue as to the cause by measuring the size of the objects in memory: a memory profiler will tell you that there’s no problem, while task manager tells you that the program’s memory usage is growing ever larger – which could be due to this issue or which could be due to the behavior of unmanaged code.

Mohammad Jalloul’s Blog – The Large Object Heap

  • February 2010
  • The correct threshold for considering an object in the LOH is 84,988 bytes
  • Use WinDbg commands of SOS extension directly in Intermediate Window of Visual Studio.

StackOverflow – LOH Defragmentation

  • June 2010
  • Also due to a somewhat esoteric optimization, any double[] of 1000 or more elements is also allocated on the LOH.
  • Microsoft says: “It’s not a bug – we do this for performance reasons because doubles are accessed faster when they are aligned on a 8-byte boundary which large objects are”
  • Tthere’s no benefit to applying this heuristic on 64-bit architectures because doubles are already aligned on an 8-byte boundary – some more info can be found here

Bjorns Weblog – Efficient buffering with BufferManager

  • January 2011, Bjørn Bouet Smith
  • Preallocate large byte arrays and reference those from where you need them, and simply reuse them as needed.
  • This will prevent a lof of arrays being created and prevent the fragmentation.
  • An easier solution is to use the BufferManager class that was introduced with WCF.

StackOverflow – Heap segment sizes

  • April 2011

Microsoft Connect – Large Object Heap fragmentation causes OutOfmemoryException

  • April 2011
  • An alleged fix of LOH Defragmentation in .NET 4 + discussion

MSDN CLR Forum – Fatal Flaw in the Large Object Heap?

  • double[1001] array gets put on the LOH
  • another request for GC.CompactLargeObjectHeap()

Ants Memory Profiler – Finding and fixing large object heap fragmentation

Ants Memory Profiler – Checking for large object heap fragmentation

  • Split arrays into smaller units so that they remain below 85kB
  • Alternatively, you can allocate the largest and longest-living objects first (if your objects are files which are queued for processing, for example)

Conclusion

  • Pre-allocate your large arrays
  • Use polling for your large arrays
  • Use lined list instead of array if possible

Stěhování

Tak 1.7. se vracíme do Česka. Zbývají tedy poslední dva měsíce na návštěvy, tak neváhejte!

O Františkových prázdninách jsem se podívali do Kaprunu, počasí ani sníh nemělo chybu. O velikonocích jsme zajeli na pomlázku do Hudlic. Pak jsme navštívili koncert slavné umělkyně Aleny Hönigové a nakonec jsme si zajeli do Nízkých Tater na “Pánskou”.

Několik zajímavostí ze světa:

  • Slavný rakouský boxer Hans Orsolics po ukončení kariéry prohlásil: “Nyní mám nejnebezpečnější povolání na světě – jsem v penzi. To ještě nikdo nepřežil.”
  • Kdo se nemůže rozhodnout, jaký světový jazyk se naučit, český lyžařský maratonec Standa Řezáč má odpověď: čechoangloněmčinu.
  • Naprosto fantastický koncept výuky budoucnosti – KhanAcademy
  • I dům může připomínat Hitlera
  • Francie si tu internetovou bezpečnost představuje jak Hurvínek válku
  • Ústavní soud ČR zakázal ukládání telefonních hovorů – vzhůru do minulosti a ven z Evropy
  • Agresivita českých internetových diskutérů se přiostřuje – potvrzuji z vlastní zkušenosti (viz komentáře Sašiných blogů)
  • Konečně bezpečnostní video, u kterého neusnete
  • Toto video ocení zvláště ženy, které mají problémy s převlékáním
  • Vědcům se konečně podařilo dekódovat zvířecí řeč
  • Kdyby se snad našel někdo, kdo našeho kleptomana ještě neviděl v akci
  • Geert Chatrou – mistr světa v pískání (Montyho čardáš)

Poslední Sašiny příspěvky:

Pár rodinných šprochů:

  • Anička jede na odrážedle: “Já si jedu jako pán”
  • Anička si zpívá: “Pojedem metlem, za dědou Petlem”
  • Vyšli jsme z tmavého podchodu na světlo a Anička: “Jééé, tady pokračuje den”
  • Anička dotelefonovala s dědou: “Jééé, to byl ale hezkej děda”
  • “Aničko, proč tak křičíš?”, ptám se. “Protože je jaro!”
  • Anička drží marcipánového králíčka: “Je ten králíček papací?”
  • Anička: “Zavří dveře, ať sem nejde žádný vzduch.”
  • Anička: “Tady máš dobrotu, nech si ji užít!”
  • Anička: “Budem dovádět? Ano? Tak dovaď.”
  • František: “V noci jsem si nějak převálel ruku.”

Nízké Tatry 2011 – Follow up


Avatar

  • graphical representation of the user or the user’s alter ego or character nebo
  • deliberate descent of a deity (bozstvo) from heaven to earth, or a descent of the Supreme Being and is mostly translated into English as "incarnation", but more accurately as "appearance" or "manifestation"

CONCLUSION: Jak videt, Avatar je pojem velmi siroky


Jogging iphone app

– je to ho fakt dost, nejlepe zadat do googlu "iphone app metronome music"

CONCLUSION: No chance


Mozek bez kysliku:

CONCLUSION: Hodinu tezko, Anezko.


Clinical death

– is the medical term for cessation of blood circulation and breathing, the two necessary criteria to sustain life

CONCLUSION: Pote co se zastavi srdce mozek stale funguje, ale dostava se mu mene a mene kysliku. Behem teto doby dochazi k trvalym skodam na mozku az k uplne smrti – pote co mozek prestane fungovat. Toto mezidobi se nazyva klinicka smrt a clovek se z ni muze samozrejme dostat – napr. masazi srdce.


Sebevrazda

  • It is a leading cause of death among teenagers and adults under 35
  • 13 lidi na 100 000 ve veku od 20-24 let spacha sebevrazdu
  • 14,7 lidi na 100 000 ve veku nad 65 let spacha sebevrazdu

CONCLUSION: Starsi lidi maj o trochu vetsi deprese nez mlady. Stredni vek je v poho.


Raul

  • je v Nemecku stastny
  • dve vety za vsechny: Personally, the move to Germany has made me and my family very happy. I still do not know the name of the city where we live, but it has lots of dark Gothic buildings.

CONCLUSION: Raul is happy in Schalke.


Odpad na obezne draze

  • castice s prumerem 1 cm se pohybuje po obezne draze Zeme rychlosti az 10km/s a ma silu srovnatelnou s rucnim granatem
  • velkym nebezpecim jsou retezove reakce – castice z prave roztristene druzice sebou mohou vzit dalsi atd.

CONCLUSION: Je treba zakony prinutit zeme, aby neco delaly s odpadem na obezne draze Zeme.


The Wall:

Slova vsech pisni

CONCLUSION: Prosim HC tym, at se slova do pristi panske nauci Z PAMETI jako to umim JA.


Kralova Lehota – Liptovsky Mikulas:

Soje pristi pondeli:

  • 17:00: trva 30 min
  • 17:18: trva 18 min

CONCLUSION: Najit spoj z Lehoty do Mikulase trvajici 90 min je dost tezky.


Fotky naleznete zde.

Leo

Nejprve bych rád poděkoval Muprhovi za nafocení Aničky. Dále několik zážitků z poslední doby:

  • Anička na mě volá: “Přines mi papír.” “Proč?”, ptám se. “Chci si utřít zadek a prdelku.”
  • Chtěl jsem najet na německo-anglický slovník leo.org. Bohužel mě prohlížeč zradil právě ve chvíli, kdy se mi u monitoru ocitla jak Saša tak děti, a já se ocitl na, řekněme “reklamou nabité”, leo.cz (dejte pozor, ať se v okamžiku kliknutí ve vaší blízkosti nenachází osoba, u níž si nechcete zkazit svoji pověst slušňáka)
  • Anička si odhrnula šatičky na bříšku a kouká na tričko, které má pod šatičkama: “Kde mám tělíčko?”
  • František dostal po dlouhé době jedničku z angličtiny a vysvětluje mamince: “No víš, Alvar mi dost vyhrožoval … ale víš že ono to fakt zabírá?”
  • Na čtyřech jsem předstíral pejska a Anička na mě: “Ty můj čuňáčku!” (do teď si nejsem zcela jist, odkud to má a co tím myslela)

Dále několik zpráv ze světa, u kterých mi to nedalo je nenasdílet:

A na závěr to nejnovější z pera blogerky:

Saša aktuálně

Tak tentokrát žádné fotky, nýbrž text. Saša se poslední dobou nějak rozepsala, takže kdo má zájem si přečíst, co se jí honí hlavou, má možnost:

←Older