Web

Technologie, nápady, vychytávky a tak vůbec o těch internetech.

PHP mb_ucfirst a mb_lcfirst

V PHP funkce ucfirst, která převede první znak v řetězci na velké písmeno. Stejně jako ostatní PHP funkce pro zvětšování a zmenšování písmen si ale neporadí s diakritikou. PHP to řeší knihovnou Multibyte String Functions. Háček je, že zrovna funkce mb_ucfirst zde zastoupena není.

Není to ideální, ale dá se s tím něco dělat. Náhražková funkce může vypadat takto:

function mb_ucfirst($string, $encoding = null) {
	if (is_null($encoding)) {
		$encoding = mb_internal_encoding();
	}
	return mb_strtoupper(mb_substr($string, 0, 1, $encoding)).mb_substr($string, 1, null, $encoding);
}

Zmenšit první písmeno není potřeba tak často, ale můžeme se to stát. Stejně jako ucfirst, tak ani lcfirst nemá svoji mb_ variantu. Řešení je stejné, jen mb_strtoupper vyměníme za mb_strtolower.

function mb_lcfirst($string, $encoding = null) {
	if (is_null($encoding)) {
		$encoding = mb_internal_encoding();
	}
	return mb_strtolower(mb_substr($string, 0, 1, $encoding)).mb_substr($string, 1, null, $encoding);
}

Ano, bylo by krásné, kdyby PHP nabízelo i tyto mb_ funkce. Ještě krásnější by bylo, kdyby základní funkce pro práci s řetězci byli multibyte safe. Jenže jako to tak vypadá, ani jedno není na pořadu dne.

Cachování a WordPress

WordPress je velmi šikovný redakční systém pro blogy a menší až středně velké weby. Pohodlně se v něm píše, pro mnoho běžných věcí není problém sehnat plugin (občas se podaří sehnat i dobrý plugin) a sám se aktualizuje. Má to ale i své stinné stránky. Aby tohle bylo vůbec možné a každou chvíli se to nehroutilo,  musí se při každém načtení stránky spousta věcí kontrolovat, třeba i několikanásobně filtrovat a ve výsledku je i jednoduchý web celkem pomalý. Základní instalace s jednoduchým tématem generuje homepage s jedním příspěvkem zhruba 300 ms (může se lišit v závislosti na prostředí a zátěži – údaj je pouze orientační a má sloužit pro relativní srovnání s údaji uvedenými dále).

Rychlost je jedna z důležitých kvalit webu. Ve světle toho, co jsem psal v prvním odstavci, je jasné, že první, co je potřeba zrychlit, je samotné generování stránky. To se v dané situaci dá zařídit jen vypnutím témat (ušetříme až 50 ms a naděláme si spoustu starostí) nebo cachováním (ušetříme daleko víc a nebude s tím moc potíží). WordPress na to má, celkem nepřekvapivě, celou řadu pluginů. Desítky, možná stovky. Testoval jsem tři nejběžnější a výsledky jsou místy překvapivé, místy dokonce děsivé. Vezmeme to podle abeced.

(Pokračování textu…)

SVG responsivní a stylovatelné

SVG (Scalable Vector Grafic) je otevřený formát pro vektorovou grafiku, podporovaný všemi soudobými prohlížeči. Skvělé na něm je, že můžete grafické prvky libovolně zvětšovat, aniž by byly zubaté, stylovat přes CSS a ve většině případů budou datově menší, než kdyby to byl gif nebo jpeg.

Potud teorie. Jestli máte pocit, že můžete bitmapové grafické prvky lusknutím prstu vyměnit za SVG, mýlíte se. Je to totiž, slovy klasika, past vedle pasti. Takže se podíváme, jak do toho nešlápnout.

(Pokračování textu…)