Byla vydána nová major verze 28.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.
Český telekomunikační úřad zveřejnil Výroční zprávu za rok 2024 (pdf), kde shrnuje své aktivity v loňském roce a přináší i základní popis situace na trhu. Celkový objem přenesených mobilních dat za rok 2024 dosáhl dle odhadu hodnoty přibližně 1,73 tis. PB a jeho meziroční nárůst činí zhruba 30 %. Průměrná měsíční spotřeba dat na datovou SIM kartu odhadem dosáhla 12,5 GB – v předchozím roce šlo o 9,8 GB.
Z novinek představených na Google I/O 2025: Přehledy od AI (AI Overviews) se rozšiřují do dalších zemí. Užitečné, syntetizované přehledy od generativní AI jsou nově k dispozici i českým uživatelům Vyhledávače.
Šestice firem označovaných jako „MAMAAN“ – tedy Meta (Facebook, Instagram), Alphabet (Google), Microsoft, Apple, Amazon a Netflix – je zodpovědná za více než padesát procent světového internetového provozu. Dalšími velkými hráči jsou TikTok a Disney+. Společně tak zásadně určují podobu digitálního prostředí, spotřebitelského chování i budoucích trendů v oblasti technologií. I přesto, že se podíl těchto gigantů od roku 2023 o něco snížil, jejich dominantní postavení zvyšuje volání po regulaci.
Evropská komise (EK) navrhuje zavést plošný poplatek ve výši dvou eur (zhruba 50 Kč) za každý malý balík vstupující do Evropské unie. Poplatek se má týkat balíků v hodnotě do 150 eur (zhruba 3700 Kč), které v EU nepodléhají clu. V loňském roce bylo do EU doručeno kolem 4,6 miliardy takovýchto balíků. Poplatek má krýt náklady na kontroly rostoucího počtu zásilek levného zboží, které pochází především z Číny.
Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.
|- 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.minpostakhle 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: