Společnost Seznam.cz spouští konverzační nástroj založený na umělé inteligenci Seznam Asistent. Asistent využívá vlastní jazykový model SeLLMa a dočasně i komerční modely od OpenAI provozované v evropských datacentrech prostřednictvím Microsoft Azure. Dlouhodobým cílem Seznamu je provozovat Asistenta výhradně na interních jazykových modelech a ve vlastních datových centrech.
Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).
Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.
Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.
Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.
Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.
Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.
Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).
Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.
Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.
Tak jsem dneska našel nějaké odkazy na stahování přes úložiště http://bagruj.cz. Je tam sice captcha, ale jinak to jede rychle, čekací dobu jsem měl vždy 15 sekund, takže jsem si udělal další stahovací skriptík.
Asi k tomu není co dodat, část kódu jsem zkopíroval z down-rapid, část z down-megaupload.
UPDATE 2009/01/10: Tak jsem udělal dvě úpravy. První úprava je ukončení skriptu, pokud skript z nějakého důvodu nedokáže získat URL ke stahování. Druhá úprava mění chování při zadávání captcha kódu a měření čekací doby. Po získání URL captcha se zjistí aktuální čas, dále se stáhne a zobrazí captcha. Na promptu pro čtení captcha kódu se zobrazí i cesta captcha obrázku-pokud by se zobrazily dva captcha obrázky a prompty, tak je těžké identifikovat, který prompt patří ke kterému obrázku, takže zobrazením cesty v promptu bude identifikace jednodušší (gqview, nebo jiný prohlížeč by měl cestu ke captcha obrázku také zobrazovat). Když se přečte captcha kód, tak se zjistí aktuální čas. Pokud již vypršela čekací doba, pokračuje se stažením souboru. Pokud by náhodou uživatel dokázal zadat captcha kód ještě před koncem čekací doby, skript počká zbytek doby a pak se spustí stahování. A měl jsem tam chybku s odpočítáváním-teď už by to mělo odpočítávat dobře.
UPDATE 2009/02/11: Jenom oprava textu v titulku Xdialogu.
#!/bin/bash
proxiesfile="$HOME/.download-proxies"
if ! [ -e "$proxiesfile" ];then
echo "Please, create file $proxiesfile"
exit
fi
allproxylist="$( awk -F '|' '{print $2;}' "$proxiesfile" | tr '\n' ' ' )"
sshtunnels="$( awk -F '|' '$1~/^.+$/{print " " $1,$2;}' "$proxiesfile" )"
sshtunservers="$( awk -F '|' '$1~/^.+$/{print $1;}' "$proxiesfile" | tr '\n' ' ' )"
console=0
if [ $# -gt 0 ];then
i=$#
while [ $i -gt 0 ];do
case "$1" in
-a)
if [ $# -gt 1 ];then
id="$[$2+1]"
proxylist="$proxylist $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | sed -n "${id}p" )"
i=$[$i-1]
shift 2
else
echo "value please"
exit
fi
;;
-d)
if [ $# -gt 1 ];then
id="$[$2+1]"
if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
proxylist="$( echo "$proxylist" | tr -s '[[:space:]]' '\n' | sed "${id}d" )"
i=$[$i-1]
shift 2
else
echo "value please"
exit
fi
;;
-r)
if [ $# -gt 1 ];then
rate="--limit-rate=$2"
i=$[$i-1]
shift 2
else
echo "value please"
exit
fi
;;
-p)
if [ $# -gt 1 ];then
proxylist="$2"
shift 2
i=$[$i-1]
else
echo "value please"
exit
fi
;;
-c)
console=1
shift
;;
-x)
console=0
shift
;;
*)
v="$1"
shift 1
set "$@" "$v"
;;
esac
i=$[$i-1]
done
if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
tmpdir="$( mktemp -d )"
echo "TMPDIR: $tmpdir"
while [ $# -gt 0 ];do
echo "Downloading URL $1"
for proxy in $proxylist ;do
if [ "$proxy" = "NONE" ];then
unset http_proxy
else
export http_proxy="$proxy"
fi
echo "HTTP PROXY: $http_proxy"
url="$1"
o1="$( wget -O - -q "$url" )"
o2="$(
echo "$o1" \
| perl -e '
undef $/;
$a=<STDIN>;
if (($b)=($a=~m,<form[^>]+name="f1"[^>]+>(.+?)</form>,is)) {
@inputs=();
while ((($input)=($b=~m,(<input[^>]+type="hidden"[^>]+>),is)) and (($name)=($input=~/name="([^"]+)"/is)) and (($value)=($input=~/value="([^"]*)"/is))) {
$value=unpack("H*",$value);
$value=~s/(..)/%$1/g;
push @inputs,sprintf("%s=%s",$name,$value);
$b=~s,(<input[^>]+type="hidden"[^>]+>),,is;
}
print sprintf("post-data:%s\n",join("&",@inputs));
if (($img)=($b=~m,<img[^>]+src="(http://bagruj.cz/captchas/[^.]+.jpg)"[^>]*>,is)) {
print "captcha:$img\n";
}
if (($wait)=($b=~m,<span[^>]+id="countdown"[^>]*>(\d+)</span[^>]*>,is)) {
print "wait:$wait\n";
}
};
'
)"
captcha="$( echo "$o2" | grep -E '^captcha:' | cut -f2- -d: )"
postdata="$( echo "$o2" | grep -E '^post-data:' | cut -f2- -d: )"
wait="$( echo "$o2" | grep -E '^wait:' | cut -f2- -d: )"
echo "wait: $wait seconds"
waitstart="$( date +"%s" )"
echo "captcha: $captcha"
if [ -n "$captcha" ] && [ -n "$url" ];then
wget $rate -q -O "$tmpdir"/cap "$captcha"
if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap >/dev/null 2>&1 & pid="$!" ; fi
code=""
if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Bagruj downloader' --screen-center --stdout --inputbox "Enter the CAPTCHA code\nfor $tmpdir/cap" 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
else
while [ -z "$code" ];do read -p 'Code for $tmpdir/cap ["-" for stop]: ' code;done
fi
if [ -n "$DISPLAY" ];then kill "$pid" ; fi
if [ "$code" != "-" ];then
if [ -n "$wait" ]; then
realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))"
if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ] \r";sleep 1; done ; echo ; fi
file="$( wget $rate -O - -q --post-data="$postdata&code=$code" "$url" | perl -e 'undef $/;$a=<STDIN>;if (($b)=($a=~m,<a\s+href="([^"]+)">\1</a>,is)) { print "$b\n"; };' )"
if [ -z "$file" ]; then break 2 ; fi
echo "url: $file"
echo "wget $rate -c '$file'"
if wget $rate -c "$file" ; then break ; fi
fi
fi
fi
done
shift
done
rm -rf "$tmpdir"
else
cat <<EndOfInfo
ssh tunnels:
$sshtunnels
proxy list:
$( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | nl -v0 -w4 -s' -- ' )
$sshtunservers
Usage: $0 [ -a proxynum ] [ -d proxynum ] [ -r rate-limit ] [ -p proxyurl ] [ { -c | -x } ] URL ...
-a proxynum
add proxy at line proxynum
-d proxynum
delete proxy at line proxynum in ACTUAL proxy list
-r rate-limit
limit wget download rate
-p proxyurl
insert proxy specified by proxyurl
-c
use console to enter captcha code
-x
use X dialog to enter captcha code (this is default)
URL
URL to download
EndOfInfo
fi
Tiskni
Sdílej:
A ja si myslel ze pisu nesrozumitelnej bash :D
A ja si myslel ze pisu nesrozumitelnej bash :D
Pokud tim chces rict, ze se ti ten skriptik zda nesrozumitelnej, tak rekni, co presne nechapes. Jak jsem psal, pokud to nebudou veci RTFM, tak to rad vysvetlim. A to jsi jeste nevidel down-rapid:)
Takhle to vypada jako by bash byla nejaka tezka magie. :D
Sice tam nachazim par veci ktery se me nelibi a ktery bych prepsal ale jinak je to podarena sranda :P
No uznavam ze to taky nejni nejsrozumitelnejsi :P ale furt je to citelnejsi :D
Pockej, pockej. Tady je prevazne na jednom radku jeden prikaz a nemyslim, ze by byly nejak hodne slozity. Nejsem bash-guru a proto pouzivam jenom jednoduchy zakladni veci, takze bych nerekl, ze je to nejak magie (btw, bash magie byla soutezi po drate se suse). Nejvetsi magie je tam ten perl skript, ale proste v perlu je jednodussi parsovat nejakej vetsi text.
Co bys tam treba prepsal? Ja se nebranim tomu ucit se novy veci. Co presne se ti zda, ze neni citelne (krome toho perlu, ale kdyz perl umis, tak i ten perl je jednoduchej)?