10 obsesí na WebExpu 2016

webexpo Obsese ž. kniž. chorobně utkvělá představa, myšlenka; med. nutkavé jevy, nejčastěji myšlenky, popudy k jednání apod., jež jsou nesmyslné a bezdůvodně ovládají mysl nemocného, ačkoliv se je snaží potlačit Obsession it's kind of like a passion for something that crosses the line into crazy territory (source) Trpíte nějakou obsesí? Letošní WebExpo nabízí lék ve formě přednášek, které jsou rozděleny do deseti okruhů – obsesí – po vzoru zahraničního magazínu Quartz. Hlavním cílem je lépe uspořádat jednotlivá témata podle společných problémů, takže si každý snadno najde co jej zajímá. Zároveň každou obsesi zosobňuje celá řada (většinou) světově známých jmen, takže je na co se těšit. „Vyhledejte odbornou pomoc dříve, než vám obsese přerostou přes hlavu!“ Proč se vlastně tak snažím chodit na nějaké takové akce a namotivovat i další lidi? Kdo neviděl, mrkněte se na následující video. Zejména kolem času 15:08 mluví Honza Černý o tom, v čem to celé vězí. „Existují dvě skupiny lidí. Lidi…  přečtěte si více

More awesome Monolog for #nettefw

DIC nette Nedávno mi přišel požadavek na vytvoření takového jednoduchého způsobu, jak logovat uživatelské akce – konkrétně zatím jen přihlášení uživatele (do databáze). Mohl jsem to udělat jednoduše a prostě to někam do kódu nahákovat. A nebo jsem to mohl udělat tak, jak jsem to také nakonec udělal – složitě. Samozřejmě je třeba dopředu dostatečně promyslet, jestli to za tu práci stojí, ale měl jsem dostatek argumentů proto, že ano. Jedna z nejdůležitějších myšlenek byla, že časem bude pravděpodobně potřeba logovat do databáze i další akce, než je jen přihlašování. Druhým velmi silným faktorem (který ovlivnil celé řešení) bylo, že používáme Monolog. Konkrétně Kdyby\Monolog…  přečtěte si více

Dva šablonovací systémy zároveň

latte nette smarty Možná pracujete na nějakém projektu, který používá jiný šablonovací systém než je Latte, ale Latte se vám natolik líbí, že ho chcete používat také. Nebo naopak používáte Latte, ale [doplň název šablonovacího systému] se vám natolik líbí, že ho chcete používat také. A nebo prostě nemáte na výběr a musíte používat více šablonovacích systémů. V takovém případě existuje asi jediné přímočaré řešení a tím je vlastní implementace Nette\Application\UI\ITemplate. TemplateFactory Ono to vlastně zase až tak přímočaré není. Je v tom totiž malý háček. V současné době fungují Latte šablony tak, že existuje továrna TemplateFactory, jejíž úkolem je vytvářet Template objekty.…  přečtěte si více

Testbench 2.3 is out (finally)

nette php tester Yeah, you heard that correctly. Testbench 2.3 has been released and it brings a lot of new features. I don't want to write about small bugfixes but about real improvements in testing environment. There was always one important mission in Testbench – to make testing easier for newcomers. And I am happy to show you biggest feature in this release: scaffold. Imagine you have your own application but without tests (this is the best situation for scaffolding). Now you can generate whole testing environment using this single command: vendor/bin/run-tests --scaffold tests/bootstrap.php As you can see, you have to prepare bootstrap.php before scaffold. You can find default one in readme. Content of this file can be very simple: ?php require __DIR__ . '/../vendor/autoload.php'; Testbench\Bootstrap::setup(__DIR__ . '/_temp', function (\Nette\Configurator $configurator) { $configurator-addDirectory([ __DIR__ . '/../app', ])- $configurator-addParameters([ …  přečtěte si více

Fix compatibility with Nette 2.4

legacy nette php Právě v těchto dnech přichází další významná minor verze Nette balíčků do vašich vendorů. Událo se velké množství změn a to zejména pod kapotou. To si však s sebou nese určitou daň a tou je potřeba učinit pár úprav v kódu, které zajistí kompatibilitu. Těchto úprav není mnoho. A když už jsou, tak na ně Nette upozorní třeba prostřednictvím E_USER_DEPRECATED. Pokud však pracujete se složitější aplikací, která třeba nebyla původně postavená na Nette, může být taková úprava docela lopota. Zde se tedy nedočtete co je v Nette nového, ale jak co upravit a na co jsem narazil, když jsem tuto kompatibilitu re­šil. Úpravy v Latte Jelikož pracuji na starším projektu, který je původem non-Nette, tak je zvykem používat PHP konstanty. Všude. Zatímco dříve stačilo používat {=NAZEV_KONSTANTY}, teď je nutné konstantu přímo označit {=constant('NAZEV_KONSTANTY')}, aby bylo jednoznačně jasné, že se jedná skutečně o konstantu. Jedna z velmi užitečných vlastností Latte bylo to, že nebyl problém napsat PHP…  přečtěte si více

PSR-4 autoloader aplikace

composer nette Nikdy jsem moc nelpěl na PSR-FIG pravidlech. Částečně možná proto, že jsem je nikdy moc nechápal, částečně možná proto, že nemám rád, když mi někdo něco nutí. Nekterá pravidla jsou ale docela fajn (i když se vždy něco najde). Jedním z jich je PSR-4: Improved Autoloading. Jenže proč řešit nějaký autoloading, když v Nette funguje skvěle, ani o tom člověk neví? Fakticky jsou v každém sandboxu použity minimálně 2 autoloadery a mohl bych se tedy ohánět rychlostí, protože: If there must be multiple autoload functions, spl_autoload_re­gister() allows for this. It effectively creates a queue of autoload functions, and runs through each of them in the order they are…  přečtěte si více

Magie zvaná mapping presenterů

nette Ona to vlastně ani není taková magie jako to není nikde pořádně popsané. Než se pustím to obludných složitostí, bylo by vhodné zmínit se co to vlastně mapping presenterů je. Viděli jste někde toto v konfiguraci? application: mapping: *: App\*Module\Presenters\*Presenter Určitě ano, je to totiž vykopírované ze sandboxu. Tato konfigurace říká, kde má Nette hledat presentery. Resp. pod jakým namespace. To je důležité. Na adresářové struktuře totiž v tomto případě vůbec nezáleží. Kdyby v konfiguračním souboru nebyl mapping vůbec uvedený, presenter by musel být bez namespace, tedy například \HomepagePresenter. Pokud by pak zase někdo měl raději MVC, mohl by…  přečtěte si více

Rozšíření pro DIC

DIC nette Jednu z věcí, které jsem zde na blogu moc nepopsal jsou rozšíření pro DIC (Dependency Injection Container, potomek Nette\DI\Container). A protože se chci vrátit jednodušším článkům, zaměřím se na úplně základy. Jaká je motivace k psaní rozšíření DIC a co to vlastně je? Své aplikace rozděluji poměrně důsledně na jakési balíčky (bundles – název ze Symfony). Cílem je rozškatulkovat celou aplikaci podle logických celků, tzn. každý bundle by se měl starat pouze o tu svojí věc a zároveň si s sebou nést vše potřebné. Jedná se o balíčky typu Articles, který se stará (jak sám název napovídá) pouze a jenom o články, nebo Eshop, GoPay, Media, Users, atd. Výhodou tohoto přístupu je to, že mohu kdykoliv z balíčku udělat Composer balíček a úplně ho oddělit od aplikace. Zároveň některé balíčky směřují k jednoduchému oddělení do microservices. Nevýhodou je pak to, že je to oproti běžným způsobům jak navrhovat aplikaci poměrně složité. Napsat takto aplikaci většinou zamená zasahovat do nějaký…  přečtěte si více

Jednoduché testování pro úplně každého

nette tester Konec slibů, článek je tu. Tentokrát se rozepíšu o nástroji Testbench. Testbench by měl pomoci s rychlým testováním Nette aplikace. Je zaměřen spíše integračně a vhodně doplňuje Nette\Tester, který je zaměřen spíše jednotkově. Myšlenka, která stála za vytvořením tohoto nástroje je velmi prostá – testování je složité. Je složité hlavně pro lidi, kteří dokonale nerozumí problému. Proto je tento nástroj zaměřen na rychlý start pro úplně každého (kdo si prošel alespoň quickstart a chce testovat). To se projevuje v tom, jak je Testbench postaven (viz další povídání). Testbench se sestává z různých nápadů, které jsem všude možně okoukal za posledních X měsíců a něco mě na nich zaujalo. Pojďme se tedy společně podívat jak se Testbench používá a proč ho sám rád používám pro rychlé testy. Základní nastavení testovacího prostředí U každého testování je vhodné testovat v co nejvíce čistém prostředí. Proto je dobrý nápad vytvořit si vlastní bootstrap (tests/bootstrap.php), jehož obsah může být…  přečtěte si více

ZČU - Nette je fajn, ale máme raději Javu

nette php přednáška Dnes jsem měl opět tu čest přednášet studentům předmětu KIV/WEB na fakultě aplikovaných věd (ZČU) o tom, jak se dají dělat webové aplikace pomocí webového frameworku. Je to vždy skvělý zážitek. Jako vždy sedělo v publiku (doslova) pár lidí, kteří už mají s frameworkem nějaké základní zkušenosti. Ostatní jsou většinou studenti, pro které je toto první seznámení s webovým světem a právě tato přednáška je jedna z posledních – takový vrchol pomyslného ledovce. Odnesl jsem si asi dva poznatky. Prvně – následující přednáška je moc složitá. Kdybych prezentaci dokázal zkrátit na polovinu, tak by to bylo OK. Není třeba zmiňovat se o DI, routování atd. (to jen spíš taková…  přečtěte si více