Uživatelé mobilních telefonů s Linuxem si nyní mohou nainstalovat aplikaci Mobilní Datovka. Díky tomu je přístup k datovým schránkám dostupný i na zařízeních s mobilními linuxovými distribucemi, jako jsou například Mobian, NixOS Mobile, pmOS atd. Aplikace je dostupná na Flathubu.
Software Freedom Conservancy v novém dokumentu shrnuje doporučení, jak přistupovat ke generativní AI založené na LLM při přispívání do svobodného a open-source softwaru. Mimo jiné vyzývá k obezřetnosti, transparentnosti a revizi generovaného kódu člověkem.
Byla vydána nová verze 5.6.0 programu na úpravu digitálních fotografií darktable (Wikipedie).
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma. V Týdnu v GNOME je zmíněn flatpak balíček pro GIMP 0.54.1 z roku 1996. Jedná se o poslední verzi GIMPu postavenou nad toolkitem Motif.
Home Assistant Operating System, tj. linuxová distribuce optimalizována pro hostování Home Assistanta a jeho aplikací, byl vydán v nové major verzi 18.0.
Po šestiletém úsilí byla z jádra Linux odstraněna funkce strncpy(). Všechna předchozí volání této funkce byla převedena na bezpečnější alternativy.
Byla vydána nová verze 261 správce systému a služeb systemd (Wikipedie, GitHub). Z novinek lze vypíchnout nový subsystém IMDS (Cloud "Instance Metadata Service"), nový příkaz storagectl nebo novou komponentu systemd-sysinstall.
Vývojové prostředí Qt Creator bylo vydáno ve verzi 20 (seznam změn). Novinky zahrnují hlavně rozšíření pro integraci LLM agentů nebo minimalistický editační režim uživatelského rozhraní („zen mode“).
Už jste se prolétli na webu Google Earth? Přibyl tam Simulátor letu (Nástroje / Simulátor letu). Funguje i bez účtu Google [𝕏].
Byla vydána nová verze 4.7 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
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.
Tiskni
Sdílej: