Jak udělat co nejjednodušší dotaz v MySQL tak, aby vrátil vždy nulový počet řádků? Je to blbost, ale někdy se to může hodit — spoléháte-li např. v PHP na výsledek dotazu: if ( $res->fetchRow() )
nebo počet řádků výsledků: $res->rowCount()
Můžete použít něco takového:
mysql> SELECT 0 LIMIT 0;
Empty set (0.00 sec)
jednoduché (nepotřebujete žádnou tabulku ani funkci), rychlé** a v určitých případech užitečné :) Možná to jde i jednodušeji, pokud ano, pište jak na to do komentářů, rád se přiučím.
**Benchmark (IBM ThinkPad T41 – Intel(R) Pentium(R) M processor 1400MHz)
mysql> SELECT BENCHMARK(1000000,(SELECT 0 LIMIT 0));
+---------------------------------------+
| BENCHMARK(1000000,(SELECT 0 LIMIT 0)) |
+---------------------------------------+
| 0 |
+---------------------------------------+
1 row in set (0.04 sec)
Od verze 1.5 jsou součástí Zend Frameworku i nové View Helpry. Některé jsou pouze upravené ale spousta jich je přidána. Na Zend Developer Zone včera vyšel článek View Helpers in Zend Framework, který se věnuje přehledu nových helperů.
V současnosti jsou helpry rozděleny do třech kategorií:
- Formulářové helpry – slouží pro generování formulářů a elementů spojených s formuláři
- Placeholders helpry – slouží pro generování struktury stránky, jež je poskládaná z jednotlivých segmentů do kterých lze ukládat (a načítat) obsah nezávisle. Nakonec se tyto segmenty (typicky s využitím Zend_Layout) vykreslí jako ucelená stránka.
- Utility helpry – používají se především pro přístup k ostatním komponentám ZF jako např. layout (Zend_Layout), překlady (Zend_Translate), generování URL na základě aktuálního routování (Zend_View_Url_Helper), atd.
Zajímavostí jsou i tzv. Partials helpry, které patří do třetí kategorie: Utility helprů. Ty při renderování používají vlastní prostor proměnných který si definujete. Tedy namísto:
$this->view->foo = 'neco';
$this->view->render('bar.phtml');
použijete toto:
$this->view->partial('bar.phtml', array('foo' => 'neco-jineho'));
To lze s výhodou použít v případě, kdy chcete například v cyklu renderovat stále jednu šablonu a nechcete si přepisovat nějaké “globální” View proměnné.
Další podrobnosti najdete ve výše zmíněném článku a samozřejmě také na webu dokumentace (který je prý celý postavena na ZF :-) Zendu — Zend_View.
Výchozí nastavení direktivy AllowEncodedSlashes je v Apache 2 nastaveno dle oficiální dokumentace na Off. To způsobí, že v případě že se v URL objeví %2F
, tedy “enkódovaný” znak /
(případně %5C
pro
) Apache hodí výchozí chybovou hlášku 404 Not Found
přičemž tato chyba nezohlední ani vlastní stránky 404 a vždy se zobrazuje výchozí hláška Apache.
Pokračování článku…
Routování v Zend Frameworku (ZF) není nic zvláště složitého. Stačí pouze lehce nahlédnout do dokumentance a začít používat defaultní routovaní případně si nastavit nějaká jiná vlastní pravidla.
Problém ale nastává v případě, že chcete do routování zahrnout subdomény. Na to ZF není přímo (zatím? — v době psaní tohoto článku je stable verze 1.5) vybaven a je tedy třeba použít kousek “vlastního kódu”.
Pokračování článku…
Nedávno jsem při aktualizaci Apache na jednom ze strojů zjistil, že v testing verzi Debianu (lenny) nastali nějaké zásadnější změny v konfiguračních souborech, jmenovitě v /etc/apache2/apache2.conf
které bylo třeba ručně odsouhlasit před vlastní aktualizací.
Změna se týká předávání parametrů z prostředí uživatele pod kterým je server spouštěn do konfigurace Apache serveru – environment variables. Imho velmi zajímavá a vhodná věc. O co jde?
Pokračování článku…
Jedná se o velmi triviální příklad dopředné neuronové sítě se třemi neurony a třemi vrstvami (vstupní vrstva, jedna skrytá vrstva a výstupní vrstva) a sigmoidou jako aktivační funkcí. Síť se dvěma vstupy a jedním výstupem lze naučit jednoduché logické funkce (např. XOR).
Pokračování článku…
Včera, tedy 17.3.2008, vyšla další významná stabilní verze Zend Frameworku, v tuto chvíli tedy již 1.5.0.
Hlavní novinky jsou:
- přidána komponenta Zend_Form pro generováni, validaci a práci s formuláři včetně podpory Ajaxu (Zend_Form tutoriál)
- přidána komponenta Zend_Layout a související úprava Zend_View pro snazší práci s šablonami
Dále byla přidána podpora OpenID a Microsoft’s InfoCard přes Zend_Auth komponentu, vylepšena byla podpora UTF-8 pro generování PDF, přidány funkce pro lepší integraci Ajaxu a přidány funkce pro práci se službami Google.
Více se dočtete v oficiálním ohlášení. Současně s tímto byl také přepracován web po grafické stránce pro snadnější navigaci. Takže neváhejte, brouzdejte a upgradujte ;)
Co vypíše následující kód?
<?php
$klic = 'klic';
$arr = array($klic => 'hodnota');
var_dump(isset($arr[$klic]['cokoliv']));
?>
Pokračování článku…
Výchozí instalace web serveru Apache2 na Debianu (Etch, Lenny) neobsahuje podporu SSL — tedy protokolu HTTPS. Zároveň neobsahuje ani zavedený modul mod_rewrite toliko potřebný pro krásná URL a SEO optimalizaci. Vše lze napravit několika málo příkazy.
Pokračování článku…
eAccelerator je velmi užitečný nástroj pro “zrychlení” PHP. Funguje na principu vytváření mezipaměti (cache) PHP skriptů a v případě že máte na serveru slabší stroj, nebo prostě jen potřebujete maximálně zrychlit vaše stánky je vhodné uvažovat o jeho použití. Jeho výhody se ukáží především při programování projektů založených na mnoha knihovnách, které se v průběhu vývoje nemění nebo pouze minimálně. eAccelerator vytvoří cache všech těchto PHP skriptů a není tedy nutné je při každém načtení stránky znovu kompilovat.
Pokračování článku…