úterý 30. ledna 2007

Velký nákup

Dnes jsem si v Tesku koupil plno praktických věcí:
  • 18 praktických piv Carlsberg. Docela mě překvapil výběr českých piv. Oproti Sainsburymu, kde nakupuji častěji měli Plzěň, Budvar, Staropramen a Ještě jakýsi podivný pivo, který jsem v životě neviděl a nepomatuju si, jak se jmenuje. Všechny ve skle asi za £1,6.
  • 1 aspirin - to nemá žádnou sovislost s těma pivama. To pro případ, že by mě někdy bolela hlava. Líbí se mi, že se léky dají koupit v normálním obchodě a nemusí se pro ně do lékárny.
  • Původně jsem měl v plánu koupit si ještě další praktické věci, ale nechám to na jindy.
Nejvíc mě překvapilo, když se mě prodavačka zeptala, jestli mi už bylo 21. To nechápu.


Transport Tycoon
Už mám rok 1995, $12.954.300, 15 letadel, 30 vláčků, 24 autobusů, 3 lodě.

neděle 28. ledna 2007

Transport Tycoon


Mám $2.962.054, 3 lodě, 12 letadel, 15 vláčků a 28 autobusů. Nevolejte mi a nepište mi, protože teď hraju Transport Tycoon.

pátek 26. ledna 2007

Huňáč a Fuňáč

Až vás někdy napadne stáhnout si vánoční CD Od Jarka pod stromeček do svého MP3 přehrávače, tak rohodně doporučuji vynechat pohádku Jak Huňáč a Fuňáč pořádali olympiádu. Rychle se to oposlouchá.

středa 24. ledna 2007

Výjimka potvrzuje pravidlo

Tak já napíšu, že v Londýně nesněží a druhej se jdeme koulovat. To sem nečekal.
A podle BBC to ještě nespadlo všechno.

PHP a SQL Nové poznatky

S tímhle jsem si dnes hrál celej večer:

Výpis hodnot objektu třídy se speciálnímy znaky v klíči

