Vojenské zpravodajství (VZ) se v březnu zapojilo do mezinárodní operace proti aktivitám hackerské skupiny APT28, která je spojovaná s ruskou vojenskou zpravodajskou službou GRU a která přes slabě zabezpečené routery prováděla kybernetické útoky na státní a další organizace v ČR i zahraničí. Operaci vedl americký Federální úřad pro vyšetřování (FBI) a jejím cílem bylo odebrat útočníkům přístup k napadeným zařízením a ty následně … více »
Tvůrcem nejpopulárnější kryptoměny bitcoin, který se skrývá za pseudonymem Satoši Nakamoto (Satoshi Nakamoto), je britský kryptograf Adam Back. Na základě vlastní investigativní práce to tvrdí americký deník The New York Times (NYT). Několik indicií podle autorů jasně ukazuje na to, že Back a Nakamoto jsou stejný člověk. Jde mimo jiné o podobný odborný a osobnostní profil či totožné chyby a manýry v psaném projevu.
Google Chrome 147 byl prohlášen za stabilní. Nejnovější stabilní verze 147.0.7727.55 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře. Přehled novinek v Chrome DevTools 145 až 147 také na YouTube.
Vývojáři z Laboratoří CZ.NIC vydali nové verze aplikací Datovka (Datovka 4.29.0, Mobilní Datovka 2.6.2). V případě desktopové verze přibyly možnosti projít všechny uložené zprávy, zkontrolovat časy expirací časových razítek a přerazítkovat datové zprávy, které lze v ISDS přerazítkovat. Novinkou je také možnost vytahovat myší ze seznamu ZFO soubory datových zpráv, tento úkon jde udělat i pomocí tlačítek Ctrl+C. Nová verze Mobilní Datovky přináší jen drobné úpravy.
MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.28.0. Z novinek lze vypíchnout novou třídu machine.CAN.
Michael Meeks, CEO společnosti Collabora, na apríla oznámil, nebyl to ale apríl, že nadace The Document Foundation zastřešující vývoj kancelářského balíku LibreOffice vyloučila ze svých řad všechny zaměstnance a partnery společnosti Collabora, tj. více než třicet lidí, kteří po mnoho let přispívali do LibreOffice. Nadace The Document Foundation po několika dnech publikovala oficiální vyjádření. Přiznává pochybení při zakládání
… více »Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že v úterý 14. dubna (změna!!!) od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout
… více »Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.
VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.
Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
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.