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 11:33 | Zajímavý článek

Národní centrum kybernetické bezpečnosti (NCKB) vypracovalo (pdf) 26 podrobných bezpečnostních doporučení pro síťové správce. Tato doporučení jsou nastavena tak, aby je bylo možné aplikovat v každé instituci. Jsou rozdělena na tři základní části: bezpečnost infrastruktury, bezpečnost stanic a serverů a bezpečnost uživatelů.

Ladislav Hagara | Komentářů: 6
dnes 05:55 | Komunita

Prezident Nadace pro svobodný software (FSF) Richard M. Stallman vyhlásil na slavnostním ceremoniálu v rámci konference LibrePlanet 2017 vítěze Free Software Awards za rok 2016. Ocenění za společenský přínos získal SecureDrop (Wikipedie). Za rozvoj svobodného softwaru byl oceněn Alexandre Oliva (Wikipedie).

Ladislav Hagara | Komentářů: 0
dnes 04:44 | Nová verze

Byla vydána verze 0.7.0 debugovacího nástroje cgdb. Mezi novinky patří například zvýrazňování syntaxe jazyka Rust. Podrobnosti v poznámkách o vydání.

Neel | Komentářů: 0
25.3. 22:00 | Komunita

Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil (podcast) detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 64 tisíc vývojářů. Jejich nejmilovanější platformou je linuxový desktop. Ten je také druhou nejpoužívanější platformou vývojářů.

Ladislav Hagara | Komentářů: 6
24.3. 11:55 | Komunita

Vývojový tým OpenSSL ve spolupráci s iniciativou Core Infrastructure konsorcia Linux Foundation spustil proces přelicencování této kryptografické knihovny ze současné licence na licenci Apache Licence v 2.0 (ASLv2). Nová licence usnadní začleňování OpenSSL do dalších svobodných a open source projektů. Všichni dosavadní vývojáři OpenSSL (Authors) obdrží v následujících dnech email s prosbou o souhlas se změnou licence.

Ladislav Hagara | Komentářů: 26
24.3. 01:11 | Komunita

Před třemi týdny Mozilla.cz představila projekt Photon, jehož cílem je návrh a implementace nového vzhledu Firefoxu. Včera zveřejnila první náhled vzhledu Photon. Práce na projektu Photon jsou rozděleny do pěti týmů, které celkem čítají 19 lidí. Zaměřují se na zlepšení prvního spuštění Firefoxu a zaujetí nových uživatelů, celkovou úpravu vzhledu, zlepšení animací, zrychlení odezvy uživatelského rozhraní a také upravení nabídek. Vývoj lze sledovat v Bugzille.

Ladislav Hagara | Komentářů: 45
23.3. 20:00 | Komunita

OneDrive pro firmy je již ve webových prohlížečích na Linuxu stejně rychlý jako na Windows. Microsoft opravil chybu z listopadu loňského roku. OneDrive pro firmy běžel na Linuxu mnohem pomaleji než na Windows. V popisu chyby bylo uvedeno, že stačilo v prohlížeči na Linuxu nastavit v user-agentu Windows a vše se zrychlilo. Odpovědí Microsoftu bylo (Internet Archive: Wayback Machine), že Linux není podporován. Po bouřlivých diskusích na redditu i Hacker News byla chyba nalezena a opravena.

Ladislav Hagara | Komentářů: 9
23.3. 19:00 | Zajímavý projekt

Byla vyhlášena soutěž Hackaday Prize 2017. Soutěž je určena vývojářům open source hardwaru. Pro výherce je připraveno celkově 250 tisíc dolarů. Každý ze 120 finalistů získá tisíc dolarů. Nejlepší pak navíc 50, 30, 20, 15, 10 a 5 tisíc dolarů. Jedná se již o čtvrtý ročník soutěže. V roce 2014 zvítězil projekt globální sítě open source pozemních satelitních stanic SatNOGS. V roce 2015 zvítězil open source systém pro řízení elektrických invalidních vozíků pohybem očí Eyedriveomatic. V roce 2016 zvítězil modulární robot Dtto.

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

Byla vydána Samba ve verzích 4.6.1, 4.5.7 a 4.4.12. Řešen je bezpečnostní problém CVE-2017-2619. Pomocí symbolických odkazů a souběhu (symlink race) lze "teoreticky" získat přístup k souborům, které nejsou sdíleny. Linuxové distribuce jsou postupně aktualizovány (Debian).

Ladislav Hagara | Komentářů: 0
23.3. 07:43 | Nová verze

Na Steamu se objevil port hry Arma: Cold War Assault (Operation Flashpoint) pro Mac a Linux. … více »

creon | Komentářů: 30
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 943 hlasů
 Komentářů: 72, poslední 1.3. 11:16
    Rozcestník

    Dotaz: Průběžné ukládání dat z MySQL

    24.8.2013 00:11 Pavel | skóre: 17
    Průběžné ukládání dat z MySQL
    Přečteno: 1468×

    Zdravím, dělám web k jedné meteostanici a řeším jak zobrazovat u klientů jednotlivá naměřená data. Měřím každou minutu a zobrazuju data až 3 dni zpět, to znamená, že z databáze potřebuji vytáhnout 4320 řádků.

    Současný dotaz na databázi je dělán takto:
    $today_start  = date("Y-m-d 0:0:0", strtotime("-2 days"));
    $today_stop = date("Y-m-d 0:0:0", strtotime("+1 days"));
         
    $vysledek =  mysql_query("SELECT temp,cas,dew_point FROM mereni WHERE (cas > '$today_start') AND (cas < '$today_stop') ORDER BY cas");
    if ($vysledek) {
      while($zaznam = MySQL_Fetch_Array($vysledek)) {
        $cas[] = $zaznam[cas];
        $tep[] = $zaznam[temp];
        $dp[] = $zaznam[dew_point];	
    	
      }
    } 

    Takto načtu databázi několikrát, pro každý graf zvlášť.

    1) - Myslím, že bude lepší vyčíst všechno jedním dotazem a pak dále zpracovávat?

    2) - Není třeba zobrazit všechny záznamy, ale třeba když minuta = 0,5,10,15,... Jak na to?

    Klient má udělán automatický refresh stránky, po minutě aby viděl aktuální údaje. Jeden graf generuji cca 2s bez jiného většího zatížení, což není nejlepší. Raději bych generoval obrázky nějakým scriptem a poté si je klienti jen zobrazovali.

    3) - Je vhodné použití cronu na periodické spouštění po minutě?

    Taknějak si nejvíce rozumím s PHP, ale dělat v tom script aby byl spuštěný pořád a jen se po minutě probral, není nejlepší.

    4) - Existovalo by jiné řešení celé aplikace?

    Odpovědi

    24.8.2013 00:26 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Zkusil bych tu výpočetní zátěž přenést na klienta, např. přes

    Flot

    Klient si pak přes AJAX může natahovat data klidně každou minutu nebo i sekundu a dynamicky upravovat svůj graf. Zároveň se sníží zátěž na databázi - přece klient nebude znovu stahovat data, která už má.
    24.8.2013 09:56 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Ano, to by bylo dobré řešení, ale nejde to, někteří klientí nemají JS.
    24.8.2013 10:07 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Pro ně se udělá konvenční serverové (pomalejší) řešení. Konečně nějaké smysluplné použití tagu <noscript>.
    24.8.2013 12:01 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    A pak budu data tahat přímo z databáze na klienta? Budu muset stejně tahat přes web server ne?
    24.8.2013 12:21 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Stačí nějaké jednoduché REST API.
    rADOn avatar 26.8.2013 13:24 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    1. Záleží co myslíš tím zpracováním. Jestli je to práce pro databázi tak ne. Jestli jde jen o to rozdělit data do UI prvků (řekneme grafů), tak to se pořád dá delegovat na db – pro každý graf přidáš boolean jestli v něm daný řádek má nebo nemá být.
    2. MINUTE(cas) % 5 == 0.
    3. Pokud nehrozí že se to do minuty nestihne udělat tak ano. Ale psát cronjoby v php je stejný zvěrstvo jako psát v něm daemony. Nevím co v tom cronu chceš mít, ale vsadím koláč proti psímu sucharu že v pythonu/ruby/perlu to bude kratší a jednodušší.
    4. Jestli to má být webovka tak asi moc ne. Pokud se data v čase nemění, tak bys měl vygenerovaný obrázky s grafy ukládat bokem do cache. Na ajaxoviny co ti tu radí kolegové se vyprdni. To je bezva věc když máš náročnou aplikaci a ubíjí tě provozní overhead, jinak je to zbytečná práce s přetahováním (a často duplikováním) logiky do javascriptu.
    Kromě toho tam máš menší chybu v souběhu – při počítání začátečního a koncového data dvakrát voláš time(). Zkus uhádnout co to udělá ve 23:59:59.9999 :-)

    Pokud držíš čas v databázi, je nejlepší používat hodiny taky z databáze. Za prvé, když máš databázi na jiným fyzickým stroji než webovku, nemusíš řešit synchronizaci času. Za druhé, databáže se ti postará o atomicitu. Na MySQL všechny volání NOW() v transakci dostanou stejný čas (dokonce i když se spustí později na replice). Takže ten interval napiš nějak takhle:
    WHERE cas BETWEEN NOW() AND DATEDIFF(NOW(), interval -2 days)
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    27.8.2013 02:15 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Díky za odpověď, něco takového jsem čekal, to že bude problém v tom čase jsem tušil, ale zatím jsem to nijak neřešil, nicméně tvuj návrh je dobrý nápad. Jen jsem nepochopil ten první bod. Mám tabulku, kde ve sloupcích mám cas, teplotu, vlhkost, vítr, déšť,... Když zavolám funkci vykresli teplotu, načtu všechny řádky s teplotou a časem, poté volám funkci kresli vlhkost a projedu opět všechny řádky, vyberu čas a vlhkost. Tedy minimálně ten sloupec s časem načítám několikrát. Takže myslím, že by bylo rychlejší vyčíst celou db, uložit do pole a pak kreslit jednotlivé grafy, třeba v jedné funkci.
    27.8.2013 02:24 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Vždy kreslíš jen jeden graf, takže tato "optimalizace" postrádá na významu.

    Pokud však do jednoho grafu zakresluješ všechny veličiny, tak logicky si vytáhneš z DB všechny požadované sloupce jedním dotazem.
    27.8.2013 11:50 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Jsem to měl na mysli tak, že bych kreslil několik grafů najednou.
    27.8.2013 11:54 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Do jednoho obrázku? Pak samozřejmě má význam stáhnout všechny potřebné sloupce. To jsem však už psal.
    27.8.2013 15:53 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    ne, myslel jsem v jedné funkci vyčíst všechny data, vykreslit obrázek s prvním grafem, hned s druhým, atd...
    27.8.2013 16:11 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    To ale nejde vykreslit všechny obrázky v jednom vlákně PHP. Vždycky přece vykresluješ jen jeden. Jak bys je pak předal klientovi?
    27.8.2013 16:29 potato
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Samozřejmě že to jde, když se bude používat cache nakreslených grafů, do níž se nejprve dívám, než cokoli kreslím. A využije se predikce. Tedy když kreslím obrázek Foo s nějakými parametry, předpokládám, že se bude kreslit i Bar a Baz, které mohu současně udělat efektivně, takže je taky nakreslím a vložím do cache, i když je klientovi neodesílám. Někdy je tento přístup i efektivní, ale jak to bude tady, nebudu odhadovat...
    27.8.2013 16:40 Kit
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    To už generování těch obrázků může rovnou spouštět cronem.
    27.8.2013 20:45 potato
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    V tomto případě nejspíš ano, pokud se předpokládá, že je stejně nějaký klient bude furt chtít tak jako tak.

    Popsané řešení funguje, když někdo chce vidět reporty jen občas, ale je pravděpodobné, že když už se podívá, bude je chtít víceméně všechny.
    28.8.2013 01:10 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Udělal jsem to tak, nastavil jsem spouštění scriptu každou minutu. Refresh stránky na 20s. Při načítání se podívam do cache, jestli tam není obrázek, když ne, vytvořím. Pokaždé když se refreshne, tak se na server uloží čas posledního náhledu. Abych si byl jistý, že nebudu script spouštět zbytečně, udělal jsem podmínku, aby se dokončil pouze když doba od posledního přístupu je menší jak minuta.
    rADOn avatar 28.8.2013 17:21 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    refresh stranky? w.t.f.?
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    rADOn avatar 28.8.2013 17:25 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    uz mi to asi doslo, chces ty grafy automaticky aktualizovat. dej si majzla jaky posilas hlavicky, kdyz si to dobre osefujes tak prohlizec nebude tahat stejny obrazky pri kazdym refreshi. apac si imo umi nastavit potrebny hlavicky sam podle mtime soboru, ale kdyz neco blejes z php tak je to na tobe.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    29.8.2013 00:40 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    A máš nějaký nástřel toho co tam dát? Zkoušel jsem
    Header("Cache-Control: must-revalidate");
    $offset = 60;
    $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
    Header($ExpStr);
    ale hlásí mi to chybu. Mám to hned na začátku, v tagu HEAD.
    rADOn avatar 29.8.2013 11:29 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    1) Hlavičky se posílají PŘED obsahem dokumentu. To bude asi ta chyba. BTW budiž varován, že pokud máš byť jen jedinou mezeru na začátku skriptu před prvním <?php, tak už je to obsah a jsi v pr…

    2) Hlavičky nepotřebuješ (jenom) na dokumentu, ale i na těch obrázcích. A nebude to napevno zadaný offset, ale spočítáš si čas podle typu grafu, takže třeba hodinový graf nebude platit hodinu ale jen do NN:00:00.

    3) Stejně tak, pokud budeš předvídavej tak nebudeš posílat refresh za 20s když je pátá sekunda z minuty a ty víš že dalších 55 sekund se nic nehne. Pokud budeš ještě předvídavější tak do toho zapracuješ menší random aby na tebe neuhodili všichni klienti najednou.

    4) Nebo mě napadá úplně jiný způšob: grafy budeš blejt do souborů v adresářích který budou přímo viditelný a ve skriptu se odkážeš přímo na obrázek nějakým uhádnutelným jménem, dejme tomu /graph/hour/yymmddHH. Ve stránce se ti pak budou měnit zdroje obrázků, obrázky samotný můžou mít (dlouhou) expiraci od apače. Výroba obrázků bude kapku náročnější (pokud je bude dělat cron job, musíš ošéfovat aby se skripty neodkazovaly na obrázky který ještě nejsou hotový; pokud se budou dělat přímo ze skriptů, budeš muset pořešit atomicitu a zamykání aby se navzájem nesrazily) ale máš v ceně cache diskutovanou výše – každý obrázek se vyrábí jen jednou a pak může obsloužit tolik klientů kolik jich apač unese. To je tak jako tak první optimalizace kterou budeš muset udělat pokud chceš obsloužit netriviální množství klientů.

    BTW v tom sqlku nahoře mám koukám chybu, čas se nemění DATEDIFF() ale DATEADD().
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    28.8.2013 00:22 Pavel | skóre: 17
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    Tak jsem přemýšlel nad tím časem, ale to není tak jednoduché, nechci aktuální čas. Potřebuji vypsat data dnešní, včerejší, převčerejší, nezávisle na tom jestli je 1h nebo 23h. Takže místo
    DATEDIFF(NOW(), interval -2 days)
    potřebuji něco aby mi to vzalo vždy až do půlnoci, jako mam
    date("Y-m-d 0:0:0", strtotime("-2 days"))
    Jesus Jimenez avatar 28.8.2013 11:59 Jesus Jimenez | skóre: 28
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    CURDATE()
    Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy
    Jesus Jimenez avatar 26.8.2013 14:45 Jesus Jimenez | skóre: 28
    Rozbalit Rozbalit vše Re: Průběžné ukládání dat z MySQL
    A nebylo by na tohle lepsi neco jako RRDtool?
    Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy

    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.