Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().
Byla vydána nová verze 25.12.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Společnost Valve publikovala přehled To nej roku 2025 ve službě Steam aneb ohlédnutí za nejprodávanějšími, nejhranějšími a dalšími nej hrami roku 2025.
Byly publikovány výsledky průzkumu mezi uživateli Blenderu uskutečněného v říjnu a listopadu 2025. Zúčastnilo se více než 5000 uživatelů.
V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.
Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.
FFmpeg nechal kvůli porušení autorských práv odstranit z GitHubu jeden z repozitářů patřících čínské technologické firmě Rockchip. Důvodem bylo porušení LGPL ze strany Rockchipu. Rockchip byl FFmpegem na porušování LGPL upozorněn již téměř před dvěma roky.
K dispozici je nový CLI nástroj witr sloužící k analýze běžících procesů. Název je zkratkou slov why-is-this-running, 'proč tohle běží'. Klade si za cíl v 'jediném, lidsky čitelném, výstupu vysvětlit odkud daný spuštěný proces pochází, jak byl spuštěn a jaký řetězec systémů je zodpovědný za to, že tento proces právě teď běží'. Witr je napsán v jazyce Go.
Yazi je správce souborů běžící v terminálu. Napsán je v programovacím jazyce Rust. Podporuje asynchronní I/O operace. Vydán byl v nové verzi 25.12.29. Instalovat jej lze také ze Snapcraftu.
Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Občas by člověk potřeboval něco naprogramovat v BASHi a nepamatuje si, nedělá to často a tak. No a k tomu by se mu hodily nějaké tu základní konstrukce vytesané do webu. Třeba zrovna dnes jsem hledal způsob jak se pracuje s proměnými jejichž název je v nějaké proměné. Paradoxní, že jsem hledal svůj vlastní příspěvek a v něm obsažený příklad.
#!/bin/bash
foo () {
local var=BAR_$1
eval $var=$2
echo ${!var}
}
foo Ahoj svete # melo by vypsat "svete"
# uvnitr funkce by mela vzniknout promenna
# BAR_Ahoj="svete"
echo $BAR_Ahoj
exit 0
Jak se vždy přepnout do adresáře kde je umístěn script a dělat cosik relativně k tomuto adresáři?
# go to root directory of project
origdir=$(pwd)
cd ${0%/*}
Co udělat s parametrem od uživatele, když nám zadá cestu k nějakému souboru (když relativní tak zpravidla relativní k původnímu umístění).
[ ${1:0:1} == '/' ] &&
filename=$1 ||
filename=$origdir/$1
Ať se stane cokoli, měli bychom po sobě uklidit. Teda pokud se nebjeví nějakej "umětel" a nepošle nám SIGKILL.
#exit clean
clean() {
rm -rf $clist $dlist $packdir
}
trap clean EXIT
Něco málo k hezkým chybovým hláškám.
#error messages
error() {
local exitcode=$1
shift
[ $exitcode != 0 ] && local prefix="error $exitcode:"
errormsg "$prefix $@"
exit $exitcode
}
errormsg() { echo "${0##*/}: $@" >&2 ; }
Občas se hodí udělat ten program trochu ukecanější.
#debug info
debug() {
[ "$debug" == 1 ] && errormsg "debug: $@"
}
debugvar() {
for i
do
debug "${IFS:1:1}variable $i: '${!i}'"
done
}
Tohle už tu bylo, ale trocha opakování ještě nikoho nezabila.
# usage
usage() {
cat >&2 <<EOF
Usage: ${0##*/} [switches] [release_type]
-h | --help print help
-c | --create print template for defined files list (to stdout)
-l <filename> | --listfile=<filename> determine alternative filename for listfile
-t | --test only test listfile
-d | --debug print debug informations
EOF
[ $# -ge 1 ] && exit $1
}
# get options
params=$(
getopt -n "${0##*/}" -l help,create,listfile:,test,debug -o hcl:td -- "$@"
)
[ $? != 0 ] && usage 1
# remove quotes
eval set -- "$params"
unset params
# handle parameters
while :
do
case "$1" in
-h|--help) usage 0;;
-c|--create) create_listfile ;;
-l|--listfile) shift
[ ${1:0:1} == '/' ] &&
listfile=$1 ||
listfile=$origdir/$1 ;;
-t|--test) test=1;;
-d|--debug) debug=1;;
--) shift; break ;;
*) error 32 "Internal Error: Inconsistent getopt params!";;
esac
shift
done
A to je pro dnešek vše přátelé.
Tiskni
Sdílej:
tak by jsmeEt tu, Brute?