Na YouTube se to poslední dobou novinkami jen hemží – např.
22. listopadu startuje živé vysílání. Co ale potěší
mnohem více je (oficiální) kanál Monty Python.
Díky tomu si konečně můžete vychutnat třebas Ministerstvo
podivné chůze v dobré kvalitě.
Host Hit Counter (HHC) je trošičku krkolomný název pro
multi-uživatelské počítadlo přístupů
nebo chcete-li návštěvníků webu. Do psaní tohoto počítadla jsme se
pustil vlastně ze zoufalství, protože mi žádné jiné
nevyhovovalo. Při psaní tohoto počítadla jsem se snažil držet hesla:
V jednoduchosti je krása. Snad to jde vidět
na první pohled.
Výsledkem je počítadlo přístupů, které dle mého názoru nikoho
neomezuje. Je dobře rozšířitelné o další funkce a hlavně je velmi
jednoduché k použití
HHC počítadlo:
- nevyžaduje žádnou registraci – přístupy se počítají na základě
zvoleného klíče
- umí počítat uživatele online / celkové návštěvy / návštěvy
za den
- vložíte do stránek několika způsoby (AJAX, HRML, PHP)
- generuje na výstupu text, xml nebo gif
- dokáže komunikovat s několika databázemi (Díky Dibi)
Jednoduchý požadavek na započtení přístupu můžete vytvořit
např. takto:
<img style="display:none;" src="http://www.example.cz/hit/nabito.net/gif" alt="" />
HHC počítadlo můžete stahovat ze stránek Google Code nebo
se podívejte na oficiální stránky.
And now in English 
This is simple host PHP hitcounter. Basically is webmaster tool for
calculating sites visitors. The main output is XML/text or empty GIF. Basic
functionalitys are: count hits by day / counts online users / count total
visitors. This counter is possible very simple add to existing website – by
inserting empty GIF image on specific page. Key features are low space usage /
multiple databases access (by Dibi PHP).
Visit Google Code Page: http://code.google.com/…tcounterphp/
Před dávnou dobou jsem zde psal o DBDesigneru – tento nástroj
není špatný, ale za dobu jeho používání jsem narazil na celou
řadu chyb. Někdy se tento program chová zcela v rozporu
s očekáváním uživatele. Kdo jej používal, asi ví o čem mluvím
(např. zcela nahodilé číslování tabulek a atributů). Nicméně jak se
říká: zadarmo je i ocet sladký.
Na DBDesigner můžete teď s klidem zapomenout. Tvůrci MySQL už nějaký ten
čas vyvíjejí nástroj
MySQL Workbench, který vychází
právě z výše zmíněného DBDesigneru.

MySQL Workbench je cross-platform vizuální nástroj pro
správu (návrh) MySQL databází, který si zamilujete od chvíle, co jej
spustíte. V současnosti můžete stahovat verzi
5.0.26. Program je samozřejmě zdarma a skvěle se doplňuje s MySQL Admin Tools.
Při testování jsem zatím nenarazil na žádnou chybu.
Takže se těším, že mi tento nástroj pomůže zvýšit
produktivitu podobně jako třebas Eclipse PDT.
Cheat sheet je něco, co by se dalo volně přeložit jako
tahák. Taháků (Cheat sheet) existuje celá řada. Obvykle
soustředí na specifickou, úzce vymezenou oblast. Existují
taháky pro různé frameworky, programovací jazyky, programy atd. stačí jen
pohledat. Hlavní snahou je vytvořit přehledný a pohotový zdroj
základních informací.
Rozhodl jsem se vypustit do světa také jeden příspěvek a sice
Cheat sheet
pro Google Maps.

Prozatím je v angličtině, do budoucna plánuji překlad do češtiny.
Případně nějaké další nové verze, doplnění atd. Snad
se Vám bude hodit…
Troška teorie ze startu. Geokódování je proces, kdy se
adrese (např. Ostrava 17. Listopadu 25) přiřadí číselné souřadnice.
Nejčastěji jsou tyto souřadnice zeměpisná šířka a délka (GPS).
Reverzní geokódování je samozřejmě proces opačný,
kdy nějakému bodu (souřadnicím) přiřadíte konkrétní adresu. Oba tyto
procesy umí Google
Maps API.
Geokódování adres, s využitím Javascriptu, Google Maps už nějaký ten
čas
dokáže. Nově však
přidal možnost geokódování
přes HTTP. Metodu GET můžete předat celkem 6 parametrů, tři
nejdůležitější jsou:
- q – samotná adresa
- key – Váš API klíč
- output – JSON nebo XML (KML)
XML se souřadnicemi Ostravy naleznete na adrese:
http://maps.google.com/maps/geo?q=Ostrava&output=xml
Reverzní geokódování je možné pouze prostřednictvím javascript
objektu GClientGeocoder.
Operace getLocations požaduje dva parametry, první z nich jsou souřadnice a
druhý handler, tedy funkce – která se má zavolat po dokončení operace.
Malá příklad dle
dokumentace:
var map;
var geocoder;
function initialize() {
map = new GMap2(document.getElementById("map_canvas"));
map.addControl(new GLargeMapControl);
GEvent.addListener(map, "click", getAddress);
geocoder = new GClientGeocoder();
}
function getAddress(overlay, latlng) {
if (latlng != null) {
geocoder.getLocations(latlng, showAddress);
}
}
function showAddress(response) {
alert(response.name);
}
Očekávané se stalo skutečností. Google se stal poskytovatelem OpenID.
Takže můžeme (snad) konečně zapomenout na stovky
zbytečných registrací, kde stále vyplňujeme jméno, heslo, email,
přezdívku atd. Prostě vše jednou vyplníme ve svém Google
Account. A pak už jen bude stačit místo registrace zadat svůj
email a odkliknout jedno povolení.
Všechno je to tak trošku hudba budoucnosti. Ale služeb,
které podporují OpenID, pomalu přibývá. Takže nezbude než doufat.
Každopádně tento krok je velkým vítězstvím (možná
i záchranou) specifikace OpenID. Specifikaci totiž šlape
na paty Facebook nebo Microsoft
se svým LiveID.
Proti Facebook a LiveID má OpenID jednu velkou nevýhodu.
Uživatele ho neznají, netuší jak vypadá logo
(viz. studie Yahoo).
Zatímco logo Google,
Yahoo, MySpace, nebo Microsoft (ano i ten je poskytovatel)
zná každý.
Následující obrázek znázorňuje celý
procesu
přihlašování. Jak je vidět, tak požadavky na uživatele jsou
minimální, spíš komunikuje Google s třetí stranou (Web application).

Popis toho, jak vše funguje, naleznete na stránkách Google
Code. V současnosti probíhá limitované testování, do kterého je
zapojeno několik služeb třetích stran (Zoho, Plexo, BuxFer). Co napsat závěrem? Napadlo mě: Mějte
se krásně a buďte Open
.
Autoload je velmi
užitečná funkce PHP 5, sloužící k automatickému
načtení tříd (souborů). Autoload je vlastně takové
vylepšení require_once (include). Funkce __autoload se zavolá v případě,
že požadujete třídu, která prozatím neexistuje.
Následující kód stačí vložit do core.php. Pokud máte rádi
pořádek a své class umisťujete dle jejich významu do různých
adresářů, je nutné nejprve nastavit include path.
define ('DS', DIRECTORY_SEPARATOR);
define ('ABSPATH', realpath(dirname(__FILE__)).DS);
set_include_path
(
ABSPATH.'libs'.DS.'core'.DS.PATH_SEPARATOR. ABSPATH.'libs'.DS.'helper'.DS.PATH_SEPARATOR. get_include_path()
);
Většinou je dobrým zvykem dodržovat nějakou strukturu
pojmenování tříd. V mém případě jsou třídy pojmenované
class.nazev.php. Funkce __autoload bude vypadat následovně:
function __autoload($class_name)
{
if (!class_exists($class_name, false) ||
!interface_exists($class_name, false))
require_once ('class.'.$class_name.'.php');
}
Tento kód si uložte např. do aload.php, pak už jen stačí
napsat require_once(‚aload.php‘); kdekoliv, kde budete potřebovat
pracovat se svými class.