květen 28, 2009

FC Barcelona králem Evropy

champions_league_lossTento článek se mi jako fanouškovi Manchesteru United nepíše vůbec lehce. Stalo se to, čeho jsem se bál – FC Barcelona s přehledem přehrála loňského vítěže Ligy Mistrů Manchester United v poměru 2:0. Rudí ďáblové nastoupili do zápasu v bílých dresech a z počátku nehráli vůbec špatně, ba naopak soupeře doslova válcovali. Ovšem jak jsem psal v minulém článku, stačí sebemenší pochybení a lovíte míč ze sítě. Přesně to se stalo, když A. Iniesta prošel hladce přes obranu Manchesteru United a přihrál S. Eto’ ovi, který krásně obehrál N. Vidice a chladnokrevně zakončil. Hráče Manchesteru United tento gól doslova uspal, kazili jednu přihrávku za druhou a já se modlil, aby záhy nedostali další gól. Barcelona byla na koni a v této chvíli mohl dělat rozsypaný Manchester United jen málo. Naštěstí jsme první poločas přečkali bez další úhony a do druhé půle poslal Sir A. Ferguson na hřiště argentinského bojovníka C. Téveze, který hru sice oživil, ale nestačilo to. O několik desítek minut později tedy poslal skotský manažer do hry další dva bijce – D. Berbatova a zkušeného P. Scholese. V tuto chvíli jsem si říkal: “Jestli teďka nedáme gól tak nevím…”, Manchester United sice začal tlačit, ale bohužel dnes mu nebylo souzeno vyhrát. Chvíli na to našel Xavi nadýchaným míčem ve vzduchu volného L. Messiho, který nezaváhal a zvýšil na 2:0. Ihned na to přišla rychlá akce rudých ďáblů a zakončení C. Ronalda, kterého vychytal v tomto zápase vynikajicí V. Valdés. Do konce zápasu už se toho moc neudálo a Manchester United podlehl lepší FC Barceloně, ale nebuďme zklamaní. Tato sezóna byla pro rudé ďábly velmi úspěšná. Nakonec bych rád napsal ještě jednu věc – ČT2 by se měla zamyslet, protože to co ze svých úst vypouštěl komentátor Karel Čapek, to byla síla.

květen 27, 2009

Finále Ligy Mistrů

champions_leagueJe to přesne rok, kdy Manchester United vyhrál Ligu Mistrů v penaltovém rozstřelu proti FC Chelsea a stal se tak králem Evropy. Letos se opět dostal do finále a v obhajobě titulu mu brání FC Barcelona. Oba týmy jsou ve výborné formě, o čemž svědčí i to, že oba vyhráli svou domácí soutěž. Bude to opravdu velkolepé, nastoupí proti sobě dva nejlepší fotbalisté světa – C. Ronaldo vs. L. Messi. Který je lepší? Těžko říct, ale já jakožto fanoušek Manchesteru United mám jasno. Vycházejíc ze statistik by se dal dnešní zápas označit jako “nejlepší obrana” vs. “nejlepší útok”. Držení míče a útočná síla španělského týmu je všem dobře známá, za tu to sezónu vsřelili do sítě soupěře úctyhodných 30 gólů. Ovšem ve střetnutí s FC Chelsea si nevěděli rady a do finále je dostal velmi pozoruhodný výkon rozhodčího a gól A. Iniesty z 93. minuty. Tým Sira Alexe Fergusona je velmi silný v defenzívě, v letošní sezóně inkasoval pouhých 6 branek a celou soutěží prošel hladce. Jak na jedné tak na druhé straně budou chybět vykartovaní hráči – D. Fletcher, D. Alves, E. Abidal a také hráči zranění – R. Ferdinand?, W. Brown, O. Hargreaves, R. Márquez, T. Henry?, A. Iniesta? (u hráčů s otazníky není úplně jasné, zda-li dnes nastoupí). Co se týče vzájemných zápasů, Manchester United má 3 gólové manko, jak vypovída seznam utkání pod článkem, je tedy co vracet. Na obou stranách stojí velcí hráči, kteří umí potrestat sebemenší chybu, tudíž vyhraje ten, který se jich vyvaruje. Dnešní monstrózní klání bude kočírovat švýcarská trojice rozhodčích – M. Busacca, M. Arnet a C. Circhetta. Vyhraje-li Manchester United jeho hráči si zajistí takřka nesmrtelnost, byli by totiž první, kterým se podařilo obhájit titul, nicméně i Barcelona chce vyhrát veleváženou trofej. Zápas začíná v 20:45 na olympijském stadióně v Římě a přímý přenos bude vysílat ČT2 v programu Studio Fotbal od 20:25.

Vzájemná utkání

  • 1:0, 2007/08
  • 0:0, 2007/08
  • 3:3, 1998/99
  • 3:3, 1998/99
  • 2:2, 1994/95
  • 4:0, 1994/95

Český portál Manchester United

Můj tip 3:0

květen 23, 2009

Textový editor pod Windows? Intype!

Český Intype je výkonný a rychlý textový editor psaný v jazyce C++. Obsahuje mnoho parádních funkcí, je snadno rozšiřitelný a zatím je zdarma. Vznik projektu je datován od roku 2006 a momentálně se o něj starají tito tři lidé – Martin Cohen (zakladatel projektu, UI), Juraj Ďurech (Core developer) a Ivan Čentéš (Web developer). Již delší dobu to s projektem vypadalo bledě, ovšem 20. května vydal tým novou (nestabilní) verzi, čímž dal jasně najevo, že Intype bude dále žít. Neváhal jsem a editor jsem stáhnul. Velikost instalačního souboru činí něco přes 1 MB a po instalaci zabírá celý editor cca 4,5 MB. Od poslední verze proběhlo mnoho změn, mezi hlavní novinky patří Project Manager, Appearance Presets (Word Wrap, Indentation Characters) a Bundle Editor. Stále mi ovšem chybí zvýrazňování párů, ale na to v jaké fázi vývoje se editor nachází, mi docela vyhovuje – je rychlý, malý a snadno nastavitelný. Nezbývá mi tedy nic jiného než Vám ho vřele doporučit, alespoň na zkoušku. Chcete-li mít aktuální přehled o projektu následujte Intype na Twitteru či navštivte jejich stránky.

květen 22, 2009

Čítač zobrazení

Námi vytvořený čítač bude velmi jednoduchý, jeho úkolem bude čítat a zapisovat návštěvy v ochranném intervalu do XML souboru. U každé návštěvy si poznamená aktuální čas a počet zobrazení.

./counter/counter.php
Funkce bude obsahovat dvě vstupní proměnné $file (název souboru) a $time (ochranný interval). Jako první zkontrolujeme, zda-li existuje XML soubor, neexistuje-li, vytvoříme ho a uložíme do něj řetězec obsahující kódování souboru, prázdné pole návštěv s atributem count, jehož hodnota = celkový počet návštěv. To vše provedeme pomocí funkce file_put_contents().

<?php

function Counter($file = null, $time = null)
{
	if (!file_exists($file)) {
		$output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-stylesheet type=\"text/xsl\" href=\"style.xsl\"?>\n<visits count=\"0\">\n</visits>";
		file_put_contents($file, $output);
	}

Všechny prvky XML souboru budeme převádět do pole $xml pomocí třídy SimpleXMLElement, jejíž vstupní proměnnou by měl být XML řetězec. Ten dostaneme z našeho souboru pomocí funkce file_get_contents(). Proměnná $bool poslouží jako ukazatel, zda-li stránku uživatel již navštívil či nikoliv. V iterační proměnné $i budeme uchovávat pořadové číslo návštěvy.

	$xml = new SimpleXMLElement(file_get_contents($file));
	$bool = false;
	$i = 0;

Následující cyklus while se pokusí nalézt momentálního uživatele resp. jeho IP adresu v poli návštěv. Uspěje-li, nastaví proměnnou $bool na true a ukončí cyklus. Nenalezne-li shodu IP adresy, zůstane proměnná $bool na false. V proměnné $i bude v obou případech uloženo pořadové číslo návštěvy.

	while ($i < sizeof($xml->ip)) {
		if ($xml->ip[$i] == $_SERVER['REMOTE_ADDR']) {
			$bool = true;
			break;
		}
		$i++;
	}

Nyní proměnnou $bool proženeme přes příkaz switch() a nadefinujeme dva případy, které mohou nastat. V prvním případě uživatel již stránku navštívil, tudíž proběhne kontrola platnosti návštěvy. Časy návštěv budou uchovávany ve formátu “H:i:s, d.m.Y”, což znamená “hodina:minuta: sekunda, den.měsíc.rok”. Abychom dostali číselnou hodnotu z takovéhoto řetězce, musíme použit funkci strtotime(). Když máme číselnou hodnotu času poslední návštěvy uživatele, můžeme provést již výše zmíněnou kontrolu. Součet časů poslední návštěvy uživatele a ochranného intervalu nesmí být větší než aktuální čas, lépe řečeno pro přičtení zobrazení musí uplynout ochranný interval od času poslední návštěvy uživatele. Číselnou hodnotu aktuálního času zjistíme pomocí funkce time(). Je-li výše zmíněná podmínka splněna, přičteme jedničku k celkovému počtu návštěv, počtu návštěv u daného uživatele a čas uložíme v již zmiňovaném formátu. Nyní už jen nastavíme proměnnou $write na true. Ovšem nebude-li kontrola platnosti návštěvy pravdivá, nastavíme ji na false.

	switch($bool) {
		case true :
			$strtotime = strtotime($xml->ip[$i]->attributes()->time, time());
			if (($strtotime + $time) < time()) {
				$xml->attributes()->count = $xml->attributes()->count + 1;
				$xml->ip[$i]->attributes()->count = $xml->ip[$i]->attributes()->count + 1;
				$xml->ip[$i]->attributes()->time = date('H:i:s, d.m.Y', time());
				$write = true;
			} else {
				$write = false;
			}
		break;

V druhém případě vytvoříme novou návštěvu, nastavíme ji počet návštěv na jedničku, za čas dosadíme zformátovaný nynější čas a nastavíme proměnnou $write na true.

		case false :
			$xml->attributes()->count = $xml->attributes()->count + 1;
			$ip = $xml->addChild('ip', $_SERVER['REMOTE_ADDR']);
			$ip->addAttribute('count', 1);
			$ip->addAttribute('time', date('H:i:s, d.m.Y', time()));
			$write = true;
		break;
	}

Proměnná $write má obdobný účel jako proměnná $bool. Je-li rovna true, provedeme zápis zformátovaného řetezce pomocí třídy DOMDocument do XML souboru. V opačném případě nebudeme soubor přepisovat.

	if ($write) {
		$doc = new DOMDocument;
		$doc->preserveWhiteSpace = false;
		$doc->loadXML($xml->asXML());
		$doc->formatOutput = true;
		file_put_contents($file, $doc->saveXML());
	}

Do proměnné $count, kterou funkcí vrátíme, uložíme přetypovaný počet všech návštěv a poté zničíme pole $xml.

	$count = (int)$xml->attributes()->count;
	unset($xml);
	return $count;
}

?>

./counter/style.css

body {
	margin: 0;
	padding: 0;
}
table#counter {
	margin: 10px;
	padding: 0;
	display: block;
	border-collapse: collapse;
	font: normal 12px Tahoma, sans-serif;
	color: #909090;
}
table#counter th {
	background-color: #f0f0f0;
	border: 2px solid #e0e0e0;
	padding: 5px;
}
table#counter td#count {
	height: 30px;
	background-color: #fff;
	border: 2px solid #e0e0e0;
	font: bold italic 20px 'Trebuchet MS', sans-serif;
	letter-spacing: -4px;
	text-align: center;
}
table#counter a, a:visited {
	color: #909090;
}
table#counter a:hover, a:visited:hover {
	color: #909090;
	text-decoration: none;
}

./counter/style.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<html>
		<body style="background-color: #f0f0f0; font: normal 13px Verdana;">
				<table border="1" style="border-collapse: collapse;">
					<tr style="background-color: #383838; color: #f0f0f0;">
						<th style="padding: 5px;">Počet zobrazení</th>
						<th style="padding: 5px;">Datum návštěvy</th>
						<th style="padding: 5px;">IP adresa</th>
					</tr>
					<xsl:for-each select="visits/ip">
						<tr>
							<td style="padding: 5px;">
								<xsl:value-of select="@count" />
							</td>
							<td style="padding: 5px;">
								<xsl:value-of select="@time" />
							</td>
							<td style="padding: 5px;">
								<xsl:value-of select="node()" />
							</td>
						</tr>
					</xsl:for-each>
				</table>
		</body>
		</html>
	</xsl:template>
</xsl:stylesheet>

./index.php
Nadefinujeme konstantu DIR, která v sobě bude ukrývat váš kořenový adresář, nahrajeme čítač pomocí funkce include_once() a vytvoříme proměnnou $count, jejíž hodnota = vrácená hodnota funkcí čítače.

<?php

define('DIR', dirname(__FILE__) . '/');
include_once(DIR . 'counter/counter.php');
$counter = Counter(DIR . 'counter/data.xml', 1800);

?>

A nyní už jen vytiskneme proměnnou $count v nastylované tabulce.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<style type="text/css" media="screen">@import url('counter/style.css');</style>
	<title>Counter by pucek.wordpress.com</title>
</head>
<body>
		<table id="counter">
			<tr><th>Počet zobrazení</th></tr>
			<tr><td id="count"><?php print $counter; ?></td></tr>
			<tr><th><a href="counter/data.xml">Statistika</a></th></tr>
		</table>
</body>
</html>

Ukázka | Stažení zdrojového kódu

květen 20, 2009

Green Day – 21st Century Breakdown

Krátce…
21 Century Breakdown je již 8. deskou této skupiny a v Americe vyšla 15. května 2009, což je téměř 5 let od vydání předchozí desky American Idiot. Deska se skládá se z titulní písně Song of the Century a tří aktů – Heroes and Cons (6 písní), Charlatants and Saints (6 písní) a Horseshoes and Handgrenades (5 písní). Celkem tedy 18 písní s časem něco přes 69 minut, což je v dnešní době chvályhodné. Příběh má dvě hlavní postavy – Glorii a Christiana, pár, který se protlouká životem v Americe (zničené vládou G. W. Bushe). Deska je díky její koncepci často spojována s pojmem “rocková opera”. Můžete si ji zakoupit buďto v klasické, speciální DigiBook nebo limitované edici. Více o desce a skupině naleznete na greenday-cz.com.

Můj názor
Po 1. poslechnutí jsem v euforii jásal: “Tohle je naprostá bomba!”, ovšem po vícerém poslechnutí jsem už to tak růžově neviděl. Deska v podstatě nic nového nepřinesla a pro mě je to takový druhý díl American Idiot. Mezi nejlepší písně bych zařadil Know Your Enemy, ¡Viva la Gloria!, East Jesus Nowhere, Peacemaker, Last of the American Girls, ¿Viva la Gloria? a Horseshoes and Handgrenades.

Hodnocení 8/10