Přejít k navigační liště

Zdroják » PHP » Manifest miniaturního PHP

Manifest miniaturního PHP

Články PHP, Různé

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í…

Nálepky:

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';
ZendLoaderAutoloaderFactory::factory(array('ZendLoaderStandardAutoloader' => array()));

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

$listenerOptions = new ZendModuleListenerListenerOptions($appConfig['module_listener_options']);
$defaultListeners = new ZendModuleListenerDefaultListenerAggregate($listenerOptions);
$defaultListeners->getConfigListener()->addConfigGlobPath('config/autoload/*.config.php');

$moduleManager = new ZendModuleManager($appConfig['modules']);
$moduleManager->events()->attachAggregate($defaultListeners);
$moduleManager->loadModules();

// Create application, bootstrap, and run
$bootstrap = new ZendMvcBootstrap($defaultListeners->getConfigListener()->getMergedConfig());
$application = new ZendMvcApplication;
$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íň

  • 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.

Komentáře

Subscribe
Upozornit na
guest
148 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
belzebub

PHP je jazyk vychazejici z Ccka – jediny duvod, proc se v nem pise je ze je relativne snadno zvladnutelny a vzhledem k „obecne znalosti Cckoidnich jazyku“ je pro mnoho lidi snadne se ho naucit. To dedictvi Ccka je pro nej, stejne jako pro jine jazyky z CCka vychazejici, prokleti. Ma proste velmi omezene vyjadrovaci schopnosti, jako vlastne kazdy imperativni jazyk. CCko je kapotovany assembler. PHP je vytuneny 2x kapotovany assembler, ale to nic nemeni na jeho omezenosti. Je to jazyk, ktery se tvari vysokourovnove, ale vysokourovnovy neni.

Je mi jasne ze se zde objevi miliony lidi rozcilujicich se ze jsem jim pohanel jejich oblibeny jazyk, ale faktem je ze „miniaturni PHP“ mozna bude znamka punku, ale urcite ne cesta „jak z toho ven“.

Vykaslete se na PHP. Naucte se nejaky moderni vysokourovnovy jazyk. A nezapomente mi napsat jak tomu „vubec nerozumim, protoze vsichni prece delaji v PHP“.

Diskobolos

:-D polopravda, pololež. Za tyhle flame výkřiky by se měl dávat ban.

Neučte se PHP, ani nějaký „moderni vysokourovnovy jazyk“. Naučte se DOBRÝ framework. To, v jakém jazyce bude, bude na druhém místě (na to přijdete záhy sami).

Když jsme u toho PHP, tak určitě Nette. Řeší bolístku onoho punkera a lze s ním řešit i jakékoliv jiné složitosti (doslova). Z PHP se pak musíte naučit pouze syntaxi a cca. 20 funkcí.

Smokie

A po Nette CodeIgniter, ktory je rychlejsi, prehladnejsi a jednoduchsi :)

DiskoKoulos

Navrhove vzory a testovani ti nic nerika, ze?

makaron

Nette… ? to je ted samo bolistkou…

DiskoKoulos

A to?

Vojtěch Semecký

To jako proč?

miri

Ne, naucte se byt programatorem: naucte se PHP, C#, je jedno co.

Zapomente se drtit fr jako je Nette! To vam je k nicemu, protoze az pujdete hledat novy job, tak nikoho Nette zajimat nebude. Co koho vzdy zajima je zvladnuti situace, navrhnuti reseni a vyreseni. To jesli to vyresis fci, Zend frameworkem na kterem konkretni projekt jede je preci uz jedno.

(Mimo jine: s autorem souhlasim :D, i kdyz nenapsal asi nic noveho. Posledni dobou tupe nasledovani jednoho Bozskeho, udajne vseresiciho fr (bohuzel je nejvice slyset komunita kolem Nette) je nesystemove a pro osobni vyvoj programatora z meho pohledu kratkozrake. Kdyz se jeste vratim k Nette – co budete delat az Grudla sejme autobus?).

Diskobolos

> Zapomente se drtit fr jako je Nette! To vam je k nicemu, protoze az pujdete hledat novy job, tak nikoho Nette zajimat nebude.

Opět blud, pádná odpověď na http://forum.nette.org/cs/f30-prace-a-zakazky

Diskobolos

Máš recht, každý chce do zahraničí a k tomu ty super Eura. Jak říkal Bolek – „Běž, bež a už se nevracaj!“ :-D

PS: příště buď objektivní a dej odkaz třeba i z Jobs.cz :-)
PS 2: chytrá „garážovka“ ví, kde je největší výskyt a tam poptává…

Pepa

Proč si vymýšlíš něco, co jsem neřekl? Trošku Ti kulhá logika, co?

A proč bych chodil do zahraničí? Můžu dělat „za eura“ (nebo radši za dolary) klidně z chalupy v Mníšku pod Brdy, stačí mít internet. Ovšem ne v Nette.

Já jen že ta tvoje „pádná odpověď“ je pádná jen v malým zasmrádlým rybníčku. Pokud chce někdo z nějaký důvodu pracovat výhradě tady, tak je asi Nette slušná volba. Ale proč se omezovat, když je momentálně převis poptávky po progamátorech v JavaScriptu, Pythonu a Ruby v Londýně, New Yorku i San Franciscu.

Diskobolos

Zpět na začátek – v klidu si přečti moje příspěvky. Já JEN říkám, že Nette je výborný framework, stejně jako ZendFW, ROR atd… Tvůj jediný (a omílaný) argument byl/je, že Nette není světové. To, že není rozšířené ve světě neznamená, že nemá svoje kvality. Jen jsem tomuto hloupému argumentu dělal protiváhu.

To, že se dá dělat pro zahraniční firmy z ČR (stejně jako to, že FW/vývojový jazyk volíme podle potřeby), všichni moc dobře víme. Hold, některé řeči se nevedou, protože jsou z povahy věci jasné a zbytečné. Téma je mikroframeworky, takže podle toho by se mělo přemýšlet…

Pepa

Proboha!!! Vymýšlíš si nesmysly a reaguješ na něco co jsem neřekl.

miri

Taky jeden link:

http://www.indeed.com/jobtrends?q=symfony%2C+cakephp%2C+codeigniter%2C+zend+framework%2C+nette&l=&relative=1

To ze si najdes jeden odkaz na subdomenu nette preci nic neznamena. Ja jsem psal predevsim o tom, aby programator byl hlavne programatorem. To ze se tu zacina diskuse ohledne micro-fr (a kazdemu je snad jasne, ze na maly projekt je dobry maly fr; nebo treba i zadny) a misto odkazu, nejakych zkusenosti s nimi tu najdu hned na zacatku zase „bolistku jmenem Nette“ me mirne zklamalo…

(To ze se tu rozjede zhava diskuse s odkazama na grudl.com, nette.org, nette.com, nette.vesmirni­lide.eu a vsemozne mnoukajici ruzky, me zas tolik neprekvapilo.)

Dik za: codeigniter

kverulant

Mě spíš celý ten manifest připadá jako návrat ke kořenům PHP. Prostě to je nástroj vytvořený pro psaní menších webových prezentací a ne obřích webových aplikací. A vývojáři, kteří ho chtějí používat tím starým stylem, jsou potom možná právem rozčarováni ze současného vývoje. Z tím jaký to je jazyk to vůbec nesouvisí.

mark8468464

Naucit se pracovat stylem ktery linkuji velke frameworky je PRACE A STUDIUM, ne kazdy to zvladne. … je to po vsech strankach povyseni kvality vyvoje na vyssi level a ano frameworky delaji z PHP jazyk vhodny pro stredni i velke projekty, coz ciste php proste neni. Chapu ze ti vyvojari, kteri do toho studia cas investovat nechteji, nezvladaji pochopit urcite principy a zasady, nebo jim dokonce vyhovuje chaos v kodu ve kterem se nikdy nikdo jiny nevyzna proste budou proti frameworkum bojovat, ale to nemeni nic na tom, ze by udelali lepe, kdyby se je proste naucili pouzivat a investovali do toho vice umu.

mark8468464

velky kamen urazu je spis uboha slovni zasoba programatoru kteri ve frameworku nikdy nepracovali … s nimi se o vyvoji skoro neda mluvit. Zatimco framework jasne pojemnovava celou radu prvku, naprikllad casti stranky ktere se obnovuji ajaxem bez znovu nacteni jsou „snippety“, objekty ktere pripravuji data k vystupu na stranku jsou proste „presentery“, soubory urcujici vzhled stranky jsou zkratka „sablony“, objekty reprezentujici databazove tabulky jsou „entity“, objekty reprezentujici praci s nimi jsou mappery a repozitáře, pole více několika takových entit jsou „kolekce“, spousta dalsi terminologie „signály“, „akce“, „rendery“, a to nemluvím o terminologii kterou je třeba znát kvůli písmenku M ve zkratce MCV, a sice veškeré možné návrhové vzory … potíž je, že NIC Z TOHO programátor bez zkušenosti s frameworkem obvykle nezná, takový člověk nenapíše báseň v jazyce který prakticky neumí, a k žádnému slovu nezná žádné synonymum :-) ta omezená slovní zásoba, komplikuje spolupráci v týmu, bez těchto znalostí si každý vývojář vytváří jakousi vlastní omezenou terminologii, a navíc každý jinou :-) to je pak peklo … z tohoto uhlu pohledu jsou frameworky záchrana pro vývojářské týmy.

Leoš

+1

Zdůvodnění: pokud se práce rozroste natolik, že je nutné začít používat frameworky, nebo komponentový vývoj obecně, je vhodné použít programovací jazyk který pro tento způsob vývoje má rozumnou podporu. Z dnes dostupných jazyků je to hlavně C# a Java, C# odmítám protože nefunguje mimo Windows (Mono doopravdy nefunguje dost dobře), takže používám Javu.

Jaroslav Martinec

Javu? To je ten historický jazyk, který kdysi zabil Oracle?

:)

Jaro

Asi by si si mal ísť po dlhom čase trocha zakódiť do firmy, ktorá rieši reálne užívateľské požiadavky a videl by si, že bez toho historického jazyka to jednoducho nejde a že tento historický jazyk a ekosystém okolo neho je stále často najlepšou odpoveďou aj pre nové projekty. Alebo je pre teba nutnosť reštartu aplikačného/we­bového servera niečo čo fakt nemôžeš prekusnúť ?

mikiqex

Přirostl jsem spíše k C#, Javu (nevím proč) prostě nemám rád. Nicméně když se rozhlédnu v korporátní sféře, většina toho je Java + Oracle. Třeba C je historický jazyk taky a jak se používá! :) Mimochodem, co je to na Androidu? To je taková nějaká pseudojava, ne?

Vojtěch Semecký

Dokonce ani ne „pseudo“. V Androidu je úplně normální Java.

mark8468464

to co je v androidu je uplne normalni java, jediny rozdil je v tom ze ji google implementoval pode volne dostupnych specifikaci ZNOVU :-) ale z pohledu programatora je to stejne. Jen uz na to nema zadna prava ORACLE :-)

Ivan

No mozna by ses mel podivat na mono ted. Provozujem na nem GIS server komplet psany v C#. Je sice o 30% pomalejsi nez MS ale ma zase jine vyhody (porizovaci cena OP systemu do farmy atd.)

Opravdu jsem cumel kdyz jsem sebral build serveru o cca 50-100 000 radku (build byl delan na MS stroji ve VS2005) a jediny upravy co jsem musel delat v buildu bylo otocit lomitka. Fakt s tim drsne pohnuli!!!

I

Jencek

Jaký GIS server? To by mě zajímalo.

Pepa

Ano, myslim ze presne takhle to je.
Kdyz delam neco v OS, pouzivam bash. Nechci v nem tovir nic velkeho, jen rychle zvladnout co potrebuju.
Kdyz chci neco rychle vyresit na webu, pouziju php. Predem ale vim, ze to nebude velky projekt.
Kdyz to ma byt velky projekt, sahnu po nejakem vyspelejsim jazyce (osobne Java) a frameworku (osobne Wicket, Spring).

Oldisy3

Co je to neco velkeho? I velke veci se skladaji z dilcich mensich, podle svich zkusenosti bych rekl ze je to o sebekazni, ikdyz jednodussi je pouzit neco co te vede a nenecha slapnout vedle, ale co se potom clovek nauci? kdyz se uci predevsim z chyb.

Oldisy3

Po tom co sem se ctvrt hodiny patlal s odpovedi, kde bych ti vyvratil kazdej kousek me to prestalo bavit a napisu ti jen ze placas.

Milan Stoklasa

Hehe!

To mi taky často stává. Patlám příspěvek, patlám a pak řeknu „fuck off“ a zavírám záložku :)

Oldisy3

No kdyz uz sempsal patou faktickou(odsta­vec)a teprve sem byl v pulce jeho prvniho odstavce, rekl jsem si ze to radsi shrnu.

...

To je jenom úhel pohledu, za co se dá považovat „moderni vysokourovnovy jazyk“ jak píše přispěvatel.
viz např.
http://cs.wikipedia.org/wiki/Vy%C5%A1%C5%A1%C3%AD_programovac%C3%AD_jazyk

Clary

Používat k vývoji jazyk bez WTF faktoru není žádný adrenalin :)

---

Pravda je, ze ASP by bylo lepsi, ovsem ma dosti malou podporu na hostingach …

mark8468464

:-)))) CHACHA ASP … ty jsi dobry komik, tak tenhle jazyk asi nikdo nemyslel :-) ani visual basic :-))

mark8468464

ti lidé co doporucují neco od základu promyslenejsího doporucují spís věci jako PYTHON nebo JAVA :-) bych tak tipnul

Pingy

Tento článek uvolnit vždy pouze až po desáté hodině večerní a ránou s úderem páté ho zase zablokovat.

Mard

Děkuji, zasmál jsem se! +1

David Grudl

Super článek, z velké míry vystihuje můj pohled na věc. Jasně, počítání řádků je značně nefér a diskutabilní, ale rozumím, co se autor snažil říct.

Docela často dělám jednoduché weby, které celé napíšu v „notepadu“ (v mém případě FAR manager), chci, aby kód neměl víc řádků, než je naprosto nezbytně nutné a nahrávat kvůli 20kB webu i se styly na hosting hafo-megabajtový framework nepřichází v úvahu už vůbec.

Ale přitom i v těch jednoduchých webech chci použít věci, co už mám vyřešené v Nette a navyklého pohodlí se vzdát nechci. Jsem prostě líný. Z toho důvodu se dá Nette používat jako micro framework.

Příklad: zrovna včera jsem si redesignul http://davidgrudl.com a dal k dispozici zdrojové kódy (odkryjte rožek vlevo nahoře), čistě pro inspiraci ostatním, jak takový microsite řeším. Celý web je tvořen jedním souborem index.php, který je, věřím, srozumitelný, byť pro neznalého asi méně. Zbytek jsou šablony. A framework nahraný v minifikované podobě jediného souboru, což, společně s faktem, že má plácnu dvojnásobnou velikost než jQuery, řeší psychologický blok „nechci nahrávat celej framework“.

Nebo jiný příklad: bložík http://examples.nette.org/micro-blog, jehož zdroják tvoří též pouze index.php, a to ještě s méně řádky, než v předchozím případě. Vše ostatní je v šablonách, viz https://github.com/nette/examples/tree/master/Micro-blog/www/data/templates

Asi bych měl napsat, proč vlastně na těch pidiwebech framework používám? Tak především si dnes neumím představit, že bych něco programoval bez Laděnky, na ostrém serveru mi bude logovat chyby (ačkoliv u statického webu asi nebudou). Především ale využiju šablonovací systém, protože už od 2 stránek chci mít oddělený layout od obsahu, vyhovuje mi jeho stručná syntaxe a spoléhám na automatické escapování. Využiju i routování, protože prostý požadavek mít URL adresy bez koncovek .php dokáže v mod_rewrite nastavit (správně!) jen bůh, viz http://phpfashion.com/hadanka-znate-mod_rewrite.

