Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 7.0.0. Pro sandboxing se na Linuxu nově používá Landlock místo Bubblewrap. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Správce fotografií Shotwell byl vydán ve verzi 33.0 (GitLab). Hlavní novinkou v tomto vydání po dvou letech je přechod na GTK4.
Na YouTube byly publikovány videozáznamy přednášek a na Flickru fotografie z konference EuroPython 2026.
Byl vydán Debian 13.7, tj. sedmá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Jiří Eischmann se v příspěvku Fiasko jménem W Social na svém blogu věnuje evropské sociální síti W: "W Social je příkladem toho, že se problémy sociální sítí nedají řešit od exekutivního stolu. Když na začátku tohoto roku v Davosu oznámili vznik nové sociální sítě W Social, politici se mohli přetrhnout ve chvalozpěvech. Konečně evropská sociální síť a ještě s ověřením identity. … Jak se ukázalo, když v Davosu W Social oznamovali, neměli kromě
… více »Výrobce hardwarových kryptoměnových peněženek Trezor upozorňuje na bezpečnostní incident u společnosti Brevo, kterou využívá k odesílání newsletterů. Útočník na e-mailové adresy odeslal phishingový e-mail.
Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za srpen 2026. Aplikace XApp mají vlastní webovou stránku xapp-project.org. Představena byl čtečka EPUB s názvem Xepub a kalendář Clockenstein.
Byla vydána nová verze 3.2.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Bylo vydáno Ubuntu 24.04.5 LTS, tj. páté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na poznámkách k vydání.
Švýcarsko testuje přechod z Microsoft 365 na FOSS, konkrétně balík openDesk (Wikipedie) od německé státní společnosti ZenDiS (Wikipedie), s cílem posílit digitální suverenitu.
for N in {1..1000}; do
A=$(bc -l <<< "scale=9; s(3.14159/$N)")
B=$(bc -l <<< "scale=9; c(3.14159/$N)")
printf "$A;$B"
doneJe to teda dost zjednodušený, aby se v tom dalo vyznat.Řešení dotazu:
#!/bin/bash
# test1.sh
for N in {1..5000}; do
A=$(bc -l <<< "scale=9; s(3.14159/$N)" &)
B=$(bc -l <<< "scale=9; c(3.14159/$N)" &)
wait
printf "$A;$B\n"
done
Pokud máš více jak 2 jádra, je asi lepší paralelizovat iterace:
#!/bin/bash
# test2.sh
function wait_for_threads() {
while [ $(jobs -rp | wc -l) -ge $threads ];
do sleep $check_interval_secs;
done
}
threads=$(grep processor /proc/cpuinfo | wc -l)
check_interval_secs=0.01
for N in {1..5000}; do
wait_for_threads
(
A=$(bc -l <<< "scale=9; s(3.14159/$N)")
B=$(bc -l <<< "scale=9; c(3.14159/$N)")
printf "$N $A;$B\n"
) &
done | sort -n | cut -d' ' -f2-
Režie bude ale obrovská, vzhledem k rychlosti k výpočtu v bc. Takže by to chtělo rozdělit iterace do clusterů, které by byli prováděny paralelně:
#!/bin/bash
# test3.sh
iters=5000
threads=$(grep processor /proc/cpuinfo | wc -l)
cluster_size=$((iters/threads))
last_cluster_size=$((iters-cluster_size*(threads-1)))
temp=$(mktemp -d)
for C in $(seq $threads); do
first_iter=$(( (C-1) * cluster_size + 1 ))
if [ $C -lt $threads ]; then
last_iter=$(( first_iter + cluster_size -1 ))
else
last_iter=$(( first_iter + last_cluster_size -1 ))
fi
(
for N in $(seq $first_iter $last_iter); do
A=$(bc -l <<< "scale=9; s(3.14159/$N)")
B=$(bc -l <<< "scale=9; c(3.14159/$N)")
printf "$A;$B\n"
done
) > $temp/$C.list &
done
wait
for C in $(seq $threads); do
cat $temp/$C.list
rm $temp/$C.list
done
rmdir $temp
Benchmark na i5 (4 core):
$ time ./test0.sh > test0.output # original bez paralelizace real 0m15.776s user 0m0.928s sys 0m1.628s $ time ./test1.sh > test1.output real 0m12.012s user 0m0.608s sys 0m1.588s $ time ./test2.sh > test2.output real 0m11.803s user 0m1.300s sys 0m1.288s $ time ./test3.sh > test3.output real 0m3.278s user 0m0.388s sys 0m0.808s $ for i in 1 2 3; do cmp test0.output test$i.output; echo $?; done 0 0 0
CPU=$(grep processor /proc/cpuinfo | wc -l) for S in $(seq 1 $CPU); do sleep .00$((S-1)) for N in $(seq $S $CPU 1000); do A=$(bc -l <<< "scale=9; s(3.14159/$N)") B=$(bc -l <<< "scale=9; c(3.14159/$N)") printf "$A;$B" done & done wait
.
/bin/dash, který by měl být upraven pro dávkové zpracování.
/bin/dash hodně zjednodušený, aby běhal co nejrychleji a dělal jen to nezbytné, co shell musí umět. Pro daný případ se tedy nehodí.
bc, Pythonu, Perlu, AWK, Haskellu nebo čemkoli jiném, co je výkonnější než Bash? Přeskakovat při každém průchodu cyklem do bc a zpátky není vůbec efektivní. Navíc se Bash na zpracování čísel vůbec nehodí.
#!/bin/bash
bc -l <<EOT
scale = 9
for (n = 1; n <= 1000; n++) {
print s(3.14159/n), ";", c(3.14159/n), "\n";
}
quit
EOT

#!/bin/bash
bc_call() {
bc -l <<EOT
scale = 9
for (n = 1; n <= 1000; n++) {
print s(3.14159/n), " ", c(3.14159/n), "\n";
}
EOT
}
bc_call | while read A B; do
printf "\e[${B};${A}H\e[48;5;161m \e[0m"
done
Tiskni
Sdílej: