Francouzská veřejná správa má v rámci vládní iniciativy LaSuite Numérique ('Digitální sada') v plánu od roku 2027 přestat používat Microsoft Teams a Zoom a přejít na videokonferenční platformu Visio, hostovanou na vlastním hardwaru. Konkrétně se jedná o instance iniciativou vyvíjeného open-source nástroje LaSuite Meet, jehož centrální komponentou je LiveKit. Visio nebude dostupné pro veřejnost, nicméně LaSuite Meet je k dispozici pod licencí MIT.
Eben Upton oznámil další zdražení počítačů Raspberry Pi: 2GB verze o 10 dolarů, 4GB verze o 15 dolarů, 8GB verze o 30 dolarů a 16GB verze o 60 dolarů. Kvůli růstu cen pamětí. Po dvou měsících od předchozího zdražení.
Shellbeats je terminálový hudební přehrávač pro Linux a macOS, který umožňuje vyhledávat a streamovat hudbu z YouTube, stahovat odtud skladby a spravovat lokální playlisty. Pro stahování dat z YouTube využívá yt-dlp, pro práci s audiostreamy mpv. Je napsán v jazyce C a distribuován pod licencí GPL-3.0, rezpozitář projektu je na GitHubu.
Byla vydána nová verze 26.1.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. S podporou hardwarového dekódování videa. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl po deseti měsících od vydání verze 1.3 vydán ve verzi 2.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Guido van Rossum, tvůrce programovacího jazyka Python, oslavil 70. narozeniny. Narodil se 31. ledna 1956 v nizozemském Haarlemu.
OpenClaw je open-source AI asistent pro vykonávaní různých úkolů, ovládaný uživatelem prostřednictvím běžných chatovacích aplikací jako jsou například WhatsApp, Telegram nebo Discord. Asistent podporuje jak různé cloudové modely, tak i lokální, nicméně doporučován je pouze proprietární model Claude Opus 4.5 od firmy Anthropic v placené variantě. GitHubová stránka projektu OpenClaw.
Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.
Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.
scx_horoscope je „vědecky pochybný, kosmicky vtipný“ plně funkční plánovač CPU založený na sched_ext. Počítá s polohami Slunce a planet, fázemi měsíce a znameními zvěrokruhu. Upozornil na něj PC Gamer.
|- 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: