Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
V pátek 20. února 2025 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy
… více »Evropská rada vydavatelů (EPC) předložila Evropské komisi stížnost na americkou internetovou společnost Google kvůli její službě AI Overviews (AI souhrny), která při vyhledávání na internetu zobrazuje shrnutí informací ze zpravodajských serverů vytvořená pomocí umělé inteligence (AI). Evropská komise již v prosinci oznámila, že v souvislosti s touto službou začala firmu Google vyšetřovat. Google obvinění ze strany vydavatelů
… více »Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).
Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.
Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.
Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.
Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu
… více »Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).
Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
Po dlouhé době jsem si zkusil napsat nějakou prkotinu v dc pro kterou jsem potřeboval formátovat výstup. Prostředky dc jsou v tomto směru skutečně omezené. No skoro by se dalo napsat prakticky žádné. Prostě nic. Všechno si člověk musí napsat sám. Naštěstí v tomto případě toho nebylo moc.
mysql: ERROR 1005 (HY000) at line 21: Can't create table './dbname/tablename' (errno: 150)
Informativní chybová hláška, že? Z toho je na první pohled jasné, v čem je chyba. No přece ...
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ě.
V diskusi pod článkem o lua na rootu je odkaz na jeden benchmark skriptovacích jazyků. Řekněme si na rovinu, že zvolená úloha je pro skriptovací jazyky zcela nevhodná. Nicméně mě zajímalo jak na tom bude erlnag, pro který je taková úloha snad ještě nevhodnější. Výsledkem jsem byl docela překvapen. HiPe verze erlangu se překvapivě dostala s relative speed 14.75 mezi Java 1.4.2 a Io 20070410 Vector a bez HiPe s relative speed 47.5 mezi Lua 5.1 a ocaml bytecode 3.09.2. To rozhodně není špatné.
To si jednou takhle brouzdám po CPANu a hledám binding do Erlangu a pak mě napadne kouknout se kolem. Kromě toho, že jsou tam k nalezení moduly k telekomunikačním výpočtům Erlang B a C, které vymyslel ten člověk po němž dostal Erlang jméno (jo to je ten chlápek jehož obrázek se objeví na začátku a na konci toho Monthy Pythoního filměčku Erlang The Movie), tak je tam k nalezení i takový srandovní modul jménem fp.
Jedna z výtek na adresu erlangu, co jsem zaznamenal, je nemožnost napsat rekurzivní funkci přímo v shellu. Přitom je to spíše příznak nedostatku informovanosti. Přiznám se bez mučení, že jsem to taky ze začátku nevěděl, protože k tomu je potřeba devilish ingenuity (slovy Joe Armstronga na straně 57). Ve výše odkazované disertační práci je jako ukázka výpočet faktoriálu.
Když zdrojový kód zkrátíte a zároveň vám vzroste rychlost exekuce, tak si můžete být skoro jistí, že už do toho pomalu pronikáte. Prohlížel jsem si takhle nějaký kód v erlangu a viděl jsem tam takovou hezkou vychytávku (stejná myšlenka je použita níže ve funkci mapper/2 a collector/2), kdy dotyčný procházel pomocí lists:foldl list a zároveň z něho vytvářel slovník (dict). No a pak mě napadlo jestli bych taky nemohl přepsat stavový algoritmus z mého prvního erlangového modulu na rekurzivní, ale se schopností foldl/foldr funkce a pak ostatní funkce jako map a perms přepsat se stejným trikem. Zároveň mi vrtalo hlavou jestli se to náhodou nezrychlí a byl jsem dost překvený, nárust výkonu byl více než dvojnásobný a kódu dost podstatně ubylo (dostal jsem se na 1,1 us což je ani ne 2x víc než v C napsaný Alghoritm-Permute pro perl!).
Ve funkcionálních jazycích se spousta (většina?) algorimů zapisuje jako rekurze. Nejinak je tomu i u erlangu. Jenže rekurze je pro normální dnešní CPU fuj a tak se to řeší (a nejen ve funkcionálních jazycích) tzv. tail rekurzí. Prakticky jde o nahrazení rekurze cyklem a nealokuje se kvůli tomu další paměť na zásobníku, ale různé jazyky se s tím umí vyrovnat různě.
Nedávno jsem narazil na úžasný nový (pro mě), průmyslově ověřený funkcionální jazyk. Jmenuje se Erlang. Jeho vlastnosti mě přiměly říct wow! Posuďte sami. Za pozornost stojí například distributed (no on je to taky tak trochu komplet OS co se dokáže tvářit, že jede jako by jeden homogenní OS na heterogenním HW) a Hot code upgrade (viz example 14), nebo "Mnesia is a nice example of the power of Erlang: in how many languages could you write a fully-featured industrial-strength distributed DBMS in less than 20,000 lines of code?"
Při ladění jednoho kusu kódu jsem narazil na další perlovou nechutnost. Vyzkoušejte sami:
perl -le 'sub a {@{$_[0]}}; sub b {a($_[0]), a($_[1])}; print scalar b([1,2], [3,4,5])'Jaký by jste čekali výsledek? Já jsem čekal 5 a ono 3. Skoro bych to považoval za bug. Proč 5? Protože perl -le 'sub a {@{$_[0]}}; sub b {a($_[0]), a($_[1])}; print scalar(@c=b([1,2], [3,4,5]))'
Většinou prograuju v Perlu, ale zároveň po očku sleduju Python. Můj pocit z něj se vyvýjí v takových vlnách, chvilku se mi líbí hodně, chvilku méně a tak pořád dokola. Některé věci se mi v něm líbí, ale poslední dobou je pocit spíše rozpačitý. Jeho syntaxe je, jak bych to jen řekl, příliš košatá. Ony se dělají vtípky na to, že Perlový zdroják je před komprimací k nerozeznání od stavu po komprimaci. Hloupej vtípek, ale syntaxe Perlu je vlastně strašně jednoduchá až primitivní, to se ale o Pythonu nedá říct ani omylem. Už jen těch klíčových slov! I když ke klíčovým slovům Perlu přihodím všechny ty podivné znaky se speciálním významem, tak to nebudu ani na desetině syntaktických prvků Pythonu. Jo, já vím, Lisp je Lisp, ale Perl má taky něco do sebe. (No a radši nebudu ani zmiňovat dc, že) A proč to všechno píšu?
Tak jsem uvnitř podmínky grepu potřeboval vyhodnotit nějakou složitější věc a měl jsem možnost napsat to jako annonymní sub a nebo do. Položil jsem si otázku co bude rychlejší?
Dnes to bude jen taková drobnost. Implementace basename a ověření platného jména proměné.
Občas by člověk potřeboval něco naprogramovat v BASHi a nepamatuje si, nedělá to často a tak. No a k tomu by se mu hodily nějaké tu základní konstrukce vytesané do webu.
Další z řady šíleností. Eratosthenovo síto v dc. Rychlost nic moc, ale padlé na hlavu je to dost.
dc -e '?dSavSb[SadLa+d1r:cdla>e]se[dlexsz]sd1[1+d;c0=ddlb>f]dsfx[p]sdlaSb1lfx'
Updated:
Trošku rychlejší verze inspired by Yeti.
dc -e '?dSavSb[d1r:cSadLa+dla!<e]se[ddSa2*Lad*lexszsz]sd3[d;c0=d2+dlb!<f]dsfx[p]sdlaSb2p3lfx'
Pokud někdo vyžaduje výsledek na jednom řádku tak koncovou část [p]sdlaSb2p3lfx je možné nahradit [[,]Pdn]sdlaSb2n3lfx10P
P.S.: Jsem si vědom, že zbytečně plýtvám pamětí (nad 100000 je to prakticky nepoužitelné), ale myslím, že by to hodně zpomalilo dělat nějaké přepočty indexů (nahrazením d1r:c za d2/1r:c a d;c za d2/;c se spotřeba paměti zmenší na polovinu, ale taky bohužel rychlost) a hlavně jsem línej to předělat ;-) .
Tak jsem se mrknul co dovede dc. Fakt užitečná hračička. Tak třeba jak udělat program pro nalezení největšího společného dělitele. Brnkačka:
dc -e '[r]sb[szpq]sc[sadlarla>b~d0=cldx]sd??ldx'No já vím, že jsem cvok, ale tahle věcička se mi fakt líbí.
tac v sedu sed 'x;1!H;$!d;x'už není tak c00l, už vím co chci mít v podpisu teď.
Updated: Takže to mám blbě a až budu mít čas tak to zkusím přepsat.
Updated2: Po obědě se makat nechce, tak konečně fungující verze.
dc -e '[rSadLar%d0<a]sa??laxsap'A to s použitím jediného registru. Pro ty co vyžadují GUI tu mám vylepšenou verzi :-)
dc -e '[rSadLar%d0<a]sa[a=]P?[b=]P?laxsa[result:]Pp'
Updated3: Zkrácení o jeden znak a ochrana před poškozením od uživatele.
dc -e '??[rSadLar%d0<a]dsaxsap' dc -e '[a=]P?[b=]P?[rSadLar%d0<a]dsaxsa[result:]Pp'
Updated4: Nějak nemám den nebo co. Ještě kratší verze.
dc -e '??[dSarLa%d0<a]dsaxsap' dc -e '[a=]P?[b=]P?[dSarLa%d0<a]dsaxsa[result:]Pp'
Updated5: A ještě jeden znak.
dc -e '??[dSarLa%d0<a]dsax+p' dc -e '[a=]P?[b=]P?[dSarLa%d0<a]dsax+[result:]Pp'
Nemaje klasického informatického vzdělání byl jsem toho ve škole ušetřen. O čem mluvím? Všechny ty algoritmy pro třídění a tak. No a pak to člověk potřebuje a neví. Když už to zjistí, tak si to chce vytesat do kamene. Ehm do webu. Tak taky rozšířím zbytečně duplicitní stránky, na kterých je taková, nebo onaká implementace quicksortu. Až to zas někdy budu potřebovat a jestli bude abíčko ještě existovat, tak to třeba tady najdu.
Nemám rád lidi, co se přímo rozplývají nad FF nebo Mozillou. Mám u nich pocit, že jsou přinejmenším zaslepení. Přemíra ,,chytrosti`` některých progremů je totiž na pováženou. Krom nedomyšleností, které jsem už párkrát uvedl jinde, jsem narazil na jednu, kterám mě ,,pobavila``. Kdo máte rádi FF a Mozillu raději nečtěte dále, protože se vašemu miláčkovi dostane vybraných slov.
Tak jsem zase potřeboval něco naprogramovat. Člověk by si řekl, když nevím jak na to v bashi, použij něco silnějšího, třeba perl. Ale to bych nebyl já, kdybych to aspoň nezkusil. Takže máme nějaký textový soubor s daty z měření a v něm za komentářem jsou popisky jednotlivých sloupečků. Kdyby to byla jen jedna série s jedněmi popisky, tak je to naprosto jednoduché, ale těch sérií je víc a jak na potvoru každá má jiné popisky. No a já z toho chci vytvořit příkaz pro gnuplot s tím, že si uživatel může vybrat kterou sérii a který sloupeček chce zobrazit. To vyžaduje mít možnost načíst jednotlivé popisky do proměných a pak se přes indexy k nim dostat při zpracování parametrů na příkazovém řádku.
Občas je potřeba udělat ve scriptu zpracování parametrů a když už, tak pořádně. Nejdřív jsem to dělal všechno přes bash a jeho expanze a dokázal jsem si udělat prakticky cokoli, co jsem si usmyslel, ale bylo to trošku nepřehledné a pracné. A pak jsem objevil getopt (getopts v bashi je taková hračka, která mě teda rozhodně neuspokojila).
V článku jsem se dočetl o zajímavé knížce a nejen já. Kolega ji dokonce pořídil do firmy. Tak jsem si v ní zalistoval. Narazil jsem na dobrej příklad kdy nepoužít sed. Je to hned první příklad použití editoru sed 3.4.1 Vyhledávání souborů v adresářích v PATH.