Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.
Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,
… více »Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.
SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.
Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační
… více »PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují
… více »GIMP 3.2 byl oficiálně vydán (Mastodon, 𝕏). Přehled novinek v poznámkách k vydání.
FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.
Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.
Projekt Debian aktualizoval obrazy stabilní větve „Trixie“ (13.4). Shrnuje opravy za poslední dva měsíce, 111 aktualizovaných balíčků a 67 bezpečnostních hlášení. Opravy se týkají mj. chyb v glibc nebo webovém serveru Apache.
for file in $(find -P ~/fotky -type f -exec md5sum '{}' \;|awk '{ sum[$1]++ ;path[$1]=$2 } END {for (meno in sum) if (sum[meno] == 2) print path[meno]}');
do rm -f $file && echo "Delete redundant file $file";done
#!/usr/bin/env python
import os,md5
def CalcMD5(filename):
buffersize = 1000000
sum = md5.new()
f = open(filename)
while True:
data = f.read(buffersize)
if not data: break
sum.update(data)
f.close()
return sum.hexdigest()
def removefile(name):
print 'removing', name
# os.remove(name)
def removeduplicit(filelist):
md5sums = {}
for name in filelist:
sum = CalcMD5(name)
if not md5sums.has_key(sum):
md5sums[sum] = name
continue
name1 = md5sums[sum]
name2 = name
print 'duplicit files: ', name1, name2
if os.path.getctime(name1) > os.path.getctime(name2):
removefile(name1)
md5sums[sum] = name2
else:
removefile(name2)
path = '.'
sizes = {}
for root, dirs, files in os.walk(path):
for file in files:
name = os.path.join(root, file)
if not os.path.isfile(name): continue
size = os.path.getsize(name)
if sizes.has_key(size):
sizes[size].append(name)
else:
sizes[size] = [name]
for k in sizes.keys():
if len(sizes[k]) > 1:
removeduplicit(sizes[k])
Nejprve najde soubory, které mají stejnou velikost a teprve z nich počítá md5sum. Když najde duplicitu, smaže ten novější. Namátkou jsem to zkusil na jednom adresáři a vychází to asi desetkrát rychlejší než ten skript v BASHi.
rsync -avz /mnt/fotak/ /home/miso/fotky/
find -P ~/fotky/ -type f -exec md5sum '{}' \;|awk '{ sum[$1]++ } END {for (meno in sum) if (sum[meno] == 2) print meno}'
) aby som ziskal druhy stlpec miesto prveho.

cmp -s file1 file2 && echo 'files are identical'
Porovnání md5sumy (32B) je daleko rychlejší, než porovnávat 2MB soubory.Jenže k vytvoření md5sum je potřeba oba soubory nejprve přečíst. A když už se čtou, tak je lepší je rovnou porovnávat. Jinou situací by bylo, kdyby se součty uchovávaly.
Nehledě na to, že vyhledání identických prvků v seznamu má kvadratickou složitost (pro 100 fotek bych skutečně nechtěl až 10000x porovnávat soubory).Jo, to mi došlo v okamžiku, kdy jsem odeslal svůj předchozí příspěvek. Samozřejmě, beru to zpět a jako bych nic neříkal
Ale ved to sa v tom skripte riesi.Kdepak. Skript po ukončení všechny md5 součty zapomene - nikam si je neukládá. Takže při každém spuštění musí každý soubor znovu přečíst. A já jsem tvrdil, že místo počítání md5 je rychlejší ty soubory přímo porovnávat. Ale můj argument platí pouze pro dva soubory, nikoli pro větší počet (viz Heronův komentář).
Hodnoty sa uchovavaju, pretoze sa hlada duplicita.

, dakujem zucastnenym
A já jsem tvrdil, že místo počítání md5 je rychlejší ty soubory přímo porovnávat.A důkaz máte ? Proč myslíte, že něco jako kontrolní součet existuje ? Právě proto, aby se nemusely porovnávat soubory celé. Je mnohem méně náročné udělat ze dvou souborů sumy a ty porovnat, než porovnávat dva soubory blok po bloku. Jestli chcete, ověřte si to experimentálně:
# nejdřív údajně "rychlejší" přímé srovnání $ time cmp 200M.file 500M.file real 0m36.040s user 0m3.212s sys 0m0.992s # a teď ta "pomalejší" metoda $ time md5sum 200M.file; time 500M.file xcom.isp 173d175343421da0336770946587dcb4 200M.file real 0m2.793s user 0m1.280s sys 0m0.380s 677b7d80c9d71ab984ce3cbdfa59cc84 500M.file real 0m5.435s user 0m1.332s sys 0m0.392sTakže ?
$ time md5sum 200M.file; time md5sum 500M.filenějak se mi do toho zamíchala práce vedle...
$ time cmp file1-20MB file2-20MB real 0m0.318s user 0m0.220s sys 0m0.068s $ time md5sum file1-20MB; time md5sum file2-20MB 13d9f78c4116943ac63cc6b0ed045f9a file1-20MB real 0m0.241s user 0m0.176s sys 0m0.052s 13d9f78c4116943ac63cc6b0ed045f9a file2-20MB real 0m0.258s user 0m0.180s sys 0m0.044sZkusím to nějak shrnout:
cmp -s.
Právě proto, aby se nemusely porovnávat soubory celé. Je mnohem méně náročné udělat ze dvou souborů sumy a ty porovnat,Jak velká část souboru se asi načte při počítání md5? (hint: 100%)
Takže zopakuj test s cmp -s
Jak by podle tebe mohlo potlačení výstupu (-s, -q, --silent nebo --quiet) ovlivnit rychlost této operace (snad kromě několika mikrosekund, které jsou potřeba na vygenerování a vypsání výstupu) ??
Jak velká část souboru se asi načte při počítání md5? (hint: 100%)Porovnávání dvou (velkých ...) souborů znamená načíst kousek souboru 1, kousek souboru 2, porovnat, zahodit ... a tak pořád dokola; při tvorbě hashe se načítají jen n-té bajty ze souboru a z nich se počítají hashe, v paměti se nikdy nemanipuluje s takovými objemy dat. P.S.: Přesto jsem udělal test i s volbou -s, výsledek byl řádově stejný (cmp kolem 1 minuty, md5sum 5 sekund)
Jak by podle tebe mohlo potlačení výstupu (-s, -q, --silent nebo --quiet) ovlivnit rychlost této operace (snad kromě několika mikrosekund, které jsou potřeba na vygenerování a vypsání výstupu) ??Rychlost operace to ovlivní docela zásadně, protože nemusí zjišťovat kde se ty soubory liší. U různě velkých souborů tedy skončí hned jak zjistí jejich velikost.
při tvorbě hashe se načítají jen n-té bajty ze souboru a z nich se počítají hasheBavíme se o md5, takže tohle je nesmysl.
-s --quiet --silent
Output nothing; yield exit status only.
Mohl bys mi vysvětlit, jak to souvisí se samotným procesem porovnávání ? Tahle volba ovlivňuje jen standardní výstup, jestli to vypíše "Soubory jsou shodné" nebo jen vrátí nulu.
Better to keep your mouth shut and be thought a fool than to open it and remove all doubt.Aby vypsal, na kterém bajtu se soubory liší, musí je přečíst aspoň po ten bajt, i když jsou jinak velké a je od začátku jasné, že se budou lišit.
$ ls -1sh f1 f2
232M f1
314M f2
$ strace cmp -s f1 f2
...
open("f1", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=242081792, ...}) = 0
open("f2", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=328479232, ...}) = 0
_llseek(3, 0, [0], SEEK_CUR) = 0
_llseek(4, 0, [0], SEEK_CUR) = 0
exit_group(1) = ?
$ time cmp -s file1-20MB file2-20MB real 0m0.155s user 0m0.008s sys 0m0.120s
$ time cmp file1-20MB file2-20MB real 0m0.369s user 0m0.208s sys 0m0.092s $ time cmp -s file1-20MB file2-20MB real 0m0.143s user 0m0.020s sys 0m0.104sAle tato debata už je celkem dost off-topic
Tiskni
Sdílej: