Byl vydán Debian 13.6, tj. šestá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.15, tj. poslední patnáctá opravná verze Debianu 12 s kódovým názvem Bookworm, k dispozici je LTS. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
V jádře Linux byla nalezena a v upstreamu již byla opravena kritická zranitelnost GhostLock aneb CVE-2026-43499. Lokálnímu uživateli umožňuje získat práva roota a také obejít kontejnerovou izolaci. Zranitelnost existovala v Linuxu 15 let, tj. od roku 2011, od Linuxu verze 2.6.39.
Evropská komise předběžně shledala, že návykový design aplikací Instagram a Facebook od americké společnosti Meta porušuje unijní nařízení o digitálních službách (DSA). Návykový design zahrnuje například takzvané nekonečné posouvání, automatické přehrávání videí, tzv. push notifikace, kdy aplikace uživatele vybízí k návratu do jejího prostředí, či vysoce personalizovaný algoritmus, který rychle pozná, co uživatele baví a snaží
… více »Byla vydána verze 1.97.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.
Švýcarská společnost Punkt. má nově v nabídce telefon Punkt. MC03. Telefon byl navržen ve Švýcarsku s důrazem na soukromí a digitální suverenitu a vyroben v Německu. V telefonu běží operační systém AphyOS (Apostrophy OS) založený na AOSP (Android Open Source Project) 15. Cena telefonu je 745 eur.
TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 7.0. Kompilátor byl kvůli výkonu přepsán z TypeScriptu do Go.
Europarlament podpořil pozměněnou verzi výjimky známé jako „chat control 1.0“ umožňující firmám skenovat soukromou komunikaci na internetu kvůli ochraně dětí před zneužitím. Pozměňovací návrhy přijaté europoslanci však počítají s tím, že z výjimky bude vyřazena šifrovaná komunikace. Výjimka přestala platit začátkem dubna poté, co se Evropský parlament a Rada EU nedokázaly shodnout na jejím prodloužení. Rada následně přijala
… více »Nejnovější X.Org X server 21.1.24 a Xwayland 24.1.13 řeší 2 bezpečnostní chyby.
Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za červen 2026. Vypíchnuta je vylepšená podpora Waylandu. Už není považována za experimentální. V příští verzi Linux Mintu, plánována je na Vánoce, bude běh Cinnamonu plně podporován na X11 i Waylandu. V květnu na vývoj Linux Mintu přispělo 611 dárců celkovou částkou 19 612 dolarů. Dalších 2 326 patronů přispělo na Patreonu celkovou částkou 5 334 dolarů.
V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Januscape aneb CVE-2026-53359. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala téměř 16 let (od srpna 2010 do června 2026).
|- id1 -|- id2 -|- min -|- max -|- pos -|-- set ---| | 0 | 0 | 10 | 20 | 0 | 0 | | 0 | 0 | 5 | 10 | 1 | 0 | Group1 |--------------------------------------------------| | 0 | 0 | 15 | 25 | 0 | 1 | Group 2 |--------------------------------------------------| | 0 | 0 | 5 | 15 | 0 | 2 | Group 3 |-------|-------|-------|-------|-------|----------| | 0 | 1 | 5 | 10 | 0 | 0 | | 0 | 1 | 6 | 10 | 1 | 0 | Group4 |-------|-------|-------|-------|-------|----------| | 1 | 0 | 5 | 10 | 0 | 0 | | 1 | 0 | 5 | 15 | 1 | 0 | Group5 | 1 | 0 | 10 | 20 | 2 | 0 |Každá unikátní kombinace
set, id1, id2 by měla představovat jednu skupinu.
Ze skupiny potřebuji vybrat řádek, který má největší rozdíl min - max, zároveň nejmenší hodnotu pos.
Nějak jsem napsal poddotaz. Píšu to teď z hlavy a asi to nebude funkční, něco takového:
SELECT * FROM `tbl` `A` INNER JOIN ( SELECT `id1`, `id2`, `set`, MAX(`max` - `min`) as `delta` FROM `tbl` GROUP BY `id1`, `id2`, `set` ) `B` ON `A.id1` = `B.id1` AND `A.id2` = `B.id2` AND `A.set` = `B.set` AND (`A.max` - `A.min`) = `B.delta`Tento dotaz mi správně vrátí záznamy z každé skupiny s nejvyšším rozdílem max, min, tj:
|- id1 -|- id2 -|- min -|- max -|- pos -|-- set ---| | 0 | 0 | 10 | 20 | 0 | 0 | | 0 | 0 | 5 | 10 | 1 | 0 | Group1 |--------------------------------------------------| | 0 | 0 | 15 | 25 | 0 | 1 | Group 2 |--------------------------------------------------| | 0 | 0 | 5 | 15 | 0 | 2 | Group 3 |-------|-------|-------|-------|-------|----------| | 0 | 1 | 5 | 10 | 0 | 0 | Group4 |-------|-------|-------|-------|-------|----------| | 1 | 0 | 5 | 15 | 1 | 0 | Group5 | 1 | 0 | 10 | 20 | 2 | 0 |Z tohoto výsledku ještě potřebuji dostat řádky s nejnižší hodnotou pos v dané skupině. Tj. chci záznamy:
|- id1 -|- id2 -|- min -|- max -|- pos -|-- set ---| | 0 | 0 | 10 | 20 | 0 | 0 | Group1 |--------------------------------------------------| | 0 | 0 | 15 | 25 | 0 | 1 | Group 2 |--------------------------------------------------| | 0 | 0 | 5 | 15 | 0 | 2 | Group 3 |-------|-------|-------|-------|-------|----------| | 0 | 1 | 5 | 10 | 0 | 0 | Group4 |-------|-------|-------|-------|-------|----------| | 1 | 0 | 5 | 15 | 1 | 0 | Group5Napadlo mě zduplikovat poddotaz, na jeden udělat poddotaz s agregační funkci MIN(pos) a provést další inner join na původní poddotaz na id1, id2, pos, ale nějak se mi to nezdá, nejde to udělat lépe?
|- id1 -|- id2 -|- min -|- max -|- pos -|-- set ---| | 0 | 0 | 10 | 20 | 0 | 0 | Group1 |--------------------------------------------------| | 0 | 0 | 15 | 25 | 0 | 1 | Group 2 |--------------------------------------------------| | 0 | 0 | 5 | 15 | 0 | 2 | Group 3 |-------|-------|-------|-------|-------|----------| | 0 | 1 | 5 | 10 | 0 | 0 | Group4 |-------|-------|-------|-------|-------|----------| | 1 | 0 | 5 | 15 | 1 | 0 | Group5 | 1 | 0 | 10 | 20 | 2 | 0 |
with grupovane as (
SELECT A.id1. A.id2, A.set, A.min, A.max, A.set
FROM `tbl`
`A`
INNER JOIN
( SELECT `id1`, `id2`, `set`, MAX(`max` - `min`) as `delta`
FROM `tbl`
GROUP BY `id1`, `id2`, `set`
) `B`
ON `A.id1` = `B.id1` AND `A.id2` = `B.id2` AND `A.set` = `B.set` AND (`A.max` - `A.min`) = `B.delta`
(
select * from grupovane C
inner join
(select id1, id2, set, min(pos) as minpos
from grupovane group bz id1, id2, set) d on C.id1 = D.id1 and `C.id2` = `D.id2` AND `C.set` = `D.set`
and C.pos = D.minpos
takhle ale připojíš původní tabulku 4x. Navíc pokud budou nějaké záznamy, kde bude stejný rozdíl a stejný pos, tak ti to pro skupinu vrátí dva záznamy.
Možná by to šlo řešit celkem elegantně aplikačně.
select * from tbl order by id1, id2, set, max - min desc, posa pak pro kombinaci id1, id2, set vzít vždy jen první řádek (pamatovat si hodnoty z minulého fetche a pokud se id1, id2 nebo set změní, tak je to řádek, co mě zajímá.
select * from tbl a
where not exists (
select 0 from tbl b
where a.id1 = b.id1 and a.id2 = b.id2 and a.set = b.set
and a.max - a.min < b.max - b.min and a.set > b.set
and a.max <> b.max and a.min <> b.min
)
ale počítá to s tím, že neexistují úplně duplicitní řádky - ty to nevyselectí.
pos, tedy aby při stejném MAX(max-min) se vybralo menší pos, tak zkus rozdíl max-min a pos sloučit do jedné hodnoty a tím říct přesné pořadí – něco jako MAX((max - min) + (1 - pos/(SELECT MAX(pos) FROM tbl))) (předpokládám jen celočíselné sloupce). Pro lepší výkon by se mohlo hodit tuhle hodnotu předpočítávat do pomocného sloupečku a dát nad to index.
Tiskni
Sdílej: