Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
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...