CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.
Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.
Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …
O víkendu jsem si vzal do vlaku na čtení Algoritmy, Datové struktury a programovací techniky od Computer Pressu. Ta kniha je plná chyb, popisky v textu nesouhlasí s obrázky, na mnoha místech nesmyslně přeložená a spousta dalších podobných nepříjemností. Část z toho vzniklo zjevně při překladu, ale dost hodně je také věcí velmi mizerné redakce. To je ale u Computer Pressu celkem obvyklé, skoro by se dalo říct, norma. Nicméně mě to přimělo si některé příklady zkusit vyřešit jen tak cvičně.
Ke kapitole 2:
-module(exer2). -compile(export_all). -define(DO8(X), X, X, X, X, X, X, X, X). -define(DO64(X), ?DO8(?DO8(X))). %%% 2.1 % reverse jako přirozená rekurze % Stupid and ineffective of course (čistě jen jako test) reverse_natural([]) -> []; reverse_natural([H|T]) -> reverse_natural(T) ++ [H]. % reverze s pomocnou proměnou % With Acc - realy fast reverse(L) when list(L) -> reverse(L, []). reverse([], L) -> L; reverse([H|T], L) -> reverse(T, [H|L]). %%% 2.2 % binární prohledávání seřazeného pole, nemaje pole, použito na tuple % udělat si seřazené tuple lze například: % list_to_tuple(lists:sort( % lists:map(fun(_)->random:uniform(100) end, lists:seq(1,10)) % )). binSearch(T, N) when tuple(T)-> binSearch(T, N, 1, size(T)). binSearch(T, N, P, P) -> N == element(P, T); % only speed up binSearch(T, N, S, E) when S < E -> P = (E+S) div 2, M = element(P, T), if M == N -> true; M < N -> binSearch(T, N, P+1, E); true -> binSearch(T, N, S, P-1) end; binSearch(_, _, _, _) -> false. %%% 2.3 % převod čísla do binární soustavy integerToBin(N) when integer(N) -> integerToBin(N, []). integerToBin(0, []) -> "0"; integerToBin(0, L) -> L; integerToBin(N, L) -> integerToBin(N div 2, [ N rem 2 +$0 | L ]). %%% 2.5 % největší společný dělitel % (elegantní, ale na dc verzi '?[dSarLa%d0<a]dsax+p' to stále nemá) bcd(A,0) -> A; bcd(A,B) -> bcd(B, A rem B). %%% Benchmarking % pár funkciček na měření časové náročnosti timeIt(X) -> timeIt(X, 1000). timeIt(X, N) -> statistics(runtime), for(1, N, X), element(2, statistics(runtime))/N/1000. for(S, E, F) when S < E-64 -> ?DO64(F()), for(S+64, E, F); for(S, E, F) when S < E -> F(), for(S+1, E, F); for(S, S, F) -> F(). % funkce na změření kolik zabere for % exer2:timeIt(fun exer2:empty/0, 10000000). % cca 60 ns na AMD Athlon 1.2 empty()->ok.
Tiskni
Sdílej:
První dva se dají sehnat v AJ a první i v ČJ (knihkupectví Neoluxor, Kanzelsberger). Že by třetí vyšel v AJ a druhý byl v ČJ pochybuji.
No a pak je tu ještě (také nedokončená) série od D. Knutha
Ono v této oblasti přeci jen asi ještě nebylo řečeno poslední slovo...
Ale ta knížka je, pravda, docela nová. Bohužel "lepiče v džavě" asi tolik nezaujme...