eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Taki sobie programik - czy już jest napisany?
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2010-07-15 20:25:53
    Temat: Taki sobie programik - czy już jest napisany?
    Od: "slawek" <s...@h...pl>

    Tak sie zastanawiam, czy sobie czegoś takiego samemu nie napisać - ale może
    to już jest? Może jest już programik o takiej funkcjonalności (dla MS
    Windows)?

    Jak to ma działać?

    Wkładam pendrive a program skanuje określone zasoby komputera (cały albo
    jakiś folder, foldery, może otoczenie itd.) i sprawdza: które z plików na
    pendrive są także gdzieś indziej niż na tym pendrive?

    Dla jednego pliku - to trywialne. Dla paru? Nie wiem czy zrobienie listy w
    rodzaju DSC0123.jpg;DSC3242.jpg;DSC3255.jpg dla np. 50 plików ma sens - choć
    teoretycznie to możliwe. W dodatku takie wpisywanie w "szukaj" raczej
    wygodne nie jest. A ma działać od XP w górę.

    Ciągle łapię się na tym, że na pendrive mam pliki, które nie wiem czy są
    gdziekolwiek indziej - czy też zostały wrzucone tam na chwilę, bo akurat
    chciałem np. wydrukować je w jakimś samoobsługowym fotolabie?



  • 2. Data: 2010-07-16 04:56:54
    Temat: Re: Taki sobie programik - czy już jest napisany?
    Od: Maciej Pilichowski <P...@g...com>

    On Thu, 15 Jul 2010 22:25:53 +0200, "slawek" <s...@h...pl> wrote:

    >Tak sie zastanawiam, czy sobie czego? takiego samemu nie napisać - ale może
    >to już jest? Może jest już programik o takiej funkcjonalno?ci (dla MS
    >Windows)?

    petla po wszystkich plikach w lokalizacja A
    find pliku w B

    Koniec pogramu. Find jest w linuxie poleceniem systemowym, for jest
    konstrukcja wbudowana w shella.

    Pod winda w najgorszym przypadku sciagnij cygwina.

    milego dnia, hej
    --
    Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
    http://www.garaz.pol.pl/


  • 3. Data: 2010-07-16 16:42:39
    Temat: Re: Taki sobie programik - czy ju jest napisany?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Maciej Pilichowski" <P...@g...com>
    napisał w wiadomości grup
    dyskusyjnych:1hpv36lu6i88k0cpkcvrc5ta423u8khmdl@4ax.
    com...
    > petla po wszystkich plikach w lokalizacja A
    > find pliku w B
    >
    > Koniec pogramu. Find jest w linuxie poleceniem systemowym, for jest
    > konstrukcja wbudowana w shella.

    Zgoda, teoretycznie dobrze.

    W praktyce? Find szuka po nazwach plików - a ja chcę po zawartości. Czyli
    np. plik DSC0001.JPG na kluczyku jest - programik ma znaleźć że w systemie
    plików (lokalne dyski, baza zawartości CD/DVD, xfs, cokolwiek) jest co
    prawda plik Monisia.JPG - ale o dokładnie takiej samej co do bitu zawartości
    jak DSC0001.JPG. I tak dla wszystkich plików z kluczyka, szybko, miło,
    przyjemnie.

    Oczywiście taki np. filedupe też potrafi - znajdzie że są zduplikowane
    DSC0001.JPG i Monisia.JPG. Ale znajdzie też że są zduplikowane k01.JPG i
    k02.JPG z katalogu w którym znalazł plik Monisia.JPG. Bo filedupe (nazwa
    paskudna, ale ładny programik z otwartymi źródłami) szuka identycznych
    plików w jakimś ich zbiorze.

    Ja chcę programu, który mając zbiór1 wyszuka wszystkie takie same pliki w
    zbiór2. Czyli trochę coś innego.

    slawek





  • 4. Data: 2010-07-16 17:47:29
    Temat: Re: Taki sobie programik - czy ju? jest napisany?
    Od: Jacek Czerwinski <...@...z.pl>

    W dniu 2010-07-16 06:56, Maciej Pilichowski pisze:
    > On Thu, 15 Jul 2010 22:25:53 +0200, "slawek"<s...@h...pl> wrote:
    >
    >> Tak sie zastanawiam, czy sobie czego? takiego samemu nie napisać - ale może
    >> to już jest? Może jest już programik o takiej funkcjonalno?ci (dla MS
    >> Windows)?
    >
    > petla po wszystkich plikach w lokalizacja A
    > find pliku w B

    To ma wysoka zlozonosc.
    To w ogole jest problem tego typu programow, analizujacych pliki w
    katalogach, niezaleznie od talentu programisty itd.
    Robienie brutalnej petli w petli to zbrodnia.

    Byłem zainteresowany windowsowym odpowiedniiem linuksowych
    df --max-depth=1 (też skądinąd wolny)
    znalazlem, jest jeszcze wolniejszy, ale wielowatkowy wiec mniej boli.

    Prawdopodbnie mozna zaoszczedzic budujac jakas strukture danych w RAM,
    lub odcinajac (w sensie heurystyki) nieistotne galezie.

    Odcinanie bym widzial jesli da sie zapewnic sortowanie A i B np. po
    nazwie lub innym atrybucie bedacym elementem porownania.
    Jesli kursorem A poszedlem za daleko w stosunku do B, nie ma sensu isc
    dalej, teraz nadganiamy B.
    Ale chyba naturalny interfejs pozyskiwania zawartosci katalogu nie ma
    sortowania sortowania (znam windows).


  • 5. Data: 2010-07-16 18:05:09
    Temat: Re: Taki sobie programik - czy już jest napisany?
    Od: Wojciech Muła <w...@p...null.onet.pl.invalid>

    "slawek" <s...@h...pl> wrote:

    > Tak sie zastanawiam, czy sobie czegoś takiego samemu nie napisać - ale może
    > to już jest? Może jest już programik o takiej funkcjonalności (dla MS
    > Windows)?
    >
    > Jak to ma działać?
    >
    > Wkładam pendrive a program skanuje określone zasoby komputera (cały albo
    > jakiś folder, foldery, może otoczenie itd.) i sprawdza: które z plików na
    > pendrive są także gdzieś indziej niż na tym pendrive?
    >
    > Dla jednego pliku - to trywialne. Dla paru? Nie wiem czy zrobienie listy w
    > rodzaju DSC0123.jpg;DSC3242.jpg;DSC3255.jpg dla np. 50 plików ma sens - choć
    > teoretycznie to możliwe. W dodatku takie wpisywanie w "szukaj" raczej
    > wygodne nie jest. A ma działać od XP w górę.

    Napisałem kiedyś skrypt w pythonie http://0x80.pl/shell/removedups.py
    (nic nie kasuje, zostawiłem starą nazwę), działa z linii poleceń i wypluwa
    listę duplikatów. Po jednokrotnym skanowaniu zapisuje na boku dane, więc
    ponowne skanowanie jest szybsze. Bez problemów działa także pod Windowsami.

    Najprostsze użycie:

    removedups.py -o lista.txt katalog1 katalog2 katalog3

    w.


  • 6. Data: 2010-07-16 18:11:36
    Temat: Re: Taki sobie programik - czy już jest napisany?
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    slawek <s...@h...pl> napisał(a):
    > Tak sie zastanawiam, czy sobie czegoś takiego samemu nie napisać - ale
    > może to już jest? Może jest już programik o takiej funkcjonalności (dla
    > MS Windows)?
    > Jak to ma działać?
    > Wkładam pendrive a program skanuje określone zasoby komputera (cały albo
    > jakiś folder, foldery, może otoczenie itd.) i sprawdza: które z plików na
    > pendrive są także gdzieś indziej niż na tym pendrive?
    > Dla jednego pliku - to trywialne. Dla paru? Nie wiem czy zrobienie listy
    > w rodzaju DSC0123.jpg;DSC3242.jpg;DSC3255.jpg dla np. 50 plików ma sens
    > - choć teoretycznie to możliwe. W dodatku takie wpisywanie w "szukaj"
    > raczej wygodne nie jest. A ma działać od XP w górę.
    > Ciągle łapię się na tym, że na pendrive mam pliki, które nie wiem czy są
    > gdziekolwiek indziej - czy też zostały wrzucone tam na chwilę, bo akurat
    > chciałem np. wydrukować je w jakimś samoobsługowym fotolabie?

    Przykład w PowerShellu, nazwy katalogów zahardkodowane ale można sobie
    zmienić żeby były sparametryzowane.

    function Get-MD5([System.IO.FileInfo] $file = $(throw 'Usage: Get-MD5
    [System.IO.FileInfo]'))
    {
    $stream = $null;
    $cryptoServiceProvider =
    [System.Security.Cryptography.MD5CryptoServiceProvid
    er];
    $hashAlgorithm = new-object $cryptoServiceProvider
    $stream = $file.OpenRead();
    $hashByteArray = $hashAlgorithm.ComputeHash($stream);
    $stream.Close();
    trap
    {
    if ($stream -ne $null)
    {
    $stream.Close();
    }
    break;
    }
    foreach ($byte in $hashByteArray) { if ($byte -lt 16) {$result +=
    "0{0:X}" -f $byte } else { $result += "{0:X}" -f $byte }}
    return [string]$result;
    }
    $pliki1=@{}
    ls -r Katalog1 | where {$_.attributes -ne "Directory"} | foreach {
    $md5 = get-md5 $_
    $pliki1.add($md5, $_)
    }
    $pliki2=@{}
    ls -r Katalog2 | where {$_.attributes -ne "Directory"} | foreach {
    $md5 = get-md5 $_
    $pliki2.add($md5, $_)
    }

    $pliki1.Keys | foreach {
    if ($pliki2.containsKey($_)) {
    write-host $pliki1.get_item($_).fullname "="
    $pliki2.get_item($_).fullname
    }
    }


    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 2 days, 1 hours, 2 minutes and 59 seconds


  • 7. Data: 2010-07-17 15:58:04
    Temat: Re: Taki sobie programik - czy ju jest napisany?
    Od: Krzysztof Rudnik <r...@k...net.pl>

    slawek wrote:

    >
    > Użytkownik "Maciej Pilichowski" <P...@g...com>
    > napisał w wiadomości grup
    > dyskusyjnych:1hpv36lu6i88k0cpkcvrc5ta423u8khmdl@4ax.
    com...
    >> petla po wszystkich plikach w lokalizacja A
    >> find pliku w B
    >>
    >> Koniec pogramu. Find jest w linuxie poleceniem systemowym, for jest
    >> konstrukcja wbudowana w shella.
    >
    > Zgoda, teoretycznie dobrze.
    >
    > W praktyce? Find szuka po nazwach plików - a ja chcę po zawartości. Czyli
    > np. plik DSC0001.JPG na kluczyku jest - programik ma znaleźć że w systemie
    > plików (lokalne dyski, baza zawartości CD/DVD, xfs, cokolwiek) jest co
    > prawda plik Monisia.JPG - ale o dokładnie takiej samej co do bitu
    > zawartości jak DSC0001.JPG. I tak dla wszystkich plików z kluczyka,
    > szybko, miło, przyjemnie.
    >
    > Oczywiście taki np. filedupe też potrafi - znajdzie że są zduplikowane
    > DSC0001.JPG i Monisia.JPG. Ale znajdzie też że są zduplikowane k01.JPG i
    > k02.JPG z katalogu w którym znalazł plik Monisia.JPG. Bo filedupe (nazwa
    > paskudna, ale ładny programik z otwartymi źródłami) szuka identycznych
    > plików w jakimś ich zbiorze.
    >
    > Ja chcę programu, który mając zbiór1 wyszuka wszystkie takie same pliki w
    > zbiór2. Czyli trochę coś innego.
    >
    > slawek


    Policz md5 wszystkich plikow na pendrivie i dysku i potem poszukaj takich
    samych wartosci (te sumy powinny sie zmiescic w pamieci, zwykle na dysku
    jest mniej niz 1mln plikow - co daje kilkanascie MB pamieci) - kazdy plik
    czytasz raz. Mimo wszystko troche to potrwa.






  • 8. Data: 2010-07-19 00:23:34
    Temat: Re: Taki sobie programik - czy ju? jest napisany?
    Od: Sc0rpi0 <s...@f...polbox.pl>

    Jacek Czerwinski nabazgrolił(a):

    > Odcinanie bym widzial jesli da sie zapewnic sortowanie A i B np. po
    > nazwie lub innym atrybucie bedacym elementem porownania.

    W sumie skoro i tak musimy sprawdzić całe A to chyba niepotrzebne jest
    całkowite porównywanie zawartości, spokojnie wystarczy sprawdzanie
    skrótów jakichś X bajtów pliku i dopiero gdy to okaże się być spełnione
    porównanie po kolei wielkości i w końcu zawartości plików.

    Mając skrót kilkubajtowy, plus jakiś mały znacznik, o który plik chodzi
    i nieprzesadną ilość plików do sprawdzenia to spokojnie całość można
    w pamięci nawet trzymać. Trzeba wtedy przelecieć A i zrobić tablicę
    skrótów+indeksów i tylko to posortować. Np. jeżeli skróty wielkości
    dajmy na to 12 bajtów, 4 bajtowy wskaźnik/indeks pliku i z milion
    plików do sprawdzenia na przenośnym to jest to raptem 16MB tablicy.
    Oczywiście takie podejście to konieczność najpierw przelecenia po A
    na pendrivie i zrobienia tej tablicy. Potem już tylko jechać po kolei
    po wszystkich plikach B, skrót tych X bajtów, próba jego znalezienia
    w posortowanej tablicy (to nic nie jest). Nie ma, to dalej, a jest to
    sprawdzenie wielkości pliku i jak się zgadza to dopiero porównanie
    zawartości i ew. akcja "znaleziono duplikat".

    > Jesli kursorem A poszedlem za daleko w stosunku do B, nie ma sensu isc
    > dalej, teraz nadganiamy B.
    > Ale chyba naturalny interfejs pozyskiwania zawartosci katalogu nie ma
    > sortowania sortowania (znam windows).

    Tyle, że po nazwie nie ma sensu sortować, bo po zawartości porównujemy.


    --
    Sc0rpi0 - [...] jakiś dziwak rzucał im pocięte kawałki drutu. Powiedziałem,
    że [...] nie jadają tego. -Nie zależy mi na tym, by go jadły - odparł, [...]
    -Ale mogą się udławić, [...] -Nie udławią się, bo drut tonie. [...]
    -Więc po co pan rzuca ? Bo lubię karmić łabędzie.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: