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í
×

včera 12:33 | Komunita

Příspěvek na blogu Signalu (Wikipedie) informuje o založení neziskové nadace Signal Foundation, jež bude zastřešovat další vývoj tohoto svobodného bezpečného komunikátoru běžícího také na Linuxu (Signal Desktop). Brian Acton, spoluzakladatel WhatsAppu, věnoval nadaci 50 milionů dolarů [Hacker News].

Ladislav Hagara | Komentářů: 1
včera 05:55 | Zajímavý článek

Článek na Fedora Magazine krátce představuje programovací jazyk Rust a několik zajímavých v Rustu naprogramovaných terminálových aplikací. Jedná se o alternativu k příkazu grep ripgrep, moderní barevnou alternativu k příkazu ls exa, příkazem cloc inspirovaný tokei a zvířátko v terminálu ternimal.

Ladislav Hagara | Komentářů: 0
21.2. 23:55 | Zajímavý projekt

Byl spuštěn Humble Classics Return Bundle. Za vlastní cenu lze koupit hry Broken Sword 5 - The Serpent's Curse, Shadowrun Returns a Shadowrun: Dragonfall - Director's Cut. Při nadprůměrné platbě (aktuálně 8,48 $) také Shadowrun: Hong Kong - Extended Edition, Wasteland 2: Director's Cut - Standard Edition, Age of Wonders III a Xenonauts. Při platbě 15 $ a více lze získat navíc Torment: Tides of Numenera a Dreamfall Chapters: The Final Cut Edition.

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

Vývojáři linuxové distribuce Mageia na svém blogu upozorňují na narušení bezpečnosti Mageia Identity. Narušitel získal přístup k LDAP databázi a zveřejnil jména uživatelů, jejich emailové adresy a haše hesel. Hesla uživatelů byla resetována.

Ladislav Hagara | Komentářů: 3
20.2. 21:55 | Nová verze

Byla vydána verze 2.0.0 nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). Z novinek je nutno upozornit na nový zpětně nekompatibilní formát záznamu asciicast v2. S novým formátem si poradí nové verze asciinema-playeru a asciinema-serveru [Hacker News].

Ladislav Hagara | Komentářů: 0
20.2. 05:55 | Zajímavý projekt

Dle příspěvku na blogu zaměstnanců CZ.NIC byl spuštěn ostrý provoz služby Honeypot as a Service (HaaS). Zapojit se může kdokoli. Stačí se zaregistrovat a nainstalovat HaaS proxy, která začne příchozí komunikaci z portu 22 (běžně používaného pro SSH) přeposílat na server HaaS, kde honeypot Cowrie (GitHub) simuluje zařízení a zaznamenává provedené příkazy. Získat lze tak zajímavé informace o provedených útocích. K dispozici jsou globální statistiky.

Ladislav Hagara | Komentářů: 12
20.2. 04:44 | Komunita

Před týdnem společnost Feral Interactive zabývající se vydáváním počítačových her pro operační systémy macOS a Linux oznámila, že pro macOS a Linux vydají hru Rise of the Tomb Raider. Včera společnost oznámila (YouTube), že pro macOS a Linux vydají také hru Total War Saga: Thrones of Britannia. Verze pro Windows by měla vyjít 19. dubna. Verze pro macOS a Linux krátce na to.

Ladislav Hagara | Komentářů: 0
19.2. 21:33 | Nová verze

Byla vydána nová major verze 7.10 svobodného systému pro řízení vztahů se zákazníky (CRM) s názvem SuiteCRM (Wikipedie). Jedná se o fork systému SugarCRM (Wikipedie). Zdrojové kódy SuiteCRM jsou k dispozici na GitHubu pod licencí AGPL.

Ladislav Hagara | Komentářů: 0
19.2. 16:44 | Nová verze

Byla vydána nová verze 0.30 display serveru Mir (Wikipedie) a nová verze 2.31 nástrojů snapd pro práci s balíčky ve formátu snap (Wikipedie). Z novinek Miru vývojáři zdůrazňují vylepšenou podporu Waylandu nebo možnost sestavení a spouštění Miru ve Fedoře. Nová verze snapd umí Mir spouštět jako snap.

Ladislav Hagara | Komentářů: 0
19.2. 14:00 | Komunita

Na Indiegogo běží kampaň na podporu Sway Hackathonu, tj. pracovního setkání klíčových vývojářů s i3 kompatibilního dlaždicového (tiling) správce oken pro Wayland Sway. Cílová částka 1 500 dolarů byla vybrána již za 9 hodin. Nový cíl 2 000 dolarů byl dosažen záhy. Vývojáři přemýšlejí nad dalšími cíli.

Ladislav Hagara | Komentářů: 1
Který webový vyhledávač používáte nejčastěji?
 (2%)
 (28%)
 (61%)
 (3%)
 (3%)
 (0%)
 (1%)
 (1%)
Celkem 430 hlasů
 Komentářů: 35, poslední 21.2. 19:51
    Rozcestník

    Dotaz: Perl - Pole a třídění

    27.11.2010 14:38 Radek Podskubka | skóre: 2
    Perl - Pole a třídění
    Přečteno: 351×
    Ahoj, potřebuju v perlu seřadit nějaké hodnoty za tím účelem, abych mohl určit jejich medián. Problém je v tom, že k těmto hodnotám přísluší ještě nějaké odchylky. Data ukládám do pole z texťáku, kde jsou v jednom sloupci hodnoty a ve druhém jejich chyby. A medián určuju pro jednotlivé dny (tedy v prvním sloupci figuruje ještě nějaké datum, ale to není podstatné, navíc je to vidět z kódu). V přiložený kód funguje dobře, v podstatě jen určuje medián příslušných hodnot. Ovšem já bych potřeboval do výstupu ještě k mediánu vytisknout odchylku, která k němu přísluší (tedy NE medián odchylek). Problém tedy nastává v okamžiku, kdy se provádí příkaz
    @vars = sort @{$dailyvars{$_}};
    Pokud bych měl tedy uloženy odchylky v podobném poli jako hodnoty, a tímto způsobem zamíchám s jejich pořadím,tak už nepřísluší například pátý prvek pole vars k pátému prvku pole odchylek. Principielně je snad řešení snadné, prostě kromě hodnot je třeba naskládat do pole @{dailyvars{1}} ještě odkazy na konkrétní prvky pole odchylek a na ty se potom odvolávat. Já jsem ale v Perlu doccela nováček a netuším jak tohle zapsat nebo mě nenapadá nějaké snažší řešení. Děkuji za každou radu.

    Celý výpis kódu je zde
    while (<>)
    {
        if (/^#/) { next; }
        /([\d-]+) (\d+) ([\d\.]+) ([\d\.]+)/ or die "daily_median.pl: Error processing line: $_";
        if (! exists $dailyvars{$1}) { @{$dailyvars{$1}} = ( $3 ); $count{$1} = 1; }
        else { push @{$dailyvars{$1}}, $3; $count{$1} += 1; }
    }
    foreach (sort keys %dailyvars)
    {
        @vars = sort @{$dailyvars{$_}};
        $n = $#vars + 1;
        if ($n % 2 == 1) {
    	$median = $vars[($n - 1) / 2]; }
        else {
    	$median = ($vars[$n / 2] + $vars[$n / 2 - 1]) / 2; }
        print $_ . " $median " . $count{$_} . "\n";
    }
    

    Řešení dotazu:


    Odpovědi

    Řešení 2× (Radek Podskubka (tazatel), pht)
    27.11.2010 15:42 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Perl - Pole a třídění
    Myslím, že Tvé řešení je špatně: sort v perlu defaultně třídí lexikograficky, nikoliv číselně.

    K problému: pokud by při načítání byla odchylka např. v $4:
    if (! exists $dailyvars{$1}) { @{$dailyvars{$1}} = ({var => $3, odchylka => $4}); $count{$1} = 1; }
    else { push @{$dailyvars{$1}}, {var => $3, odchylka => $4}; $count{$1} += 1; }
    
    ...
    
    @vars = sort { $a->{var} <=> $b->{var} } (@{$dailyvars{$_}});
    
    ...
    
    $median = $vars[($n - 1) / 2]->{var};
    
    
    A další změny analogicky.

    Vtip je v tom, že do $dailyvars{$den} neukládáš jen hodnoty, ale ukazatele na hash, který má dva klíče: var a odchylka. Tím si podržíš ty přidružené hodnoty pospolu.

    Doufám, že je to trochu srozumitelné, spěchám, tak to vysvětluju tak nějak narychlo a ne moc exaktně. Podívej se do manuálu na sort, tam uvidíš, že to, co dávám do prvních složených závorek, je funkce, která určuje, podle čeho se bude třídit.
    27.11.2010 17:16 Radek Podskubka | skóre: 2
    Rozbalit Rozbalit vše Re: Perl - Pole a třídění
    Dík moc. To je určitě velmi efektivní řešení. Pomohlo mi to.
    wamba avatar 27.11.2010 18:16 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Perl - Pole a třídění

    popř. něco takového

    use 5.010;
    use warnings;
    use strict;

    my %dailyvars;

    while (<>) {
    next if /^#/;    #ignoruj komentáře
    /(?<date>[\d-]+) \d+ (?<var>[\d\.]+) (?<odchylka>[\d\.]+)/ #rozeber řádek
    or die "daily_median.pl: Error processing line: $_";

    push @{ $dailyvars{ $+{date} }{vars} },
    $+{var};    #přidej hodnotu mezi hodnoty
    push @{ $dailyvars{ $+{date} }{'odchylky'} },
    $+{odchylka};    #přidej odchylku mezi odchylky
    $dailyvars{ $+{date} }{count}++;    #přičti k počtu 1
    }

    foreach ( sort keys %dailyvars ) {      #pro všechny  dny (seřazené)
    my $median;
    my @vars = sort { $a <=> $b } @{ $dailyvars{$_}{vars} };  #srovnej hodnoty
    my $n = @vars;                                            #počet  hodnot;

    if ( $n % 2 == 1 ) {
    $median = $vars[ ( $n - 1 ) / 2 ]
    ;    #vypočti median pro  sudý počet hondot
    }
    else {
    $median = ( $vars[ $n / 2 ] + $vars[ $n / 2 - 1 ] )
    / 2;    #vypočti median pro lichý počet hodnot
    }

    #vypiš výsledek
    say $_
    . "\tmedian: $median "
    . "\tpocet: $dailyvars{$_}{count} "
    . "\todchylky:  @{ $dailyvars{$_}{odchylky} }";
    }

    This would have been so hard to fix when you don't know that there is in fact an easy fix.

    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.