Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.
Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.
Byl vydán Mozilla Firefox 159.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 159 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nasazení softwaru, který nyní používá ve svých autech pro čínský trh, zvažuje automobilový koncern Volkswagen také v Evropě, kde by se mohl používat v budoucích vozech značek Volkswagen, Škoda a Cupra. Základem pro budoucí evropské modely by se mohla stát takzvaná China Electronic Architecture, elektronická architektura vyvinutá pro čínské modely ve spolupráci s tamní automobilkou Xpeng.
Vedoucím brněnské pobočky Red Hatu se stal Radek Vokál [LinkedIn].
Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.
Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.
Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace
… více »Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.
Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.
Občas se hodí vědět, zda náš program běží na terminálu nebo jsou jeho vstupy a výstupy přesměrované z/do souboru či jiného procesu. Pak můžeme upravit chování programu např. podle toho, jestli jeho vstup zadává ručně uživatel.
V první řadě je potřeba říct, že neexistuje nějaké jedno STDIO zařízení a nejde říct, zda program jako takový běží či neběží na terminálu. Máme tu tři souborové popisovače (FD – file descriptor):
a u nich má smysl se ptát, zda jsou napojené na terminál nebo ne. Běžně tedy může nastat situace, že vstup se čte z terminálu, zatímco výstup se zapisuje do souboru – nebo naopak.
(nejde o nic objevného, ale psal jsem to teď jako komentář do jedné diskuse, a protože by se to mohlo hodit i někomu dalšímu, dávám to sem do blogu, aby to nezapadlo)
Zda je daný FD terminál (TTY) nebo ne, nám řekne funkce isatty(). Ukázka v céčku:
#include <stdio.h>
#include <unistd.h>
void zkontroluj(int fd) {
if (isatty(fd)) printf("FD %d je TTY (terminál)\n", fd);
else printf("FD %d je roura nebo soubor\n", fd);
}
int main(int argc, char** argv) {
zkontroluj(fileno(stdin));
zkontroluj(fileno(stdout));
zkontroluj(fileno(stderr));
}
Přeložíme pomocí gcc a vyzkoušíme si různé varianty:
$ ./a.out FD 0 je TTY (terminál) FD 1 je TTY (terminál) FD 2 je TTY (terminál) $ ./a.out | cat FD 0 je TTY (terminál) FD 1 je roura nebo soubor FD 2 je TTY (terminál) $ echo | ./a.out FD 0 je roura nebo soubor FD 1 je TTY (terminál) FD 2 je TTY (terminál) $ ./a.out 2>/dev/null FD 0 je TTY (terminál) FD 1 je TTY (terminál) FD 2 je roura nebo soubor $ echo | ./a.out 2>/dev/null | cat FD 0 je roura nebo soubor FD 1 je roura nebo soubor FD 2 je roura nebo soubor
Pokud tuto funkci budeme využívat s rozumem a střídmě, můžeme upravit výchozí chování programu tak, aby lépe odpovídalo předpokládanému použití dle toho, v jakém prostředí resp. jakým způsobem byl program spuštěn. Při spuštění na terminálu např. můžeme zobrazovat prompt, nebo používat nějaký lidsky přívětivý formát… Vždy by ale toto chování mělo být dobře zdokumentované a mělo by být možné ho změnit (typicky parametrem na příkazové řádce nebo třeba proměnnou prostředí).
Také bychom měli pamatovat na to, že někdo může chtít náš program spouštět jako podproces svého programu – a pak je opravdu nežádoucí zaneřádit standardní či chybový výstup nějakými hláškami pro uživatele nebo na druhé straně zablokovat STDIN čtením či požrat data, která nebyla určena pro nás. Naprosté minimum je rozlišovat STDOUT od STDERR a zachovávat na STDOUT data v co nejčistší a dobře specifikované podobě. Měli bychom dodržovat klasické unixové pravidlo mlčení:
When a program has nothing surprising to say, it should say nothing.
One of Unix's oldest and most persistent design rules is that when a program has nothing interesting or surprising to say, it should shut up. Well-behaved Unix programs do their jobs unobtrusively, with a minimum of fuss and bother. Silence is golden.
This “silence is golden” rule evolved originally because Unix predates video displays. On the slow printing terminals of 1969, each line of unnecessary output was a serious drain on the user's time. That constraint is gone, but excellent reasons for terseness remain.
I think that the terseness of Unix programs is a central feature of the style. When your program's output becomes another's input, it should be easy to pick out the needed bits. And for people it is a human-factors necessity — important information should not be mixed in with verbosity about internal program behavior. If all displayed information is important, important information is easy to find.
-- Ken Arnold
Well-designed programs treat the user's attention and concentration as a precious and limited resource, only to be claimed when necessary.
A pokud se náš software používá jako knihovna, platí toto pravidlo dvojnásob – se STDIO bychom nikdy neměli pracovat přímo a měli bychom si nechat předat příslušné proudy či FD jako parametry a umožnit tomu, kdo nás volá, správně nasměrovat vstupy a výstupy. (když se náš program volá jako podproces, tak má dotyčný šanci mezi fork() a exec() přesměrovat FD a zabránit našemu programu manipulovat s původním STDIO, ale u knihovny to takhle snadno nejde, když se volá ve stejném vlákně/procesu)
Tiskni
Sdílej:
if test -t 0
then
: # FD 0 je terminál
fi