Na blogu programovacího jazyka Swift byl publikován příspěvek Psaní aplikací pro GNOME v programovacím jazyce Swift. Používá se Adwaita pro Swift.
egui je GUI knihovna pro programovací jazyk Rust běžící na webu i nativně. Vydána byla verze 0.27.0.
Byla vydána nová verze 6.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.13. Thunderbird na verzi 115.9.0.
Linka STOPonline.cz v roce 2023 přijala 3700 hlášení závadného obsahu na internetu, 22 bylo předáno PČR, 23 bylo předáno ISP a 944 závadových domén zobrazujících dětskou nahotu či pornografii bylo nahráno do mezinárodního systému ICCAM, který je spravován asociací INHOPE.
Byla publikována podrobná analýza v upstreamu již opravené bezpečnostní chyby CVE-2024-1086 v Linuxu v nf_tables.
Byla vydána nová verze 4.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání.
Úkolníček Taskwarrior (Wikipedie) pro správu úkolů z příkazového řádku byl vydán ve verzi 3.0.0.
Společnost Canva stojící za stejnojmenným webovým grafickým editorem koupila společnost Serif stojící za grafickým editorem Affinity.
Byla vydána betaverze Fedora Linuxu 40, tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 16. dubna. Z novinek (ChangeSet) lze vypíchnout podporu frameworku pro strojové učení PyTorch. Fedora KDE Plasma Desktop přichází s Plasmou 6 a běží nad Waylandem. Fedora Workstation přichází s GNOME 46.
Před měsícem společnost OpenAI představila AI model Sora pro generování realistických videí z textového popisu. Včera zveřejnila 7 videí od umělců, kterým umožnila přístup k tomuto modelu.
Řešení dotazu:
Používá se hlavně poll()
, protože select()
je takový slabý odvar, který na některých systémech nakonec stejně volá poll()
.
Já to ještě trochu zobecním: Co když chce čekat na socketu i na stdin
, ale zároveň ještě asynchronně něco (dalšího) dělat? I to se dá (v jednovláknovém programu) zařídit. Řešení může být například:
man sigaction
) pro SIGIO
(SIGPOLL
), který napřed zkontroluje neblokujícím poll()
(timeout
0), který file descriptor a typ operace to bude, a pak přečte příslušnou zprávu, což bude neblokující (a dá se to pojistit také pomocí F_SETFL
O_NONBLOCK
(man fcntl
)).F_SETOWN
na svůj vlastní proces (getpid()
), aby pak dostával asynchronně signály o změnách na socketu (man socket
, man fcntl
).Samozřejmě tady nezmiňuju corner cases, které se musí rozumně ošetřit. Například když zápis do neblokujícího deskriptoru najednou vrátí EWOULDBLOCK
.
Správným řešením je getaddrinfo()
. To je funkce, která správně vyhodnotí IP adresy všech možných typů i doménová jména a dodá pak všechny potřebné konstanty pro vytvoření toho socketu. Takže pak uživatel nikdy nemusí mít v kódu něco jako AF_INET6
, což může přestat fungovat, až se bude používat AF_INET54
, ale vezme zkrátka konstanty ze struktur vrácených z getaddrinfo()
. Navíc getaddrinfo()
správně vyhodnotí konektivitu, takže se nestane, aby například na IPv6-only stroji nabízelo IPv4 adresy, i když zadaná doména nějaké má.
Tiskni Sdílej: