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.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
script -A ARG -B ARG [ -a ARG ] [ -b ARG ] [ -c ARG ] ] [ -C ARG [ -a ARG ] [ -d ARG ARG ARG ] [ -c ARG ] -D [ ARG ]Poradi sekci je pevne dano takto: -A -B -C -D, pricemz -A a -D jsou povinne, -D ma parametr nepovinny Sekce: kazda ze sekci -B -C muze ale nemusi mit dalsi specifikovane parametry. pricemz pro -B mame k dispozici napriklad -a -b -c parametry a pro sekci -C mame -a -d a -c, pricemz -a a -c maji v sekci -C jiny vyznam nez v sekci -B (uff). Tak a ted mi nekdo reknete, jak to v BASHi parsovat tak, abych z toho dostal hodnoty a) pro -A -B -C a -D b) v jednotlivych sekcich i hodnoty jejich prepinacu -a -b -c atd... Brr. Na tohleto mi asi nikdo neodpovi.
state=A
while true; do
case $state in
A)
if test "$1" != -A; then
echo Expected -A
break
fi
if test -z "$2"; then
echo Expected -A argument
break
fi
echo Section A, argument: "$2"
state=B
shift 2
;;
B)
if test "$1" != -B; then
echo Expected -B
break
fi
if test -z "$2"; then
echo Expected -B argument
break
fi
echo Section B, argument: "$2"
state=Barg
shift 2
;;
Barg)
case "$1" in
-a)
if test -z "$2"; then
echo Expected -a argument
break
fi
echo Section B, argument -a: "$2"
shift 2
;;
-b)
if test -z "$2"; then
echo Expected -b argument
break
fi
echo Section B, argument -b: "$2"
shift 2
;;
-c)
if test -z "$2"; then
echo Expected -c argument
break
fi
echo Section B, argument -c: "$2"
shift 2
;;
*)
state=C
;;
esac
;;
C)
case "$1" in
-C)
if test -z "$2"; then
echo Expected -C argument
break
fi
echo Section C, argument: "$2"
state=Carg
shift 2
;;
*)
state=D
;;
esac
;;
Carg)
case "$1" in
-a)
if test -z "$2"; then
echo Expected -a argument
break
fi
echo Section B, argument -a: "$2"
shift 2
;;
-d)
if test -z "$2" -o -z "$3" -o -z "$4"; then
echo Expected three -d arguments
break
fi
echo Section C, argument -d: "$2"
echo Section C, argument -d: "$3"
echo Section C, argument -d: "$3"
shift 4
;;
-c)
if test -z "$2"; then
echo Expected -c argument
break
fi
echo Section C, argument -c: "$2"
shift 2
;;
*)
state=D
;;
esac
;;
D)
if test "$1" != -D; then
echo Expected -D
break
fi
if test -n "$2"; then
echo Section D, argument: "$2"
shift 2
else
echo Section D, no argument
shift
fi
state=End
;;
End)
break
;;
*)
echo Internal error, state=$state
break
;;
esac
done
if test "$state" != End; then
echo Parsing failed in state $state
fi
Přičemž to v jednotlivých sekcích bere příslušené podoptiony i vícekrát, což lze opravit, ale bude to ještě delší...
DEF_OPTS="A:1+a:3+b:2+c:0 B:2+a:3+b:0+c:1 C:1 D"by znamenalo, ze pokud by na prikazovem radku byly parametry
-A FOO -a 1 2 3 -b aaa bbb -c -B XX YY -a 3 2 1 -c -C BAR -Dtak bysme ziskali nasledujici promenne:
ARG_A="FOO" ARG_A_a[0]="1" ARG_A_a[1]="2" ARG_A_a[2]="3" ARG_A_b[0]="aaa" ARG_A_b[1]="bbb" ARC_A_c=1 ARG_B[0]="XX" ARG_B[1]="YY" ARG_B_a[0]="3" ARG_B_a[1]="2" ARG_B_a[2]="1" ARG_B_c=1 ARG_C="BAR" ARG_D=1Naproti tomu, kdyz by nektere byly vynechany, napr. takto:
-A FOO -a 1 2 3 -b aaa bbb -c -B XX YYtak by se nastavily pouze prislusne promenne a ostatni by neexistovaly.
ARG_A="FOO" ARG_A_a[0]="1" ARG_A_a[1]="2" ARG_A_a[2]="3" ARG_A_b[0]="aaa" ARG_A_b[1]="bbb" ARC_A_c=1 ARG_B[0]="XX" ARG_B[1]="YY"Znamenko "+" v DEF_OPTS by melo vyznam prirazeni k sekci, takze pokud by nekdo psal:
-a 1 2 3 -b aaa bbbtak by se se zlou potazal, a funkce by zkolabovala s chybou, ze ocekava nejdriv nejake to -A. Hm, tak to je shruba moje predstava. Jo jo, zda se ze opravdu fantaziruju... :)
DEF_OPTS="A+a+b+c B+a+b+c C D a"Tim by se to dost zjednodusilo:
-A FOO -a "1 2 3" -b "aaa bbb" -c -B "XX YY" -a "3 2 1" -c -C BAR -DTakze bysme meli:
ARG_A=FOO ARG_A_a=1 2 3 ARG_A_b="aaa bbb" ARG_A_c= # prazdna, ale definovana (lze to nejake testovat?) ARG_B=XX YY ARG_B_a=3 2 1 ARG_B_c= # prazdna, ale definovana ARG_C=BAR ARG_D= # opet prazdna, ale definovanaTak a tohle by snad uz mohlo jit docela snadno. Nebo ne? Take z toho plyne, jak vidno, ze napriklad -a tam mame hned 2x, v sekcich -A a -B. Vyhodou by prave melo byt, ze v kazdem pripade bychom mohli mit vyznam parametru -a jiny, coz je presne to, co aktualne potrebuji. :)
/bin/cat >17passwd.sh <<\EOF
#!/bin/bash
# vypise 1 a 7 zaznam z /etc/passwd
[ -z $1 ] && exit 1
DATA=$(<$1)
DATA=${DATA//
/|} # rozdelime data na zaznamy/radky
IFS="|"
for RECORD in $DATA; do
while IFS=":" read A B C D E F G; do
echo $A $G
done <<< $RECORD
done
exit 0
EOF
chmod +x 17passwd.sh
./17passwd.sh /etc/passwd
Jenze to mam vsechno pevne dano. Jak ale parsovat promenlive zaznamy, kdyz znam pouze oddelovace?
.
Tiskni
Sdílej: