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 03:00 | Komunita

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

Ladislav Hagara | Komentářů: 0
dnes 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 1
dnes 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
včera 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 1
včera 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
včera 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

Ladislav Hagara | Komentářů: 0
včera 18:11 | Nová verze

Byla vydána verze 2.11.0 QEMU (Wikipedie). Přispělo 165 vývojářů. Provedeno bylo více než 2 000 commitů. Přehled úprav a nových vlastností v seznamu změn.

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

Canonical oznámil dostupnost kryptografických balíčků s certifikací FIPS 140-2 úrovně 1 pro Ubuntu 16.04 LTS pro předplatitele podpory Ubuntu Advantage Advanced. Certifikace FIPS (Federal Information Processing Standards) jsou vyžadovány (nejenom) vládními institucemi USA.

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

Společnost Avast uvolnila zdrojové kódy svého dekompilátoru RetDec (Retargetable Decompiler) založeného na LLVM. Vyzkoušet lze RetDec jako webovou službu nebo plugin pro interaktivní disassembler IDA. Zdrojové kódy RetDec jsou k dispozici na GitHubu pod open source licencí MIT.

Ladislav Hagara | Komentářů: 3
13.12. 11:00 | Zajímavý software
Na Good Old Games je v rámci aktuálních zimních slev zdarma k dispozici remasterovaná verze klasické point&click adventury Grim Fandango, a to bez DRM a pro mainstreamové OS včetně GNU/Linuxu. Akce trvá do 14. prosince, 15:00 SEČ.
Fluttershy, yay! | Komentářů: 6
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 992 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    Dotaz: Bash aritmeticky priemer

    6.8.2007 10:50 Mountains
    Bash aritmeticky priemer
    Přečteno: 823×
    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: 44 | 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: 44 | 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.