About Ondřej Gertner

http://www.onge.cz

Posts by Ondřej Gertner:

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.

Výzkum kryptoměn

Udělal jsem si poměrně rozsáhlý výzkum na téma kryptoměn. Chci totiž pro jeden projekt integrovat těžbu kryptoměny v prohlížeči (se svolením užovivatele, žádný cryptojacking) jako alternativní zdroj příjmu k reklamám. Výsledky svého výzkumu jsem sepsal, ale nedám je zadarmo.

Chci za ně jednu desetinu haléře. Kliknutím na následující odkaz se tato částka sama natěží ve vašem prohlížeči a pak vás přesměruje na výsledky výzkumu. To je fér, ne? Ale opatrně s mobilem – žere to baterky.

Přečíst výzkum o kryptoměnách

UPDATE: služba Coinhive v březnu 2019 ukončila provoz, aktuální údaje se proto přestaly zobrazovat.

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…)