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 18:55 | Nová verze

Bylo vydáno OpenBSD 6.6. Opět bez oficiální písně. Z novinek lze zmínit například sysupgrade(8).

Ladislav Hagara | Komentářů: 2
včera 08:36 | Nová verze

Vyšla nová verze monitorovacího řešení Centreon 19.10.0. Novinek je spousta (realtime API, podpora JIRA, vylepšený systém notifikací...), ale těmi nejdůležitějšími je pro mnohé uživatele podpora nové verze rrdtool 1.7.x a php 7.2. Systém tak půjde bez problémů provozovat na jiných distribucích než CentOS 7. Kompletní přehled novinek v seznamu změn. Předpřipravená appliance i samotné části jsou k dispozici na oficiálních stránkách.

Max | Komentářů: 0
včera 01:00 | Komunita

Dnes vyjde Ubuntu 19.10 s kódovým názvem Eoan Ermine. Přehled novinek v poznámkách k vydání. Ubuntu 20.04 LTS bude Focal Fossa.

Ladislav Hagara | Komentářů: 6
16.10. 22:11 | Zajímavý projekt

Padesátiny Unixu lze oslavit také hrou The Unix Game aneb na unixové roury pomocí Scratche.

Ladislav Hagara | Komentářů: 1
16.10. 21:44 | Komunita

Vývojáři svobodného 3D softwaru Blender oznámili, že nejnovějším firemním sponzorem Blenderu je společnost Adidas. Jedná se o úroveň Corporate Silver, tj. 12 tisíc eur ročně.

Ladislav Hagara | Komentářů: 11
16.10. 18:22 | Komunita

V září proběhla každoroční konference Akademy komunity KDE. Nyní jsou záznamy přednášek dostupné online. Témata se dotýkají aplikací a knihoven KDE, jejich adaptaci pro různá speciální použití (vestavěná zařízení či rozšířená realita) i obecně vývoje a distribuce softwaru.

Fluttershy, yay! | Komentářů: 0
16.10. 09:11 | Zajímavý článek

Mozilla.cz informuje o vylepšování vlastních about: stránek Firefoxu, konkrétně o odstraňování volání funkce eval() z těchto stránek. Tyto stránky mají přístup k interním součástem Firefoxu, ale protože jsou napsané v HTML a JavaScriptu, mohou být cílem podobných útoků jako webové stránky zobrazované v prohlížeči (např. vložení cizího kódu nebo obsahu), jen s potenciálně závažnějším dopadem. Pokud by se někomu skutečně povedlo kód do

… více »
Ladislav Hagara | Komentářů: 3
16.10. 08:55 | Zajímavý projekt

Uživatel GitHubu joeycastillo představil The Open Book Project, jehož cílem je vytvořit open-source čtečku elektronických knih. Projekt se zatím nachází v rané fázi vývoje, už nyní ale obsahuje použitelný návrh hardware prototypu „Feather Wing“, jehož cílem má být ověření konceptu na 4,2palcovém displeji. Tento koncept je postaven na kitu Adafruit Feather M4 Express, který ovládá hlavní desku s displeji a tlačítky. Po úspěšném ověření

… více »
Bystroushaak | Komentářů: 41
16.10. 05:00 | Nová verze

Byla vydána verze 5.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.

Ladislav Hagara | Komentářů: 0
15.10. 20:33 | Zajímavý projekt

Byly zveřejněny schémata, firmware a instrukce pro sestavení trackballu Ploopy. Ten používá Arduino, senzor PMW3360 a 1,75palcovou kouli. Zdrojové soubory jsou šířeny pod open-hardware licencí CERN a GNU GPLv3. Tvar je inspirovaný klasickým trackballem Microsoft Trackball Explorer, jehož výroba byla ukončena kolem roku 2005 bez náhrady; projekt Ploopy se k tomu ale z právních důvodů nehlásí. Již vyrobené díly je možno objednat za 200 kanadských dolarů. Další podrobnosti v příspěvcích uživatele crop_octagon na Redditu.

Fluttershy, yay! | Komentářů: 30
Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
 (20%)
 (4%)
 (11%)
 (39%)
 (24%)
 (2%)
Celkem 413 hlasů
 Komentářů: 22, poslední 23.9. 08:36
Rozcestník

Monitorovací PHP skript s výstupom pre dzen2

21.6.2011 13:17 | Přečteno: 850× | Opensource | poslední úprava: 21.6.2011 13:16

Nedávno som spomínal že som si napísal ZSH skript pre monitorovanie systému s výstupom pre dzen2. Skript som používal k úplnej spokojnosti po dobu troch mesiacov až do včera. Pomocou htop som zbežne pozeral ktorý proces má koľko pamäti alokovanej. Ostal som dosť zarazený keď som uvidel ako má môj ZSH skript nazhromaždených niečo okolo 300MB. Po chvíľke neúspešného pátrania prečo je tomu tak som sa rozhodol že skript ešte posledný-krát prepíšem do interpretovaného jazyka. Posledný-krát pred prepisom do jazyka C. Tento pokus však vyšiel a nový skript teraz plní svoju funkciu nad moje očakávania.


Vzhlad a zobrazované informácie ostali zachované.
sysinfo-dzen2-php

A ako to vyzerá s konzumáciou sys. prostriedkov teraz?
 PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND    
 2240 asfethan  25   0  101m 8408 5196 S    0  0.2   4:54.22 /usr/bin/php sysinfo-dzen2-php

Skript od svojho spustenia trvalo okupuje niečo málo cez 8MB pamäti. Taktiež pozorujem menšiu spotrebu procesorového času a promptnejšiu odozvu ako mala jeho ZSH verzia. Som teda zvedavý čo ukáže čas a či je to finálne riešenie.


Pre spustenie a prevádzku je nutné mať nainštalovaný balík php-cli (platí pre Debian GNU/Linux OS)
#! /usr/bin/php
<?php

    /*
     *
     *    YOU CAN IGNORE "DO NOT TOUCH THIS" COMMENTS
     *    IF YOU REALLY KNOW WHAT ARE YOU DOING
     *
     */

    // EDIT COLORS AND IMAGES PATH
    define("CLR_DEF", "#85a229");
    define("CLR_MED", "#b9a229");
    define("CLR_HIG", "#b95929");
    define("IMG_DIR", "/home/asfethan/.local/share/dzen2/images");

    // HEX VALUE OF REGISTER WHEN VOLUME IS AT 0%
    define("VOL_MIN", 0x1f1f);

    // DEFINE "MUTED" VALUE WHICH IS ADDITION OF CURRENT VOLUME LEVEL
    define("VOL_MUT", 0x8000);

    // EDIT OR ADD PATTERNS FOR PARSING DEFINED FILES
    $a__itm = array
                (
                    "memt"    => array
                            (
                                "pth"    => "/proc/meminfo",
                                "pat"    => "MemTotal:[ ]+([0-9]+)"
                            ),
                    "memf"    => array
                            (
                                "pth"    => "/proc/meminfo",
                                "pat"    => "MemFree:[ ]+([0-9]+)"
                            ),
                    "memb"    => array
                            (
                                "pth"    => "/proc/meminfo",
                                "pat"    => "Buffers:[ ]+([0-9]+)"
                            ),
                    "memc"    => array
                            (
                                "pth"    => "/proc/meminfo",
                                "pat"    => "Cached:[ ]+([0-9]+)"
                            ),
                    "vol"    => array
                            (
                                "pth"    => "/proc/asound/card0/codec97#0/ac97#0-0+regs",
                                "pat"    => "0:02 = ([a-f0-9]+)"
                            ),
                    "eth0"    => array
                            (
                                "pth"    => "/proc/net/dev",
                                "pat"    => "^[ ]+eth0:([0-9 ]+)"
                            ),
                    "tp1"    => array
                            (
                                "pth"    => "/sys/bus/platform/devices/it87.552/temp1_input",
                                "pat"    => "^([0-9]+)"
                            ),
                    "tp2"    => array
                            (
                                "pth"    => "/sys/bus/platform/devices/it87.552/temp2_input",
                                "pat"    => "^([0-9]+)"
                            ),
                    "tp3"    => array
                            (
                                "pth"    => "/sys/bus/platform/devices/it87.552/temp3_input",
                                "pat"    => "^([0-9]+)"
                            )
                );

    
    // DO NOT TOUCH THIS
    function get_val($a__in)    {

        $b__continue = TRUE;
        $m__out = NULL;
        $s__subj = NULL;
        $a__mat = array();

        if ( ($a__lines = file($a__in['pth'])) === FALSE )    {

            echo "Error: Couldn't open this file: " . $a__in . "\n";
            exit(1);

        }

        for ($i = 0; $i < count($a__lines); $i++)    {

            if ( preg_match("/" . $a__in['pat'] . "/", $a__lines[$i], $a__mat) !== 0 )    {

                $m__out = $a__mat[1];
                $b__continue = FALSE;
                break;

            }

        }

        return $m__out;

    }

    // DO NOT TOUCH THIS
    function pad($s__str, $i__num, $s__pos)    {

        switch ( $s__pos )    {

            case "l":
                $i__pos = STR_PAD_LEFT;
                break;
            case "r":
                $i__pos = STR_PAD_RIGHT;
                break;
            case "c":
                $i__pos = STR_PAD_BOTH;
                break;
            default:
                $i__pos = STR_PAD_LEFT;
                break;
        }
                
        return str_pad($s__str, $i__num, " ", $i__pos);

    }

    // DO NOT TOUCH THIS
    function net_parse($s__str, $s__x)    {

        $a__data = explode(" ", preg_replace("/[ ]+/", " ", $s__str));
        $s__out = NULL;

        switch ($s__x)    {

            case "rx":
                $s__out = $a__data[1];
                break;

            case "tx":
                $s__out = $a__data[9];
                break;
            default:
                break;
        }

        return $s__out;

    }

    // CUSTOM OUTPUT FUNCTION
    function pre_out($val, $me, $hi, $pad, $padir, $img)    {

        $clr = CLR_DEF;
        if ( $val >= $me )    { $clr = CLR_MED; }
        if ( $val >= $hi )    { $clr = CLR_HIG; }
        return "^fg($clr)^i(" . IMG_DIR . "/" . $img . ")^r(3x0)^fg(#e5e5e5)" . pad($val, $pad, $padir);

    }

    // CUSTOM OUTPUT FUNCTION FOR NETWORK INTERFACES WITH UNITS CONVERSION
    function pre_out_net($num, $pad, $padir, $img)    {

        $uac = array
            (
                0 => array
                    (
                        "uni" => "  Bps",
                        "clr" => CLR_DEF
                    ),
                1 => array
                    (
                        "uni" => "KiBps",
                        "clr" => CLR_DEF
                    ),
                2 => array
                    (
                        "uni" => "MiBps",
                        "clr" => CLR_MED
                    ),
                3 => array
                    (
                        "uni" => "GiBps",
                        "clr" => CLR_HIG
                    )

            );

        $i = 0;
        while( $num > 999.0 )    {

            $num /= 1024.0;
            $i++;

            if ( $i > 2 )    { break; }

        }

        return "^fg(" . $uac[$i]["clr"] . ")^i(" . IMG_DIR . "/$img)^r(3x0)^fg(#e5e5e5)" . pad(sprintf("%.1f", $num), $pad, $padir) . "^r(3x0)^fg(#c5c5c5)" . $uac[$i]['uni'];

    }

    // CUSTOM OUTPUT FUNCTION FOR MEMORY USAGE COUNT
    function count_used_mem()    {

        global $a__itm;

        $i__t = get_val($a__itm['memt']);
        $i__f = get_val($a__itm['memf']);
        $i__b = get_val($a__itm['memb']);
        $i__c = get_val($a__itm['memc']);

        return ceil(($i__t - $i__f - $i__b - $i__c) / 1024);

    }

    function pre_out_vol($val, $me, $hi, $pad, $padir, $img, $img2)    {

        $fimg = $img;
        $val = "0x$val";

        if ( $val > VOL_MIN )    {

            $fimg = $img2;
            $val -= VOL_MUT;

        }

        $perc = sprintf("%d", (0x0064 - ($val / (VOL_MIN / 0x0064))));

        $clr = CLR_DEF;
        if ( $perc >= $me )    { $clr = CLR_MED; }
        if ( $perc >= $hi )    { $clr = CLR_HIG; }
        return "^fg($clr)^i(" . IMG_DIR . "/" . $fimg . ")^r(5x0)^fg(#e5e5e5)" . pad($perc, $pad, $padir);

    }

    $eth0_rx_new = net_parse(get_val($a__itm["eth0"]), "rx");
    $eth0_tx_new = net_parse(get_val($a__itm["eth0"]), "tx");
    $eth0_rx_old = net_parse(get_val($a__itm["eth0"]), "rx");
    $eth0_tx_old = net_parse(get_val($a__itm["eth0"]), "tx");


    while (true)    {

        $a__lavg = sys_getloadavg();

        echo "^bg(#85a229)^r(2x0)^bg(#313433)^r(10x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp1']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp2']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp3']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out(sprintf("%.2f", $a__lavg[0]), 1.00, 2.00, 5, "l", 'loadavg.xbm') . "^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out(count_used_mem(), 1500, 3000, 4, "l", "ram.xbm") . "^r(3x0)^fg(#c5c5c5)MiB^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out_vol((get_val($a__itm['vol'])), 50, 85, 3, "l", "repro.xbm", "repro-off.xbm") . "^r(3x0)^fg(#c5c5c5)%^r(8x0)"
        . "^bg(#85a229)^r(1x0)^bg(#aac442)^r(5x0)^fg(#313433)" . date("H:i") . "^r(5x0)^bg(#85a229)^r(1x0)"
        . "^bg(#313433)^r(0x0)^bg(#85a229)^r(8x0)^fg(#212423)" . date("d.m.Y") . "^r(8x0)"
        . "^bg(#aac442)^r(2x0)^bg(#313433)^r(15x0)^fg(#e5e5e5)eth0^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^r(5x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)" . pre_out_net(($eth0_rx_new - $eth0_rx_old), 5, "l", "down_small.xbm") . "^r(15x0)"
        . "^bg(#313433)^r(1x0)^bg(#313433)" . pre_out_net(($eth0_tx_new - $eth0_tx_old), 5, "l", "up_small.xbm") . "^r(15x0)"
        . "^bg(#85a229)^r(2x0)"
        . "\n";

        $eth0_rx_old = net_parse(get_val($a__itm["eth0"]), "rx");
        $eth0_tx_old = net_parse(get_val($a__itm["eth0"]), "tx");

        sleep(1);

        $eth0_rx_new = net_parse(get_val($a__itm["eth0"]), "rx");
        $eth0_tx_new = net_parse(get_val($a__itm["eth0"]), "tx");
    
    }

    exit(0);

?>


Súbory na stiahnutie.



Blogpost pochádza z cyberasylum.eu

       

Hodnocení: 86 %

        špatnédobré        

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

Komentáře

Vložit další komentář

poky74 avatar 21.6.2011 15:32 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

Nepřemýšlel jsi o tom, to udělat v Brainfucku?

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
asfethan avatar 21.6.2011 16:08 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Nie, prečo?
rADOn avatar 21.6.2011 18:21 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Na psani shellskriptu je to zhruba stejne vhodny jazyk jako php
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 21.6.2011 18:35 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Stale som nedostal ziadny vhodny argument. S cim mate problem? Ze je to PHP? Ste mi na smiech...
poky74 avatar 21.6.2011 18:57 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

V php dělám už spousty let a myslím že se v něm vyznám opravdu dobře, proti samotnému php nic nemám...

Ale prostě používáš php na něco na co není navrhnuté, to je jako dělat weby v ansi c, jasně, jde to, pokud není zbytí tak se to dá udělat, ale je to jendoduše kravina, špatná volba, plýtvání..

K smíchu je jenom tvé předčasné vyvozování závěrů.

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
asfethan avatar 21.6.2011 19:23 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Aha takze php podporuje argv a argc len pre srandu kralikov. Kapitola v referencnej o pouzivani php s cli je tiez len hovadina, taktiez ako fakt ze od verzie 5.1 ma php interaktivny shell.

Web sa da spravit v akomkolvek programovacom jazyku. Komunita okolo haskellu si v nom napisala httpd, python ma svoj webframework - djago, ruby zase RoR... A len preto ze to neboli jazyky navrhnute zrovna a vylucne pre web teraz zavrhneme do zatratenia vsetkych ktori ich na tento ucel pouzivaju. Zrusime aj bugzillu pretoze je napisana v perle. Presne ako php pre shell scripting.

> K smíchu je jenom tvé předčasné vyvozování závěrů.

Nie, ja som sa najprv slusne spytal preco ;-) . K smiechu su tvoje predsudky a skatulkacia ktoru si krasne predviedol. Takze ta poprosim, nalep na skatulu popisku "vseznalek" a strc sa do nej. Dakujem.
rADOn avatar 21.6.2011 19:50 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
To jsi velice hezky shrnul, jak nam mezi univerzalnimi jazyky rasi specializovane webove frameworky. Nejak mi ale unika, jak z toho muzes vyvozovat, ze specializovaneho jazyka vznikne univerzalni tim ze se do nej prida argv a interaktivni shell. Kdybys znal jazyky jejichz nazvy tady trousis, vedel bys ze toho pro systemove programovani nabizi setsakra vic. Ale to by cela tahle diskuse v prvni rade nevznikla, takze tvoje pevne presvedceni ze pred prichodem php vsichni programatori lezli po stromech je nevyvratitelne.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 21.6.2011 20:01 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Ja som neoznacil php ako univerzalny jazyk. Cisto som poukazal na to kam smeruje vyvoj. Niektore technologie sa uz pouzivaju aj na iny ucel ako na ten pre ktory boli povodne navrhnute. A fakt ze vela ludi pouziva php aj na cli to len potvrdzuje.

> Ale to by cela tahle diskuse v prvni rade nevznikla, takze tvoje pevne presvedceni ze pred prichodem php vsichni programatori lezli po stromech je nevyvratitelne.

Blbost na N-tu ;-)

Btw co je potreba pre napisanie takehoto skriptu? fopen(), fread() a nejaku podporu regularnych vyrazov... Tymto vsetkym php disponuje takze stale nevidim jediny dovod preco by pouzitie php v tomto pripade mala byt kravina.

Si proste troll, stale tocis o nicom ;-)
poky74 avatar 21.6.2011 20:08 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

Ale kdepak, ty jenom neuneseš kritiku, proto kopeš okolo sebe.

Jenom pro zajímavost, jak dlouho programuješ (v čemkoli)?

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
asfethan avatar 21.6.2011 21:29 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Napisal si to v PHP a je to zle lebo je to v PHP. Ktore je zle pre tvorbu shell scriptov napriek tomu ze ho za tymto ucelom pouzivaju tisice ludi a obsahuje potrebne sucasti. JE TO PROSTE ZLE LEBO SA JEDNA O PHP.

A ja som chumaj lebo som to nenapisal podla tvojho, alebo rADOn-ovho fetisu.

Tak takuto kritiku teda fakt neunesiem :D A btw, nebudem dalej krmit trollov.
poky74 avatar 21.6.2011 21:39 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

Ktore je zle pre tvorbu shell scriptov napriek tomu ze ho za tymto ucelom pouzivaju tisice ludi

Pokus se nad touto analogií trochu zapřemýšlet, tisíce lidí taky neaktualizují jádro, nezapínají si bezpečnostní pásy, nechodí na pravidelnou lékařskou prohlídku, nepíšou dosvého kódu komentáře a nedělají bezpečnostní audit svého kódu a stovky dalších věcí.

Jak jsem již psal, proti php nic nemam, jde o to že to píšeš v jazyce který se na to nehodí, což může být způsobeno nízkými znalostmi (daného) jazyka, proto jsem se také ptal jak dlouho programuješ, tohle totiž zavání nepochopením základních principů.

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
asfethan avatar 21.6.2011 21:50 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
> Pokus se nad touto analogií trochu zapřemýšlet, tisíce lidí taky neaktualizují jádro, nezapínají si bezpečnostní pásy, nechodí na pravidelnou lékařskou prohlídku, nepíšou dosvého kódu komentáře a nedělají bezpečnostní audit svého kódu a stovky dalších věcí.

Tak som porozmyslal a dospel k zaveru ze napriek tomu su tu tisice ludi ktori toto a stovky inych prospesnych a zodpovednych cinnosti vykonavaju...

> Jak jsem již psal, proti php nic nemam, jde o to že to píšeš v jazyce který se na to nehodí, což může být způsobeno nízkými znalostmi (daného) jazyka, proto jsem se také ptal jak dlouho programuješ, tohle totiž zavání nepochopením základních principů.

A ja stale cakam na padny dovod, fakt. Proste preco je tomu tak? Okrem "blabolov o zavanani nepochopenim" ktore si vydedukoval z toho ze som pouzil php a nie z kodu samotneho si zase nic prospesne do diskusie nepriniesol. Ja proste stale nevidim ziadny dovod preco to PHP na shell scripty nepouzit.

> Kvalitní diskuse obohatí všechny, nedělejme tu z toho žumpu, buďme bohatí.

Ach kiezby...
poky74 avatar 21.6.2011 22:05 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

1. Jsem nějak nepochopil, nebudu reagovat, abych ennapsal nějakou blbost.

2. Doplňující otázka, programoval jsi někdy na nízké úrovni? C nebo spíš assembler?

3. Kéž by, proto to tam je napsané

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
asfethan avatar 21.6.2011 22:11 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
1. suhlasim

2. aj assembler, aj C
tomboytom-deviant avatar 21.6.2011 20:38 tomboytom-deviant | skóre: 7 | blog: lojdovo | .com
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2

... a já ho mám většího :-)

rADOn avatar 21.6.2011 19:38 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
S php problem neni. Pouzivat ho na neco na co se hrube nehodi… Rekneme ze jsi celkem presvedcive dokazal, ze to v php napsat jde. Asi jako "jde" koupat se v zamrzly rece nebo "jde" dojit pesky z Prahy do Prcic. Lidi ktery nemaji cas neco si dokazovat to delat nebudou. Zeptej se nekoho kdo umi perl o kolik by ten kod zkratil :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 21.6.2011 19:47 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Stale len same blaboly, kopa teorie a neadekvatne prirovnania. A neviem co ma dlzka kodu co docinenia s vhodnostou pouzit php na ucel v clanku popisany.

Beriem to proste tak ze sa ozvali dvaja trollovia. Nic viac, nic menej.
21.6.2011 19:52 jnd | skóre: 1 | blog: lnx
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Proč se na to hrubě nehodí? Není to nějaký obskurní jazyk, kde by se třeba dalo hovořit o dokazování si něčeho. V čem je tak hrozný třeba oproti Pythonu? Doufám, že neznáš Phoronix Test Suite, který používá dokonce PHP-GTK, z toho by ti asi muselo být opravdu špatně :)

Myslím, že tady nejde o velikost kódu a jeho umělecké provedení, ale o výsledek toho skriptu.
rADOn avatar 21.6.2011 20:29 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
V pythonu by treba nebylo potreba vymyslet si vlastni funkci na zarovnani textu. Vystup by se misto lepeni z kousku prohnal zabudovanym formatovacem. Vetsina zbytku by IMO sla nahradit dobre napsanym regexem, par slovniku ve kterych to bude zorganizovany… ve vysledku by woko padesat radku netto.

Velikosti kodu nemyslim pocet byte, ale kolik prace da to napsat nebo kolik toho clovek musi prelouskat aby neco zmenil nebo nasel chybu. V tomhle smeru je php spickovy na web ale slaby na vsechno ostatni.

Umelecke provedeni? Ja vim ze perl je hnus hnusatej, ale na takovyhle trivialitce se to neprojevi. :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 21.6.2011 21:24 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Keby som sa nesnazil aby to vyzeralo uhladne tiez to mozem vsetko vopchat na 50 riadkov. Keby mi nezalezalo na lahkej rozsiritelnosti/uprave tiez by som netvoril mozno nedolezite funkcie.

A co sa tyka vystupneho retazca, pre dzen2 je to najvhodnejsie takto. Ked budem v buducnosti menit dizajn desktopu je lahsie prehadzat lepenec kde vidim co sa dostane na vystup ako sa babrat s nejakym formatovacom. A ak nie lahsie, tak aspon rovaka piplacka... Vystup pre dzen2 moze byt velmi variabilny.

Ak su teda toto tvoje jedine argumenty tak sa mi potvrdilo ze si troll. Pretoze riesit preco som to napisal tak aby kazdy hned videl co sa kde deje a preco som pouzil PHP je absolutne bezpredmetne a nezmyselne. Fakt to je ako opytat sa japoncov preco robili relativne male vysokootackove vykonne motory s technologiou variabilneho casovania ventilov a s inymi vychytavkami oproti velkym nenazranym americkym motorom kde za silu zodpovedal hlavne objem.
22.6.2011 10:45 zr0t0t0
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Asfethan zase bastli PHP \O/. Nic to moj potom ti poradim ako byt cool a 1337.

P.S uz som sa stal certifikovanym UNIX adminom
Konqui avatar 22.6.2011 12:50 Konqui | skóre: 18 | blog: Konqui | Rožnov pod Radhoštěm
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
PHP osobně nesnáším, jeto bastl jazyk ale je to jen můj osobní pocit a nikomu ho netlačím. Nicméně nikdo ze zdejších diskutujících nedokázal vysvětlit, ani podat pádné argumenty, proč by to nemělo být v PHP a proč se na to nehodí.
Open/save dialogy z GTK+ jsou nejkřiklavější ukázkou toho nejdebilnějšího software, co vůbec může existovat.
MMMMMMMMM avatar 25.6.2011 13:37 MMMMMMMMM | skóre: 43 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Mně se ten kód v PHP líbí. Kritiky v této diskusi požádám o přepsání kódu do "vhodnějšího" jazyka, pokud to svedou. Pokud ne, nechť neflamují (neflámují?) :-)
rADOn avatar 28.6.2011 19:04 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Oki tady máš pětiminutový bastl
#!/usr/bin/env python

import re, time, math

sources = {
    "/proc/meminfo": (
        ( "MemFree:\s*(?P<memfree>\d+)", lambda x: int(x)/1024 ),
        ( "MemTotal:\s*(?P<memtotal>\d+)", lambda x: int(x)/1024 )
    ),
    "/proc/net/dev": (
        ( "^\s*eth0:\s*(?P<eth0rx>\d+)\s+(\w+\s+){7}(?P<eth0tx>\d+)", int ),
    )
}

data = {}

for path in sources:
    val = open(path).read()
    for pattern, conv in sources[path]:
        ret = re.search(pattern, val, re.MULTILINE)
        if ret:
            for k,v in ret.groupdict().items():
                data[k] = conv(v)

print "Pamet %(memfree)s/%(memtotal)s GB Sit %(eth0rx)012d/%(eth0tx)012d b" % data
Není to samozřejmě úplný přepis, jen ukázka jak by se k tomu dalo přistupovat v pythonu. Na začátku je slovník (asociativní pole) které udává kde co je plus funkce která to přežvýká to na co by nestačil regex. Samotné zpracování je trivka, pro jednoduchost jsem vynechal ošetření výjimek (jeden try/catch kolem každého bloku). Nakonec se to zformátuje doplněním do šablony pomocí operátoru %. Grokovat formátování v originalním kódu jsem línej, pacz je rozházené všude možně, takže jsem tam dal jen ukázkový text. Výsledek vypadá následovně:
Pamet 19/1965 Sit 000291264713/000014206669
Dzen2 nepožívám takže příslušné sekvence si do šablony doplňte za domácí úkol :-) Zbývá ještě hezká kb/Mb/Gb formátovací funkce (3 řádky max) a je afaik hotovo… i když je to zjednodušené, troufám si tvrdit že jsem to s těmi padesáti řádky v pythonu nepřestřelil.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 6.7.2011 15:29 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
#! /usr/bin/php
<?php>
	$a__itm = array("memt"	=> array("pth"	=> "/proc/meminfo","pat"	=> "MemTotal:[ ]+([0-9]+)"),
					"memf"	=> array("pth"	=> "/proc/meminfo","pat"	=> "MemFree:[ ]+([0-9]+)"),
					"memb"	=> array("pth"	=> "/proc/meminfo","pat"	=> "Buffers:[ ]+([0-9]+)"),
					"memc"	=> array("pth"	=> "/proc/meminfo","pat"	=> "Cached:[ ]+([0-9]+)"),
					"vol"	=> array("pth"	=> "/proc/asound/card0/codec97#0/ac97#0-0+regs","pat"	=> "0:02 = ([a-f0-9]+)"),
					"tp1"	=> array("pth"	=> "/sys/bus/platform/devices/it87.552/temp1_input","pat"	=> "^([0-9]+)"),
					"tp2"	=> array("pth"	=> "/sys/bus/platform/devices/it87.552/temp2_input","pat"	=> "^([0-9]+)"),
					"tp3"	=> array("pth"	=> "/sys/bus/platform/devices/it87.552/temp3_input","pat"	=> "^([0-9]+)"));

	function get_val($a__in)	{
		$b__continue = TRUE; $m__out = NULL; $s__subj = NULL; $a__mat = array();

		if ( ($a__lines = file($a__in['pth'])) === FALSE )	{ echo "Error: Couldn't open this file: " . $a__in . "\n"; exit(1);	}

		for ($i = 0; $i < count($a__lines); $i++)	{
			if ( preg_match("/" . $a__in['pat'] . "/", $a__lines[$i], $a__mat) !== 0 )	{ $m__out = $a__mat[1];	$b__continue = FALSE;	break; }
		}

		return $m__out;
	}

	foreach($a__itm as $s__key => $a__val) { echo sprintf("%s: %s\t", $s__key, get_val($a__val)); } echo "\n";
	exit(0);
?>
Vystup:
memt: 4060456	memf: 165908	memb: 77140	memc: 2506180	vol: 0e0e	tp1: 34000	tp2: 31000	tp3: 35000
Je to kod z orig. skriptu osekany o komentare a nejake to odriadkovanie. Zozbieral som 2x viac udajov ako ty a to na 26 riadkoch (co je o 1 viac ako tvoj python skript) a z toho budu vzdy dva riadky len uzatvaracie znacky php (<?php ?>).

Takze znovu, preco nie je PHP vhodne na skriptovanie? Co si vlastne dokazal tym tvojim bastlom? Ze sa to da napisat aj v inych jazykoch? Ale ved to tu predsa vedel kazdy.

Ako som napisal uz o niekolko vlakien vyssie, si iba troll.
rADOn avatar 8.7.2011 11:17 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
To nebyla odpoved pro tebe ale pro MMMMM. Chtel jsel jsem dokazat, ze moje tvrzeni o padesati radcich v pythonu neni prehnane. Co se tyce "trollovani" o pouziti pythonu vs. php pro tento ukol… ja narozdil od tebe znam oba ty jazyky.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 8.7.2011 11:28 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
> To nebyla odpoved pro tebe ale pro MMMMM.

Diskusia je verejna.

> Chtel jsel jsem dokazat, ze moje tvrzeni o padesati radcich v pythonu neni prehnane.

Chcel si no aj tak si nedokazal. Uz na zaciatku tvrdis ze to nie je uplny prepis a ze si vynechal osetrenie vynimiek.

> Co se tyce "trollovani" o pouziti pythonu vs. php pro tento ukol… ja narozdil od tebe znam oba ty jazyky.

Fail. To uz prechadzame k porovnavaniu kto ho ma vacsieho?
rADOn avatar 8.7.2011 12:22 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Chtel jsel jsem dokazat, ze moje tvrzeni o padesati radcich v pythonu neni prehnane.
Chcel si no aj tak si nedokazal. Uz na zaciatku tvrdis ze to nie je uplny prepis a ze si vynechal osetrenie vynimiek.
Vynechal jsem toho vice. Presto je tam vice funkce nez v tom co jsi vyriznul ty, ackoliv jsem to zbastlil behem peti minut. Vyjimky jsou otazka obaleni try…except blokem, vynechal jsem je zamerne aby bylo pro nepythonisty lepe videt jak to funguje.
To uz prechadzame k porovnavaniu kto ho ma vacsieho?
Prechazime k tomu jestli vubec mas paru o cem to mluvis. Pokud chces porovnavat jazyky a znas jen jeden z nich, ma tvuj nazor asi takovou hodnotu jako kdyz se panna bavi o sexu. Cela tahle debata neni o tom ze by ten tvuj kod byl spatny, jak si porad myslis, ale o tom ze sis pridelal praci, kterou za tebe mohly odvest jine nastroje. (A stale si myslim ze optimalni nastroj na tohle je perl, python sem dal za priklad jen proto ze ho znam daleko lepe.)

Posledni rada (kterou stejne neposlechnes :-) od nekoho kdo toho uz o php stihl zapomenout vic nez ty se naucit: radky jsou jen orientacni meritko. Nemer delku penisu mikrometrem kdyz je ve hre jazyk, jehoz uzivatele se bavi psanim jednoradkacu. Cely ten tvuj vysek (precteni, naparsovani a vypsani) by sel v pythonu napsat jako jeden (slovy "1") vyraz :-p
"2^24 comments ought to be enough for anyone" -- CmdrTaco
asfethan avatar 8.7.2011 13:18 asfethan | skóre: 10 | blog: asfalatum | Bratislava
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Za prve, ja som nikde ziadne prog. jazyky neporovnaval uz ked sme pritom. Mojou temou je stale onen skript ktory som napisal v PHP co si ty nemohol akceptovat a musel si tu doslova onanovat nad tym ako by si to ty dokazal/dokazes spravit lepsie v inom prog. jazyku. Pritom si ani raz nepredlozil konecne padny argument preco PHP na to nie je vhodny jazyk. Alebo akykolvek iny v ktorom clovek momentalne pracuje.

Stale sa mi snazis vysvetlit o kolko efektivnejsie som mohol vyuzit svoj cas keby som to programoval v niecom inom. No ja sa pytam ako?! Studiom referencnej perlu, alebo pythonu by som stravil viac casu ako tym ze som to napisal tak ako som to napisal v PHP. Poznam zbezne vlastnosti perlu aj pythonu. Zaujimal som sa o python kedysi. No ako som napisal, oprasenie znalosti by mi zabralo urcite viacej casu. Btw nepisem dvomi prstami (ako policajt) takze tych 200 riadkov v PHP som mal za chvilu.

Cize este raz a dufam ze naposledy, viem ze moj kod nie je zly (kedze to dokazuje denno-denne svojou funkcnostou). Viem ze su jazyky v ktorych by to slo rychlejsie (s patricnymi znalostami). Dokonca viem ze su aj take s ktorymi by spotreba prostriedkov bola uplne minimalna.

> Posledni rada (kterou stejne neposlechnes :-) od nekoho kdo toho uz o php stihl zapomenout vic nez ty se naucit: radky jsou jen orientacni meritko. Nemer delku penisu mikrometrem kdyz je ve hre jazyk, jehoz uzivatele se bavi psanim jednoradkacu. Cely ten tvuj vysek (precteni, naparsovani a vypsani) by sel v pythonu napsat jako jeden (slovy "1") vyraz :-p

Uspokojil si sa? Strcil si si do mna hoci o mne nic nevies. Budis jak je libo. A len tak pre zaujimavost, myslel som tvoje vytahovanie (co sa penisov tyka), nie onanovanie nad poctom riadkov. Ale vidim ze si si vytrhol z kontextu aby si ma mohol "potopit" dalsimi bezpredmetnymi zvastami o pythone a bezduchymi prirovnaniami.

Myslim ze by uz aj stacilo.
25.6.2011 14:26 maertien | skóre: 29 | blog: martinek
Rozbalit Rozbalit vše Re: Monitorovací PHP skript s výstupom pre dzen2
Autorovi to funguje. Zjevne ma dobry pocit z toho, ze to vytvoril. Nezere to prilis systemovych prostredku. Ale pouzil php. Osobne php moc na psani skriptu nepreferuji, ale rekl bych, ze v tomto pripade prevazuji klady. :-) Ja bych to psal cele v awk. ;-)

Založit nové vláknoNahoru

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