Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.3. Současně oznámila, že nadcházející větší vydání 24.04-2.0 bude mít modernější webový prohlížeč.
Ploopy po DIY trackballech či sluchátkách představuje nový externí DIY trackpoint se čtyřmi tlačítky Bean. Obsahuje snímač Texas Instruments TMAG5273, spínače Omron D2LS-21 a řadič RP2040, používá firmware QMK. Schémata jsou na GitHubu; sadu lze předobjednat za 69 kanadských dolarů (bez dopravy a DPH).
Mozilla před dvěma týdny na svém blogu oznámila, že díky Claude Mythos Preview bylo ve Firefoxu nalezeno a opraveno 271 bezpečnostních chyb. Včera vyšel na Mozilla Hacks článek s podrobnějšími informacemi. Z 271 bezpečnostních chyb mělo 180 chyb vysokou závažnost, 80 chyb střední závažnost a 11 chyb nízkou závažnost. Celkově bylo v dubnu ve Firefoxu opraveno 423 bezpečnostních chyb. Čísla CVE nemusí být přiřazována jednotlivým chybám. CVE-2026-6784 například představuje 154 bezpečnostních chyb.
Před týdnem zranitelnost Copy Fail. Dnes zranitelnost Dirty Frag. Běžný uživatel může na Linuxu získat práva roota (lokální eskalaci práv). Na většině linuxových distribucí vydaných od roku 2017. Aktuálně bez oficiální záplaty a CVE čísla [oss-security mailing list].
Ačkoli je papež Lev XIV. hlavou katolické církve a stojí v čele více než miliardy věřících po celém světě, také on někdy řeší všední potíže. A kdo v životě neměl problémy se zákaznickou linkou? Krátce poté, co nastoupil do úřadu, musel papež se svou bankou řešit změnu údajů. Operátorka ale nechtěla uvěřit, s kým mluví, a Svatému otci zavěsila.
Incus, komunitní fork nástroje pro správu kontejnerů LXD, byl vydán ve verzi 7.0 LTS (YouTube). Stejně tak související LXC a LXCFS.
Google Chrome 148 byl prohlášen za stabilní. Nejnovější stabilní verze 148.0.7778.96 přináší řadu novinek z hlediska uživatelů i vývojářů. Vypíchnout lze Prompt API (demo) pro přímý přístup k AI v zařízení. Podrobný přehled v poznámkách k vydání. Opraveno bylo 127 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Richard Hughes oznámil, že po společnostech Red Hat a Framework a organizacích OSFF a Linux Foundation, službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzorují také společnosti Dell a Lenovo. Do dnešního dne bylo díky LVFS provedeno více než 145 milionů aktualizací firmwarů od více než 100 různých výrobců na milionech linuxových zařízení.
Americké technologické společnosti Microsoft, Google a xAI souhlasily, že vládě Spojených států poskytnou přístup k novým modelům umělé inteligence (AI) před jejich uvedením na trh. Oznámila to americká vláda, která tak bude moci prověřit, zda modely nepředstavují hrozbu pro národní bezpečnost. Oznámení podtrhuje rostoucí obavy Washingtonu z rizik spojených s výkonnými AI systémy. Americké úřady chtějí v rámci předběžného přístupu
… více »
Před pár dny jsem odkýval, že se budu podílet na jednom projektu. Pak jsem ale zjistil, že se bude dělat v Php a používat se bude patrně Zend framework. Nic proti Php ani Zendu (zatím) nemám, snad jen to, že jsem v Php (a tudíž pochopitelně i Zendu) nikdy pořádně nedělal a Php téměř neznám (tím nechci říct, že existuje programovací jazyk, o kterém bych se odvážil tvrdit, že v něm umím, neodvážil bych se ani tvrdit, že umím programovat
). Inu, co neumím, to se naučím (a nebo to aspoň zkusím). Takže jsem teď po večerech, když jsem měl zrovna volnou chvilku, začal okukovat Zend. Toto tedy budou poznámky o Zednu (jestli bude síla a čas, tak těch zápisků bude víc), nebo spíš takový kompilát příkladů posbíraných různě po webu a manuálu. Třeba se to někomu bude hodit.
Zend je open source MVC framework, naprogramovaný v Pph5 (takže je naprogramován pěkně objektově), který se krom MVC snaží uplatňovat i další návrhové vzory (např. front controller). Důraz je kladen na modularitu, takže se nemusí používat cely framework, ale třeba jen některé jeho části, které se právě hodí.
Typická adresářová struktůra vypadá následovně:
zendTest/
controllers/
IndexController.php
FooController.php
models/
views/
scripts/
index/
foo/
helpers/
filters/
Vše umístíme nejlépe někam mimo web adresář, mimo dosah Apache. Do web adresáře pak dáme jen zendTest/index.php (a případně styly, javascripty etc.) a soubor .htaccess (což ovšem předpokládá, že máme v konfiguraci Apache povoleno použití htaccess souborů, načtené potřebné moduly...). Obsah souborů index.php i .htacces je vcelku prostý:
<?php require '../../zendTest/bootstrap.php';a
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.phpObsah souboru .htaccess se postará o přesměrovaní requestů, jejich url nekončí příponami uvedenými v závorce na index.php, který se jen postará o načtení souboru bootstrap.php (který leží v kořenovém adresáři naší aplikace zendTest někde mimo webový adresář). V souboru bootstrap.php se provedou potřebná nastavení (hlavně nastavení cesty k zend frameworku samotnému), načtení potřebných tříd a na závěr získání instance front controlleru a obsluha požadavku. bootstrap.php by mohl vypadat např. následovně:
<?php
//error reporting
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
//path to zend and class path
set_include_path('../../zend/library'. PATH_SEPARATOR . '../../zendTest/models/' . PATH_SEPARATOR . get_include_path());
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
//setup front controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
//path to controllers
$frontController->setControllerDirectory('../../zendTest/controllers');
//dispatch request
$frontController->dispatch();
Zavolání funkce Zend_Loader::registerAutoload(); způsobí, že nebude potřeba načítat potřebné třídy Zendu explicitně voláním Zend_Loader::loadClass('clazz'), ale při vytváření instance dané třídy se o to framework postará sám. O obsluhu všech požadavků se stará front controller, který v nejjednodušším případě dělá to, že z url určí příslušný modul a dále pak určí a následně zavolá kontroler a příslušnou akci, která se má provést. Toto určení modulu, kontroleru a akce se provádí podle klíče http://localhost/application/controller/action (případně application/module/controller/action). V případě, že není určený kontroler nebo akce, volá se automaticky IndexController, resp. indexAction.
Jestliže tedy budeme chtít vytvořit oblíbený začátečnický program "Hello world!", který se zobrazí po zadání adresy http://localhost/zendTest, musíme v adresáři zendTest/controllers vytvořit třídu IndexController, která dědí od Zend_Controller_Action, kde implementujeme akci indexAction:
<?php
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
$this->view->title = "Hello world!";
$this->view->content = "etc.";
}
}
Máme tedy kontoler, model v našem jednoduchém příkládku nevyužijeme, poslední co tedy zbývá udělat, je vytvořit nějaké view.
V adresáři zendTest/views/scripts vytvoříme adresář index (bude obsahovat view ke kontroleru IndexController) a v něm soubor index.phtml (view k akci indexAction) např. následujícího obsahu:
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->escape($this->content); ?>
<?php echo $this->render('footer.phtml'); ?>
Hlavičku a patičku umístíme do oddělených souborů, abychom je později jednoduše mohly použít pro další šablony. Zend tyto soubory očekává v adresáři zendTest/views/scripts.
Náš "Hello world" zobrazíme tak, ze do prohlížeče zadáme adresu http://localhost/zendTest (stejně tak bude fungovat http://localhost/zendTest/index nebo http://localhost/zendTest/index/index).
PS. Jestli se někdo diví, proč skripty nejsou uzavřeny tagem ?>, tak ať se podívá sem.
Tiskni
Sdílej:
).
Mnohem lepsi je pouzit Zend_Layout, tohle do view imho moc nepatri a hlavne to budes muset mit ve vsech strankach, coz je trochu opruz a taky nemuzes stejnou template pouzit pro rozdilne views.
Dale je doporucovavano mit vsech rozdeleno do "samostatnych" modulu a defautlni nazvany default. Tzn. ze v adresari application bude podadresar default a v nem potom az to co tam mas ted.
Jinak preju hodne zabavy, se ZF se da opravdu hodne rychle vyvijet.
Zend_Layout je vážně super věc. Do bootstrapu se dá něco jako:
$layout = Zend_Layout::startMvc(); $layout->setConfig($config);
V $config je uložena instance konfigurace, vytvořená např. pomocí třídy Zend_Config_Ini nebo Zend_Config_Xml (já preferuju Zend_Config_Xml) a ve svém konfiguračním XML je něco jako:
<configdata>
<production>
<layout>hlavnilayout</layout>
<layoutPath>application/layout/</layoutPath>
</production>
</configdata>
No a ve vlastním layoutu hlavnilayout.phtml pak můžeš uvést vlastní tělo HTML stránky:
<?php
$this->headMeta()->appendHttpEquiv("Content-Type","text/html; charset=UTF-8");
?>
<?= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ?>
<?= $this->doctype("XHTML1_STRICT")."\n" ?>
<html>
<head>
<?= $this->headTitle()."\n" ?>
<?= $this->headMeta()."\n" ?>
<?= $this->headLink()."\n" ?>
<?= $this->headScript()."\n" ?>
</head>
<body>
<div id="Header">
<h1><?= $this->headTitle()->getValue() ?></h1>
</div>
<div id="Content">
<!-- Tady se bude generovat vlastní tělo stránky -->
<?= $this->layout()->content ?>
</div>
<div id="Footer" class="NoPrint">Patička stránky</div>
</body>
</html>
Hlavní obsah stránky generována v controlleru se doplní v $this->layout()->code. V controlleru lze rovněž pomocí $this->_helper->layout->disableLayout() vykreslování layoutu buď úplně vypnout, nebo pomocí $this->_helper->layout->setLayout('jinylayout') nastavit layout jiný.
Musím uznat, že předtím byla práce se Zend Framework trošku složitější.
1) Třída IndexController bude v souboru zendTest/controllers/index.php? Píšeš jen složku, do které se ta třída má dát, ale ne název souboru. Nebo je to jedno?
2) Kde se ve skriptu index.phtml vzala proměnná $this? A taky mi uchází logika toho, proč index.phtml dávat do samostatné složky index/. Zatím do té logiky adresářové struktury Zendu moc nevidím
Díky