O víkendu probíhá v Bruselu konference FOSDEM 2026 (Free and Open source Software Developers’ European Meeting). Program konference je velice nabitý: 37 místností, 71 tracků, 1184 přednášejících, 1069 přednášek, prezentací a workshopů. Sledovat je lze i online. K dispozici budou jejich videozáznamy. Aktuální dění lze sledovat na sociálních sítích.
Společnost Nex Computer stojící za "notebooky bez procesorů a pamětí" NexDock představila telefon NexPhone, který může funguje jako desktop PC, stačí k němu připojit monitor, klávesnici a myš nebo NexDock. Telefon by měl být k dispozici ve třetím čtvrtletí letošního roku. Jeho cena by měla být 549 dolarů. Předobjednat jej lze s vratní zálohou 199 dolarů. V dual-bootu by měl být předinstalovaný Android s Linuxem (Debian) jako aplikací a Windows 11.
Byla vydána nová major verze 9.0 softwaru pro správu elektronických knih Calibre (Wikipedie). Přehled novinek v poznámkách k vydání. Vypíchnuta je podpora AI.
Wasmer byl vydán ve verzi 7.0. Jedná se o běhové prostředí pro programy ve WebAssembly. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V reakci na nepopulární plán Microsoftu ještě více ve Windows prohloubit integraci umělé inteligence Copilot, Opera na sociální síti 𝕏 oznámila, že připravuje nativní linuxovou verzi prohlížeče Opera GX. Jedná se o internetový prohlížeč zaměřený pro hráče, přičemž obsahuje všechny základní funkce běžného prohlížeče Opera. Kromě integrace sociálních sítí prohlížeč například disponuje 'omezovačem', který umožňuje uživatelům omezit využití sítě, procesoru a paměti prohlížečem, aby se tak šetřily systémové zdroje pro jinou aktivitu.
NVIDIA vydala nativního klienta své cloudové herní služby GeForce NOW pro Linux. Zatím v beta verzi.
Open Gaming Collective (OGC) si klade za cíl sdružit všechny klíčové projekty v oblasti linuxového hraní počítačových her. Zakládajícími členy jsou Universal Blue a Bazzite, ASUS Linux, ShadowBlip, PikaOS a Fyra Labs. Strategickými partnery a klíčovými přispěvateli ChimeraOS, Nobara, Playtron a další. Cílem je centralizovat úsilí, takže namísto toho, aby každá distribuce udržovala samostatné opravy systému a podporu hardwaru na
… více »V kryptografické knihovně OpenSSL bylo nalezeno 12 zranitelností. Opraveny jsou v upstream verzích OpenSSL 3.6.1, 3.5.5, 3.4.4, 3.3.6 a 3.0.19. Zranitelnosti objevila společnost AISLE pomocí svého autonomního analyzátoru.
Desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. V programovacím jazyce Rust s využitím stavebních bloků z projektu Smithay jej napíše Brian Tarricone. Úprava stávajícího xfwm4 tak, aby paralelně podporoval X11 i Wayland, se ukázala jako špatná cesta.
Desktopové prostředí KDE Plasma 6.8 poběží už pouze nad Waylandem. Vývojáři, kteří s rozhodnutím nesouhlasí, vytvořili fork KDE Plasma s názvem SonicDE (Sonic Desktop Environment) s cílem zachovat a vylepšovat podporu X11.
Řešení dotazu:
Prelude Data.List> [1,2,2,3,3,3,4,4,4,4] \\ [4,4,3,3,2,2,1,1]
[3,4,4]
/thread :)
Tady je Python, styl „prase psalo“. Bylo by to mnohem přehlednější i kratší, kdyby to nemusel být oneliner. 
listsub = lambda first, second: [i for d in ([(d, d.update(((k, 1 + d.get(k, 0)),))) for d in ({},) for k in first][0][0],) for i in second if (d.get(i, 0), d.update(((i, d.get(i, 0) - 1),)))[0] <= 0]
A takhle se to dá vyzkoušet:
listsub([1, 1, 1, 5, 5, 4, 3, 4, 3, 4, 3], [5, 4, 3, 2, 1] * 10) listsub([4, 4, 3, 3, 2, 2, 1, 1], [1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
Kdyby to nebyl oneliner:
def listsub_gen(first, second):
counts = {}
for i in first:
counts.setdefault(i, 0)
counts[i] += 1
for i in second:
if counts.get(i, 0):
counts[i] -= 1
else:
yield i
def listsub(first, second):
return [i for i in listsub_gen(first, second)]
>>> from collections import Counter >>> list((Counter([1,1,3,2,2])-Counter([1,2,2,2])).elements()) [1, 3]
Ano, použít se dá, ale uvedené řešení nesplňuje zadání.
>>> listsub([2], [3, 2, 1]) [3, 1] list((Counter([3, 2, 1]) - Counter([2])).elements()) [1, 3]
Bylo by potřeba procházet seznamem, postupně odebírat prvky z counteru a ty, kterých už je nula, dát do výsledného seznamu.
list(sorted((Counter(a)-Counter(b)).elements(), key=a.index))případně efektivněji
list(sorted((Counter(a)-Counter(b)).elements(), key=dict(zip(a,range(len(a)))).get))
Ehm...return [i for i in listsub_gen(first, second)]
return list(listsub_gen(first, second))
Prelude Data.List> filter (`notElem` [1,2,3]) [1,1,2,2,3,3,3,4,4,4,4]
[4,4,4,4]
perl6 -e 'my $a=(2,2,1,1,1,7).Bag;my $b=(1,2,1,3,1,2,2,1,2,3,1,4).Bag; say ($b (-) $a).kxxv'pokud by si trval, tak třeba:
perl6 -e 'my $a=(2,2,1,1,1,7).BagHash; my @b=(1,2,1,3,1,2,2,1,2,3,1,4); say @b.grep: { !$a{$_}-- }'
perl -le '@pole1=(4,4,3,3,2,2,1);@pole2=(1,2,2,3,3,3,4,4,4,4); $regx=join "\|", @pole1; print grep { not /^$regx$/ && $regx =~ s/\|?$_\|?/|/ } @pole2'
Pro druhý případ stačí provést substituci globálně (g). Nevypadá to asi nic extra, ale lepší než šolichání v cyklech, které mne vedle toho napadlo.
No such method 'kxxv' for invocant of type 'Bag'co má dělat kxxv?
Bag, což je specifický Hash, na pole.
perl6 -e 'my $a=(2,2,1,1,1,7).Bag;my $b=(1,2,1,3,1,2,2,1,2,3,1,4).Bag;
say ($b (-) $a); #bag(4, 3(2), 1(2), 2(2))
say ($b (-) $a).Hash; #{1 => 2, 2 => 2, 3 => 2, 4 => 1}
say ($b (-) $a).kxxv; #(4 3 3 1 1 2 2)
my &my-kxxv = {flat .keys Zxx .values};
say my-kxxv $b (-) $a; #(4 3 3 1 1 2 2)
'
Tiskni
Sdílej: