Samsung na akci Galaxy Unpacked July 2026 (YouTube) představil své nové telefony Galaxy Z Fold8 Ultra, Fold8 a Flip8, hodinky Galaxy Watch Ultra2 a Watch9 a chytré brýle ve spolupráci s Gentle Monster a Warby Parker.
Po pěti letech vývoje vyšla česká počítačová hra Scarlet Deer Inn (ProtonDB). Scarlet Deer Inn je vyšívaná temná středověká pohádka. Zatímco život ve zdánlivě obyčejné vesnici se točí kolem běžných povinností a sousedských drbů, v podzemí se skrývají zlověstná tajemství.
Představen byl Raspberry Pi Touch Display 2 s uhlopříčkou 10 palců a rozlišením 1200 × 1920 pixelů. Cena je 80 dolarů.
RPCS3 (Wikipedie), tj. open source emulátor Sony PlayStation 3, snížil minimální požadavky. Nově jsou podporovány starší grafické karty ATI Radeon řady HD 2000, 3000 a 4000 z let 2007 až 2009. Na PC běží už 75 % všech her pro PlayStation 3. V budoucnu bude RPCS3 fungovat bez firmwaru z PS3. V RPCS3 byl implementován systémový modul cellSysmodule (𝕏).
Vyšel open-source nástroj winetop (MIT) — nativní CLI/TUI pro sledování a ukončování Wine, Proton, Lutris, Heroic a Bottles sezení. Seskupuje procesy podle WINEPREFIX / Steam AppId, umí bezpečně zabít jen hru (včetně Steam reaperu) a nabízí i skriptovatelné příkazy (list, kill, orphans, …). Balíčky jsou mimo jiné na crates.io, Copru (dnf copr enable kovariadam/winetop), PPA ppa:kovariadam/winetop a AUR (winetop-bin).
Ve spolupráci společností OpenAI a Work Louder byla představena (𝕏) hardwarová klávesnice Codex Micro pro práci s AI agenty. Cena klávesnice je 230 dolarů.
Byl vydán Mozilla Firefox 153.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 153 bude brzy k dispozici také na Flathubu a Snapcraftu.
V linux-cve-announce bylo oznámeno 433 zranitelností za jediný den (19. července).
Byla vydána nová verze 5.44 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 71 vývojářů. Změněno bylo přibližně 270 tisíc řádků v 1 300 souborech. Přehled novinek a změn v podrobném seznamu.
Na 23. září 2026 je do bratislavské Nové Cvernovky naplánovaná jednodenní konference #nobullshit.camp pro tech leadery, DevOps a platform inženýry. Mají tu zaznít upřímné příběhy z praxe o tom, co v produkčních systémech reálně fungovalo, co se pokazilo a co si z toho lidé odnesli. Témata pokrývají tři oblasti – DevOps a platformy (Kubernetes, cloud, provoz systémů), firemní kulturu a leadership. Program běží ve dvou formátech: hlavní
… více »Minule jsem mimo jiné napsal něco v tom smyslu, že příchozí požadavky jsou obsluhovány front controllerem, který se zjednodušeně řečeno stará o zavolání příslušného kontroleru. Než se budu zabývat něčím dalším, bylo by asi dobré si aspoň trochu vyjasnit, co přesně se při zpracování požadavku děje.
Celý proces je dobře znázorněn na následujícím obrázku (převzatý z manuálu Zendu):
Je zde v podstatě znázorněno, jak je v Zendu implementován (třída Zend_Controller_Front) návrhový vzor Front Controller. Příchozí požadavek je obvykle reprezentován třídou Zend_Controller_Request_Http (obecně třídou Zend_Controller_Request_Abstract, třída Http je její potomek), která kromě parametrů obsahuje informace o jménu kontrolertu a akce, která má tento požadavek zpracovávat (a některé další informace). Zend_Controller_Front je singleton, což znamená, že vždy existuje jen jedna jeho instance. Tato třída také, mimo jiné, registruje pluginy, které umožňují jednoduše rozšiřovat její možnosti bez nutnosti vytváření jejích potomků. Pro obsloužení požadavku se na instanci této třídy obvykle volá metoda dispatch(), která se skládá ze tří částí:
Jako první je tedy zavolán router, jehož úkolem je zjistit, jaký kontroler a akce mají požadavek obsloužit. Minule jsem psal, že toto určení probíhá na základě URI podle klíče aplikace/modul/kontroler/akce. Tento proces ale může být složitější, můžeme např. sami definovat pravidla (pomocí Zend_Controller_Router_Rewrite), na jaký konroler se má daná URI mapovat a pod. (o tomto podrobněji někdy jindy). Proces routování může pro každý požadavek proběhnout jen jednou.
Následuje dispatching, což je proces, při němž je z požadavku zjištěn název kontroleru a akce, vytvoří se instance kontroleru (který musí být potomkem třídy Zend_Controller_Action) a na ní se zavolá příslušná metoda. Tento proces, na rozdíl od routingu, může pro daný požadavek proběhnutou vícekrát. Probíhá ve smyčce tak dlouho, dokud není na požadavku nastaven atribut isDispatched na hodnotu true (po vstupu do smyčky je tento atribut automaticky nastaven na true, takže pokud nechceme požadavek předávat dalšímu kontroleru, nemusíme se o nic starat). Naopak další cyklus smyčky nastane např. když v nějaké akci kontroleru zavoláme metodu _forward(). Jak je vidět z obrázku, dispatchingu samotnému předchází ještě predispatching a před vyhodnocením, zda bude smyčka pokračovat dalším cyklem se volá postdispatching. Tyto metody se ale nevolají na front controlleru, ale action controlleru (potomek Zend_Controller_Action) nebo na pluginech. Stručně řečeno, pluginy kontroleru jsou potomky třídy Zend_Controller_Plugin_Abstract. Jak bylo řečeno v úvodu, můžeme je zaregistrovat u front controlleru a tak rozšiřovat jeho možnosti (implementováním metod preDispatch() a postDispatch() a dalších).
Vše si ukážeme na krátkém příkládku. Vytvoříme kontroler, který bude obsluhovat přístup k nějaké části aplikace, která bude přístupná jen pro přihlášené uživatele. V kontroleru implementujeme metodu preDispatch(), která před tím než bude na kontroleru vykonána nějaká akce zkontroluje, zda je uživatel přihlášený (o tom, jaké Zend poskytuje možnosti pro autorizaci a autentizaci taky snad někdy jindy
. Pokud uživatel nebude přihlášený, přesměrujeme jej na přihlašovací stránku:
<?php
class RestrictedController extends Zend_Controller_Action
{
public function preDispatch($request){
$auth = Zend_Auth::getInstance();
if(!$auth->hasIdentity()){
$this->_redirect('auth/login');
}
}
/*
public function indexAction(){
//something
}
*/
}
Měli bychom ještě implementovat alespoň index akci, ale jelikož zatím uživatel nemá žádný způsob jak se přihlásit, tak je to v tuto chvíli zbytečné, přes predispatching se stejně nedostaneme. Potřebujeme ale vytvořil AuthController. Nejběžnější způsob autentizace je vyplnění formuláře s loginem a heslem. O formulářích ale taky někdy jindy, takže zatím akci login taky dělat nebudeme. Pokud framework na kontroleru nenajde požadovanou akci, pak na kontroleru zavolá metodu __call(). Implementujeme tedy aspoň tuto metodu, která zobrazí nějakou stránku, že požadovaná stránka ještě není hotová (místo toho bychom mohli použít třeba Zend_Controller_Plugin_ErrorHandler, ale to bychom musel ještě vyrobit ErrorController a zbytečně by se nám příklad komplikoval
:
<?php
class AuthController extends Zend_Controller_Action
{
public function __call($method, $args)
{
$this->view->errorMsg = 'Sorry, login page not done yet!';
return $this->render('error');
}
/*
public function loginAction(){
//handle login
}
*/
}
Na závěr ještě doplním, že když byla řeč o kontolerech v Zendu, tak bych určitě měl zmínit, že existuje něco jako action helper, ale o tom taky až někdy jindy (snad
Tiskni
Sdílej: