Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.3. Současně oznámila, že nadcházející větší vydání 24.04-2.0 bude mít modernější webový prohlížeč.
Ploopy po DIY trackballech či sluchátkách představuje nový externí DIY trackpoint se čtyřmi tlačítky Bean. Obsahuje snímač Texas Instruments TMAG5273, spínače Omron D2LS-21 a řadič RP2040, používá firmware QMK. Schémata jsou na GitHubu; sadu lze předobjednat za 69 kanadských dolarů (bez dopravy a DPH).
Mozilla před dvěma týdny na svém blogu oznámila, že díky Claude Mythos Preview bylo ve Firefoxu nalezeno a opraveno 271 bezpečnostních chyb. Včera vyšel na Mozilla Hacks článek s podrobnějšími informacemi. Z 271 bezpečnostních chyb mělo 180 chyb vysokou závažnost, 80 chyb střední závažnost a 11 chyb nízkou závažnost. Celkově bylo v dubnu ve Firefoxu opraveno 423 bezpečnostních chyb. Čísla CVE nemusí být přiřazována jednotlivým chybám. CVE-2026-6784 například představuje 154 bezpečnostních chyb.
Před týdnem zranitelnost Copy Fail. Dnes zranitelnost Dirty Frag. Běžný uživatel může na Linuxu získat práva roota (lokální eskalaci práv). Na většině linuxových distribucí vydaných od roku 2017. Aktuálně bez oficiální záplaty a CVE čísla [oss-security mailing list].
Ačkoli je papež Lev XIV. hlavou katolické církve a stojí v čele více než miliardy věřících po celém světě, také on někdy řeší všední potíže. A kdo v životě neměl problémy se zákaznickou linkou? Krátce poté, co nastoupil do úřadu, musel papež se svou bankou řešit změnu údajů. Operátorka ale nechtěla uvěřit, s kým mluví, a Svatému otci zavěsila.
Incus, komunitní fork nástroje pro správu kontejnerů LXD, byl vydán ve verzi 7.0 LTS (YouTube). Stejně tak související LXC a LXCFS.
Google Chrome 148 byl prohlášen za stabilní. Nejnovější stabilní verze 148.0.7778.96 přináší řadu novinek z hlediska uživatelů i vývojářů. Vypíchnout lze Prompt API (demo) pro přímý přístup k AI v zařízení. Podrobný přehled v poznámkách k vydání. Opraveno bylo 127 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Richard Hughes oznámil, že po společnostech Red Hat a Framework a organizacích OSFF a Linux Foundation, službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzorují také společnosti Dell a Lenovo. Do dnešního dne bylo díky LVFS provedeno více než 145 milionů aktualizací firmwarů od více než 100 různých výrobců na milionech linuxových zařízení.
Americké technologické společnosti Microsoft, Google a xAI souhlasily, že vládě Spojených států poskytnou přístup k novým modelům umělé inteligence (AI) před jejich uvedením na trh. Oznámila to americká vláda, která tak bude moci prověřit, zda modely nepředstavují hrozbu pro národní bezpečnost. Oznámení podtrhuje rostoucí obavy Washingtonu z rizik spojených s výkonnými AI systémy. Americké úřady chtějí v rámci předběžného přístupu
… více »Potřeboval bych v cyklu načítat hodnoty oddělené nulovým bajtem do proměnných.
Funguje mi tohle -- na každý řádek to vypíše jednu proměnnou:
printf 'a\0b\0c\0d\0' | while read -d '' x; do echo ">$x<"; done(případně
-d $'\0' se chová stejně)
V dokumentaci se ale píše:
-d oddělovač pokračuje, dokud není načten první znak ODDĚLOVAČE namísto nového řádku
Takže pomocí -d to zjevně nepůjde udělat. Zkoušel jsem nastavovat $IFS, ale to nepomohlo. Tohle nefunguje:
printf 'a\0b\0c\0d\0' | while IFS='' read x y; do echo ">$x< >$y<"; done printf 'a\0b\0c\0d\0' | while read -d '' x y; do echo ">$x< >$y<"; done
Potřeboval bych dosáhnout něčeho jako:
printf 'a\0b\0c\0d' | xargs -0 -n2 echo
Tzn. ze vstupu se vezmou dva prvky a ty se zpracují jedním příkazem. Ale chci to mít ve while cyklu, abych tam mohl napsat blok kódu. Proběhly by dva cykly a v každém bych měl naplněné dvě proměnné.
Jde toho nějak dosáhnout pomocí read nebo jiného příkazu? Ano, můžu si to napsat v C jako Bash built-in příkaz :-) ale tohle snad už musel někdo řešit, ne?
P.S. pak je ještě problém, že bez koncového \0 načte read jen tři prvky a čtvrtý zahodí, ale to je relativně detail, mohl bych na konec přidávat \0, i když lepší by bylo, aby to bralo i EOF.
Řešení dotazu:
printf 'a\0b\0c\0d' | xargs -0 -n2 echo | while read x y; do echo "$x" "$y"; done
O tomhle vím (resp. jde to jednodušeji i přes tr \\0 \\n), ale problém je v tom, že když hodnota bude obsahovat znak konce řádku, tak se to rozbije. Proto právě chci pracovat s těmi nulovými bajty, aby tam jinak kromě nich mohlo být cokoli.
No, do jednoho pole asi ne, protože co když má vstup 10 EB…
Každopádně se dá vstup postupně načítat do polí se dvěma prvky.
Tak jsem to už skoro vyřešil :-)
Definuji si funkci:
read_zero() { for v in "$@"; do export $v; read -r -d $'\0' $v; done }
a následně ji použiji místo read:
printf 'a\0b\0c\0d\0' | while read_zero x y; do echo ">$x< >$y<"; done
Jediný problém je, že za poslední hodnotou musí být \0.
Tak se mi pravděpodobně povedlo vyřešit i ten poslední problém:
read_zero() { for v in "$@"; do export "$v"; read -r -d '' "$v" || [ ! -z "${!v}" ]; done }
printf 'a\0b\0c\0d' | while read_zero x y; do echo "x='$x' && y='$y'"; done
# vypíše:
# x='a' && y='b'
# x='c' && y='d'
GNU Bash je hodně mocný nástroj :-)
A z něj by šlo nastavit proměnnou ven?
Jinak v Perlu jsem to dělal také -- přes xargs šlo do Perlu vždy X proměnných a tam se to přes perl -ne '...tady je perlovský skript, klidně i na víc řádků...' zpracovalo (příklad). Ale teď se právě snažím najít způsob, jak to napsat i celé jen v Bashi a aby tam člověk mohl mít blok kódu, ale šlo to napsat i na jeden řádek. Řešení s vlastní funkcí na jeden řádek není, ale zase tu funkci stačí načíst jednou a pak už ji jen používáš.
Nakonec jsem tam ještě nějakou chybu našel: je problém, když poslední hodnota chybí (tzn. byly by tam dva nulové bajty po sobě) a zároveň chybí ten poslední nulový bajt... ale to už budu řešit tak, že poslední nulový bajt prostě chybět nebude :-)
Mně přijde nejjednodušší readarray.
printf 'a\0b\0c\0d' | for ((;;)); do
readarray -d $'\0' -n 2 -t array
((! ${#array[@]})) && break
echo "${array[@]@A}"
done
Nulu na konci to toleruje v pohodě, kdyby tam náhodou byla.
Ještě by to mohlo umět hlásit, když počet záznamů není sudý, něco jako ((1 == ${#array[@]})) && echo 'Ultra-fatal error.' 1>&2.
Díky, tohle je zajímavé řešení. Sice budu používat asi spíš tu svoji funkci, která to naplní do pojmenovaných proměnných, ale tohle je taky užitečné -- ukládám si to do poznámek pro pozdější použití :-)
Tiskni
Sdílej: