Společnost Valve publikovala přehled To nej roku 2025 ve službě Steam aneb ohlédnutí za nejprodávanějšími, nejhranějšími a dalšími nej hrami roku 2025.
Byly publikovány výsledky průzkumu mezi uživateli Blenderu uskutečněného v říjnu a listopadu 2025. Zúčastnilo se více než 5000 uživatelů.
V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.
Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.
FFmpeg nechal kvůli porušení autorských práv odstranit z GitHubu jeden z repozitářů patřících čínské technologické firmě Rockchip. Důvodem bylo porušení LGPL ze strany Rockchipu. Rockchip byl FFmpegem na porušování LGPL upozorněn již téměř před dvěma roky.
K dispozici je nový CLI nástroj witr sloužící k analýze běžících procesů. Název je zkratkou slov why-is-this-running, 'proč tohle běží'. Klade si za cíl v 'jediném, lidsky čitelném, výstupu vysvětlit odkud daný spuštěný proces pochází, jak byl spuštěn a jaký řetězec systémů je zodpovědný za to, že tento proces právě teď běží'. Witr je napsán v jazyce Go.
Yazi je správce souborů běžící v terminálu. Napsán je v programovacím jazyce Rust. Podporuje asynchronní I/O operace. Vydán byl v nové verzi 25.12.29. Instalovat jej lze také ze Snapcraftu.
Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
ioctl().
/dev/ttyS0 (nebo jiný) pro čtení i zápis, zapisujte tam a čtěte z něj, jako by to byl normální soubor. Něco složitějšího by bylo potřeba řešit teprve ve chvíli, kdy byste potřeboval zpracovávat data od protějšku asynchronně.
sigaction(). Funguje to asi takhle:
struct sigaction saio; saio.sa_handler = signal_handler_IO; sigemptyset(&saio.sa_mask); saio.sa_flags = 0; saio.sa_restorer = NULL; sigaction(SIGIO,&saio,NULL); fcntl(fd, F_SETOWN, getpid()); fcntl(fd, F_SETFL, FASYNC);
signal_handler_IO() je funkce, kterou si napíšeš sám. Tohle funguje jako přerušení - když přijdou data z portu, tvůj program přeruší běh a vykoná tuhle funkci; pak se vrátí tam, odkud vyskočil. Je to příklad, který jsem našel na netu, neověřoval jsem, jestli bude fungovat - cílem bylo ukázat na dvě podstatné funkce: sigaction() a fcntl()
Pokud si vzpomínám, ten port musí být otevřen jako neblokující (parametr O_NONBLOCK předaný funkci open()) a asynchronní. Příklad s nějakou teorií okolo toho najdeš tady
Druhá možnost je využití sigwait() nebo sigwaitinfo(). To se hodí, když program čeká na víc věcí naráz. Z hlediska programátora to funguje tak, že program se po zavolání této funkce zastaví a čeká, až se něco stane - vypršení časovače, přijetí dat na portu atd. Když jsem naposledy hledal, moc jsem toho na webu nenašel, ale něco je tady
Nějaké srovnání mezi těmito způsoby najdeš v diskuzi zde. Popis všech jmenovaných funkcí najdeš v manuálových stránkách (man jméno_funkce), popřípadě na webu: Linux man pages.
Který způsob si vybereš (signál jedním či druhým způsobem nebo samostatné vlákno), je na tobě; asi to bude záviset na tom, co ten program dělá kromě obsluhy portu, jaké má uživatelské rozhraní (jestli nějaké má) a podobně.
Pokud nepotřebujete během toho čekání na data dělat něco jiného, tak v tom není žádný problém. Syscall read() se nevrátí, dokud nepřečte nějaká data, nedojde k chybě nebo nedostanete nějaký signál. Pokud potřebujete během čekání vyvíjet nějakou činnost, je možné podle okolností použít select()/poll(), asynchronní čtení, samostatný thread, možná jsou i další možnosti. Ale pak by to chtělo víc informací.
Tiskni
Sdílej: