abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 23:22 | Nová verze

Byla vydána verze 4.0 kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Přehled novinek v Changelogu (GitHub).

Ladislav Hagara | Komentářů: 0
včera 17:22 | Komunita

Včera vydanou hru Rise of the Tomb Raider pro Linux lze do pondělí 23. dubna koupit na Steamu s 67% slevou. Místo 49,99 € za 16,49 €.

Ladislav Hagara | Komentářů: 0
včera 16:11 | Komunita

Na Humble Bundle lze získat počítačovou hru Satellite Reign (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
včera 15:44 | Zajímavý software

Společnost Apple koupila před třemi lety společnost FoundationDB vyvíjející stejnojmenný NoSQL databázový systém FoundationDB (Wikipedie). Včera byl tento systém uvolněn jako open source pod licencí Apache 2.0. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
včera 15:00 | Nová verze

Po dva a půl roce od vydání verze 5.7 oznámila společnost Oracle vydání nové major verze 8.0 (8.0.11) databázového systému MySQL (Wikipedie). Přehled novinek v poznámkách k vydání. Zdrojové kódy komunitní verze MySQL jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 2
19.4. 14:44 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 151. brněnský sraz, který proběhne v pátek 20. 4. od 18:00 hodin v restauraci Benjamin na Drobného 46.

Ladislav Hagara | Komentářů: 0
19.4. 13:33 | Nová verze

Byla vydána verze 18.04.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
19.4. 13:11 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.26 a beta verze 1.27 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
19.4. 12:55 | Komunita

Dle plánu byla dnes vydána hra Rise of the Tomb Raider (Wikipedie) pro Linux. Koupit ji lze za 49,99 €.

Ladislav Hagara | Komentářů: 3
19.4. 09:55 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 254 bezpečnostních chyb. V Oracle Java SE je například opraveno 14 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 12 z nich. V Oracle MySQL je opraveno 33 bezpečnostních chyb. Vzdáleně zneužitelné bez autentizace jsou 2 z nich.

Ladislav Hagara | Komentářů: 3
Používáte na serverech port knocking?
 (3%)
 (7%)
 (47%)
 (26%)
 (17%)
Celkem 335 hlasů
 Komentářů: 29, poslední 5.4. 12:25
    Rozcestník

    Dotaz: Skript na dekódování squid access.log datumu

    5.2.2007 17:02 ac
    Skript na dekódování squid access.log datumu
    Přečteno: 499×
    Udělal jsem si skript v php na dekodovani data a času s access.log logu squidu v php. Jak to napsat v bashi? |V php to při větším logu přestává fungovat, alokuje to hrozně moc paměti.
    $fp = FOpen ($filename, "rb");
    $text = FRead ($fp, FileSize ($filename));
    FClose ($fp);
    
           $patterns = array(
               "/^(.*)\.(.*) /smUe"
           );
           $replacements = array(
               "StrFTime('%d/%m/%Y %H:%M:%S', '\\1')"
           );
           $text = preg_replace($patterns,$replacements, $text);
    
    

    Odpovědi

    5.2.2007 17:30 Semo | skóre: 44 | blog: Semo
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    cat access.log |
    cut -d. -f1 |
    while read sec; do
        date -d "19700101 00:00:00 $sec sec" "+%d/%m/%Y %H:%M:%S"
    done
    If you hold a Unix shell up to your ear, you can you hear the C.
    5.2.2007 22:49 Semo | skóre: 44 | blog: Semo
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    No dobre no, ten cat som mohol usetrit a dat subor ako parameter cutu. Ja som to testoval na zgzipenom logu a pouzival som zcat (a nakoniec som to upravil pre publikovanie). zcut totiz neexistuje.
    If you hold a Unix shell up to your ear, you can you hear the C.
    Josef Kufner avatar 5.2.2007 17:31 Josef Kufner | skóre: 68
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Tak ten log zpracovávej po řádcích a ne celý najednou.
    Hello world ! Segmentation fault (core dumped)
    5.2.2007 17:31 Semo | skóre: 44 | blog: Semo
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Alebo ten skript nespravis tak hlupo, ze si ho najprv cely nacitavas do pamate, ale budes ho citat po riadkoch a rovno spracovavat.
    If you hold a Unix shell up to your ear, you can you hear the C.
    5.2.2007 21:45 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Třeba takhle:
    #!/usr/bin/python
    import time
    for line in file('access.log'):
        splitted = line.split()
        firsttwo = ' '.join(splitted[:2])
        text = ' '.join(splitted[2:])
        time_tuple = time.strptime(firsttwo, '%d/%m/%Y %H:%M:%S')
        print time.mktime(time_tuple), text
    
    Zpracovává to asi 10000 řádků za sekundu a paměť by to taky nějak zvlášť žrát nemělo.
    6.2.2007 10:00 ac
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    10000 řádků za sekundu je málo. Ten php skript zpracuje 50 MB soubor logu za 3 sekunkdy.
    6.2.2007 10:41 iSteve | skóre: 15 | blog: isteve
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    To je sice pekne, ale presto nepouzitelne:) Jestli chces rychlost, napis to v Ccku, pripadne Perlu atd. Jestli chces opravdu velkou rychlost, mej logy v tmpfs. Jestli chces web srajdu, napis to v PHP, ale poradne:) (Krom toho jsem si dost jistej, ze 10k radku/s byl guesstimate a ne mereni)

    Mimochodem, generovani stats pro zatizenejsi weby obvykle trva dlouho, neni uplne rozumny to mit v PHP ve chvili, kdy tam mas milion omezeni stran pameti a doby behu skriptu. Neni rozumny tyto omezeni rusit.

    Vedet jak parsovat log je dobrej zacatek, ale zkus to jeste trochu vic domyslet v sirsich souvislostech, jestli to je opravdu presne to co chces.
    6.2.2007 11:06 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    10000 řádků za sekundu je málo. Ten php skript zpracuje 50 MB soubor logu za 3 sekunkdy.
    Tak o takové rychlosti si mohu nechat jen zdát. Odhaduji, že ten tvůj padesátimegový log obsahuje půl miliónu řádků. Už pouhé volání funkce strptime() z pythonu si u mě vezme 70 mikrosekund, což samo o sobě by se natáhlo na více než půl minuty.

    Rád bych pohlédl kruté pravdě do očí - máme tak strašně odlišné počítače nebo lžou všichni, co údajně svůj web urychlili přepsáním z php do pythonu?
    6.2.2007 12:16 Semo | skóre: 44 | blog: Semo
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Ten moj bashovy skript parsuje 740r/s. Na Athlon 3200+. Vstup je generovany a vystup ide do /dev/null, takze to ani nie je brzdene diskom.
    If you hold a Unix shell up to your ear, you can you hear the C.
    6.2.2007 14:26 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Ach ták! Taky jste mi mohl někdo říct, jak vlastně vypadá formát toho logu a že to mám vlastně úplně blbě a tudíž mi to nemůže fungovat ;-) Tak tady je nová verze
    #!/usr/bin/env python
    import time
    for line in file('access.log'):
        sec, text = line.split(' ', 1)
        ttuple = time.localtime(float(sec))
        print time.strftime('%d/%m/%Y %H:%M:%S', ttuple), text,
    
    která zpracovává 40000 řádků za sekundu (změřeno), vypisuje vždy celý řádek logu, jen čas a datum má polidštěný formát. Padesátimegový log se zpracovává 10 sekund a líp to nedokážu.
    6.2.2007 15:25 .
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    # time perl -p -e 's/^\d+\.\d+/localtime $&/e;'< access.log > access-lidsky.log
    
    real    0m39.863s
    user    0m30.460s
    sys     0m3.120s
    
    # cat /var/log/dmesg|grep MIPS
    Calibrating delay loop... 799.53 BogoMIPS
    
    # ls -l access.log
    -rw-r-----    1 proxy    proxy    49436371 Feb  6 15:23 access.log
    
    6.2.2007 15:57 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Skript na dekódování squid access.log datumu
    Tak přece se našlo místo k optimalizaci ;-) Zkusím tedy napodobit ten perlovský kód a předpokládat, že formát data a času vyhovuje tak, jak ho vrací funkce ctime().
    #!/usr/bin/env python
    import time
    for line in file('access.log'):
        sec, text = line.split(' ', 1)
        print time.ctime(float(sec)), text,
    
    A opravdu se to tím zrychlilo:
    $ time ./readfile.py > access-lidsky.log
    
    real    0m6.020s
    user    0m5.415s
    sys     0m0.527s
    $ time perl -p -e 's/^\d+\.\d+/localtime $&/e;'< access.log > access-lidsky.log
    
    real    0m9.052s
    user    0m7.245s
    sys     0m1.725s
    
    Takže padesátimegový log se pythonem zpracuje za 6 sekund, v těsném závěsu je perl s devíti sekundami. Ale nad rychlostí toho PHP mi zůstává rozum stát.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.