Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
Byla publikována Výroční zpráva Blender Foundation za rok 2024 (pdf).
Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.
read y ${pole[$y]}ale v okamziku preklepu jsem na mrtvem bode.
check() { what=$1 shift for i in $@; do [ "$what" = "$i" ] && return 0 done return 1 } while true; do read x check $x alpha beta gamma && break done echo $x
while true; do read x check $x alpha beta gamma && break doneJe-li splněna podmínka true, provede se cyklus. Protože následně volám funkci, která vrací true, nebo false, cyklus bud probehne, nebo ne. Volám funkci check a $x, kterou zadal uživatel odesílám jako první poziční parametr. alpha beta gamma odesílám jako další poziční parametry. Takže takhle může přece odeslat přímo to pole a zpracuje se to stejně???
check $x ${pole[*]}funkce check() definuju promenou what=$1, což znamená, že ji přiřadím první poziční prametr, tedy naše $x, který zadal uživatel. shift zajistí posun poz. par. a následně v cyklu for přiřadím prom. i všechny poziční parametry pomocí $@.
[ "what" = "i" ] && return 0jestli se what = i, tedy jestli naše zadané $x se najde ve výpisu poz. par. ($@), pak funkce vrátí nepravdu a protože podmínka cyklu while nebyla splněna, cyklus neproběhne a script pokračuje dalším příkazem. Zde mám nejasnost s shift. Neměl by být umístěn později? Když posunu poz. param., tak $1 zmizí a na její místo se posune $2. To by přece znamenalo, že už potom nebude figurovat v $@ a tedy se nesplní podmínka [ "what" = "i" ] No ono to funguje, takže tohle nechápu. Mě připadá logické umístit shift na konec funkce.
check
očekává jako 1. parametr to zadané x (jehlu) a na všech dalších pozicích seznam povolených hodnot (kupku sena). Když si do what
přiřadím $1
a provedu shift
, v seznamu parametrů mi zbudou jen ty povolené hodnoty. Pokud je při provádění cyklu splněna podmínka [ "$what" = "$i" ]
, znamená to, že jehla se v kupce sena našla a funkce tím pádem vrátí pravdu (nulová návratová hodnota znamená úspěch). Pokud cyklus proběhne do konce a jehla se nenajde, funkce vrátí 1, což značí neúspěch. check
bych nazval funkcí s negativním očekáváním.
Cyklus while true
sám o sobě nikdy neskončí – true
bude pravda až do konce světa check $x alpha beta gamma && break
znamená, že v případě úspěchu funkce check()
se nekonečný cyklus přeruší a program pokračuje dál. break
je jedna z možností, jak přerušit nekonečný cyklus. Jestli z nějakého jazyka znáš cyklus s logikou do – while
, tak tohle je obezlička pro jazyky, které mají jen while – do
:
while (true) { delej_neco(); if (!podminka) { break; } }Volání pomocí
check $x ${pole[*]}
je samozřejmě v pořádku.
${pole[@]}
místo ${pole[*]}
popř. $@
místo $*
kde to jen jde, poměrně často se vyskytne podmínka že hodnoty v poli mohou obsahovat mezery.
A="ls -a"
$A
spustí ls s parametrem -a. V tomhle případě je jedno, co je tam za proměnnou, důležité je, že její výskyt není v uvozovkách. Když to dáme do uvozovek, žádná expanze na pole se neprovede:
A="ls -a"
"$A"
zahlásí chybu, že program "ls -a" neexistuje. Je ale výjimka: pokud do uvozovek dáte proměnnou $@ nebo ${xxx[@]}, expanze na pole se provede, ale ne podle IFS (mezery apod.), ale tak, aby byly zachovány původní parametry/prvky pole. Příklad (spusťte a sledujte chybové hlášky):
set ls "adresář neexistuje"
$*
"$*"
$@
"$@"
Závěr: když nechcete expanzi, používejte @ místo * a dávejte to do uvozovek.
in_array() { local i needle=$1 shift 1 for i in "$@"; do [[ "$i" == "$needle" ]] && return 0 done return 1 } pole[0]=foo pole[1]=bar pole[2]="dve slova" read slovo in_array $slovo "${pole[@]}" && echo ok
in_array() { local i needle=$1 shift 1 # array() undefined [ -z "$1" ] && return 1 for i in $@ do [ "$i" == "$needle" ] && return 0 done return 1 } pole[0]=foo pole[1]=bar pole[1]="dve slova" read slovo if in_array $slovo ${pole[@]}; then echo ok else echo ko fi
# array() undefined
[ -z "$1" ] && return 1
Tohle je hodně divné. Proč by se v poli, které začíná prázdným řetězcem, nemělo dát nic najít?
Tiskni
Sdílej: