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í
×
    26.12. 18:44 | Komunita

    Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.

    Ladislav Hagara | Komentářů: 0
    26.12. 13:22 | Zajímavý software

    Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.

    🇨🇽 | Komentářů: 7
    26.12. 13:11 | Nová verze

    XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).

    🇨🇽 | Komentářů: 0
    26.12. 03:33 | Nová verze

    Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.

    Ladislav Hagara | Komentářů: 0
    25.12. 14:44 | Nová verze

    Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.

    Ladislav Hagara | Komentářů: 0
    24.12. 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 30
    24.12. 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.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 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (35%)
     (1%)
     (20%)
     (1%)
     (1%)
     (1%)
     (12%)
     (13%)
     (15%)
    Celkem 158 hlasů
     Komentářů: 18, poslední 24.12. 15:29
    Rozcestník

    Dotaz: Bash aritmeticky priemer

    6.8.2007 10:50 Mountains
    Bash aritmeticky priemer
    Přečteno: 999×
    Zdravim, potreboval by som urobit skript ktory nacita hodnoty zo suboru a urobi s nich aritmeticky priemer. Dakujem za pomoc.

    Odpovědi

    6.8.2007 11:40 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Tady máš tři různé algoritmy včetně generování testovacího souboru a měření doby výpočtu.
    #!/usr/bin/python
    import random, time
    
    print 'Wait ...'
    fw = file('cisla.txt', 'w')
    for i in range(1000000):
        fw.write('%f\n' %(random.random()))
    fw.close()
    
    start = time.time()
    s = 0
    lines = 0
    for line in file('cisla.txt'):
        s += float(line)
        lines += 1
    print s/lines
    print time.time() - start
    
    start = time.time()
    s = 0
    for i, line in enumerate(file('cisla.txt')):
        s += float(line)
    print s/(i + 1)
    print time.time() - start
    
    start = time.time()
    numbers = [float(line) for line in file('cisla.txt')]
    print sum(numbers)/len(numbers)
    print time.time() - start
    
    6.8.2007 11:47 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Algoritmus vidím jen jeden, zato ve třech implementacích (z toho jedné tak zoufale paměťově neefektivní (aniž by to bylo vyváženo časovou náročností), že by se to dalo používat při výuce jako odstrašující příklad).
    6.8.2007 12:19 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Pro případ, že by se někdo špatně vyspal, uvádím ještě tohle (bez ošetřování chyb):
    #include<stdio.h>
    
    int main(void){
        FILE* fr;
        double f, s = 0, lines = 0;
    
        fr = fopen("cisla.txt", "r");
        while (fscanf(fr, "%lf\n", &f) != EOF){
            s += f;
            lines += 1;
        }
        printf("%12.12f\n", s/lines);
        fclose(fr);
        return 0;
    }
    
    Je to cca 3-4 krát rychlejší než v pythonu.
    6.8.2007 12:23 Mountains
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Dakujem za Vasu ochotu a pomoc
    6.8.2007 12:44 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    No, kedze su prazdniny, tak to domaca asi nebude, hoci to inak vykazuje vsetky jej znaky.

    Najvacsi problem je dostat hodnotu z podshellu von a trik je spocitat priemer na desatinne miesta, hoci to bash nevie.
    #!/bin/bash
    set -- `while read n; do
      sucet=$((sucet + n))
      lines=$((lines + 1))
      echo $sucet $lines
    done <subor.in | tail -n -1`
    
    sucet=$1
    lines=$2
    
    echo $((sucet / lines))
    # # ak to chces na 2 destinne miesta:
    # avgfrac=$((sucet * 100 / lines))
    # echo ${avgfrac%??}.${avgfrac: -2}
    
    
    If you hold a Unix shell up to your ear, you can you hear the C.
    6.8.2007 12:47 lada
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    pokud to ma byt ciste v shellu tak asi takto: #!/bin/sh

    text=`cat soubor_dat |tr '\n' '+'`0
    pocet=`cat soubor_dat |wc -l`
    prumer=`echo "($text)/$pocet"|bc -l`
    echo $prumer
    6.8.2007 13:24 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Tak tomu říkám řešení čistě v shellu… :-)
    6.8.2007 13:49 Zdenek
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Zatim je to ovsem nejbliz k zadani. A nepochybne to spravne *nix reseni :-)
    6.8.2007 14:35 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Potrebuje to tr a bc. Riesenie CISTO v bashi mam zatial iba ja :-)
    If you hold a Unix shell up to your ear, you can you hear the C.
    6.8.2007 14:50 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Dá se to napsat třeba i takhle:
    #!/bin/awk -f
    BEGIN{lines=0;s=0;}
    {lines++;s+=$1;}
    END{print "prumer je", s/lines;}
    
    no a awk už tak skoro "v shellu" je, že? Nebo teda v posixu. Teda *nixu. Teda ... no prostě je to víc v shellu než třeba bc. A určitě je to mnohem blíž shellu než python. Ale asi je to trochu dál shellu než třeba "tail". To jsou problémy ...
    6.8.2007 15:24 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Já si hlavně myslím, že zadání typu "udělejte XY v ZW" jsou dobrá akorát tak pro školní úlohy. V praxi je daleko užitečnější umět zvolit vhodný nástroj pro danou úlohu (zde podle okolností např. awk, bc, perl, python nebo C), než se snažit ji za každou cenu udolat nevhodně zvoleným nástrojem.
    6.8.2007 14:24 pavel
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Já řeším podobný problém, ale data mám ve sloupcích s oddělovačem ; Jak sčítat data ve sloupci?
    6.8.2007 14:47 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    awk(1)
    6.8.2007 15:26 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Takže bude tolik průměrů, kolik je sloupců?
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    import random, time
    
    radky = 5
    sloupce = 10
    
    fw = file('cisla.txt', 'w')
    for i in range(radky):
        cisla_str = ['%f' %(i*j) for j in range(sloupce)]
        radek = ';'.join(cisla_str)
        fw.write('%s\n' %radek)
    fw.close()
    
    fr = file('cisla.txt')
    sums = [float(x) for x in fr.readline().split(';')]
    for i, line in enumerate(fr):
        for j, val_str in enumerate(line.split(';')):
            sums[j] += float(val_str)
    i += 2
    avgs = [x/i for x in sums]
    print sums
    print avgs
    
    A na začátku se neví, kolik těch sloupců je, že?
    6.8.2007 17:50 pavel
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Sloupců se ví (je to druhý až patnáctý), ale počet řádků mám pokaždé jiný...
    6.8.2007 17:54 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Bash aritmeticky priemer
    Aha. Ale snad by mělo jít použít to, co jsem napsal, protože to funguje univerzálně pro libovolný (rozumný) počet sloupců i řádků. Samo si to příslušná čísla zjistí.

    Založit nové vláknoNahoru

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

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