Open source počítačová hra na hrdiny NetHack (Wikipedie, GitHub) byla vydána v nové verzi 5.0.0. První verze této hry byla vydána v roce 1987.
Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.
Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.
Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
WML jazyk Wesnothu je dost podivný, špatně zdokumentovaný a proto obtížně použitelný, je to jen pro silné povahy. Podivná je i práce s proměnnými, které se věnuje tento zápisek. Vzhledem k mlhavým informacím roztroušených náhodně po celé wiki wesnothu se může stát, že zde budu psát bludy.
Proměnnou lze nastavit pomocí elementu [set_variable]. Například to co se v ostatních jazyích udělá takto:
promenna = "hodnota"
se ve WML dělá takto:
[set_variable]
name=promenna
value="hodnota"
[/set_variable]
Protože je to dlouhé, existuje i předdefinované makro, které to trochu zjednodušuje. Pomocí makra se to samé udělá takto:
{VARIABLE promenna "hodnota"}
Pozor, nastavení proměnné funguje jen v eventu, jinde se proměnné nastavit nedají. Tahle veledůležitá informace není nikde napsaná, takže klidně strávíte několik hodin rvaním si vlasů, jak to že vám nic nefunguje. Tohle a podobné špeky způsobuje, že se do tohoto obskurního jazyku snažím proniknout už asi po třetí s tím, že se vždycky naštvu, že na tohle nemám nervy a čas se dá ztrácet i příjemnějším způsobem.
Ve WML je možno proměnné jakoby objektově skládat, protože proměnná může fungovat i jako kontejner pro další proměnné. Lze tak mít například proměnou souradnice, která obsahuje proměnné x a y.
[set_variable]
name=souradnice.x
value=10
[/set_variable]
[set_variable]
name=souradnice.y
value=20
[/set_variable]
Pole je ve WML proměnná, která obsahuje jiné proměnné s číselným indexem, podle kterého pak lze procházet v cyklu. Ukázka definice pole:
[set_variable]
name=pole[0].x
value=10
[/set_variable]
[set_variable]
name=pole[1].x
value=12
[/set_variable]
[set_variable]
name=pole[2].x
value=14
[/set_variable]
[set_variable]
name=pole[2].y
value=10
[/set_variable]
Pozor, na rozdíl od jiných jazyků pole[1] nemůže obsahovat hodnotu, je to jen kontejner pro jednu nebo více dalších proměnných. Nelze tedy mít jen "name=pole[1]".
Každé pole má speciální atribut lenght, v kterém je uveden počet prvků pole.
Proměnnou je možno měnit, předávat, odstranit a nebo použít její hodnotu.
Proměnná se mění stejně jako se definuje nová.
Proměnnou je možno předat například jako parametr makru nebo některým speciálním atributům pro práci s proměnnou místo její hodnotou. Proměnná se předává svým názvem. Například předání proměnné promenna makru MAKRO:
{MAKRO promenna}
Pro smazání proměnné je k dispozici element [clear_variable]. Protože všechny nesmazané proměnné se musí ukládat do sejvů a zabírají místo v paměti, je velmi vhodné všechny pomocné a dočasné proměnné po použití smazat. Příklad smazání proměnné promenna:
[clear_variable]
name=promenna
[/clear_variable]
Mimochodem, tohle je i příklad předání proměnné atributu.
K této akci je pro zkrácení zápisu rovněž předdefinováno makro CLEAR_VARIABLE:
{CLAER_VARIABLE promenna}
Obecně se hodnota proměnné získá použitím znaku $. Tedy asi nějak takto:
{VARIABLE text "Hello world!"}
[message]
speaker=narrator
message="Text je $text"
[/message]
{CLEAR_VARIABLE text}
Použití $ se ve WML také říká substituce. Aby to nebylo jednoduché, WML rozlišuje tři různé druhy substituce. Jaký druh substituce se použije nezávisí na uživateli, ale je dán atributem u kterého se proměnná používá, tudíž je nutno to konkrétně o každém atributu vědět. Tyto tři substituce jsou: literal, simple a complex.
Literal znamená žádná substituce. U takového atributu se proměnná hodnotou nenahradí. Atribut získá hodnotu názvu proměnné i se znakem $, nikoli její hodnotu. Jinými slovy, u takového atributu nejde proměnnou použít.
Tato substituce je použita v elementu [set_variable] u atributu literal.
Simple znamená, že proměnná se rozezná a nahradí hodnotou jen když není v řetězci nebo je na jeho začátku. Tedy znak $ následuje hned za znakem ".
Tato substituce je použita všude, kde se nepoužívá literal ani complex.
Complex znamená, že proměnná se rozezná a nahradí hodnotou kdekoli v řetězci, jako je tomu u výše uvedené ukázky.
Tato substituce se používá:
Je-li u nějakého atributu simple substituce a vy potřebujete complex substituci, pak si musíte vypomoci pomocnou proměnnou vytvořenou pomocí [set_variable] a atributů name a format.
Pokud potřebujete substituovat proměnnou tak, aby za ní mohl hned následovat text, je si možno vypomoci znakem | a ukončit jím název proměnné. Například takto:
[message]
message="Pozor, právě jsem zahlédnul $rasa|!"
[/message]
Když ho budete používat vždycky, nemusíte se učit pravidla, ktará říkají, kdy ho potřeba je a kdy není, tj. před kterými znaky se rozezná konec proměnné automaticky. S tím souvisí i možnost vloření samotného znaku $ do řetězce, provede se to takto: "Upgrade stojí 100 $|".
WML umožňuje, aby název proměnné byl vytvořen pomocí jiné proměnné. Například mějme proměnné rasa, zlato_elfova a zlato_trpaslici. Pak je možno použít syntaxe "$zlato_$rasa||" k získání obsahu druhé nebo třetí proměnné podle toho, zda proměnná rasa má hodnotu etfove nebo trpaslici.
Procházení polem je trochu složitější, ale naštěstí pro to existují dvě předdefinovaná makra FOREACH a NEXT, která to zjednodušují. S jejich pomocí lze realizovat procházení polem takto:
{FOREACH pole i}
[message]
message="X a Y je $pole[$i].x $pole[$i].y"
[/mesage]
{NEXT i}
Nedefinovaná proměnná se rovná nedefinovanné proměné, nebo proměnné s hodnotou prázdný řetězec.
{VARIABLE def_a ""}
{VARIABLE def_b 0}
# TRUE
[if]
[variable]
name=undef
equals=$none
[/variable]
[then]
[message]
speaker=narrator
message="undef"
[/message]
[/then]
[/if]
# TRUE
[if]
[variable]
name=def_a
equals=$none
[/variable]
[then]
[message]
speaker=narrator
message="def_a"
[/message]
[/then]
[/if]
# FALSE
[if]
[variable]
name=def_b
equals=$none
[/variable]
[then]
[message]
speaker=narrator
message="def_b"
[/message]
[/then]
[/if]
Tiskni
Sdílej: