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.
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á?
)
[*] tady je trošku problém, že některé věci chci mít plácnuté na webu jen kvůli dokumentární hodnotě, čili pak je nudné, třeba když na české řece člověk typicky potká za den pět-šest jezů, a z každého mám dvě-tři fotky bez jakékoli akce, jen aby byl dobře vidět profil a průjezd, případně nebezpečí
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.