V Brně na FIT VUT probíhá třídenní open source komunitní konference DevConf.CZ 2025. Vstup je zdarma, nutná je ale registrace. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.
Vyloučení technologií, které by mohly představovat bezpečnostní riziko pro stát, má umožnit zákon o kybernetické bezpečnosti, který včera Senát schválil spolu s novelami navazujících právních předpisů. Norma, kterou nyní dostane k podpisu prezident, počítá rovněž s prověřováním dodavatelů technologií pro stát. Normy mají nabýt účinnosti od třetího měsíce po jejich vyhlášení ve Sbírce zákonů.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.6.
Po Red Hat Enterprise Linuxu a AlmaLinuxu byl v nové stabilní verzi 10.0 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Bylo vydáno Eclipse IDE 2025-06 aneb Eclipse 4.36. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Americká filmová studia Walt Disney a Universal Pictures podala žalobu na provozovatele populárního generátoru obrázků pomocí umělé inteligence (AI) Midjourney. Zdůvodňují to údajným porušováním autorských práv. V žalobě podané u federálního soudu v Los Angeles označují firmu za „bezednou jámu plagiátorství“, neboť podle nich bez povolení bezostyšně kopíruje a šíří postavy z filmů jako Star Wars, Ledové království nebo Já, padouch, aniž by do nich investovala jediný cent.
Ultra Ethernet Consortium (UEC), jehož cílem je optimalizace a další vývoj Ethernetu s důrazem na rostoucí síťové požadavky AI a HPC, vydalo specifikaci Ultra Ethernet 1.0 (pdf, YouTube).
Francouzský prezident Emmanuel Macron chce zakázat přístup na sociální sítě pro děti do 15 let. Francie podle něj tento krok udělá sama do několika měsíců, i pokud se na něm neshodnou další státy Evropské unie. Reaguje tak na úterní vraždu vychovatelky, kterou ve východofrancouzském městě Nogent pobodal 14letý mladík. Jednotlivé sociální sítě podle něj mají možnost věk ověřit a vymáhat zákaz pomocí systémů na rozpoznávání tváří.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,742 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 165 místo. Karolina, GPU partition klesla na 195. místo a Karolina, CPU partition na 421. místo. Další přehledy a statistiky na stránkách projektu.
Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
V Unixových operačních systémech si můžeme pro každou netriviální, a opakující se činnost napsat skript. Pokud je určen pouze pro naši potřebu, není problém. Když ho mají používat odborníci (správci, programátoři, ...), stačí napsat dokumentaci, nebo manuálové stránky. Jenže pokud má sloužit i běžným uživatelům, nastává problém, protože mají ti obvykle strach z příkazové řádky a dokumentaci nikdy nečtou.
A vývojáři KDE přišli s řešením. Kommander je přímo určen pro psaní jednoduchých GUI aplikací. Díky technologii DCOP (viz KDE: tipy a triky - III (DCOP a KDialog)), kterou Kommander vnitřně používá, je možné ze skriptu ovládat grafické prvky - widgety. Také nám odpadají problémy s binární kompatibilitou knihoven, od toho nás odstiňuje Kommander. Celý projekt je uložen v jednom SGML souboru, takže jeho instalace je velmi jednoduchá. Týká se to i binárních souborů, například obrázků, které jsou uloženy v souboru v textové podobě. Parser Kommanderu funguje jako makrojazyk a bohužel má i spoustu velmi nepříjemných omezení.
Od Kommanderu verze 1.2, který je součástí KDE od verze 3.4 je k dispozici nový parser, který se velmi liší od toho starého. V dalším textu budu mluvit o tom starém. Nový parser je relativní novinka a většina aplikací na kde-apps.org používá ten starší, nemluvě o tom, že je použitelný až od KDE verze 3.4. Nový parser bude tématem dalších dílů.
Dost už bylo textu, je na čase uvést nějaký obrázek. Kommander se
sestává ze svou programů. Kommander Executor (kmdr-executor
),
který provádí skripty uložené v souborech kmdr
. Druhým je
Kommander Editor (kmdr-editor
), vývojový nástroj, v němž se
navrhují dialogy a píše kód.
Při spuštění se můžeme podívat na obrázek kočky, ale moc dlouho ji
neuvidíte, protože Editor startuje velmi rychle. Pokud jste někdy psali
projekt pro KDE, nebo Qt, bude vám jeho prostředí připadat velmi známé. Je
to totiž upravený (a zjednodušený) Qt Designer od Trolltechu. Soubor se
skriptem je prakticky totožný, s ui
souborem, který generuje
Designer.
Přeskočme teorii a přejdeme rovnou k praxi. Od dob K&R je tradicí, že prvním příkladem je aplikace, která vypisuje Hello, world!. Já se rozhodl tuto tradici porušit a to ze dvou důvodů. Jednak je tento příklad nevhodný pro předvedení Kommanderu. Za druhé považuji čtenáře abclinuxu.cz za tak inteligentní, aby pochopili i složitější příklad: aplikaci pro snímání oken z obrazovky - kommander-1-snap.kmdr.
Všichni jistě znáte způsob, jak vyfotit v X Window okno (viz Snímání
obrazovky aneb vyfoťte si okno). Jenže příkaz xwd
ukládá
do stejnojmenného formátu. Pokud chceme rozumný, všeobecně používaný formát
PNG, celý proces se nám roztáhne na takovou kolonu příkazů:
xwd | xwdtopnm | pnmtopng > foo.png
Geekové žasnou, ale běžného uživatele tím asi moc nepřesvědčíte. Proto tento kód přiřadíme tlačítku Shot!. V kontextovém menu tlačítka zvolíme Edit Kommander Text a do okna tu kolonu napíšeme.
Jak prosté! Teď máme jednoduchou grafickou aplikaci, která vyfotí
aktuální okno a uloží do souboru ~/foo.png
. Akce je přiřazena
tlačitku jménem BtnShot
, typu ExecButton
. Tohle
řešení není moc dobré, uživatel by měl mít možnost si vybrat jméno souboru
a jeho umístění. Kód je nutné trochu modifikovat
@setGlobal(IMG,@exec(tempfile))
xwd | xwdtopnm | pnmtopng > @global(IMG)
@BtnSave.setEnabled(true)
Co jsme teď udělali? Za prvé neukládáme obrázek do domácího adresáře,
ale do souboru, který vytvoří příkaz tempfile
v adresáři
/tmp
. Jméno nově vytvořeného souboru je důležité, a protože s
ním budeme pracovat i v dalších částích kódu, uložíme si jej příkazem
@SetGlobal()
do globální proměnné IMG
. Ve druhém
řádku již přesměrováváme výstup do proměnné IMG
, jejíž hodnotu
vrací @global()
. No a v posledním příkazu povolíme tlačítko
BtnSave
, protože už máme obrázek, takže můžeme ukládat.
@
.
Stejným znakem začínají nejen příkazy, ale i jména grafických objektů a
dokonce i klíčová slova. Alespoň ve starém parseru to tak je.
Tlačítku BtnSave
potom přiřadíme tento kód.
cp @global(IMG) @Input.savefile(~, *.png,"Uložit screenshot")
Ten zkopíruje soubor img
na to místo, které vrátí dialog
@Input.savefile()
, Prvním parametrem je výchozí adresář,
druhým filtr souborů a posledním je titulek dialogu.
Kód tlačítka BtnExit
, které je typu
CloseButton
už uvedu jen pro pořádek.
rm -f @global(IMG)
Tím jsme získali jednoduchou aplikaci na tvorbu screenshotů obrazovky.
Její největší nevýhodou je špatná správa souborů v /tmp
, které
se ne vždy smažou. Každý obslužný událostní skript běží nezávisle na
ostatních, takže příkaz trap
nám zde nepomůže. Ale ilustrační
aplikaci to můžeme odpustit.
Není nic smutnějšího, než když widgety nedokáží reagovat na změnu velikosti okna a aplikace potom dopadne nějak takto:
Snap se pochopitelně chová správně:
Kdysi dávno jsem měl tu čest vidět aplikaci ve Visual Basicu, kde se o rozložení widgetů v okně staral přímo programátor. Ještě dnes si vzpomínám na ta kvanta kódu, která musela být napsána a taky na to, že žádosti o změny uživatelského rozhraní byly předem odmítnuty. Nevím, zda dotyčný jenom nevěděl, anebo to skutečně nešlo. Každý lepší toolkit obsahuje svého správce rozložení, který se o rozložení widgetů stará automaticky.
Kommander používá stejný toolkit jako KDE, a proto i správce rozložení jsou ty, které používá Qt.
V našem příkladě vidíme, že jsou všechna tlačítka pod sebou, takže je můžeme libovolně naskládat na formulář, označit, dát vertikální rozložení a ony se srovnají, jak potřebujeme (jenom změníme jejich velikost na požadovanou). Nakonec ještě vybereme layout pro celý formulář (v tomto případě je to úplně jedno, který vybereme) a máme pěkně fungující formulář, který reaguje na změny velikosti okna a bez jakéhokoliv řádku kódu.
![]() |
![]() |
![]() |
![]() |
Chování widgetů se dá ještě detailněji nastavit pomocí vlastnosti Size Policy.
V mnoha případech nechceme, aby byl jeden prvek těsně u druhého. Proto potřebujete nějakým způsobem správci rozložení říci, jak se má chovat. Toto zabezpečují spacers (překládám jako rozpěrky). Může se stát, že budeme chtít, aby byla mezi tlačítkem Konec a zbytkem mezera. Takže přidáme rozpěrku mezi Konec a Uložit a mezera mezi nimi je na světě.
Podobně jako mají widgety Size Policy, jsou všechny rozpěrky nastavitelné.
V tomto díle jste se seznámili s Kommanderem. Dozvěděli jste se, že má nový a starý parser, který je pouze makrojazykem. Umíte napsat primitivní aplikaci a víte, jak pracuje správce rozložení. V dalším díle si rozebereme složitější aplikaci, na které si ukážeme více rysů jazyka Kommanderu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
@Input.savefile(~, *, foo)Funguje tak, jak má. KDE je taky 3.4.