Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Manifest miniaturního PHP

V předchozích dnech vzbudil v PHP komunitě pozornost a vlnu diskusí text Eda Finklera „The MicroPHP Manifesto“. Autor v něm upozorňuje, že ne každému a ne na všechno se vždy a univerzálně hodí velké frameworky, jako jsou Symfony nebo Zend. A je při tom radikální, jak už manifesty bývají…

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Tento text vyšel na blogu Funkatron, jehož autorem je Ed Finkler. Český překlad zveřejňujeme s laskavým autorovým souhlasem.

Tradovaný příběh o vzniku punku je, že šlo o reakci na výstřelky tehdejšího rocku, především tzv. „progresivní“ větve. Reálné události byly nepochybně o něco komplikovanější, ale mám podezření, že na tom bude něco pravdy. Rokenrol začal být, zásluhou velkých jmen konce 60. a 70. let, nepřístupný pro průměrného posluchače. Kontrast třeba mezi skupinami Rush na straně jedné a Black Flag na straně druhé, ačkoli obě hrály „rock“, byl propastný.

Schválně, podívejte se na bicí soupravu Neila Pearta, bubeníka Rush:

A tohle jsou Black Flag na koncertu v Los Angeles v roce 1979:

Celí Black Flag by se vešli do prostoru, který zabírá bicí souprava Neila Pearta. A přesto hráli skvělej nářez, ze kterýho jste si sedli na prdel.

V posledních letech jako by se duch PHP pohyboval směrem k Neilu Peartovi. Spousta práce spousty chytrých lidí stvořila komplexní řešení. Spousta souborů, spousta vnořených adresářů a spousta pravidel. Často vídám PHP knihovny nebo komponenty, co vypadají nějak takto:

<?php
chdir(dirname(__DIR__));
require_once (getenv('ZF2_PATH') ?: 'vendor/ZendFramework/library') . '/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array('Zend\Loader\StandardAutoloader' => array()));

$appConfig = include 'config/application.config.php';

$listenerOptions = new Zend\Module\Listener\ListenerOptions($appConfig['module_listener_options']);
$defaultListeners = new Zend\Module\Listener\DefaultListenerAggregate($listenerOptions);
$defaultListeners->getConfigListener()->addConfigGlobPath('config/autoload/*.config.php');

$moduleManager = new Zend\Module\Manager($appConfig['modules']);
$moduleManager->events()->attachAggregate($defaultListeners);
$moduleManager->loadModules();

// Create application, bootstrap, and run
$bootstrap = new Zend\Mvc\Bootstrap($defaultListeners->getConfigListener()->getMergedConfig());
$application = new Zend\Mvc\Application;
$bootstrap->bootstrap($application);
$application->run()->send();

Všechno tohle jen kvůli spuštění aplikace.

Neznamená to, že tenhle přístup je špatný per se. Ale když to vidím, zažívám vnitřní odmítavou reakci. Můj mozek křičí:

TOHLE.
KURVA.
ANI.
OMYLEM.

Nemůžu takhle psát. Nechci tak psát. A nemyslím si, že je nezbytně nutné psát právě takhle, abych mohl dělat skvělé věci a tvořit úžasné programy.

Postup, o kterém píšu, je začít s co nejmenším základem, nejlépe v podobě „mikroframeworku“. Pár jich pro PHP existuje – Slim, Epiphany, Breeze, Limonade a další. Když pak potřebuju další funkce, stáhnu si lehkou knihovnu, která mi pomůže vyřešit přesně ten úkol, co potřebuju řešit. Přehlednost a stručnost jsou pro mne nejdůležitější kritéria.

Dalším důležitým kritériem je fakt, že pokaždé, když použiju kód, který jsem nenapsal, beru na sebe závazek. Většinou nemám čas provádět audit celého kódu knihovny, takže její použití je spojené s určitou důvěrou. A každá další závislost znamená věřit víc. Nejen v to, že v knihovně nejsou chyby, ale taky v to, že pokud nějaké jsou, že budou opravené. Dozvím se o tom z mailing listu? Jak dlouho budou bugfixy zpětně kompatibilní? Budu muset upgradovat všechny své knihovny, když povýším verzi PHP? A tohle všechno za předpokladu, že autor bude mít stále čas a motivaci tyto problémy řešit. Pokud nebude, tak jsem právě do svého kódu zanesl technologický dluh.

Najít malou lehkou knihovnu, která nepotřebuje spoustu dalšího kódu, je těžší, než by se zdálo. Myslím si, že se vývojáři v PHP zajímají mnohem víc o vývoj frameworků a věcí pro ně. Je pravda, že některé zavedené frameworky udělaly velký krok k tomu, aby nebyly tak monolitické, a mnoho vývojářů na Twitteru mi doporučovalo jako řešení třeba komponenty ze Symfony. Bohužel to vypadá, že moje definice „lehkého“ není shodná s jejich.

Podívejte se na výstup cloc pro komponentu HTTP Kernel ze Symfony 2:

Mon Dec 26 19:42:23 EST 2011
coj@PsychoMantis ~/Sites > cloc HttpKernel
      94 text files.
      93 unique files.
      12 files ignored.

http://cloc.sourceforge.net v 1.53  T=0.5 s (164.0 files/s, 18736.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
PHP                             72           1175           3440           4290
Bourne Shell                    10             56            155            252
-------------------------------------------------------------------------------
SUM:                            82           1231           3595           4542
-------------------------------------------------------------------------------

Teď totéž pro celý framework Slim:

Mon Dec 26 19:42:27 EST 2011
coj@PsychoMantis ~/Sites > cloc Slim
      54 text files.
      51 unique files.
      13 files ignored.

http://cloc.sourceforge.net v 1.53  T=0.5 s (82.0 files/s, 17752.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
PHP                             31            660           4473           3280
Bourne Shell                    10             56            155            252
-------------------------------------------------------------------------------
SUM:                            41            716           4628           3532
-------------------------------------------------------------------------------

a nakonec pro framework Epiphany

Mon Dec 26 19:42:30 EST 2011
coj@PsychoMantis ~/Sites > cloc Epiphany
      83 text files.
      70 unique files.
      31 files ignored.

http://cloc.sourceforge.net v 1.53  T=0.5 s (102.0 files/s, 5246.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
PHP                             40            218            309           1632
Bourne Shell                    10             56            155            252
HTML                             1              0              0              1
-------------------------------------------------------------------------------
SUM:                            51            274            464           1885
-------------------------------------------------------------------------------

Když je víc souborů a řádků kódu v jedné komponentě než v celém frameworku, co používám, tak ji opravdu nemohu nazvat „lehkou“.

Neznamená to, že ten kód je špatný, že je bezcenný nebo že snad tenhle přístup je obecně zlý. Je špatný pro mne. A myslím si, že nejsem sám.

Nechci být programátorská rocková superstar, co tvoří pompézní rockovou operu. Chci zmáčknout pár prostých akordů v punkové skupině, co zahraje v rockovém klubu bez šatny a bude to takový nářez, že vylezete ven a půjdete si založit vlastní kapelu. Takový chci být kodér.

Nechci být Neil Peart. Chci být Gregg Ginn.

Tak jsem napsal tohle. „MikroPHP manifest“, jestli chcete. Chci se jím řídit při vývoji v PHP. Možná se s ním ztotožníte.

Jsem vývojář v PHP

  • Nejsem vývojář v Zend Frameworku, Symphony nebo CakePHP
  • Myslím, že samotné PHP je komplikované dost

Rád dělám malé věci

  • Rád tvořím malé věci s prostými cíli
  • Rád dělám věci, co řeší problémy
  • Rád dělám malé věci, co spolupracují na řešení větších problémů

Chci psát co nejmíň

TIB2012

       
  • Chci psát co nejmíň kódu
  • Chci udržovat co nejmíň kódu
  • Chci dělat podporu co nejmenšímu kódu
  • Potřebuju si být jistý každým kusem kódu, co do svého projektu dám

Mám rád jednoduchý, čitelný kód

  • Chci psát kód, kterému snadno porozumíte
  • Chci psát kód, který je snadno testovatelný

PS: Začal jsem sbírat odkazy na malé PHP knihovny a frameworky. Jestli nějaké znáte, dejte mi vědět.

Redakční poznámka: Text je na první pohled radikální, jako většina manifestů a provolání. Když se začíná vývoj příliš vychylovat jedním směrem, přicházejí extrémní a záměrně zjednodušující provolání, která vzbuzují diskusi. A právě v diskusi je možné dobrat se podstaty problému. Na první přečtení si většina vývojářů pomyslí: Ten člověk se zbláznil, vždyť on volá proti všemu, co je v posledních letech bráno jako „vývojářský standard“ – používání knihoven, standardizovaných frameworků apod. Vždyť to je návrat do dob, kdy si každý vývojář znovuvynalézal kolo a bastlil kód, jak se mu to hodilo… Velké projekty přeci nelze takhle stavět, udržovat…

Jenže tak to není. Skutečné jádro Edova sdělení je někde jinde. Dalo by se shrnout do klasického rčení: „Použijte odpovídající nástroj“. Když chcete, jako Ed, psát „malé a chytré aplikace“, tak se přece nemusíte stydět za to, že nepoužijete velký framework, co je právě „v kursu“. A pokud při vývoji uděláte nějakou šikovnou mikroknihovnu pro řešení jednoho konkrétního problému, nestyďte se ji zveřejnit. Není přece ostuda, že jste nepoužili velký framework, když ho nepotřebujete!

K tématu: diskuse na Hacker News, diskuse na Reddit, polemika Anthonyho Ferrary.

Martin Malý

Martin Maly

Začal programovat v roce 1984 s progra­movatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď je rád, že neprogramuje…

Školení Google+ pro firmy

DW - Školení PPC
  • Jak využít Google+ pro firemní komunikaci a marketing.
  • Čím se liší Google+ od Twitteru a Facebooku z pohledu firemního využití.
  • Jak využít Google+ v souladu s pravidly užívání.
  • Založení Google+ Page (Stránky) krok po kroku, včetně praktických tipů.

Detailní informace o školení Google+ »

Přehled názorů

jednoduche reseni: prestante pouzivat PHP
belzebub 6. 1. 00:48
Nový
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Diskobolos 6. 1. 01:32
Nový
│
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Smokie 6. 1. 06:01
Nový
│
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
DiskoKoulos 8. 1. 15:11
Nový
│
├ 
Re: jednoduche reseni: prestante pouzivat PHP
makaron 6. 1. 09:55
Nový
│
│
├ 
Re: jednoduche reseni: prestante pouzivat PHP
DiskoKoulos 8. 1. 15:10
Nový
│
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Vojtěch Semecký 8. 1. 16:48
Nový
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
miri 6. 1. 10:25
Nový
│
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Diskobolos 6. 1. 16:40
Nový
│
 
 
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Pepa 6. 1. 23:56
Nový
│
 
 
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Diskobolos 7. 1. 08:47
Nový
│
 
 
│
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Pepa 7. 1. 14:39
Nový
│
 
 
│
 
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Diskobolos 10. 1. 18:00
Nový
│
 
 
│
 
 
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Pepa 10. 1. 19:49
Nový
│
 
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
miri 8. 1. 15:06
Nový
├ 
Re: jednoduche reseni: prestante pouzivat PHP
kverulant 6. 1. 10:06
Nový
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Leoš 6. 1. 10:40
Nový
│
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Jaroslav Martinec 6. 1. 10:44
Nový
│
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Jaro 6. 1. 12:32
Nový
│
│
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
mikiqex 8. 1. 22:09
Nový
│
│
 
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Vojtěch Semecký 9. 1. 22:53
Nový
│
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Ivan 6. 1. 11:03
Nový
│
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Jencek 10. 1. 15:25
Nový
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Pepa 10. 1. 09:59
Nový
│
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Oldisy3 12. 1. 10:59
Nový
├ 
Re: jednoduche reseni: prestante pouzivat PHP
Oldisy3 6. 1. 16:49
Nový
│
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Milan Stoklasa 6. 1. 16:55
Nový
│
 
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Oldisy3 6. 1. 17:03
Nový
├ 
Re: jednoduche reseni: prestante pouzivat PHP
... 11. 1. 10:32
Nový
└ 
Re: jednoduche reseni: prestante pouzivat PHP
Clary 16. 1. 13:42
Nový
10. hodina
Pingy 6. 1. 01:03
Nový
└ 
Re: 10. hodina
Mard 8. 1. 03:12
Nový
TOHLE. KURVA. ANI. OMYLEM.
David Grudl 6. 1. 03:12
Nový
├ 
Re: TOHLE. KURVA. ANI. OMYLEM.
koja 6. 1. 09:00
Nový
│
└ 
Re: TOHLE. KURVA. ANI. OMYLEM.
Paladin 6. 1. 10:15
Nový
└ 
Re: TOHLE. KURVA. ANI. OMYLEM.
Pavel Šimerda 6. 1. 21:47
Nový
 
└ 
Re: TOHLE. KURVA. ANI. OMYLEM.
miri 8. 1. 11:18
Nový
Re: Manifest miniaturního PHP
. 6. 1. 03:21
Nový
Výkřik do tmy
Alt+F4 6. 1. 06:42
Nový
├ 
Re: Výkřik do tmy
Diskobolos 6. 1. 07:21
Nový
│
├ 
Re: Výkřik do tmy
Milan Stoklasa 6. 1. 10:46
Nový
│
│
└ 
Re: Výkřik do tmy
Diskobolos 6. 1. 11:10
Nový
│
│
 
├ 
Re: Výkřik do tmy
Milan Stoklasa 6. 1. 12:05
Nový
│
│
 
└ 
Re: Výkřik do tmy
Smokie 8. 1. 11:55
Nový
│
│
 
 
└ 
Re: Výkřik do tmy
Jiří Petruželka (Nox) 8. 1. 13:33
Nový
│
│
 
 
 
├ 
Re: Výkřik do tmy
Pepa 8. 1. 14:13
Nový
│
│
 
 
 
│
└ 
Re: Výkřik do tmy
Jiří Petruželka (Nox) 8. 1. 14:51
Nový
│
│
 
 
 
│
 
└ 
Re: Výkřik do tmy
Pepa 8. 1. 15:21
Nový
│
│
 
 
 
├ 
Re: Výkřik do tmy
Smokie 8. 1. 15:49
Nový
│
│
 
 
 
│
├ 
Re: Výkřik do tmy
Jiří Petruželka (Nox) 8. 1. 19:39
Nový
│
│
 
 
 
│
│
└ 
Re: Výkřik do tmy
Smokie 8. 1. 20:21
Nový
│
│
 
 
 
│
│
 
└ 
Re: Výkřik do tmy
David Grudl 8. 1. 20:48
Nový
│
│
 
 
 
│
│
 
 
└ 
Re: Výkřik do tmy
Jiří Landsman 8. 1. 22:39
Nový
│
│
 
 
 
│
└ 
Re: Výkřik do tmy
Ani 12. 1. 22:08
Nový
│
│
 
 
 
│
 
└ 
Re: Výkřik do tmy
Smokie 24. 1. 17:49
Nový
│
│
 
 
 
└ 
Re: Výkřik do tmy
Smokie 9. 1. 11:02
Nový
│
│
 
 
 
 
└ 
Re: Výkřik do tmy
bazo 10. 1. 10:49
Nový
│
└ 
Re: Výkřik do tmy
Karel 7. 1. 01:59
Nový
│
 
└ 
Re: Výkřik do tmy
Diskobolos 7. 1. 08:40
Nový
│
 
 
└ 
Re: Výkřik do tmy
Inkvizitor 8. 1. 11:13
Nový
│
 
 
 
└ 
Re: Výkřik do tmy
Diskobolos 8. 1. 11:24
Nový
│
 
 
 
 
└ 
Re: Výkřik do tmy
Inkvizitor 8. 1. 21:48
Nový
└ 
Re: Výkřik do tmy
www.google.com/accounts…UwCod4kA 6. 1. 10:18
Nový
Názor toho pána
KapitánRUM 6. 1. 08:44
Nový
├ 
Re: Názor toho pána
stewe 6. 1. 13:55
Nový
└ 
Re: Názor toho pána
Pepa 8. 1. 10:12
Nový
 
└ 
Re: Názor toho pána
KapitánRUM 8. 1. 12:32
Nový
Cecko se také vyvyjí
Baldur 6. 1. 08:50
Nový
├ 
Re: Cecko se také vyvyjí
Čelo 6. 1. 09:45
Nový
│
└ 
Re: Cecko se také vyvyjí
. Paladin 6. 1. 10:23
Nový
│
 
└ 
Re: Cecko se také vyvyjí
MW 6. 1. 12:04
Nový
│
 
 
└ 
Re: Cecko se také vyvyjí
. Paladin 6. 1. 12:18
Nový
│
 
 
 
└ 
PHP vs. Java
Franta Kučera 6. 1. 13:07
Nový
│
 
 
 
 
└ 
Re: PHP vs. Java
srigi . 7. 1. 15:42
Nový
│
 
 
 
 
 
└ 
Re: PHP vs. Java
. Paladin 7. 1. 16:31
Nový
└ 
Re: Cecko se také vyvyjí
Ondřej Surý 11. 1. 13:41
Nový
Článek o ničem
Gekon 6. 1. 08:56
Nový
├ 
Re: Článek o ničem
Diskobolos 6. 1. 09:46
Nový
│
└ 
Re: Článek o ničem
Gekon 6. 1. 18:55
Nový
└ 
Re: Článek o ničem
Pepa 8. 1. 10:14
Nový
Re: Manifest miniaturního PHP
maryo 6. 1. 09:17
Nový
└ 
Re: Manifest miniaturního PHP
Diskobolos 6. 1. 09:36
Nový
 
├ 
Re: Manifest miniaturního PHP
wdolek 6. 1. 10:03
Nový
 
│
└ 
Re: Manifest miniaturního PHP
Diskobolos 6. 1. 10:44
Nový
 
└ 
Re: Manifest miniaturního PHP
maryo 6. 1. 13:27
Nový
Manifest x správná volba
Martin Hasoň 6. 1. 10:43
Nový
Co jsem si nenapsal sám, tomu nevěřím
Milan Stoklasa 6. 1. 10:54
Nový
├ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Martin Malý 6. 1. 11:34
Nový
│
├ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Franta Kučera 6. 1. 12:11
Nový
│
│
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Martin Malý 6. 1. 12:16
Nový
│
│
 
├ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Franta Kučera 6. 1. 13:18
Nový
│
│
 
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Yenn 6. 1. 19:44
Nový
│
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Milan Stoklasa 6. 1. 12:18
Nový
│
 
├ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Martin Malý 6. 1. 12:29
Nový
│
 
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Diskobolos 6. 1. 13:43
Nový
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
Miloslav Ponkrác 6. 1. 16:15
Nový
 
└ 
Re: Co jsem si nenapsal sám, tomu nevěřím
David Grudl 7. 1. 01:33
Nový
Bulvarizace PHP
Miloslav Ponkrác 6. 1. 16:07
Nový
├ 
Re: Bulvarizace PHP
Diskobolos 6. 1. 16:35
Nový
└ 
Re: Bulvarizace PHP
Martin Malý 6. 1. 19:00
Nový
 
└ 
Re: Bulvarizace PHP
Inkvizitor 8. 1. 11:18
Nový
 
 
└ 
Re: Bulvarizace PHP
Martin Malý 8. 1. 12:18
Nový
 
 
 
└ 
Re: Bulvarizace PHP
Franta Kučera 8. 1. 13:22
Nový
 
 
 
 
└ 
Re: Bulvarizace PHP
Čelo 10. 1. 18:11
Nový
miniframework
lenochware 6. 1. 16:15
Nový
└ 
Re: miniframework
maras 6. 1. 22:51
Nový
Originál
cleb 6. 1. 16:42
Nový
└ 
Re: Originál
OnGe 6. 1. 16:47
Nový
 
└ 
Re: Originál
cleb 6. 1. 16:49
Nový
 
 
└ 
Re: Originál
Milan Stoklasa 6. 1. 16:58
Nový
 
 
 
└ 
Re: Originál
Martin Malý 6. 1. 18:53
Nový
Co dodat
Oldisy3 6. 1. 17:01
Nový
├ 
Re: Co dodat
Diskobolos 6. 1. 17:14
Nový
└ 
Re: Co dodat
Balvan 9. 1. 14:00
Nový
 
└ 
Re: Co dodat
Astapov 10. 1. 07:20
Nový
Zadny framework = nejlepsi framework
RDA 6. 1. 17:25
Nový
├ 
Re: Zadny framework = nejlepsi framework
vidya 6. 1. 17:58
Nový
└ 
Re: Zadny framework = nejlepsi framework
Jiří Petruželka (Nox) 6. 1. 21:31
Nový
a co takhle se trochu rozhlídnout kolem sebe?
Pepa 6. 1. 23:58
Nový
└ 
Re: a co takhle se trochu rozhlídnout kolem sebe?
Inkvizitor 8. 1. 11:24
Nový
ja porad nerozumim tomu odeleni dat a zobrazeni
backup 7. 1. 02:04
Nový
└ 
Re: ja porad nerozumim tomu odeleni dat a zobrazeni
Jiří Petruželka (Nox) 7. 1. 08:44
Nový
 
└ 
Re: ja porad nerozumim tomu odeleni dat a zobrazeni
mauron85 7. 1. 22:09
Nový
 
 
└ 
Re: ja porad nerozumim tomu odeleni dat a zobrazeni
Jiří Petruželka (Nox) 7. 1. 23:26
Nový
PHP je framework
Kit 7. 1. 11:48
Nový
Není to jazykem
Tomáš Fejfar 8. 1. 00:34
Nový
├ 
Re: Není to jazykem
Milan Stoklasa 8. 1. 09:25
Nový
│
└ 
Re: Není to jazykem
DiskoKoulos 8. 1. 15:51
Nový
│
 
└ 
Re: Není to jazykem
Milan Stoklasa 8. 1. 16:34
Nový
│
 
 
├ 
Re: Není to jazykem
DiskoKoulos 8. 1. 16:58
Nový
│
 
 
└ 
Re: Není to jazykem
Palo 8. 1. 20:33
Nový
└ 
Re: Není to jazykem
Palo 8. 1. 14:50
Nový
Hmm, vo čem, že to je?
100% Lenin 8. 1. 19:46
Nový
Chlapec má pravdu
n0 9. 1. 23:46
Nový
Seriózní pohledy
Martin Hasoň 11. 1. 13:17
Nový
       
Zasílat nově přidané příspěvky e-mailem