Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)
Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.
Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).
Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.
FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.
Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.
Insula Faktury je open source generátor faktur, který běží přímo ve webovém prohlížeči. Žádná registrace, žádné sledování, žádné omezení. Zdrojové kódy jsou k dispozici na Codebergu.
První Mobile Linux Hackday v Plzni, tj. komunitní setkání věnované Linuxu na mobilních zařízeních, proběhne 24. července od 10:00. Akce je otevřená všem zájemcům – od zvědavců po zkušené vývojáře. Dopoledne proběhnou přednášky Davida Heidelberga a Petra Hodiny o aktuálním stavu mobilního Linuxu: proč vůbec chtít tučňáka v kapse, jaké telefony jsou dnes dobře podporované a co taková podpora obnáší. Po obědě se zaměříme na konkrétní
… více »Řešení dotazu:
source "$(dirname $0)/foo/bar"nebo takto ?
source $(dirname $0)/foo/barDíky
source "$(dirname "$0")/foo/bar" ;)
OT: Takové source-ování nebude fungovat jak asi chceš při použití linek.
source $(dirname $0)/foo/bar
source "$(dirname "$0")/foo/bar"Ale zjištění adresáře nebude vždy, to co si asi zamýšlíš.
Mám pocit, že tě napínám, takže příklad:
Příprava:
mkdir kuk echo -e "#\!/bin/bash\n\necho \"\$(dirname \"\$0\")/foo/bar\"\n" > kuk/do.bash ln -s kuk/do.bash dolink ln -s kuk kuklink chmod +x kuk/do.bash
Test:
./kuk/do.bash ./dolink ./kuklink/do.bash
Otázka:
Chceš to tak?
Úklid:
rm ./dolink rm ./kuk/do.bash rm ./kuklink rmdir kuk
Můžeš ještě jednou co se snažíš říct - pro blba? Díky
Výstup z těch ukázek:
$ ./kuk/do.bash -> ./kuk/foo/bar - OK $ ./dolink -> ./foo/bar - ??? $ ./kuklink/do.bash -> ./kuklink/foo/bar - OK!
„¡Studenti! pokud nechápe výklad je chyba přednášejícího, ne vaše …rozumíte tomu?“…
Kromě případu, kdy chceš z proměnné s mezerami vytvořit pole, je vhodné mít uvozovky v podstatě všude. Možná se najde ještě pár dalších exotických situací, kde se uvozovky nehodí, ale moc jich nebude.
text='a b c d e'
tokens=(${text}) # Tohle je ten speciální případ.
other_tokens=("${tokens[@]}") # Kopírování pole má uvozovky.
Složené závorky jsou u proměnných, které nejsou pole, v podstatě dobrovolné, ale většinou je používám. Přijdou vhod třeba v případě, kdy člověk změní "${text} s mezerami" na "${text}bez_mezer", protože zatímco "$text s mezerami" funguje podle očekávání, "$textbez_mezer" se se značnou pravděpodobností rozexpanduje na velké kulové.
Následuje ještě jeden příklad s poli a s uvozovkami. Expanze ${words[@]} a ${words[*]} dělají mimo uvozovky totéž, ale v uvozovkách se chovají odlišně.
words=(' a b ' ' c d ')
for word in ${words[*]}; do echo "${word}" \| ${word}; done # 4 řádky
for word in ${words[@]}; do echo "${word}" \| ${word}; done # 4 řádky
for word in "${words[@]}"; do echo "${word}" \| ${word}; done # 2 řádky
for word in "${words[*]}"; do echo "${word}" \| ${word}; done # 1 řádek
Zajímavé je též pořadí expanze v shellu — na první pohled nemusí být zřejmé, že přidání uvozovek do následujícího příkladu vůbec nic nezmění.
quotes=('"' '"' '"');
for i in ${quotes[@]}; do echo $i; done
Možná se najde ještě pár dalších exotických situací, kde se uvozovky nehodíExotických situací jako když máš v proměnné několik voleb programu? Ano, používat uvozovky všude, kde není zapotřebí word splitting, neškodí. Škodlivý je ovšem názor, že chtěný word splitting je cosi exotického. Je to příznak velkolepého formálního programování v shellu (ve srovnání se skriptováním), při kterém se nevyužívají silné stránky shellu, zato se složitě matlají věci, které ve vhodnějším jazyce fungují mnohem lépe.
Na druhé straně není nic horšího než matlání skriptů, které selžou při první neočekávané mezeře. Viděl jsem takových dost na to, abych byl skalním příznivcem uvozovek. Když chci mít v jedné proměnné víc optionů, je spousta důvodů pro použití pole, ve kterém se například option obsahující mezeru nerozdělí na dva. Pokud parsuju strukturovaná data, u kterých vím naprosto jistě, co je oddělovač a co ne, je to samozřejmě zcela jiná situace. Nejhorší je expandovat obyčejnou proměnnou obsahující parametry příkazové řádky, které mohou obsahovat jména souborů, která mohou obsahovat téměř libovolné bílé místo.
Tiskni
Sdílej: