Hierarchický router

doctrine nette routování Tento článek volně navazuje na předchozí. Zde jsem ukázal, jak vytvořit routy tak, aby bylo možné mít zcela libovolnou adresu a routovat ji na jakoukoliv akci v aplikaci. Dnes to trošku vylepšíme. Přidáme totiž další dva požadavky s tím, že první je ten důležitější: Když se změní adresa (například článku), musí se stará přesměrovat na novou. To se může dít opakovaně a nechceme mít mnohonásobný redirect. Redirect může být maximálně jeden a to pro jakoukoliv starou (i původní) adresu. Bude možné vytvořit jakoukoliv adresu, která bude přesměrovávat na jakoukoliv jinou. Druhý požadavek je vlastně jen speciální (zjednodušený) případ toho prvního. Co to znamená? Podívejte se na následující ASCII art. Obsahuje pět obrázků znázorňujících postupné změny přesměrování při přidávání dalších přesměrování. Nebudeme již řešit routování na akce v presenterech, ale práci se samotným URL a jak se bude chovat, když se přesměruje aktuální cílové URL jinam. URL-1 URL-1 ---- URL-2 URL-1 --…  přečtěte si více

Dynamické routování URL adres

nette routování A když říkám dynamické, tak tím myslím opravdu kompletně. Jinými slovy to znamená, že chceme jakoukoliv cestu za doménou přeložit na jakýkoliv interní požadavek (Application\Re­quest). Kousek routovací tabulky tedy může vypadat následovně: / = Front:Homepage:default /neco.html = Front:Page:default /neco-jineho-8 = Front:Page:default(id=56) /neco/treba/takoveho = Front:Page:default(id=96) /a/b/c/d/e/f = Admin:Dashboard:new ... Tím jsem doufám dostatečně přesně nastínil zadání a od toho se odvíjející požadavky na router. V URL…  přečtěte si více

Vzhůru dolů! A pak zase nahoru...

úvaha Na relativně dlouhou dobu jsem se teď odmlčel. Psal jsem totiž někam jinam než na blog a svůj příděl písmenek na měsíc jsem odevzdával právě tam. Ale stálo to za to. Totiž jak se to vezme. Projděme si sled událostí. Událost první. Poprvé jsem představil svůj projekt na FAV, kde studenty zaujal a na konci přednášky se kolem samotného projektu utvořil hlouček zvědavců toužící prohlédnout si zařízení lépe. Událost druhá. Představil jsem tento projekt širší veřejnosti na Barcampu v Plzni a získal jsem velkou spoustu negativních reakcí. Samotná zadávající firma se dále přestala o tento projekt více zajímat a musel jsem se s tím chvíli pasovat, abych věděl na čem jsem.…  přečtěte si více

Fixněte si databázi

doctrine kdyby nette Možná to znáte. Již nějaký čas nepoužíváte žádný SQL soubor a strukturu databáze si generujete z entit pomocí Doctrine. Je to super, rychlé a funguje to. Paráda. Jenže málokterá databáze se obejde bez nějakých inicializačních dat. Jenže jak na to? První přístup Nebudu ho popisovat moc dlouho, protože ukazuje přesně to, co nechci ukázat. Jendoduše si napíšete nějaké to SQL, které pak nahrnete do databáze. Třeba nějak takto: REPLACE INTO `options` (`key`, `value`) VALUES ('option1', 'value1'), ('option2', 'value2'), ('option3', 'value3'); To jak si to pošlete do databáze je celkem jedno. Jestli ručně, nebo přes PHP. Pořád někde zůstává SQL. Proč mi to vadí? Tak třeba zde na blogu je nějaká instalace. A protože jsem se ještě nedokopal k tomu to přepsat, tak musím mít tyto soubory dva. Jeden pro MySQL a druhý pro PosgreSQL. (Jo správně, blog jde nainstalovat na více databází…) A to je voser. Ale jsou i projekty, kde jsem to udělal rovnou pořádně (i když jsou jen na jedné databázi). …  přečtěte si více

Doctrine pro non-doctrine programátory

doctrine nette posobota A také o tom proč jsem se ptal kdo studoval, studuje, nebo bude studovat elektrotechnickou fakultu a proč jsem si až pak uvědomil, že jsem se vlastně zeptal úplně blbě. Ale napřed k samotné přednášce. Nemá smysl zde psát dlouhosáhlé slohy o tom co jsem říkal, počkejte si na video. Pár slov si však neodpustím. Myslím si, že jsem málo zdůraznil to, aby si každý koho to alespoň trošku zajímá Doctrine vyzkoušel. Ale ne jen tak si něco uložit a přečíst z databáze. Já jsem si například přepsal tento blog. Kompletně. Udělejte něco podobného. Teprve potom se ukáže jaké jsou výhody/nevýhody a hlavně – teprve teď se můžete rozhodnout co vám více sedí, protože už máte vyřešené nějaké konkrétní problémy, ne jen modelové situace. Výměnou za hvězdičku se můžete inspirovat například zde. A co když si nevíte rady? To nevadí. Stává se to často, proto existuje spoustu míst kde se ptát. Jedno je samozřejmě zde. Existuje však Nette fórum a pak (a to hlavně) Kdyby HELP fórum. Na všech místech vám…  přečtěte si více

Barák budoucnosti

barcamp Aneb jak jsem poprvé a naposledy přešlápl. Je to jednoduché, nebudeme si nic nalhávat. Ještě jsem nepochopil smysl Barcampu. A tak se stalo, že jsem si připravil povídání o něčem, co nikdo moc nechápal. Jistě že mě to trošku mrzí, zároveň mi však přijde absurdní, že někdo přijde na přednášku, kde jsem upozorňoval v anotaci na použité technologie, které budou ve vyprávění zahrnuty a pak jsem slyšel, že někdo vůbec nevěděl o čem je řeč. To je ale kapitola sama pro sebe… (-: Poučím se a děkuji za feedback. Bylo to tak půl na půl. Půl lidí mi opakovala vlastně jednu a tu samou věc. Že to bylo moc složité. Že bylo potřeba znát hodně věcí okolo, aby se mohl člověk…  přečtěte si více

Generované továrničky - definitive guide

nette No dobře, možná ne úplně definitivní, ale užitečná příručka snad. Pokusím se zde rozebrat všechny potřebné stavy generovaných továrniček, které považuji za důležité a jejich co nejjednodušší zápis v configu. Jedná se hlavně o pohled z hlediska předávání parametrů. Doufám, že to ještě někdo doplní o nějaké vylepšení, nebo další příklad, abych mohl tento seznam rozšířit. To je jeden ze dvou důvodů tohoto typu článků. Ten druhý je, abych měl kam odkazovat, až se mě někdo bude opět ptát. Celkem rozebírám tyto jednotlivé případy: Předání parametru z presenteru Předání parametru z konfiguračního souboru Metodou „create“ Metodou „arguments“ All in…  přečtěte si více

Dva příklady toho, proč není JS připravený

javascript NodeJS Tento článek nastartoval jeden hloupý tweet. Měl jsem jej na „to do“ listu již nějaký čas, ale čekal jsem až to někdo tweetne… (-: @MartinSadovy Možná ale to není podstatné. Podstatné je, že JS běží v prohlížeči i na serveru. Isomorphism ftw. PHP je evoluční mrtvola. — Daniel Steigerwald (@steida) January 3, 2015 Nebudu řešit jak je hloupý. Neznám totiž žádnou objektivní stupnici kam bych jej mohl zařadit. Pomůže mi však oprášit pár věcí, které mě štvou a třeba se ukáže, že to dělám úplně špatně. Poslední dobou totiž kopu za Node.js (potažmo Express.js), C i Nette tábor. Vše v jednom projektu. Nicméně jsem odkojen na Nette a tak některé věci řeším v jiném frameworku téměř až se slzou v oku. Rád bych upozornil na to, že nejsem žádný superprogramátor, takže je skutečně možné, že k problému přistupuji špatně. Proto bych byl rád za rozumné podněty a připomínky, nikoliv osobní výstřednosti v komentářích… 1. Odkazy A hned pěkně z ostra. Jak jsem již zmínil, jsem odkojen na…  přečtěte si více

RESP protokol - přímý přístup k Redis databázi

NodeJS redis RESP (REdis Serialization Protocol) je něco, s čím se asi většina lidí nepotká. Důvod je prostý. Tento protokol je většinou zabalen hluboko v knihovně, která pracuje s Redis databází. Existují však situace, kdy se tento protokol hodí. Jednou ze situací je stav, kdy potřebujete předat, nebo naopak získat z Redisu nějaká data a všechno ostatní vyjma RESP komunikace je zbytečné zdržování (u mě třeba sypání dat z procesoru přímo do Redisu). Druhý případ nastane v okamžiku, kdy potřebujete zajistit komunikaci klient-server a potřebujete zvolit vhodný formát přenosu informací. Jedná se tedy o použití tohoto protokolu úplně mimo Redis. Důvodů může být celá řada, nejhlavnější by však byl asi ten, že se s RESP formátem dat dá snadno pracovat, protože používá prefixový zápis. Formát RESP protokolu RESP používá celkem 5 způsobů jak zaobalit přenášenou informaci. Vždy však platí, že první byte je byte určující o jaký formát se jedná: + jednoduchý string - error : integer $ bulk string…  přečtěte si více

Poslední přednáška na FAV - Nette

kdyby nette Tak a je to… (-: Zveřejňuji mojí poslední přednášku v tomto roce, kterou jsem měl na ZČU na fakultě aplikovaných věd pro studenty předmětu KIV/WEB. Tentokrát jsem si pohrál trošku se zvukem, takže by to oproti minulému týdnu mělo být o mnoho lepší. Tématem této přednášky byl můj oblíbený Nette Framework, konkrétně ve verzi 2.3-dev. Cílem bylo seznámit studenty se základní myšlenkou MVC/P a rychle nastínit o co vlastně v Nette jde a jak se v něm staví jednoduché aplikace. Přednáška nakonec utekla rychleji než jsem čekal a nemohl jsem ukázat vše, proto jsem připravil repozitář na GitHubu ze kterého by mělo být vše jasné (pokud není, můžete se ještě dodatečně ptát).…  přečtěte si více