Takhle vypadá SQL příkaz (používám knihovnu ezSQL):
$id = $db->get_results("SELECT MAX(id)
FROM inzeraty
WHERE majitel LIKE '$login'
");

Takhle vypadá výpis print_r($id):
print_r:Array
(
[0] => stdClass Object
(
[MAX(id)] => 60
)
)

A tohle se stane, když se pokusím vypsat hodnotu (echo $[id]->MAX(id);):

Fatal error: Call to undefined function: max() in inzerat.php on line 36

A takhle to je správně:

echo $[id]->{'MAX(id)'};

Následně jsem přišel na to, že stačilo pozměnit SQL příkaz:
$id = $db->get_results("SELECT MAX(id) as id
FROM inzeraty
WHERE majitel LIKE '$login'
");

... potom se to vypíše jako echo $id->id :)

Mazání souboru

Taky jsem poměrně dlouho snažil smazat soubor pomocí PHP. Nakonec úspěšně:
unlink(soubor_krery_chci_smazat);

Londýnské (Britské) Speciality II

  • Zkratky - bez znalosti některých zkratek si ani nepřečtete noviny. Například: NHS (čti "en ejdž es") - National Health Service, MP - kupodivu není Military Policie, ale Member of Parliament, čili poslanec, PM - Prime Minister a SE, nebo taky LSE - (London) Stock Exchange, čili burza.
  • Sníh v Londýně - v Londýně nesněží. A když náhodou zasněží, tak je to velká sláva (to jsem ještě ale nezažil). Má to na svědomí Golfský proud, který na Británii žene teplou vodu od rovníku. Naposledy prý pořádně zasněžílo v roce 1963 viz. Winter of 1963 (Wikipedia).
  • Letadlová obloha - nad Londýnem lítá tolik letadel, že přes ně není skoro vydět na hvězdy. Londýn má celkem 5 mezinárodních letišť, z toho 2 jsou přímo v Londýně (Heathrow a London City) a další jsou tak plus-mínus 50 Km od něj (Stansted, Luton, Gatwick). Z Brna se dá letět přímo jenom na Stansted a odtud cca 1,5 hodiny autobusem (£ 7-10), nebo cca 40 minut vlakem (asi £ 14) do Londýna.

neděle 21. ledna 2007

PHP Sessions

Na co to je?
Uvedu příklad: potřebuju předat proměnnou skriptu, použiju POST nebo GET, jak je libo. Například <a href="index.html?promenna=hodnota">Go</a> a je to.
Příklad druhý: potřebuju předat několik proměnných a to jak při přechodu na další stránku, tak i na následující stránku a další a další ... Můžu použít postup z příkladu č. 1 a nebo použiju session a v ušetřeném čase si můžu okusovat nechty na nohách.

Jak na to?
Dost důležitý je mít session zapnutý tzn. podívat se do php.conf a zapnout to. Mám ale pocit, že to implicitně zapnutý je.
Chci teď vytvořit skript (auth.php), který budu includovat do každé stránky a bude zajišťovat autorizaci uživatele. Ten bude vypadat asi takto:
<?

// Spustení session
session_start();

// Odhlaseni uzivatele
if ($_GET['akce'] == "odhlasit")
{
session_destroy();

echo "Byl jste odhlášen ze systému.<br>\n";

exit; // Provadeni skriptu se prerusi
}

/* Pokud byly predany promenne z formulare, ulozi se do
* session
*/
if (isset($_POST['formLogin']) OR isset($_POST['formHeslo']))
{
$_SESSION['login'] = $_POST['formLogin'];
$_SESSION['heslo'] = $_POST['formHeslo'];
}

// Ochrana proti SQL Injection
if (isset($_SESSION['login ']) AND (!ctype_alnum($_SESSION['login'])
OR !ctype_alnum($_SESSION['heslo'])))

echo "Jméno, nebo heslo obsahuje nepovolené znaky!";

exit;
{
// Pokud je zadáno jméno, nebo heslo, porovná se s databází
if (isset($_SESSION['login']) AND isset($_SESSION['heslo']))
{
$error = mysql_query("SELECT 1
FROM users
WHERE login = '".$_SESSION['login']."'
AND heslo = '".$_SESSION['heslo']."'
", $spojeni);
}

/* Pokud je heslo špatné => prázdný výpis z databáze, vypíše
* se formulář a ukončí skript
*/
if ($error == "")
{ // Nebylo-li jmeno nebo heslo, predane formularem spravne
if (isset($_POST['formLogin']) OR isset($_POST['formHeslo']))
{
echo "Špatné jméno, nebo heslo.<br>";
}

?>

<p>Nejste prihlášen do systému.</p>

<form action="<? echo $_SERVER['PHP_SELF'];
?>" method="post">
Login: <input type="text" name="formLogin"
value="<?php echo $_POST['login']; ?>"><br>
Heslo: <input type="password" name="formHeslo"><br>
<input type="submit" value="Přihlásit">
</form>

</body>
</html>
<?

exit;
}

/* Heslo musi byt v tomto miste spravne, pokracuje se ve
* skriptu
*/
if (isset($_SESSION['login']))
{
echo "Přihlášen jako: ".$_SESSION['login']." <a href=\"".
$_SERVER['PHP_SELF']."?akce=odhlasit\">Odhlasit</a>";
}

?>

Co ve skriptu chybí?
Otevření databáze - počítám s tím, že je otevřená
Ošetření chyb databáze - to se mi nechtělo
Automatické odhlášení - řeším to časovým kódem v databázi, který pokaždém spuštění skriptu přepíšu
Šifrování hesla v databázi - to se mi taky nechtělo, ale funkce md5() si s tím poradí
Chyby - zřejmě nechybí, ale jde mi jen o vysvětlení, jak funguje session

Jak to funguje?
K přenosu dat mezi stránkama, resp. klíče identifikujícího data se používá GET, nebo Cookies, nebo obojí, záleží na nastavení serveru a klienta.

Ještě něco?
Vlastně si to píšu sám pro sebe, abych věděl, až to zapomenu, kam se mám podívat. Nicméně přivítám jakékoliv připomínky.

sobota 20. ledna 2007

Myška

Tak jsem si byl pořídit novou myšku. Taková malá, černá, roztomilá myška, s ocáskem na USB. Stála mě £6.99 a navíc podložka pod myš zdarma a s pěkným obrázkem. Jenže! Příjdu domů, zapojím, zahejbu a co nevidím, ona není optická, místo světýlka má zespod kuličku! Já bych tam těm Čiňanům poslal kýbl Semtexu.

pátek 19. ledna 2007

Pořád veselo

Dnes náš mad chef vymyslel velmi melodickou písničku, kterou si zpíval celý den a ke konci ji naučil taky všechny ostatní a ještě přidal tleskání. Já jsem se odmítl přidat, protože mi vadil fakt, že každý verš začíná mým jménem.

Dohodl jsem se s manažerkou, že koncem dubna se vracím domů. Mimo to předpokládám, že někdy příští měsíc (nejdřív 9.) se stavím.

Ten komplikovaný semafor je možné vidět na Canary Wharf v Londýně. Je mimochodem uprostřed kruhového objezdu, takže nehrozí, že by nějak mátl řidiče. Tady je letecká mapa.

National insurance number

National insurance number (dále IN) - tuhle věc musí mít každý zaměstnanec v Británii. Jedná se o číslo identifikující zaměstnance kvůli daním, pojištění a kdo ví čemu ještě. Problém je v tom, že vyřízení žádosti o tohleto číslo může trvat 16 týdnů (podle informací z Jobcentre, kde to mají na starost). Pokud zaměstnanec nemá toto číslo, je mu přiděleno zaměstnavatelem číslo dočasné ...

(Edit: Informace byly poněkud nepřesné, tak jsem to raději zkrátil)

čtvrtek 18. ledna 2007

Cache #58

Dnešní keška (A place of rest overlooking the valley) teda stála za to. Nejdřív jsem se projel po rozbahněné louce asi tak 10 metrů dolů. Naštěstí, přestože to byl výběh pro krávy, tam nebyly žádný kravince. Potom začalo pršet a pěkná cestička se proměnila v potok. Následně přestalo pršet, ale začal foukat vítr. To by normálně nebylo na škodu, kdyby kolem nezačaly padat větve a stromy. Obrovskej strom hned vedle kešky se zřítil přímo přede mnou (viz. foto). Z kešky jsem ukořistil Zoot's Eiffel Tower TB a nakonec jsem si při logování ještě rozřízl nohu. Spátky jsem šel celej od bahna, s roztrhlýma kalhotama a nohavice celá od krve. Ale stálo to za to :)

středa 17. ledna 2007

Londýnské (Britské) Speciality I

Rozhodl jsem se vytvořit takový malý seznam na pokračování všech drobných odlišností a specialit, se kterými se v Londýně a v Británii setkáte, které vás překvapí, ale většinou se o nich nikde nedočtete.
  • Debilní kohoutky - to je ta největší blbost, se kterou jsem se zatím setkal. Normální vodovodní baterie má dva kouhoutky a jednu trubku, ze které teče voda (pokud teda pominu pákové baterie, kterých tu mají po skromnu). Jenže britští zabednění patrioti mají dva kohoutky a dvě trubky, takže z jedné trubky teče studená voda a z druhého tak asi devadesáti stupňová. Jediný způsob jak to řešit, jak jsem se dozvěděl, je pustit oba a umyvadlo zašpuntovat.
  • Veverky - zkuste si představit, že u nás místo koček pobíhají veverky a je jich asi tak dvojnásob. Mám takovou teorii, že to má nějakou spojitost s rozlehlými londýnskými parky a jejich bujnou vegetací, vhodnou akorát tak pro veverky.
  • Doubledeckery - vtip je v tom, že ten klasický červený dvouposchoďový autoubus, se kterým se v Londýně setkáte na každém kroku není pravý doubledecker. Ten už jezdí jenom na dvou linkách (tuším že 9 a 14) a liší se v tom, že není nízkopodlažní, má dveře vzadu, místo v prostřed a vypadá tak nějak zasraraleji. Mimochodem, od nového roku podražilo jízdné z £1.50 na £2 (pokud teda nemáte Oyster card).
  • Letiště - od jisté doby jsou v letadle zakázány v tekutiny v prírucním zavazadle, to chápu. Nechápu ale, proč si ženský nestrčí ty krémy, šampóny a parfémy do kufru, místo toho, aby si to tahali v igelitových pytlících do letadla. Teď mě mimochodem napadá, proč si nenechat flašku nějaké výbušniny v kufru a neodpálit to za letu na dálku mobilním telefonem, kde je rozdíl?

úterý 16. ledna 2007

Kamarádi krab a humr

Dneska přijel z Kypru novej Chef a měl na triku velkým písmem napsaný "Chef". Hráli jsme si s kamarádem krabem (crab) a kamarádem humrem (lobster) a potm jsme je uvařili :)

pondělí 15. ledna 2007

IT Crowd

Fakt nevím, kdy začnou dávat druhou sérii, ale pravidelně sleduju program Channel 4 a jak to poběží, tak se budu dívat a potom vám o tom vyprávět, ok?

... ach jo, teď se dívám, že sem dneska prošvihl Simsnovi

Underground.cz resureciton

Světe div se Underground.cz (nebo taky Ug.cz) opět publikuje, i když v poněkud jiné formě a v jiném kabátu. Nějdůležitější je samozřejmě nová anketa a hláška dne, která ale fungovala i doposud.

neděle 14. ledna 2007

Cache #57

Moje první cache v roce 2007 nese název St Andrew's benchmark. Byla by škoda nevyužít krásné slunečné nědělní ráno. Nebýt jednoho neposlušného psa, co mi umazal kalhoty, tak to nemělo chybu.

sobota 13. ledna 2007

Ono se to tam ukazuje 8-)

Chtěl bych na začátek vysvětlit, co mě vedlo k vytvoření tohoto blogu. Důvodů je hned několik:
  1. Nemám blog - a navíc jsem ani nikdy mít nechtěl. Je to zbytečné plýtvání časem, stejně jako když si všichni navzájem přejou pěkný Vánoce.
  2. Mám spoustu času - hlavně nechodím do hospody (až na výjimky), čímž jsem ušetřil čas, který jsem vetšinou trávil od příchodu ze školy až do noci.
  3. Nemusím každému zvášť odpovídat na otravné otázky - "jak se ti tam daří ...", "kdy přijedeš domů ..." apod. Příště prostě RTFM !!!