V prvním webu se ještě používá kešování pro twitter feedy, v případě toho blogu je využit databázový layer. A taky SEO vychytávka Nette, která automaticky předejde známé chybě, kdy se při stránkování pohybem vpřed a vzad dostaneme na tutéž stránku, jen jí v URL bude navíc strašit page=1.

A taky že při chybě se nikdy neobrazí chybové hlášky PHP, ale srozumitelná stránka http://davidgrudl.com/abrakadabra

S tímto jsem fakt spokojený a doporučuju všem, co potřebují dělat quick ‚n dirty weby ;-)

(Než s tím někdo začně: ano, jsem vývojář Nette, a to kvůli tomu nemůžu podobné příspěvky psát? Bylo by slušnější se srabsky skrývat za vymyšlený nick?)

koja

Ten kod by me zajimal ale v Chromiu 16.0.912.63 mi rozek jaksi nechce fungovat.

Paladin

@Grundl: ruzek je cool :)
@koja: musis chytit a tahnout, napoprve mne to taky nenapadlo, jenom jsem klikal

Pavel Šimerda

„Využiju i routování, protože prostý požadavek mít URL adresy bez koncovek .php dokáže v mod_rewrite nastavit (správně!) jen bůh“

Tak to jsem asi bůh :D.

miri

Vitej na Olympu :D

.

TUHLE. KURVU. ANI. OMYLEM.

Alt+F4

Když to přeženu, trochu mi to připomíná debatu old-school programátora v assembleru a někoho kdo píše např. v C/C++. Assembler bude rychlejší, minimalistický a na triviální záležitosti ideální. Přece nebudu používat žádné molochy…Ehm.

Píšu v obou zmiňovaných frameworcích (Symfony, Zend) a bez nich už raději ani ránu. Už několikrát jsem se setkal s tím, že zadání se v průběhu vývoje dost často měnilo. To, co na začátku vypadalo jako webík o pár stranách, byl nakonec web za 120 tis. Kdybych použil jakýkoliv mini framework, později zjistil, že potřebuju něco co řeší Zend knihovny a můj mini framework mi tenhle luxus nenabízí, tak nebudu znovu vynalézat kolo a sáhnu po nich. Nakonec bych zjistil, že ze Zendu jsem použil většinu a výsledkem bude cokoliv jiného než kompaktní celek.

Podobně je to s JS/jQuery. Proč zbytečně načítat jQuery, který má 30kB, když to napíšu na pěti řádcích, že? Napíšu si to sám, bude se mi lépe usínat nad dobře odvedenou (mojí) prací, můžu se na to spolehnout, protože jsem to přece dělal já… No, a jelikož nejsem neomylný, někde udělám chybu a mám na problémy zaděláno. Proč to všechno? Je potřeba jít cestou nejmenšího odporu. A v dnešní době si lámat hlavu nad tím, jestli někde načtu pár kilový knihovny…

To. Kur*a. Ani. Omylem.

BTW: Nette je jistě skvělej framework, ale straší mě představa, že na v něm bude ve firmě napsáno několik desítek webů a z nějakého důvodu by se třeba p. Grudl přestal frameworku věnovat. Co dál? Navíc Symfony i Zend dobře znají i za hranicemi. Takže Nette zatím není pro mě zajímavá záležitost, ale přeju si, abych někdy změnil názor.

Diskobolos

Jen aby někteří nežili v bludu – Pan Grudl dal svou praci svobodně do světa. Díky tomu (mimo jiné) kolem jeho práce vznikla silná komunita, která by jeho projekty podržela. Nemusí tě nic strašit.

Milan Stoklasa

Do světa? To jako že to z Brna dovezl až do Prahy?

Grudl je sice náš malý český borec, ale svět bohužel začíná trošku dál. A tam ani o Grudlovi, ani o Nette nevědí nic :)

Diskobolos

Do světa = veřejně na Github. Naopak, díky Grudlovi jsme svět dohnali. K ostatnímu se nemá smysl vyjadřovat…

Milan Stoklasa

GitHub má pěkné statistiky. Rozdíl Nette a konkurence je řádový.

A kde je ten svět tady https://github.com/nette/nette/contributors? Opravdu přehlídka mezinárodního úspěchu :)

Nechci snižovat význam tohoto jistě skvělého projektu, ale buďme prosím objektivní! Buďme objektivní.

Smokie

Nemyslim si. Uz len kvoli tomu, ze po 2 rokoch s Nette som presiel na CodeIgniter a slintal som blahom :) Formulare, routovanie, sablony, rychlost,…toto vsetko CodeIgniter zvlada lepsie ako Nette, podstatne lepsie. Vyrazne ulahcuje pracu.

A dokumentacia Nette? Oh moj boze… Pri nej ma castokrat, hlavne na zaciatku bolela hlava, pretoze plno veci bolo z nej nejasnych alebo tam uplne chybali. Cast veci sa dala odchytit na fore, ale niektore veci nie. A casto som aj dostaval radu „najdi si to v kode“. Tak prepacte, ale ja potrebujem pracovat a nie hladat funkcie v kode frameworku. :)

Formulare: V CodeIgniterovi mi staci napisat formular do sablony a potom si ho v presenterovi spracovat v jednej metode. V Nette som musel kvoli formularu napisat tovarnicku, potom este dalsiu metodu na ziskanie vysledkov a potom tie vysledky spracovat v handle. To bolo velmi zdlhave a castokrat som sa musel prehamat zacat robit nejaky formular, ktory som potreboval.

Routovanie: Pamatam sa, ked som zacinal s routami a aky to bol boj. Pridal som routu a zrazu mi ine nefungovali. Preco??? Nakoniec som zistil, ze zalezi na poradi rut. Preco??? V CodeIgniterovi mozem praskat routy v akom poradi chcem a vzdy funguju na 100%. Takto to ma fungovat. Takto je to jednoduche a efektivne.

Sablony: V Nette som mal obrovsky problem, ze som nemohol mat zvlast layout pre frontend a zvlast layout pre backend. Aspon teda nikde som nikdy nevidel ako to urobit, ani v dokumentacii, ani na fore. V CodeIgniterovi to ide akosi samo a bez problemov.

A Ladicka? Nic v zlom, ale to tiez nebol bohvieaky zazrak. Parkrat mi sice pomohla, ale castokrat ma odkazala na riadok v zdrojaku frameworku a nie na chybny riadok v aplikacii… To dakujem, ale to mi problemy neriesi.

Alebo z casu na cas sa mi s Nette stavalo, ze zrazu namiesto obsahu vyskocila chybova hlaska o permission denied k temp adresaru a pritom pristupove prava nastavene boli a po refreshnuti to uz slapalo dalej ako malo. Ale vysvetlujte toto zakaznikovi. S CodeIgniterom sa mi toto ani po polroku nestalo. A ked mi uz traja zakaznici zacali tento problem hlasit, tak bolo rozhodnute. S Nette je koniec.

Neberte toto ako zaciatok flame. To nie je flame. To su postrehy z praxe. S Nette som pracoval 2 roky, s CodeIgniterom 6 mesiacov. Viacmenej kazdy den. Par ludi od Nette ma nema v laske, pretoze som odmietol spristupnit firemnu dokumentaciu, ale to neubera vahu prave napisanym odstavcom.

Nox

Vidiš, mě to přijde jako učebnicový flame.

Z příspěvku vyplívá, že jsi se vůbec neobtěžoval podívat do dokumentace na nejzákladnější věci … tudíš se vůbec nedivím, že tě nemají v lásce, když tu na základě toho ještě děláš takovéto rozbory.

Formuláře: Tak v CI je máš asi v šabloně, v Nette zas jen v aplikaci. Co je lepší, ať si každý rozhodne sám. V Nette máš také pouze definici a zpracování, nevím o jaké záhadné třetí metodě mluvíš.

Routování: Dokumentace CI „Routes will run in the order they are defined“ versus „V CodeIgniterovi mozem praskat routy v akom poradi chcem“ … ale možná neví, co píšou

Šablony: Presenter::set­Layout(), obrovský problém

Ladička: Pokud se chyba projeví až v Nette, tak je jasné, že se zobrazí tam. Nette ti samo nedokáže zjistit, kde byla prapůvodní logická příčina chyby … to by byl jen krok k tomu, aby to vytvářelo kód za tebe.
Jinak na dané místo v kódu se dostaneš prostě tak, že klikneš o řádek níž, nevím co je na tom složitého.

ach jo

Pepa

Nezajímá mě vaše debata, ale zaujala mě ta tvoje čeština – to je fakt síla :-o

Nox

To je to opravdu podstatné, nelze než souhlasit. Psal jsem to rychle – vyplývá, tudíž … neberu to jako vědeckou publikaci. Kromě trollování, máte něco přínosného?

Pepa

Bla bla výmluvy…

mark8468464

… takže nemáte. Děkujeme za váš bezcenný příspěvek do diskuse :-)

mark8468464

jinak s Noxem naprostý souhlas, osobně tu po pročtení diskuse mám ten pocit že většina kritiků jsou lidé kteří prostě jen nedokázali stát se „důslednějšími“ programátory, kteří nad svou prací o trochu „více přemýšlí“. … nemyslím to zle, ani nechci vypadat povýšeně. Prostě ti co kritizují, ten framework citelně neznají :-/ proč bych jejich kritiku měl považovat za smysluplnou pro ty, kteří ho denně používají v praxi? To by byla přece hloupost. I mezi programátory vždy budou schopní a spousta méně schopných, tí méně schopní kteří do zdokonalování své práce nechcějí investovat čas ani mozkovou kapacitu prostě nebudou mít nikdy rádi jakékoliv frameworky, tím méně ty s dokumentací, kterou je nutné číst a pochopit :-)

Smokie

Ucebnicovy flame z toho robis az ty a to hned druhou vetou :) Moje postrehy vychadzaju z praxe. A tym to konci. Mozes sa aj postavit na hlavu, ale moj nazor nezmenis. Moj nazot totiz vytvorilo tebou idealizovane Nette samotne.

Nox

Máš pravdu, volil jsem asi ostřejší formulaci, než bylo záhodno. Na druhé straně ty jsi volil minimálně tak ostrý obsah, myslim že to je na stejné úrovni.

Neboj se, o tvoji osobu a názor mi nejde ;) chtěl jsem jen vytvořit protipól k tvému příspěvku.

Pokud je tvým názorem, že určité řádky (třeba ten layout) ve frameworku neexistují, i přesto že jsou vidět ve stažených zdrojových kódech a v API referenci a na fóru (např. 11 měsíců starý příspěvek) a dokumentaci (už od 0.9) … tak s tím skutečně nic neudělám, to je pravda. Ale je to podivné.

Nevím proč mluvíš o idealizaci, když uvádím údaje stejným způsobem, jako ty – leda bys tomu říkal „idealizovaný CodeIgniter“.

Moje postřehy vycházejí z praxe taktéž, jinou zkušenost než Nette mám s Kohanou (která je forkem právě „tvého“ CodeIgniteru), ale pravda krátkou.

Smokie

Uz z prveho prispevku bolo zname, ze som do zdrojovych kodov nepozeral, pretoze o to nemam zaujem a ani cas. :)

A ked som tie layouty riesil, tak to nikde v dokumentacii Nette nebolo. Aspon nie na viditelnom mieste. Treba tiez chapat, ze som po layoutoch nepatral celu tu dobu ale len vtedy ked som to potreboval riesit. Co je uplne pochopitelne. A vtedy ked som to hladal, tak to tam nebolo. Okrem toho tych problemov a nedostatkov bolo viac, cize ani toto by ma nezadrzalo (za vsetky staci menovat velmi otravny bug s pristupovymi pravami k temp, to bolo neprijatelne).

Nette a jeho problematicka dokumentacia u mna neuspeli. Samotna dokumentacia je dost problem a nie len pre mna, ale co som vypozoroval na zdrojak.cz, tak aj pre viacero ludi (aj v tejto diskusii sa minimalne jeden nachadza). Koniec koncov aj kvoli tomu som musel napisat vlastnu dokumentaciu pre ucely toho co som robil.

David Grudl

Nette na tom bylo ještě začátkem loňského roku s dokumentací dost bídně, což se naštěstí změnilo a dnes je spíš jeho předností. A stále se na ní pracuje a obsah roste.

O náhodně se projevujícím bugu s přístupovými právy slyším poprvé, obvykle v takových případech jde o bug PHP nebo nějakého patche pro PHP. Pochopitelně se v jiném frameworku projevit nemusí. Zkoušel jsi psát na forum?

Jiří Landsman

Nastala ta změna někdy koncem roku? Myslím, že ještě tak v září v dokumentaci byly jednotlivé čísti pro různé verze a sandbox aplikace pribalena v distribuci byla zas pro jinou verzi. Ale pokud je to již sjednocené rád se na nette zase podívám :)

mark8468464

eh, na tom webu jdou dokumentace pro vsechny verze, bacha na to, je dulezite asi vic listovat obsahem aktualni dokumentace nez googlit protoze google vas snadno navede na starsi dokumentaci :-)

Ani

„Dneska jsem zatloukal hřebík a urazil jsem si prst…“

To je taky z praxe, vyhodíme vašechny kladiva?

Mě jen přijde, že si lempl, když si za dva roky nezjistíš jednoduchou metodu na setLayout, která je tak intuitivní, že snad ani meusí být nikde napsaná.

Smokie

Uff tak takyto hlupy nazor som uz dlho necital :D

Co takto vymazat celu dokumentaciu Nette a nechat ten framework pouzivat iba pre tych najinteligentnej­sich, ktori si vedia domysliet kazdu triedu a metodu? :D

Ak by to v dokumentacii bolo (a plno dalsich veci), tak nie je problem. Takto problem vznikol a iny framework ziskal dalsich uzivatelov na ukor Nette.

Je pekne, ze Nette pouzivaju ludia, ktori si vedia domysliet metody, ale co z toho, ked su len traja? :)

mark8468464

Dokumentace nette je dnes vyborna, co dalsiho k tomu dodat? snad uz netreba …

Smokie

Este sa vyjadrim k jednemu bodu :)

„Routovanie: Pamatam sa, ked som zacinal s routami a aky to bol boj. Pridal som routu a zrazu mi ine nefungovali. Preco??? Nakoniec som zistil, ze zalezi na poradi rut. Preco??? V CodeIgniterovi mozem praskat routy v akom poradi chcem a vzdy funguju na 100%. Takto to ma fungovat. Takto je to jednoduche a efektivne.“

„Routování: Dokumentace CI „Routes will run in the order they are defined“ versus „V CodeIgniterovi mozem praskat routy v akom poradi chcem“ … ale možná neví, co píšou“

Precitaj si nieco poriadne, nez na to zacnes reagovat. Pretoze tvoja reakcia nie je argumentom na moj bod o routovani.

Pisal som, ze v Nette pri routach zavisi na poradi v akom su zapisane a nespravne poradie moze cast z nich alebo vsetky znefunkcnit. A pisal som, ze v CodeIgniterovi je to jedno a mozem ich praskat v akom poradi potrebujem.

A ty na to zareagujes citaciou, ze v CI sa routy vykonaju v poradi v akom su definovane… Ako tym negujes moj argument? Nijak. Tvoj citat nehovori nic o zavislosti na poradi. Pretoze tam ziadna nie je.

bazo

no kamo, ty si asi seriozne pribrzdeny

Karel

Silná komunita? Máš na mysli tu silnou komunitu co dlouho slibovala dokumentaci, až ji David musel napsat sám?

Diskobolos

Chápu potřebu lidí typu Karel, kteří by chtěli mít všechno na zlatém podnosu, bez práce, zadarmo hned a třychtýřem s kanilou, co se zavede přímo do mozku.

1) Dokumentace již existuje
2) Díky fóru nikdo nezůstal na holičkách (pokud nebyl líný se zeptat)

PS: Právě pro „slabinu“ v dokumentaci vznikla kolem Nette taková silná a kvalitní komunita. Kdo „vydržel“, tak tomu většinou propadl a má hlubší znalosti díky nutnosti jít svépomocí více do hloubky, poprat se s tím sám. Takoví lidé, Karle, ve vši obecnosti, jsou na tom v životě lépe.

Inkvizitor

Takže jinými slovy (ve vší obecnosti) komunita stojí za hovno, ale člověk, který se bez ní obešel, vyšel z té zkušenosti nakonec silnější, čímž jsi vyvrátil Karlovu námitku?

Diskobolos

Když ti to takto blbě přemýšlí, tak ano. Spokojený? To je dobře… :-)

Inkvizitor

Jo, jsem spokojený, moji námitku jsi vyvrátil dokonale. :-D

Radsi CodeIngniter :) prijde mi jako idealni kompromis mezi „obrem“ a „trpaslike“

KapitánRUM

Ten pán říká jen to, co už dávno ví nejeden z nás.
Tři chytří lidé se sejdou a vyrobí jízdní kolo.
Kolo je tak skvělé, že ho každý chce.
To jim udělá takovou radost, že přidají zvonek.
Hm, zvonek je fajn.
Přidají rám z duralu nebo uhlíkových slitin, přehazovačku.
A je to ještě lepší!
Mají z toho takovou radost, že na zadní kolo přidělají praporek.
Část programátorů – říkejme jim LACHTAN – umí jedinou věc, ale zato dobře, chechtat se jako debilové a tleskat. Tleskající lachtani!
Kdo viděl živou konferenci, kde Microsoft představoval Windows 8 a Metro, tak to moc dobře zná, plnou místnost lidí a dohromady mají IQ tohoto milého stvoření: http://www.youtube.com/watch?v=DPt3KJHO8CU
Nicméně potlesk autory povzbudí a protože už vyčerpali všechno, co mohli přidat a přitom to opravdu dávalo smysl, začnou přidávat nesmysly.
Do zadního kola kus kelímku, který dělá takové to klap-klap-klap, zadní kolo dají z traktoru, sundají blatník pro odlehčení kola, na řidítka přidělají držák na kafe, máslo, marmeládu, hned pod sedátko umístí kotouč z cirkulárky, takže kolo umí i štípat dříví. Lachtani ale pořád tleskají, hrozně se jim to líbí. Je to tak, že některé věci jsou prostě perfektní, než se z nich stane hnusný moloch, který sice umí všechno, ale vyžaduje lidské oběti, nejlépe malé děti a panny.

Myslete na to, až budete něco dělat.
Jestli Vám náhodou netleskají jen LACHTANI a jestli to, co děláte, má opravdu smysl.

stewe

pekne povedane

Pepa

To je odvaha přednést tohle přímo uprostřed pavilonu lachtanů :-)

KapitánRUM

Někdo musí bejt ten zlej :-)
To bylo vždycky moje moto!

mark8468464

docela si pobavil, jak to padlo na hlavičku, ale v jednom nemáš pravdu. Ti lachtani existují převázně v té části fóra kde se evidují FEATURE REQUESTY tedy požadavky na nové funkce … jejich požadavky jsou velmi často krátkozraké, nesystémové, a jejich bezmyšlenkovitým plněním by se z frameworku stal přesně takový moloch jaký popisuješ, .. na opačné straně barikády však je lachtanů už citelně méně a velmi se znaší držet jakousi základní stawební kostru frameworku v co nejlepší kondici.

Baldur

Jen jako reakci. Céčko není rozhodně zastaralí jazyk. Hlavně s poslední verzi C++11 http://en.wikipedia.org/wiki/C%2B%2B11 je to jazyk o mnoho zajimavejší a jeden z mála v kterém si programátor sám může pomocí definic změnit syntaxy tak, aby mu více odpovídala.

Osobně jsem překvapen tím, kde je C++ teď a když se na něj podívam a vidím konstrukce foreach apod. tak přemýšlím jestli to nakonec není přeci jen ta správna volba.

K tématu: nepochybně PHP je dost zvláštní volba pro cokoliv, kvůli tomu že je to skript, který se vždy provádí znova a nefunguje podobně třeba jako J2EE, kde běží server nepřetržitě a jen vyřizuje požadavky. Ovšem komunita PHP udělala velký krok v před a s novýma frameworkama se v tomto jazyku sázejí weby jeden za druhým úplně vpohodě s tím, že je možné zachovat čístý kód pomocí unit testů, funkcionálních testů a end to end testů. PHP už dávno není to co bývalo, otázka je co bude dál.

Čelo

Třeba něco jako Coffeescript pro PHP?

. Paladin

vic bych ocenil neco jako kompilovanou verzi php :) cely web by se zkompiloval do binarky bezici na nejakem portu a nginx by pres fastcgi posilal requesty… to by se mi dost libilo! :)

MW

Něco jako HipHop? http://php.vrana.cz/hiphop.php

. Paladin

No, v podstate :) Ale hiphop bezi jako samostatny „Server“ (alespon to jsem pochopil z readme), ja bych radsi videl pres fastcgi…

František Kučera

Ono jde spíš o „životní cyklus“ toho programu – např. v Javě máme (velmi zjednodušeně řečeno) aplikaci + sezení + požadavek. Aplikace vznikne při nasazení na server a trvá celou dobu (dny, měsíce, roky… podle toho, jak často restartuješ), inicializace se provede jen jednou a drží si stav (pokud nějaký potřebuje). Sezení vznikne, když přijde nějaký nový uživatel a opět trvá celou dobu (opět tam existuje nějaký objekt, který si drží stav). A požadavek je prostě jeden HTTP požadavek.

Viděl jsem různé PHP frameworky, které se tohle snaží kopírovat – mají tam nějaký „bootstrap“ té „aplikace“ případně nějaké události navázané na vznik/ukončení sezení… Ale pořád je to jenom jako, protože tam nejsou žádné trvalé objekty a aplikace se inicializuje při každém HTTP požadavku vždy znova.

Podařilo se to někomu v PHP už okopírovat tak, aby to nebylo jen jako, ale doopravdy?

K tomu je potřeba zajistit podporu na třech úrovních:

1) Server – interpret (případně zkompilované PHP, to je jedno) musí běžet trvale, musí tam být instance aplikace, která je společná pro všechna sezení a všechny požadavky. Pak tam musí být instance sezení, které je vázané právě na jednoho uživatele. A pak instance požadavku (to je jednoduché). Server musí zajistit bezpečnou komunikaci mezi těmito instancemi napříč vlákny. Případně i dostatečně izolovat jednotlivé aplikace (pokud jich má v rámci jednoho procesu serveru běžet víc).

2) Framework – musí počítat s tím, že instance aplikace je jen jedna, společná pro všechny – může k ní přistupovat víc vláken a víc uživatelů. Pokud budeme chtít v jednom procesu provozovat víc aplikací běžících nad jedním frameworkem, framewrok s tím musí počítat – musí být připraven na to, že může být instanciován víckrát pro různé aplikace, nesmí mít žádné „globální proměnné“, aby se jednotlivé aplikace navzájem neovlivňovaly.

3) Aplikace napsaná nad tím frameworkem – opět se musí vyrovnat s tím, že jedna instance aplikace je společná pro všechny (požadavky, sezení). Stejně jako v tom frameworku v ní nesmí být „prasárny“. Někdy jsem např. viděl, že aplikace dělala „bootstrap“ aplikace (a inicializaci frameworku) jinak podle toho, zda uživatel přišel po HTTP nebo HTTPS. Což funguje jen díky tomu, že se instance aplikace vytváří vždy znovu a znovu pro každý HTTP požadavek.

Nevím, jestli je tohle v PHP vůbec dosažitelné (i kdyby v samotném PHP bylo, je potřeba ještě přepsat ty frameworky a aplikace) a hlavně jestli má vůbec smysl se o něco takového snažit (můžeme použít rovnou Javu, která už funguje už teď). PHP má svoje kouzlo v tom, že člověk může na server nasadit třeba milion aplikací a ony nespotřebovávají vůbec žádné zdroje (CPU/RAM) protože jsou to jen soubory ležící na disku – spotřebovávají až když je někdo začne používat.

Srigi

Toto sa v PHPcku neda nejak prirodzene urobit, lebo je to fakt len skript co zbehne pri kazdom requeste. Ale v dnesnej podobe PHP-5.3 uz ide o naozaj vyspely nastroj, hlavne teda na weby.

PHP je mozne daemonizovat ako nejaku nekonecny slucku na konzole, ale nad tym by bolo treba nejaku fasadu, ktora by predstavovala webserver. A to sa uz neoplati, lebo jednoduchsie je pouzit jazyk co to vie nativne. Napr. v Pythone staci importnut wsgi.simple_ser­ver.

. Paladin

njn :( no,ja bych si to predstavoval neco jako je php-fpm, akorat ze by to necetlo skripty z disku, ale obsahovalo jejich binarni podobu… a clovek by akorat ve vhostu urcil, na jaky port (ted jaky projekt) se ma dotazovat…

tohlesi neumim predstavit ze by bylo tak obtizne napsat…

shade

Pobavilo mě: „Céčko …“ a „C++11“. Přemýšlím, kdy už lidi pochopí, že C a C++ nejsou stejné jazyky, i když mají na začátku stejné písmenko.

Už jenom čekám… „Céčko není zastaralý jazyk. … Podívejte se jako ho Microsoft vylepšil v C#“ :).

Gekon

Toto se dá pouze považovat za trapný výkřik do tmy. Nic jiného, než zviditelnění se nastartováním flame v tom nevidím. Všechny frameworky a jazyky jsou na ho*no, pokud nespecifikujeme co se bude psát.

Psát web pro firmičku o pěti stránkách s kontaktním formulářem v Zendu je na kulku .. na druhou stranu psát firemní IS v Nette, tak bych se zas oběsil já. (Prostě na komfort Zend Frameworku a jeho rozšížení Nette nemá a upřímně ani nesmí mít .. už by to nebylo Nette)

Současná situace okolo web prostředků na vývoj je imho ideální, je toho na výběr hodně .. py+django,ruby+ror,php s mraky framerkama … node.js,HIPHOP atd atd .. Spíše by jsem brečel nad situací okolo http(s) protokolu, který opravdu je zralý na domov důchodců

Diskobolos

„…firemní IS v Nette, tak bych se zas oběsil já…“ – opět blud. Ve společnosti (o 4500 zaměstnancích) použáváme Nette jako základ vlastního CRM/ERP frameworku a jsme velmi spokojeni. Jediný problém, který jsme ze začátku řešili, je nutnost z části používat Oracle (oci8 driver místo univerzálního pdo).

Gekon

A upřímně, proč ne ? .. Když nechcete pohodlí Zendu, tak používejte Nette na podobné projekty. Pořád to je o tom, že na výběr je z dostačného počtu možností ..

Pepa

SPDY má být brzo i ve Firefoxu.

maryo

A pak ten obri framework stahnete, chcete si udelat administraci jednoduchyho webu a zjistite, ze si ji stejne celou musite napsat sam. A to jak v Nette (Nella jeste asi neni) tak v SF2(zadnej pouzitelnej bundle).

Diskobolos

Opět nesmysl, jako bejk. Výše uvedené platí, pokud jste začátečník nebo hlupák. Pokud máte krapet intelignece a k tomu trochu snahy, tak se (téměř jakýkoli) framework brzy naučíte. Pak není naprosto žádný problém zplodit luxusní-lightweight CRUD administraci k CMS za jednu delší pracovní směnu.

wdolek

Myslite takovy ten CRUD co si v shellu vygenerujete pro Symfony/Doctrine, pak se chvilku bijete do prsou, jaky jste mazak a kolik casu jste si usetril… a za mesic nad tim brecite, protoze s tim uz nejde nic delat (viz vyvoj jizdniho kola vyse v diskusi)… ?

Diskobolos

Chjo. Z kontextu jsi mohl pochopit, že nemluvím o CRUDech generovaných z příkazové řádky (to přece nezabere onu zmiňovanou směnu), ale o kódu, který si uděláš sám a máš ho 100% pod kontrolou.

maryo

Pouzivame v praci SF2. A jasne, mame na to firemni bundle kterej tohle resi, ale nekdo ho musel napsat. K tomu, aby byl promakanej to zabere fakt vic jak jednu smenu. Asi jsem to spatne napsal, netvrdim, ze by to mela byt primo soucast frameworku, ale nejakej ten poradnej modul nebo bundle… Zkratka asi neco jako http://nella-project.org/.

Ja jen na to, ze treba to SF2 s celkem zakladnima bundlama ma u me na disku 40MB a presto to neni zlatej gral.

Martin Hasoň

Přijde mi, že daleko lepší než psát manifesty je mít přehled o dostupných technologiích a vědět, které použít na daný úkol. Díky tomu by se takového manifestu nedostaly následující rozpory:

> Chci udržovat co nejmíň kódu
> Chci dělat podporu co nejmenšímu kódu

S rostoucími nároky zákazníka bude potřeba přidávat další a další funkčnost. Abych psal co nejméně kódu, musím se poohlédnout pro vhodné knihovně. Tuto knihovnu by mělo být zároveň lehké použít se zvoleným (micro)frameworkem. V této oblasti jsou na tom lépe právě „velké“ frameworky díky velkým komunitám, které vytváření rozšíření – http://bakery.cakephp.org/, http://www.yiiframework.com/extensions/ a nebo pro zmiňované Symfony2 http://knpbundles.com/.

> Potřebuju si být jistý každým kusem kódu, co do svého projektu dám

Pokud nechci studovat zdrojáky, tak musí být kód ověřen nějakou autoritou. A zde zase mají klasické frameworky náskok. Zend používal ověřování přispěvatelů (nyní už zrušeno). Symfony2 prošla auditem od http://www.sektioneins.de http://symfony.com/blog/symfony2-security-audit
A jistotu zvyšuje i povědomí o kvalitě autorů daného kódu.

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

To je velmi subjektivní kritérium. Člověk zvyklý na OOP se jistě zděsí, při pohledu na kód microframeworku Limonade, zatímco ve Slimu se krásně zorientuje.

> Chci psát kód, který je snadno testovatelný

Přesně tak, škoda, že například zmiňovaný microframework Epiphany nemá žádné testy. Nasadit si takový framework do projektu je sebevražda.

Ještě mě zaujalo, že autor článku dostal doporučení na komponenty ze Symfony2 a nikde nezmiňuje microframework http://silex.sensiolabs.org/ postavený právě na Symfony2.

Milan Stoklasa

…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…

Ano! Všechno si musím napsat sám. Nejdřív si navrhnu vlastní procesor, potom vlastní operační systém, potom vlastní webserver, potom vlastní jazyk a v něm napíšu vlastní web. A je to! Žádný technologický dluh není.

Vzorem pro nás musí být pan David Grudl, který si napsal vlastní framework, vlastní šablonovací systém, vlastní databázovou vrstvu, vlastní generátor dokumentace, vlastní obdobu JSON, vlastní obdobu Textile…

Vývojáři, kteří používají nedůvěryhodný cizí kód, jsou LEPIČI a měli by jít do ..ČI!

František Kučera

Nevyplývá, ale je to spor – typický spor, kterých je v IT plno. Dvě rozumné poučky, které jdou proti sobě…

František Kučera

Spíš jsem narážel na to, že některé otázky jsou v teoretické rovině nerozhodnutelné a nakonec nezbývá než to jedním způsobem zkusit (výběr se provede na základě intuice, zkušenosti, věštecké koule, hození mincí…) a až pak se uvidí. Další vtip je v tom, že ani zpětně to nejde snadno vyhodnotit – nejde nasimulovat tu samou situaci a zkusit to tím druhým způsobem, protože daný projekt je neopakovatelný.

Nějakou naději dává statistika a porovnání velkého množství projektů, ale tam záleží, k jakým datům se člověk dostane…

Yenn

Tak tak, viz citát:

„The nice thing about standards is that there are so many of them to choose from.“
— Andrew S. Tanenbaum

Milan Stoklasa

To jistě ne, ale chci upozornit na nebezpečí druhé strany mince, do kterého se mnozí velmi snadno nechají strhnout.

Pak máme milion podobných řešení a žádné není dotažené.

Pokud souhlasíme s heslem „volme pro každý problém jen ten nejvhodnější nástroj“, pak musíme souhlasit i s heslem „v současné době není PHP nejvhodnější nástroj pro webový vývoj, ať už malý či velký“.

V této diskusi to už několikrát zaznělo, ale bohužel síla mladých PHP fanatiků je velká. Oni bohužel nepamatují ASM fanatiky, Fortran fanatiky, Pascal fanatiky, TurboVision fanatiky, C fanatiky, C++ fanatiky a další a další, které už si ani nevybavím :)

Děda vám radí – zahoďte „čisté PHP“ a profesně se posuňte!

Diskobolos

> Děda vám radí – zahoďte „čisté PHP“ a profesně se posuňte!

A babička laskavě pošeptá – děda je senilní, nechte ho vypovídat… :-D

alancox

„Vzorem pro nás musí být pan David Grudl, který si napsal vlastní framework, vlastní šablonovací systém, vlastní databázovou vrstvu, vlastní generátor dokumentace, vlastní obdobu JSON, vlastní obdobu Textile…“

U Davida Grudla je jedno zajímavé pokrytectví.

Sám píše framework, ale neustále argumentuje, že doufá, že druhé už přešla ta hloupost psát si vlastní framework. Že lidé si nemají psát všechno sami, protože je to ptákovina.

David Grudl

Co je na tom pokryteckého? Radím podle nejlepšího vědomí, kdo jiný by měl vědet, kolik úsilí a času stojí psát něco vlastního, aby to bylo k světu.

alancox

To je přesně důvod, argumenty v tomto článku, proč ignoruji českou komunitu PHP.

Řeší pitomosti.

Řeší ideologii nikoli praxi.

České PHP a české weby kolem PHP jsou plné ideologie. Nikoho nezajímá, jestli je daná věc v PHP praktická, užitečná či jakákoli jiná, ale pouze zda je to ideologicky správně. Zda to potvrdilo největší politbyro ať je jakékoli.

Články Martina Malého nezklamou, vždy jsou kontroverzní a ujeté mimo praxi. Zatím jsem nenašel v jeho četných článcích nic s čím bych souhlasil, ale považuji je za zajímavou psychologickou sondu podle reakcí.

Diskobolos

Snadná pomoc – když ji ignoruješ (onu komunitu), tak sem nepiš a nerozčiluj se.

Každý takový příspěvek ukazuje pouze jediné – „kvalitu“ autora, resp. jeho smýšlení, charakter. Nazdar!

Inkvizitor

Zdroják je podmnožinou rootu (aspoň podle adresy), ne?

František Kučera

Proč bohužel?

Čelo

Protože sem občas chodí exoti co melou nějaký nesmysly o tom, jak sami vnímají „pravé poslání“ root.cz

lenochware

Jeden jednoduchy framework, nebo spis knihovna pro php. http://pclib.brambor.net/ Moc se ostatnim nepodoba, ale me se s nim pracuje dobre.

maras

A to se vyplati, komentar autora na guestbooku tomu dava na zadel, pan je odbornik;-)


lenochware 15. 08. 2011. 10:59:25
Mimochodem ted jsem zjistil, ze php umi i zapnout podporu mbstring pro standardni funkce pomoci direktivy mbstring.overload – http://php.net/manual/en/mbstring.overload.php
Cili to by melo ten problem vyresit i bez zasahu do zdrojoveho kodu.


cleb

Něměl by někde v článku být odkaz na originál? Takto se to téměř vbydává za vlastní článek root.cz, což považuji téměř za plagiátorství.

OnGe

On tam ale je

cleb

Máte pravdu, je. Přesto není moc vidět – tu část textu jsem už považoval za reklamu.
Mzslím že by mělo být možné se dostat na originál bez nutnosti číst předtím celý překlad abych v něm našel schovaný odkaz na originál.

Milan Stoklasa

Souhlas. Nahoře je podepsaný pan Malý a z perex jednoznačně rozhodně neplyne, že by mělo jít o překlad.

Schovat tuto informaci až dolů a ještě ji nazvat „redakční poznámka“, to je prasárna.

Oldisy3

Jsou zde dva hlavni proudy, jeden je „na vse pouzijeme wordpres“, a druhy je „pouzijeme to co staci a ani o chlup vice“. Druhy je mi blizssi.

Diskobolos

OT – já v t0to diskusi vidím také 2 proudy:
– jeden proud se snahou o jakous-takous věcnost
– druhý je proud hov…n :-D

Balvan

Skoda ze podla mna ten spravny prud je ten stredny

1. na jednoduche 10 riadkove veci pouzijem funkciu
2. na stredne velke weby a podla podpory pouzijem nette
3. na nieco uplne ine (server side riesenia nieco…) pouzijem VHODNY NASTROJ (nevylucujem php)

Ale VZDY vyberam na zaklade projektu, potreby a klineta NIKDY podla toho co sa mi paci. Nikoho z pouzivatelov vasich projektov nezaujima ci to bezi na nette alebo na co ale to ci je to FUNGUJE a je to adekvatne rychle.

Preto hadky okolo tochto su skor kontraproduktivne a bojim sa ze len preto aby dokazali svoju pravdu pouziju nieco co nie je uplne vhodne ale zapada do autoroveho oblubeneho prudu

Astapov

+1 Moja rec, moja rec….

Tak ako v Jave, C#, aj v PHP sa daju robia velke projekty – dokonca vacsie ako v Jave. Napr. taky facebook. Nechcem si ani predstavit ako by vyzeral FB urobeny v Jave… no asi by nevyzeral :)

Vsetko je to o schopnosti programatora a nie jazyka. Kazdy jazyk ma svoje pre a proti. Myslim si ze 80% projektov spravenych v Jave by mohlo byt kludne v PHP.

RDA

Nejlepsi pristup je nepouzivat zadne frameworky – kdo si neumi naprogramovat web sam od nuly, by se do toho poustet vubec nemel.. taky se me nelibi frameworky, ani ne kvuli pomalosti nebo komplikovanosti – ale kvuli zradnosti – nikdy si nemuzete byt jisti, ze framework neobsahuje bezpecnostni chybu nebo vyslovene backdoor.

Bohuzel dnesni doba ale vyzaduje pouzivani frameworku, protoze co by to uz byl za webmastra, ktery nenasazuje velka reseni – by to vypadalo ze nic neumi a pak by mel nouzi o zakazky..

vidya

(^_^)

Nox

NotInventedHere paranoia v kombinaci s „kdo nejede na vlastnoručně vyrobeném procesoru není ajťák“, hezké :)

Takže raději ať člověk plesá, že si napsal něco jako framework, zákazníkovi (nebo sobě) naúčtuje mnohanásobně větší časové a finanční nároky a všecho a všichni jsou v pohodě (především konkurence, která svůj projekt již dávno dokončila).

Pepa
Inkvizitor

Takže v shellu se vytváří o jeden procentní bod více zajímavých věcí, než v PHP? Tyhle statistiky jsou sice zajímavé, ale nepřeceňoval bych je. Udělat si projekt ve verzi 0.0.1 a umístit ho na githubu je snadné.

backup

kouknul jsem se na to nette a i tam vidim, ze v te sablone jsou jak formatovaci elementy, tak prace s daty.
Ja kdyz sem videl prvni framework (v roce 1980 – nebyl to samozrejme web ale curses), tak vyvojari delali celou tu logiku a nejaka prezentacni vrstva vubec na zacatku neexistovala – proste se vedelo, ze nejaky zobrazovaci dil (subsystem) vyzada data (unix = text) a to zobrazi. V te presentacni vrstve se na obrazovce rozmistila policka (se jmeny z databaze) a napr. pro nejakou klavesu (=submit button) se reklo, ze to je ta, co zobrazuje data k nejakemu zadanemu identifikatoru.
Ja jsem se poohledl po nekolika frameworkach a vsude je porad ten gulas kde jsou smichany html elementy s volanim jakychsi datovych funkci, subroutin.

Skutecne to jinak nejde?

Nox

Tak ono Nette nezablokuje jeho uživatele od toho, aby si dal do šablony i logiku. Sice to nijak nepropaguje, ale pokud si tam někdo mermomocí chce dát práci s daty tak může.

Stejně jako jde napsat blbě šablonu v Nette, tak jde napsat blbě JS s jQuery, tak jde napsat blbě program s C++, ASM, .NET fw … a všech dalších jazycích a jejich frameworcích.

Že ti framework nenutí určitý styl neznamená přece, že to musíš napsat tak blbě, jak jen to umožňuje…

mauron85

No ale samotna Nette dokumentacia, obsahuje pekne vela nepeknych ukazok. Napriklad domenova logika v presenteri apod.

Nox

Mrknu na to a zkusím se přičinit o zlepšení. Je pravda, že ten kdo už chce používat framework, by s nějakým oddělením vrstev neměl mít velký problém

Kit

Přečetl jsem si tady toho docela dost, ale nenašel jsem názor, že samotné PHP je vlastně frameworkem. Proč se hromada vývojářů snaží napsat šablonovací systém v šablonovacím systému? Protože si chtějí práci nějak usnadnit, nechtějí se opakovat. Jistě, DRY je dobrá technika, ale nesmí se to s ní přehnat.

Občas nahlédnu do nějaké propagované „superknihovny“ a nalézám tam komponenty, které jsou vyřešeny přímo v PHP, tedy mnohem efektivněji. Stačí je jen umět použít. Už se mi mnohokrát podařilo zredukovat velké kusy kódu na jediný řádek při zachování funkčnosti. Když si takovou knihovnu přizpůsobím pro svůj účel, zbude jen velmi malá část. Zbytek jde do binárního odpadu.

Vývojáři by se měli naučit využívat sílu použitého jazyka. PHP už dávno není jen imperativním jazykem odvozeným z C. Dá se v něm psát objektově i funkcionálně. Pokud mi to nestačí, mohu použít další rozšíření, například databáze či jiné procesory a z PHP udělat jen jejich lepidlo.

Tomáš Fejfar

Problém není v jazyku. PHP krom obecně známých konstrukcí umožňuje využít take extensiony – člověk by si mohl napsat vlastní framework jako extensionu a spoustu práce delegovat do výkonějšího Cčkového kódu. Jenže když hodně zákazníků požaduje minimální náklady a sdílený hosting za pár korun (=safemode + pár let stará odzkoušená verze PHP), tak je to těžké – v tom mají výhodu nové, progresivní jazyky – nic takhle omezeného pro ně není. Většinou běží samo-domo na nějakém nainstalovaném virtuálu :) Ono taky sehnat člověka na nastavení třeba linux-nginx-ror-posgresql, který ho rozumně nastaví aby byl stabilní a bezpečný neni sranda (nepočítám „odborníky“ typu „pustíš tydle apt-get a jedeš“). Ad Java – je nějaký hosting za běžné peníze, kde si můžete rozjet web na Javě – nezkoumal jsem to zevrubně, ale o ničem nevím – resp. vim o Forpsi – každopádně nabídka je hrozně omezená. A sám si to dělat nebudu. Jsem programátor, ne kutil. Nebo samozřejmě řešení typu AppEngine, ale to taky každý nechce. Široká konkurence a velká poptávka prostě žene PHP nahoru a ceny dolu a ještě dlouho mu žádný jazyk nebude v ne-enterprise použití sahat ani po kotníky ne proto, že by bylo nejlepším jazykem, ale protože je ekonomicky nevhodnější možností.

Milan Stoklasa

V době služeb typu Heroku bude někdo hledat hosting podporující RoR, případně hledat VPS a šaškovat tam s apt-get?

Proč?

Jsem programátor, ne kutil.

DiskoKoulos

V době služeb typu Heroku bude někdo hledat hosting podporující RoR, případně hledat VPS a šaškovat tam s apt-get?

Proč?

Protože jsem programátor, ne milionář. Měl jsi na Heroku pár aplikací i s databází? VPS za 2000 Kč ročně mi zvládá několik webů na Djangu a RoR, na Heroku bych se nedoplatil.

Milan Stoklasa

Tohle české šetřílkovství jsem nikdy nepochopil.

Někdo si nechá udělat stránky za 100 000 Kč nebo rovnou aplikaci za 1 000 000 Kč a pak to provozuje u banánu za 20 Kč měsíčně.

A ještě nutí programátora, aby složitě obcházel problémy, protože to „hosting neumí“, „nedovolí nám to tam nainstalovat“ atd. atd.

To je pak jasné, že je všechno v php a žádné nové technologie se nekonají, protože je hosting nepodporuje.

Heroku je sice drahé, ale funguje, jsou tam kupy hotových addonů (např. konverze videa – umí to váš VPS?), a deploy je vyřešený jedním kliknutím. Ta cena se vrátí na úsporách za vývoj a administraci.

DiskoKoulos

Ono je možná problém, že se tu oba bavíme o jiné sféře. Pár webů a aplikací za maximálně pár desítek tisíc + vlastní projekty je rozdíl oproti 1 000 000.
Jak často potřebuješ konverzi videa? Za 10 let jsem tohle nikdy mimo stolní PC nepotřeboval.
Není to české šetřílkovství. Prostě mi to příjde ekonomicky neefektivní.

Palo

Nechapem ta tiez. Preco by som mal za nieco co nepotrebujem platit vela ked mozem platit menej.
Jemu to takto vyhovuje viac. Ja tiez nemam rad setrilkov ale to nie je point. Dolezite je ci je to setrenie na spravnom mieste alebo plytvanie na nespravnom mieste.
Ak si dobry admin co si to vie spravit sam za chvilu a poriadne naco by som si to predrazene objednaval inde?

Palo

Co sa tyka Javy, zaujimave je toto:
http://jelastic.com/

Zatial je to free, technologicky je to dobre urobene.

Palo

100% Lenin

A što takóje, eto PHP? Revoljůcija, što li?
To zase někdo zašťoural ve vosím hnízdě.

D: Více takových šťouralů. Sebereflexe je dobrá věc. Jen dál a houšť, drazí soudruzi programátoři.

Vše nej v n.r. 2012

n0

..a proto ve světě ruby volím Sinatru (Padrino) když chci jednoduchou web-app a ne hned Railsy. Easy ;)

Martin Hasoň

Původní článek si získal značnou odezvu. Nicméně daleko kvalitnější článkem na toto téma je http://krisjordan.com/micro-php-manifesto

Pohled na celou problematiku z jiné strany podává jeden z vývojářů Symfony2 http://pooteeweet.org/blog/0/2074

----

Radikalni to vubec neni, je to jen pouziti cisteho rozumu ve stylu kdyz nepotrebujes dum ale jenom skrin, odnes si skrin a nesnaz se vymyslet jak presunout cely dum a po presunuti z nej tahat skrin, stoji to zbytecny cas a penize, ovsem je take pravdou, ze PHP je samo o sobe dosti slozite a toto jak uz bylo zmineno, neni uplne cesta ven, no ale co se tyce vramci PHP je to asi nejlepsi reseni.

ville

viz např MicroPresenter, který je tomu uzpůsoben.

http://forum.nette.org/cs/7560-ze-by-nejrevolucnejsi-cast-nette-2-0

ale na sinatru žádný php produkt

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.