Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
require 'pathname'
@dir = ARGV[0] || __dir__
Pathname.new(@dir).children.select(&:file?)
.group_by { |path| File.size(path) }
.tap { |h| h.delete(1) }
.each do |k, v|
puts "Found #{v.length} files with size #{k} bytes:"
puts v
puts
end
my %sizes; $, = "\n"; unshift @{$sizes{-s $_}}, $_ foreach grep -f $_, glob "* .*"; foreach (keys %sizes) { next unless $#{$sizes{$_}}; print 'Found ' . ($#{$sizes{$_}} + 1) . " files with size $_ bytes:\n"; print @{$sizes{$_}}, "\n"; }
<?php // nacita zoznam suborov $list=scandir("."); // zisti velkosti $statistic=array(); foreach($list as $name) if(is_file($name)) { $size=filesize($name); if(isset($statistic[$size])) array_push($statistic[$size], "$name"); else $statistic[$size]=array("$name"); } // vypise foreach($statistic as $size => $items) { $count=count($items); if($count < 2) continue; echo "Size: ${size} B, count: $count\n"; echo implode("\n", $items)."\n"; }
require 'digest/md5' digest = Digest::MD5.hexdigest(File.read(f))
supr skripty :D ;D
teda já jako perlu a ruby vubec nerozumim ale vidim žeto neni koronarýma tak jakoby lajkuju :D :D ;D ;D
perl -e 'use File::Slurp; $x{$_}++ foreach (map({ -s $_ } read_dir("."))); while (my ($s, $c) = each(%x)) { print("size=$s count=$c\n") if ($c > 1); }'
Arrays.stream(new File(".").listFiles())
.map(file -> file.length())
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.forEach((s, c) -> if (c > 1) System.out.printf("size=%s count=%c\n", s, c));
Kratší než oba původní příklady (i když ty by šly taky zkrátit, viz výše) a přesto IMHO čitelnější. Ta čitelnost se pak objeví v případě větší komplexity, teď je to přece jen dost primitivní podle jednoho klíče.
#!/usr/bin/env python3 from pathlib import Path from itertools import groupby files = sorted((file.stat().st_size, file) for file in Path('.').iterdir() if file.is_file()) groups = (same_files for size, group in groupby(files, lambda x: x[0]) if len(same_files := list(group)) > 1) for group in groups: print('Found {count} files with size {size} bytes:\n{files}\n'.format( count=len(group), size=group[0][0], files='\n'.join(file[1].name for file in group) ))Omlouvám se za použití operátoru
:=
.
#!/usr/bin/env bash files="$(find . -type f -printf '%s %f\n' | sort -n)" sizes="$(cut -f 1 -d ' ' <<< "$files" | uniq --repeated)" for size in $sizes; do count="$(grep -c "^$size " <<< "$files")" names="$(grep "^$size " <<< "$files" | cut -f 2 -d ' ')" printf 'Found %s files with size %s bytes:\n%s\n\n' "$count" "$size" "$names" done
find -type f -exec md5sum {} \; | sort |uniq --all-repeated=separate -w32
(teda normalne ty md5sum mam nekde ulozene a pracuju s nima opakovane, takze to jsou bezne prikazy 2, jeden vytvori seznam hashu souboru, druhy hleda duplicity)
Já si například pravidelně ukládám shasumy všech souborů na datovém úložišti nikoliv pro hledání duplicit, ale proto, abych věděl, jestli se ty soubory mění nebo ne.Tohle dělám taky, akorát pouze při zálohování celého /home oddílu. Udělám snapshot kvůli konzistenci, v něm nechám spočítat checksum všeho a pak spustím zálohu. Ten checksum soubor mám pak jak lokálně tak u té zálohy, takže v případě poškozeného binárního souboru co se normálně moc nemění jsem schopen rychle dohledat v které záloze mám předchozí verzi. Ale dělám to primárně kvůli kontrole konzistence zálohy a obnovených dat.
když jakoby dělá jenom hledání duplicitních souborů někde u sebe na disku tak vodolnost toho hashe neni zese jako moc důležitá ne?? :O :O
joa neni md5 taky trošičku rychlejší/lacinější než sha512????? :O ;D
joa neni md5 taky trošičku rychlejší/lacinější než sha512Netuším a je to jedno, stejně se čeká na storage, spočítat to je rychlejší, než číst z disku. Pokud má dotyčný data v 1TB ramdisku, tak to nemusí platit, ale v tom případě zřejmě bude mít něco jako EPIC a tak si to snadno může paralelizovat. Jinak pokud někomu vadí zrovna sha512, tak existují jiné, neprolomené a velmi rychlé funkce (třeba rodina sha3 - kde byla rychlost z jedním z požadavků soutěže).
ok to zní rozumě :D ;D
find . -type f -size +100M -print0 | xargs -0 rdfind -ignoreempty true -checksum sha1 -makehardlinks true -outputname ./rdfind100M_results.txt -dryrun false > ./rdfind100_stdout.txt 2>&1
Tiskni
Sdílej: