Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
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 »Před časem jsem hledal, jak v systému najít duplikáty souborů a nechat jen ty, které jsou ty "správné". Ve finále jsem použil program fdupes.
Situace
V systému jsem tušil, že mám mnoho duplikátních souborů. Jeden zdroj pro takové duplikáty byly mé soubory na nichž mi záleží. Jsou to hlavně vytvořené fotografie a někdy také vytvořená videa. Jednak jsem za 10 let používal několik managerů na fotky, které ukládaly soubory v různých adresářových stromech, jednak jsem někdy při koupi nového disku na něj zkopíroval foto archiv, aby se fotky jistě neztratily i při poruše disků. A teď již ani nevím, kde všude fota mohou být. Za druhé jsou to zdroje z netu, které mne třeba zaujaly vícekrát a stáhl jsem je někdy více než jedenkrát.
Běh
Program fdupes -r /mnt /windows > duplicates1
běžel několik dní, prošel všechny připojené diskové systémy a nakonec vyprodukoval soubor duplicates1
, který obsahoval 1616445 řádku a byl velký asi 150MB. Přičemž organizace souboru je takováto:
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG /windows/zaloha_2/Filmy/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi /windows/zaloha_2/Filmy/video/Radek/nezpracovano/CFC-0012/DCIM/165CANON/MVI_6541.AVI /mnt/crypted1/Foto/zpracovano/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi /mnt/afx/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi /mnt/basic/public/obrazky/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi /windows/zaloha_2/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi
Tedy jednotlivé duplikátní soubory jsou sdruženy do bloků, vzájemně oddělených prázdnými řádky, a jednotlivé instance duplikátního souboru tvoří řádky následující po sobě v jednom bloku označené plnou cestou. Pořadí řádků v bloku můžeme považovat za náhodné a je pravděpodobně dané pořadím jak program procházel stromy adresářů. Otázka je, co s tím? Smazat několik set tisíc souborů tak, abych smazal ty které chci a ne ty které nechci.
Incrementální mazání
Vytvořil jsem si proto dva skripty, kterými jsem postupně vytvářel mazací příkazy. Skript 1: pracovní název uklid_1
#!/usr/bin/perl use strict; use warnings; use Path::Class; my $path="/mnt/hlavni/obrazky/Photo_original"; my $spath="/mnt/public/obrazky"; my $extension=".CR2"; # my $teststr="/mnt/afx/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi\n"; my $dir = dir("/home/user/tmp"); # tmp dir with output from fdupes my $cnt = 1; my $name = "duplicates"; my $delname = "dupdelete"; my $file = $dir->file($name.$cnt); my $filenewdup = $dir->file($name . ($cnt+1)); my $filedelete = $dir->file($delname . ($cnt+1)); my $filelog = $dir->file($name . ($cnt+1) . ".log"); my $abc = 0; # openr() returns an IO::File object to read from my $file_handle = $file->openr(); my $file_handledup = $filenewdup->openw(); my $file_handledel = $filedelete->openw(); my $file_handlelog = $filelog->openw(); my @mujlist; my $n=0; my $i; my $j=0; my $c=0; $file_handlelog->print("Blocks generated for deletion:\n"); # Read in line at a time while( my $line = $file_handle->getline() ) { push(@mujlist, $line); $n++; # if inblock add line end of block if ( $line =~ /^$/){ # print "d".$n . "\n"; $j = 0; foreach $i(@mujlist) { # if exists in block requested file flag $j for deletion if ((index( $i,$path) ge 0) and (index( $i,$extension) ge 0)) {$j = 1;} } # print scalar @mujlist . "\n"; if ($j == 1) { # generate delete set or ($k=~/^$/) foreach my $k (@mujlist) { if (((index( $k,$path) lt 0) or (index( $k,$extension) lt 0)) and not ($k=~/^$/) and (index( $k,$spath) lt 0) ){ chomp $k; $file_handledel->print("rm \"" . $k."\"\n");} } # generation end $file_handlelog->print("Blok begin " . ($n-scalar @mujlist) . " end ".$n."\n"); $c++; } else { foreach my $k (@mujlist) { $file_handledup->print($k); } # $file_handledup->print("d".$n."\n"); } @mujlist=(); } else { } } chmod (0755, $file_handledel); $file_handlelog->print("Number of block processed = " . $c."\n"); #print "count = $abc\n i = $i\n j = $j\n";V současnosti nemají skripty žádný CLI, a jejich ovládání se děje editaci stringů na řádcích 7-15. Funkcionalita je následující:
$dir
(v tomto případě /home/user/tmp
) bude soubor $name.$cnt
(v tomto případě duplicates1
), vytvořený programem fdupes
podle výše uvedeného formátu. $name.($cnt+1)
, $delname.($cnt+1)
a ($name.($cnt+1).".log"
v tomto případě soubory duplicates2
, dupdelete2
a duplicates2.log
. Do kterých zapíše: Do souboru dupdelete2
sadu příkazů rm "path"
pro smazání duplikátních souborů, a souboru nastaví executable flag. Do souboru duplicates2
zapíše upravenou kopii souboru duplicates1
, která má vyřazené ty bloky, které byly zpracovány a z nichž byl vygenerován mazací script. Do souboru duplicates2.log
napíše seznam bloků, které byly zpracovány, s počátečním a koncovým číslem řádku v souboru duplicates1
$path
je primární datový strom, který bude zachován a v $extension
je string, který musí název souboru obsahovat, aby byl zpracován (typicky je to ukončující string názvu souboru - extenze). Pouze bloky duplikátních souborů, které obsahují soubor s touto podmínkou (patří do stromu a mají string) jsou zařazeny do zpracování. Ke všem souborům daného bloku bude vygenerován mazací příkaz s výjimkou těch, které obsahují string $path
nebo $spath
sekundární strom/úložištěProgram je možné používat inkrementálně. Zvýšením hodnoty $cnt=2
bude vstupní soubor duplicates2
a výstupní soubory duplicates3
, dupdelete3
a duplicates3.log
.
Také je možné si postupně kopírování skriptu na uklid_2
s hodnotou $cnt=2;
atd vytvořit inkrementální sadu skriptů, které definují postupně duplikátní části a vytváření skripty na jejich mazání a faktické mazání spustit, až když jsem s celkovou posloupností spokojen.
Duplikátní soubory v jednom adresáři
Skript uklid_1
funguje výborně na vlastní data, kdy vím, že v jednom adresáři nebudu mít duplikátní fotku. U informací získaných se může stát, že v jednom adresáři budeme mít pod různými jmény více totožných objektů, třeba získaných v různých časech. Uklid_1 by je nechal všechny. Vytvořil jsem si proto skript 2, pracovní název uklid_a1
. Je to drobná modifikace v části generující mazací přikazy, která ponechá pouze jediný objekt v adresáři specifikovaném v $path
.Všechno ostatní je označeno ke smazání. Cesta $spath
se nevyužívá a ten který zůstává je první soubor z bloku v dané cestě (i když třeba nemusí mít nejlepší jméno)
# generate delete set or ($k=~/^$/) $cjump = 0; foreach my $k (@mujlist) { if ((((index( $k,$path) lt 0) or (index( $k,$extension) lt 0)or $cjump) and not ($k=~/^$/)) ){ chomp $k; $file_handledel->print("rm \"" . $k."\"\n");} else {$cjump=1;} }
(plus je ještě třeba zadefinovat $cjump
někde nahoře.)
Tímhle způsobem jsem smazal větší část z nalezených duplikátních souborů a uvolnil si prostor. Možná když budu mít čas, tak ke skriptu doplním ještě nějaké CLI, sloučím skripty do jednoho s přehozením CLI volbou a doplním skripty, které by jednak počítaly obsazený prostor duplikáty, jednak mohly setřídit soubor duplicatesX inverzně podle velikosti souborů, aby se člověk zabýval tím, co přinese prostorový zisk a ne malinkými soubory. (samozřejmě nejvíce duplikátní soubor je ten s velikosti 0 bytů.) Ale teď mi pro můj problém toto řešení stačí
Tiskni
Sdílej:
facebookustrašná moda a ani si člověk neuvědomuje, že k fotografiím co tam narval už nemá práva.
Příklad: když budu dělat atlas rostlin, potřebuju ke každé kytce několik různých fotek (příp. kreseb).Kámo ale v blogu som nezaznamenal nič o odbornej fotografií, pretože to má zmysel vďaka študovaniu niekoľkých záznamoch (Nehovoriac o makrách kde softvér skladá obraz aj zo stoviek záznamov). My sa tu ale bavíme (teda kurwa myslím) o foto pre svoje pamäti, aspoň tak mi to vyplynulo z blogu.
rychlost práce s nimi je strašná právě proto, že ty editory/prohlížeče nic nedělají když se na fotku koukám, ale příští fotku začnou zpracovávat až když se odhodlám zmáčknout next
Editory nevím (používám GIMP), ale z prozhlížečů třeba geeqie (nástupce gqview) umí preloadnout následující fotku (možná i víc).
gqview neznám, protože pracuji v KDE
To by neměl být problém, já taky mám KDE a coby prohlížeč používám v podstatě jen geeqie (dříve gqview).
Z toho prvního odstavce bych asi jako jediný problém viděl to, že geeqie sice umožňuje togglovat šest nezávislých značek a pak podle nich kombinovat výběr, na který lze aplikovat hromadné akce, ale ten výběr se neukládá při ukončení programu (ale možná by to někde šlo nastavit, to jsem nezkoumal).
- fotim RAW i JPG
- ukladam vsechno do jednoho adresare: RRMM (RR: rok, MM: mesic) a v nem zvlast adresar pro RAW
- kdyz je nejaka akce, kde jeste nasekam vice fotek (tematicke foceni - treba pro animovany film, nebo dovolena, ...), tak jeste udelam dalsi adresar (JPG a pak zvlast RAW)
faze 1: na prehled (JPG) pouzivam gthmub (pokud si dobre pamatuju), co se mi oparvdu (ale opravdu) nelibi, mazu.
faze 2: spoustim skript, ktery maze vsechny RAW, ke kterym neni referencni JPG
na upravy (RAWu) pouzivam bud GIMP (velice silny nastroj - jedina nevyhoda: pouziva dodnes bohuzel jenom 8bit hloubku. na bezne veci opravdu staci, na web, papir pro rodinu, ale profi bilboardy bych v tom ale nedelal) a MyPaint (jednodussii editor)uppravene fotky (jakysi TOP of TOP pro prezentaci, darovani, ...) pak davam bokem ('akce', rodina, ...). je to manualni prace, ale ma to vyhodu: presne vim, co kde mam.
skeny z negativu mam zas zvlast: adresare podle cisla negativu (jako index), k nemu vedu zaznamy kdy to bylo focene (obdobi), cim (aspon aparat - mam cca 30 strojku), a cca co to je
zkousel jsem ruzne manazery - dopadlo to vzdy katastroficky: bordel1, bordel2, bordel3 sice miluju zautomatizovat co se da (protoze jsem desne liny), ale tady se ukazala jakakoliv automatizace desne kontraproduktivni. ledaze bych si napsal vlastni manazer fotek (na to jsem zas liny)
tak snad je ta informace k necemu
PS: desne nerad neco mazu - ukazalo se, ze nekdy po letech tam objevim vecicku, ktera stoji za to si s ni pohrat. clovek se posune nekam jinam, zmeni se mu vnimani - treba kdybych byl kdysi mazal kdejaky rozmaznuty snimek, dnes bych prisel o vzacne snimky (naladovky, neskutecne nahody, vzpominky)
:)./trash
. Takže nedokonalé fotky jdou do podadresáře u fotek.
Pořád je ale lepší, když to udělá fotograf jednou, než když to neudělá a pak promítá znuděným divákům tisíce fotek.
a napíš dôvod prečo ukazovať fotky tu sme ležali a tu sme ležali o 5minút neskôr, potom o desať...
A proč bych podle vás měl psát důvod k něčemu, co jsem výslovně napsal, že se dělat nemá?
To bych spíš tipoval, že se to bude navěky válet někde na disku, než že by to někdo probíral a selektivně promazával. Stačí se podívat, s jakými objemy dat pracovala předchozí generace – z pohledu velikosti dnešních disků naprosto směšné množství → není potřeba nic mazat, nic tě k tomu nenutí a klidně si můžeš nechat všechno.
Spíš se ta data budou zpracovávat automaticky – rozpoznávání obličejů nebo míst a předmětů na fotkách – třeba nějaký tvůj vnuk položí dotaz nad rodinnou databází fotek a vytáhne si všechny, na kterých jsi ty nebo určitá kombinace osob. Nebo třeba bude sledovat, jak se měnil určitý dům nebo ulice v čase
Já před asi dvěma lety řešil hledání duplicit, když jsem sesypal na hromadu fotky ze dvou notebooků a všech SD karet co jsem našel. Napsal jsem si na to tehdy i BASH skript o pár řádcích.
1) přesypu všechno do jednoho adresáře a spustím skript
2) skript se podívá do EXIF dat na datum a čas, který se ve formátu 2014-08-02_05-40-12 uloží do proměnné jako budoucí název fotky
3) následně se podívá do adresáře (názvy 2014-05, 2014-06 apod.) jestli už tam fotka s takovým názvem existuje
4a) pokud neexistuje, tak fotku přejmenuje na název z proměnné a uloží do odpovídajícího adresáře
4b) Pokud už fotka se stejným časem existuje, použije se srovnání MD5 součtů proti všem fotkám se stejným datem a časem v adresáři. Při shodě se fotka nekopíruje. Pokud se součet liší, připíše se na konec další pořadové číslo v řadě a fotka se překopíruje.
K dokonalosti to má ale daleko. Třeba program pro import fotek ve Windows Vista zasahoval do fotek i když je měl jen kopírovat, takže u několika pixelů se nepatrně lišila RGB hodnota (WTF?!) a tím pádem ani nesedí MD5 součet a vznikají duplicity.
P.S.: Nakonec to vypadá, že problém se vyřešil sám. Rodiče už několik let přemlouvám aby si fotky přetřídili, doteď se k tomu nedostali a vymlouvali se. A teď koukám na RAID1 oddíl a po fotkách se slehla zem
Zapomněl jsem dodat, že fotek bylo při posledním sčítání asi osm tisíc, z čehož by kolem tisíce (bez legrace) mohly tvořit fotky kočky v rozličných polohách a situacích.