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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

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

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 1
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

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

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 4
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 27
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 796 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Bash aritmeticky priemer

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