Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.
Byla vydána nová verze 260 správce systému a služeb systemd (Wikipedie, GitHub). Odstraněna byla podpora skriptů System V. Aktualizovány byly závislosti. Minimální verze Linuxu z 5.4 na 5.10, OpenSSL z 1.1.0 na 3.0.0, Pythonu z 3.7.0 na 3.9.0…
Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.
Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.
Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,
… více »Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.
SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.
Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační
… více »PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují
… více »GIMP 3.2 byl oficiálně vydán (Mastodon, 𝕏). Přehled novinek v poznámkách k vydání.
Nejprve bych se rád čtenářům omluvil za větší pauzu mezi jednotlivými díly, ale bohužel se mi nedostávalo času. Lepší zprávou, i když ne už moc aktuální, je, že 30. listopadu 2006 vyšla nová verze Smarty 2.6.15 a hned 1. prosince 2006 vyšla verze Smarty 2.6.16, protože ve verzi vydané o den dříve se vyskytla chyba. Changelog popisuje jednotlivé změny oproti předchozím verzím.
Smarty umožňuje v šablonách používat matematické výpočty. Ty lze zapisovat přímo, způsobem obdobným, jak jsme zvyklí z PHP, nebo pomocí prostředí math. Rozhodneme-li se provádět zápis přímo, což je nejjednodušší metoda, pokud nepotřebujeme složité vzorce, úpravu výstupu apod., může použití vypadat následovně:
{* Jednoduche priklady *}
{$promenna + 1}
{$promenna_1 * $promenna_2}
{* Slozitejsi priklady *}
{$promenna_1 - $promenna_2.klic_1 * $promenna_2.klic_2 % $promenna_3}
{assign var="vysledek" value="`$promenna_1 * $promenna_2`"}
Příklad jednoduše znázorňuje, jak použít co nejjednodušeji matematické možnosti ve Smarty. Zajímavým může být poslední řádek, který ukazuje, jakým způsobem lze výsledek výpočtu uložit do proměnné. K uložení slouží funkce assign. Aby byl obsah parametru zpracován a teprve pak uložen do proměnné, musíme matematický zápis uzavřít do zpětných apostrofů (`).
Chceme-li však použít více možnosti matematiky, které Smarty nabízí, je vhodné využít funkce math. Ta umožňuje nejen složitější zápisy, ale také nastavení formátu výsledku, okamžité přiřazení výsledku proměnné, zápis vzorců pomocí přiřazení hodnot jednotlivým proměnným v matematickém výrazu.
Příklad 1 - Obvod obdélníku
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska}
Příklad 2 - Obvod obdélníku s konfiguračním souborem
{* #sirka# = 4, #vyska# = 5 *}
{math equation="2 * (x + y)" x=#sirka# y=#vyska#}
Příklad 3 - Obvod obdélníku s uložením výsledku do proměnné
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska assign="obvod"}
Příklad 4 - Obvod obdélníku s definicí formátu výsledku
{math equation="2 * (x + y)" x=8.9895 y=1.2549 format="%.2f" assign="obvod"}
Pro určení formátu výsledku lze použít formátovací řetězce známé pro funkci printf jazyka PHP.
Smarty umožňuje na jednotlivé proměnné aplikovat tzv. modifikátory. Ty se používají k úpravě obsahu proměnných na úrovni šablon. Syntaze použití modifikátorů na proměnné je následující: $promenna|modifikator:parametry. Důležitou poznámkou, než se začneme přímo zabývat použitím modifikátorů, je, že modifikátor je aplikován na proměnnou, resp. její obsah. Pokud ale použijeme modifikátor na pole, bude aplikován na každý jeho prvek. Chceme-li použít modifikátor na pole jako celek, použijeme před názvem modifikátoru symbol @ (zavináč). Jednoduchým příkladem může být následující výpis:
{* Vypise pocet prvku v poli *}
{$array|@count}
Modifikátor capitalize změní první písmeno každého slova v řetězci na velké. Ve výchozím nastavení nedochází k úpravě prvního písmene. Je-li následováno číslicí a použijeme-li parametr true, bude k úpravě docházet. Efekt parametru a použití modifikátoru je patrný z následujícího výpisu. Funkce modifikátoru je shodná s PHP funkcí
ucfirst().
{* Promenna $foo obsahuje retezec "toto je test v3" *}
{$foo|capitalize}
{* Vystup: Toto Je Test v3 *}
{$foo|capitalize:true}
{* Vystup: Toto Je Test V3 *}
Modifikátor cat slouží ke konkatenaci (spojení) dvou řetězců. Nemá žádné parametry umožňující upravit jeho chování, jediným parametrem je řetězec, který má být připojen.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|cat:' - snad posledni
'}
{* Vystup: toto je test - snad posledni
*}
Modifikátor count_ existuje ve Smarty v několika variantách,
prvním je count_characters, druhým count_words,
třetím count_sentences a posledním count_paragraphs. Již z názvu by mohlo být patrné k čemu jednotlivé modifikátory slouží. Postupně tedy - počet znaků v proměnné, počet slov v proměnné, počet vět v proměnné a nakonec počet odstavců v proměnné. Pouze count_characters umožňuje použití parametru ovlivňující funkci modifikátoru. Výchozí nastavení je na false, což znamená, že bílé znaky nebudou započítávány do výsledného počtu znaků. Chceme-li, aby tomu bylo naopak, bílé znaky byly započítávány, nastavíme parametr na true.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|count_characters}
{* Vystup: 10 *}
{$foo|count_characters:true}
{* Vystup: 12 *}
{$foo|count_words}
{* Vystup: 3 *}
{* Promenna $foo obsahuje retezec "Toto je test. Mam rad Linux." *}
{$foo|count_sentences}
{* Vystup: 2 *}
{* Promenna $foo obsahuje retezec "Toto je test.\n Mam rad Linux." *}
{$foo|count_paragraphs}
{* Vystup: 2 *}
Tento modifikátor slouží pro formátování výstupního data a času dle zadaných kritérií. Pro formátování data a času slouží zástupné znaky, které se používají pro PHP funkci strftime().
{$smarty.now|date_format:"%d.%m.%Y"}
{* Vystup: 19.01.2007 - vystup samozrejme zavisi na dni pouziti sablony
*}
Modifikátor kontrolující, zda-li byla proměnné přiřazena nějaká hodnota, tedy jestli není prázdná. Pokud je proměnná prázdná, je jí přiřazena hodnota, která byla předána modifikátoru jako jeho parametr.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|default:'hodnota'}
{* Vystup: toto je test *}
{* Promenna $foo_2 nebyla inicializovana *}
{$foo_2|default:'hodnota'}
{* Vystup: hodnota *}
Modifikátor slouží k úpravě proměnné dle zadaných pravidel. Převádí "nevhodné" znaky, jakými mohou být např. apostrofy, na entity, upravuje tvar e-mailové adresy, aby zamezil zpracování roboty (jmeno@domena.cz převede na jmeno[AT]domena[DOT]cz) apod. Parametry použití tohoto modifikátoru jsou dostupné z dokumentace.
{* Promenna $foo obsahuje retezec "jmeno@domena.cz" *}
{$foo|escape:'mail'}
{* Vystup: jmeno[AT]domena[DOT]cz *}
Modifikátor sloužící k odsazení textu o určitý počet (ve výchozím nastavení 4) znaků (výchozí je mezera, lze upravit). Tento modifikátor má tedy dva parametry, jejichž pořadí je potřeba dodržet.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\Radek 3" *}
{$foo|indent:5:"\t"}
{* Vystup: kazdy radek bude odsazet o pet tabelatoru *}
Modifikátor převadí obsah proměnné na malá písmena.
{* Promenna $foo obsahuje retezec "Toto Je TEST" *}
{$foo|lower}
{* Vystup: toto je test *}
Modifikátor převadí všechny znaky nového řádku \n
na HTML ekvivalent <br />.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\nRadek 3" *}
{$foo|nl2br}
{* Vystup: Radek 1<br />Radek 2<br />Radek 3 *}
Modifikátor funguje podobně jako PHP funkce preg_replace(), a používá stejné zástupné znaky v regulárních výrazech. Nahrazení textu dle regulárního výrazu.
{* Promenna $foo obsahuje retezec "Radek\t1\nRadek\t2\nRadek\t3" *}
{$foo|regex_replace:"/[\r\t\n]/":" "}
{* Vystup: Radek 1 Radek 2 Radek 3 *}
Modifikátor má obdobnou funkci jako regex_replace s tím rozdílem, že neumožňuje použití regulárních výrazů. Dochází tedy pouze k náhradě hledaného řetězce za jiný.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|replace:'je':'neni'}
{* Vystup: toto neni test *}
Modifikátor umožňuje vložit libovolný znak (výchozí je mezera) mezi znaky v proměnné.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|spacify}
{* Vystup: t o t o j e t e s t *}
{$foo|spacify:"!"}
{* Vystup: t!o!t!o! !j!e! !t!e!s!t! *}
Modifikátor slouží k formátování řetězce dle formátovacích znaků, které jsou shodné jako u funkce sprintf().
{* Promenna $foo obsahuje retezec "3.1415" *}
{$foo|string_format:"%d"}
{* Vystup: 3 *}
{$foo|string_format:"%.2f"}
{* Vystup: 3.14 *}
Modifikátor slouží k nahrazení opakujících se mezer, nových řádků a tabelátorů jednou mezerou (výchozí nastavení), případně libovolným řetězcem, definovaným parametrem.
{* Promenna $foo obsahuje retezec "Toto \t je\n test" *}
{$foo|strip}
{* Vystup: Toto je test *}
{$foo|strip:"-"}
{* Vystup: Toto-je-test *}
Modifikátor slouží k odstranění všech HTML tagů v proměnné a jejich nahrazení jednou mezerou. Pokud chceme, aby došlo k nahrazení bez mezery, použijeme parametr false - jako výchozí je definováno true.
{* Promenna $foo obsahuje retezec "Toto je <b>test</b>" *}
{$foo|strip_tags}
{* Vystup: Toto je test *}
{$foo|strip_tags:false}
{* Vystup: Toto je test *}
Modifikátor slouží k "oříznutí" řetězce. K upřesnění funkce slouží čtyři parametry. První udává počet znaků, na které má být řetězec zkrácen (výchozí nastavení 80 znaků), druhý parametr udává, jakým řetězcem má být oříznutý text následován (výchozí ...), třetí parametr určuje, zda je povoleno oříznutí řetězce v půlce slova, nebo zda-li se má provést odříznutí před tímto slovem (ve výchozím nastavení na false - nedělit slova). Poslední parametr určuje, že bude vypsáno poslední slovo řetězce a podle toho se přizpůsobí oříznutí. Vysvětlování se může zdát složité, nejlepší je vyzkoušet si funkci modifikátoru v praxi, nebo se podívat na výpis kódu.
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|truncate:10}
{* Vystup: Toto je... *}
{$foo|truncate:10:"!"}
{* Vystup: Toto je! *}
{$foo|truncate:10:"-":true}
{* Vystup: Toto je de- *}
{$foo|truncate:15:"-":false:true}
{* Vystup: Toto je... testovani*}
Modifikátor převádí obsah proměnné na velká písmena.
{* Promenna $foo obsahuje retezec "Toto je test" *}
{$foo|upper}
{* Vystup: TOTO JE TEST *}
Modifikátor pracující na podobném principu jako truncate s tím rozdílem, že text neořezává, ale řeší jeho zalamování. První parametr udává, po kolika znacích (výchozí 80) má dojít k zalomení textu, druhý parametr udává, jaký znak se má pro zalomení použít (výchozí \n).
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|wordwrap:15}
{* Vystup: Toto je delsi\nretezec k\ntestovani *}
{$foo|wordwrap:15:"<br />}
{* Vystup: Toto je delsi<br />retezec k<br />testovani *}
Veškeré výše popsané modifikátory lze libovolně vhodně kombinovat. Následuje několik takových ukázek, z kterých by mělo být zřejmé, jak kombinaci modifikátorů zapisovat. Z výpisu je i vidět, že závisí na pořadí zápisu modifikátorů (modifikátory jsou aplikovány směrem od proměnné).
{* Promenna $foo obsahuje retezec "Toto je retezec k testu *}
{$foo|upper|spacify}
{* Vystup: T O T O J E R E T E Z E C K T E S T U *}
{$foo|upper|spacify|truncate:15}
{* Vystup: T O T O J E... *}
{* Nejprve byl retezec zvetsen, pote vlozeny mezery a pak oriznut *}
{* Pocet mezer se tedy promitl do poctu znaku k oriznuti *}
{$foo|upper|truncate:15|spacify}
{* Vystup: T O T O J E R E T E Z E C . . . *}
{* Nejprve byl retezec zvetsen, pote oriznut a pak vlozeny mezery *}
{* Vlozeni mezer se tedy promitlo na ... vlozenych modifikatorem truncate *}
V příštím díle se seznámíme s vestavěnými funkcemi šablonovacího systému Smarty. Abych alespoň předběžně nastínil, tak prozradím, že mezi tyto funkce patří např. podmínky a různé cykly. Více ale až v příštím díle seriálu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
strftime() lze použít %e tak, aby byl vypisován den v měsíci bez předchozí nuly. Čísla 1 - 9 budou předsazena mezerou, zbývající čísla nebudou nijak ovlivněna. Něco podobného pro měsíc jsem nikde neviděl a nenašel, ale určitě by se to dalo vyřešit na úrovni vlastního pluginu. Téma vlastních pluginů bude v tomto seriálu také probráno a váš problém by mohl vyústit v jeden z ukázkových příkladů
{$var|unserialize|var_export:True|string_format:"<?php\n%s\n?>"|highlight_string}
ma to sice jeden mensi bug, ale jako ukazka to staci.
Tohle vrací den. měsíc. rok, ale s nulou před číslem měsíce.{$myDate|date_format:"%e. %m. %Y"}
Tohle nulu odstraní:{$myDate|date_format:"%e. %#m. %Y"}
Jestli to chcete mít funky, tak na to můžete jít i takhle:{assign var="myDateTimestamp" value=$myDate|strtotime}
{"j. n. Y"|date:$myDateTimestamp}
(převzato odsud)