abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    včera 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

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

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    18.4. 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    18.4. 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    18.4. 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    18.4. 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    18.4. 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    18.4. 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (11%)
     (2%)
     (20%)
    Celkem 566 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Monitorovací PHP skript s výstupom pre dzen2

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