Po 9 týdnech vývoje od vydání Linuxu 7.0 oznámil Linus Torvalds vydání Linuxu 7.1. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna a časem také na Linux Kernel Newbies.
Cheat Engine (Wikipedie) je s verzí 7.7 k dispozici už také pro Linux. Jedná se o proprietární skener/debugger paměti používaný především k cheatování v počítačových hrách.
Vláda USA nařídila společnosti Anthropic pozastavit přístup k modelům Fable 5 a Mythos 5 pro všechny cizince, včetně zaměstnanců Anthropicu.
Společnost Murena představila (YouTube) novou verzi 4.0 mobilního operačního systému /e/OS (Wikipedie) založeného na Androidu a LineageOS bez aplikací a služeb od Googlu.
V Arch User Repository (AUR) bylo kompromitováno přes 400 opomíjených balíčků (jejich seznam). Útočník do nich začlenil škodlivý npm balíček atomic-lockfile, který krade citlivá data uživatelů. Publikována byla předběžná analýza spouštěného malwaru deps.
Homebrew, správce balíčků nejen pro macOS, byl vydán ve verzi 6.0.0 (seznam změn). Hlavními novinkami jsou bezpečnostní mechanismus tap trust kvůli důvěryhodnosti závislostí, vylepšení sandboxingu na Linuxu, interní JSON API nebo zlepšení výkonu.
Byla nalezena a 9. června opravena kritická zranitelnost ve FreeBSD v Kernel TLS (KTLS). Pojmenována byla Bumsrakete (FreeBSD-SA-26:26.ktls, CVE-2026-45257). Lokální neprivilegovaný uživatel může přepisovat soubory, ke kterým má právo pouze pro čtení. Přepsáním setuid binárky a jejím spuštěním může získat roota. Na všech verzích od verze 13.0 vydané v dubnu 2021.
Vývojáři open source operačního systému ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, se na síti 𝕏 pochlubili, že ReactOS zvládne počítačovou hru Half-Life.
Byla vydána nová verze 4.8 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.
Apple container dospěl do verze 1.0.0. Jedná se o open source nástroj pro spouštění linuxových kontejnerů na macOS postavený nad containerization. Napsaný je v programovacím jazyce Swift a optimalizovaný pro Apple silicon.
Máme v plánu umožnit filtrování poradny pomocí štítků, což by mělo fungovat jako náhrada za původní strukturu poraden (bug #1091).
Naše snahy mají ovšem vadu na kráse. Chceme umožnit, aby uživatel mohl zadat podobný filtr:
(nvidia OR ati) AND ubuntu AND NOT fglrx
Filtrování může takto fungovat díky štítkům. Potýkáme se ovšem s tím, že vyhledávání trvá příliš dlouho (typicky 5 sekund) a je to velká zátěž na databázi. Našli by se mezi vámi odborníci, kteří by dokázali poradit, jak věc zefektivnit?
Zde najdete dump databáze (3,2 MB), kde jsou dvě tabulky - relace a stitkovani. U relace je důležité cislo (identifikuje "stránku" v systému, se kterou kód může dále pracovat), potomek nesoucí číslo datové položky v systému, typ_potomka, kde nás zajímají jen relace s hodnotou 'P', a predchozi, pomocí kterého se můžeme omezit na Linuxovou poradnu (číslo 49490).
V tabulce stitkovani jsou sloupečky typ (opět nás zajímá vždy hodnota 'P'), cislo (které se musí provázat se sloupcem relace.potomek - pozor, ne s relace.cislo!) a stitek obsahující označení samotného štítku.
Jeden z našich pokusů o vyhledání relací, které splňují podmínku (nvidia OR ati) AND ubuntu, vypadá takto:
select count(R.cislo) from relace R where R.typ_potomka='P' and R.predchozi=49490 and exists (select S.cislo from stitkovani S where S.typ = 'P' and S.cislo = R.potomek and (S.stitek='nvidia' or S.stitek='ati')) and exists (select S.cislo from stitkovani S where S.typ = 'P' and S.cislo = R.potomek and S.stitek='ubuntu');
Vrátí celkem 380 relací za cca 5 sekund, resp. o něco méně při opakování.
Tiskni
Sdílej:
$ time mysql -u ab ab < orig.sql
count(R.cislo)
380
real 0m1.936s
user 0m0.011s
sys 0m0.007s
$ time mysql -u ab ab < new.sql
count(R.cislo)
380
real 0m0.273s
user 0m0.012s
sys 0m0.004s
SQL prikaz:
select
count(R.cislo)
from
relace R
LEFT JOIN stitkovani nvidia ON (nvidia.cislo = R.potomek AND nvidia.stitek='nvidia' AND nvidia.typ = 'P')
LEFT JOIN stitkovani ati ON (ati.cislo = R.potomek AND ati.stitek='ati' AND ati.typ = 'P')
LEFT JOIN stitkovani ubuntu ON (ubuntu.cislo = R.potomek AND ubuntu.stitek='ubuntu' AND ubuntu.typ = 'P')
LEFT JOIN stitkovani fglrx ON (fglrx.cislo = R.potomek AND fglrx.stitek='fglrx' AND fglrx.typ = 'P')
WHERE
R.typ_potomka = 'P' AND R.predchozi=49490 AND
((nvidia.cislo IS NOT NULL OR ati.cislo IS NOT NULL) AND ubuntu.cislo IS NOT NULL AND NOT fglrx.cislo IS NOT NULL)
A pokud si chceme trochu zaprasit...
$ time mysql abc_test < new.sql
count(R.cislo)
380
real 0m0.558s
user 0m0.016s
sys 0m0.004s
$ time mysql abc_test < q.sql
count(r.cislo)
380
real 0m0.187s
user 0m0.008s
sys 0m0.004s
$ cat q.sql
select
count(r.cislo)
from
(
select
s.cislo
from
stitkovani s
where
s.typ = 'P'
and s.stitek in ('nvidia', 'ati', 'ubuntu', 'fglrx')
group by
s.cislo
having
bit_or(s.stitek = 'nvidia' or s.stitek = 'ati') = 1
and bit_or(s.stitek = 'ubuntu') = 1
and bit_or(s.stitek = 'fglrx') = 0
) s
join relace r on (s.cislo = r.potomek)
where
r.typ_potomka = 'P'
and r.predchozi = 49490
;
SELECT R.cislo, COUNT(s.stitek)
FROM
relace R
LEFT JOIN stitkovani s ON (s.cislo = R.potomek AND s.typ = 'P')
WHERE
R.typ_potomka = 'P' AND R.predchozi=49490 AND
s.stitek IN ('ati', 'nvidia', 'ubuntu', 'fglrx')
GROUP BY R.cislo
HAVING count(s.stitek) = 4
Nezkoušel jsem to, jen mě to tak napadlo. Ale nenapadá mě, jak do toho zakomponovat ty ostatní operace (or, not).