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í
×
dnes 14:00 | Komunita

Byla vydána verze 1.5.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace. Na YouTube jsou ke zhlédnutí záznamy přednášek z konference JuliaCon 2020 konané online minulý týden.

Ladislav Hagara | Komentářů: 0
dnes 13:33 | IT novinky

Sdružení CZ.NIC informuje, že pro domény s koncovkou .CZ, jejichž platnost nebyla včas prodloužena, platí opět ochranná lhůta 60 dnů (30 dnů je doména plně funkční, 30 dnů je vyřazena z DNS – není dostupná). Po více než čtyřech měsících tak končí zvláštní režim, kdy byla funkčnost nezaplacených domén dočasně prodloužena ze 30 na 60 dnů z důvodu mimořádné situace související s onemocněním COVID-19.

Ladislav Hagara | Komentářů: 0
dnes 09:00 | Nová verze

Byla vydána nová verze linuxové distribuce BunsenLabs Linux s předkonfigurovaným správcem oken Openbox. Její název je Lithium a založena je na Debianu 10 Buster. Přehled novinek v poznámkách k vydání. BunsenLabs Linux je nástupcem dnes již nevyvíjené linuxové distribuce CrunchBang (zkráceně #!).

Ladislav Hagara | Komentářů: 0
dnes 08:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.7 oznámil Linus Torvalds vydání Linuxu 5.8 (LKML). Přehled nových vlastností a vylepšení na stránce Linux Kernel Newbies.

Ladislav Hagara | Komentářů: 0
dnes 07:00 | Komunita

Omar Roth, hlavní vývojář Invidious, alternativního webového frontendu k YouTube, oznámil, že kvůli přehlcení a nedostatku motivace projekt opouští a zřejmě skončí také oficiální instance invidio.us (k 1. září, resp. API k 1. říjnu); stále poběží další instance nebo je možné nasadit vlastní.

Fluttershy, yay! | Komentářů: 0
včera 14:22 | Zajímavý projekt

Byly vyhlášeny výsledky soutěže JS1024 2020 aneb zajímavé programy napsané v JavaScriptu o velikosti maximálně 1 024 bajtů. Více o vítězném pianu na stránkách autora.

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

Felix Rieseberg na Twitteru oznámil, že po Windows 95 dostal do Electronu také počítač Macintosh Quadra 900 s operačním systémem Mac OS 8 a celou řadou aplikací. Zdrojové kódy, jakož i připravené balíčky, jsou k dispozici na GitHubu pod názvem macintosh.js.

Ladislav Hagara | Komentářů: 0
1.8. 23:11 | Nová verze

Projekt Debian aktualizoval obrazy stabilní větve „Buster“ (10.5). Součástí jsou opravy především zavaděče systému GRUB2 týkající se zranitelnosti „BootHole“.

Fluttershy, yay! | Komentářů: 0
31.7. 22:44 | Zajímavý projekt

V akci Humble Double Fine 20th Anniversary Bundle je možné zakoupit balík vesměs multiplatformních her od studia Double Fine, a to ve formě klíčů pro Steam nebo v některých případech i přímo ke stažení; za cenu aspoň 0,87-8 eur, kterou jde rozdělit mezi vydavatele, zprostředkovatele a charitu. Akce končí 13. srpna.

Fluttershy, yay! | Komentářů: 0
31.7. 17:22 | Nová verze

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 96 (pdf), HackSpace 33 (pdf) a Wireframe 40 (pdf).

Ladislav Hagara | Komentářů: 1
Dokážete si představit, že by váš hlavní počítač (desktop, notebook) byl v současné době založen na architektuře jiné než x86 (x86_64)? Například ARM, POWER, RISC-V,…
 (10%)
 (8%)
 (58%)
 (19%)
 (5%)
Celkem 88 hlasů
 Komentářů: 7, poslední dnes 12:28
Rozcestník

Monitorovací PHP skript s výstupom pre dzen2

21.6.2011 13:17 | Přečteno: 871× | 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.