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í
×
    27.1. 13:11 | Bezpečnostní upozornění

    Závažná zranitelnost ohrožuje více než 100 modelů tiskáren Lexmark (pdf). Společnost Lexmark vydala bezpečnostní záplatu firmwaru. Opravovaná zranitelnost může vést ke vzdálenému spuštění libovolného kódu (CVSSv3 9.0).

    Ladislav Hagara | Komentářů: 8
    27.1. 08:00 | Nová verze

    Byla vydána nová major verze 2.0.0 toolkitu SQLAlchemy (Wikipedie) přinášejícího do programovacího jazyka Python podporu SQL (Structured Query Language) a ORM (Object–relational mapping). Detaily v přehledu novinek a v průvodci migrací.

    Ladislav Hagara | Komentářů: 0
    27.1. 00:11 | Nová verze

    Byla vydána verze 1.67.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    26.1. 20:11 | Nová verze

    Byla vydána nová verze 23.1 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense od této verze postavený na FreeBSD místo HardenedBSD. Kódový název OPNsense 23.1 je Quintessential Quail. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    26.1. 13:22 | IT novinky

    Sdružení CZ.NIC, správce české národní domény, zveřejnilo Domain Report 2022, ve kterém upozorňuje na zajímavá data spojená s doménou .CZ. Na konci roku 2022 bylo evidováno celkem 1 463 116 domén. Průměrně bylo měsíčně zaregistrováno 17 193 domén, přičemž nejvíce registrací proběhlo v listopadu (23 581) a nejméně pak v červenci (13 199). Na rozdíl od předchozích let byl poprvé v historii zaznamenán propad v počtu domén zabezpečených

    … více »
    Ladislav Hagara | Komentářů: 5
    26.1. 09:00 | Zajímavý software

    Infisical je open source nástroj s end-to-end šifrováním pro snadnou správu a synchronizaci proměnných prostředí (.env souborů) napříč vývojovým týmem, zařízeními a infrastrukturou. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 1
    26.1. 08:00 | Nová verze

    Interaktivní rozšiřovatelný editor pro práci se strukturovanými binárním daty GNU poke byl vydán v nové major verzi 3.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    25.1. 23:55 | Zajímavý článek

    Kosťa Šiškov v posledních několika týdnech na svém blogu vzpomínal na různé přispěvatele do projektu FFmpeg: konec forku Libav, úvod, …, shrnutí.

    Fluttershy, yay! | Komentářů: 0
    25.1. 09:00 | Nová verze

    Byla vydána nová verze 3.7 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 2.19 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    24.1. 21:55 | Nová verze

    Wine 8.0 bylo vydáno. Přehled novinek v poznámkách k vydání. Tato verze dokončuje přechod na Portable Executable moduly a WoW64 (volání 64bitových knihoven ze 32bitových aplikací).

    Fluttershy, yay! | Komentářů: 5
    Výdaje na elektřinu mi meziročně
     (65%)
     (22%)
     (9%)
     (1%)
     (2%)
    Celkem 332 hlasů
     Komentářů: 5, poslední 18.1. 12:48
    Rozcestník

    std() funkce pro SQLite

    19.10.2007 10:51 | Přečteno: 934× | programování | poslední úprava: 19.10.2007 11:09

    Stojím před problémem portace aplikace z MySQL na SQLite. Prográmek je napsán v Pythonu, a protože využívá DB-API 2.0 interface, portace kódu byla většinou procházka růžovým sadem...

    Co ale čert nechtěl, prográmek používá SQL funkci std() pro výpočet směrodatné odchylky. Ta je sice definována v MySQL, ale SQLite takovou funkcí bohužel nedisponuje.

    Musel jsem tedy zameditovat, jak tento problém elegantně vyřešit. Nejdříve jsem zkoušel další select a výpočet směrodatné odchylky iterováním vracenými daty. Toto řešení se ukázalo jako velice neefektivní (a v podstatě nepoužitelné) právě kvůli nízké rychlosti, na které má největší podíl právě nutnost dotazu navíc.

    Meditace tedy pokračovaly. Elementálové byli tentokráte nakloněni a dovedli mě až k testovacímu skriptu userfunctions.py v adresáři s pysqlite. Zde mi padla do oka funkce create_aggregate objektu Connection a já zvolal Heuréka!

    Nyní už stačilo jen rozšířit agregační třídu o algoritmus pro výpočet rozptylu a pak odmocnit pro získání směrodatné odchylky. Kód pro přidání funkce std() do SQLite je tedy následující:

    class AggrSTD:
        """Trida pro vypocet smerodatne odchylky"""
        def __init__(self):
            """konstruktor - inicializace promennych"""
            self.cnt  = 0
            self.sum  = 0.0
            self.sum2 = 0.0
    
        def step(self, val):
            """krok vypoctu - je volana pro vsechna data vyhovujici podminkam dotazu"""
            self.cnt  += 1
            self.sum  += val
            self.sum2 += val*val
    
        def finalize(self):
            """vraci hodnotu ziskanou agregaci - smerodatnou odchylku"""
            if self.cnt < 2: return 0.0
            std = sqrt((self.sum2 - self.sum * self.sum/self.cnt)/(self.cnt-1.0))
            return std
    
    # nyni funkci zaregistrujeme
    # con je instance objektu vraceneho metodou sqlite.connect()
    # parametry jsou:
    #    - nazev funkce (tak jak bude volana v SQL dotazu)
    #    - pocet argumentu
    #    - trida, ktera definuje, jak bude vypocet probihat
    con.create_aggregate("std", 1, AggrSTD)
    

    Tímto jsme nadefinovali třídu, která rozšíří množinu standardních funkcí SQLite o výpočet směrodatné odchylky - funkce std(). Sám jsem byl překvapen, jak rychle nyní výpočet probíhá.

    Teď už se můžeme databáze v klidu dotazovat např.:

    SELECT std(nazev_soupce) FROM nazev_tabulky WHERE podminka;
    a SQLite nám bude rozumět.

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

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