Byl vydán Linux Mint 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
Wine bylo po roce vývoje od vydání verze 10.0 vydáno v nové stabilní verzi 11.0. Přehled novinek na GitLabu. Vypíchnuta je podpora NTSYNC a dokončení architektury WoW64.
Byl vydán Mozilla Firefox 147.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Firefox nově podporuje Freedesktop.org XDG Base Directory Specification. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 147 bude brzy k dispozici také na Flathubu a Snapcraftu.
Asociace repair.org udělila anticeny těm nejhorším produktům představeným na veletrhu CES 2026. Oceněnými jsou například šmírující kamery Amazon Ring AI, chytrý běžecký pás od společnosti Merach, která otevřeně přiznává, že nedokáže zabezpečit osobní data uživatelů, případně jednorázové lízátko, které rozvibrovává čelisti uživatele a tak přehrává hudbu. Absolutním vítězem je lednička od Samsungu, která zobrazuje reklamy a kterou lze otevřít pouze hlasovým příkazem přes cloudovou službu.
Íránští protirežimní aktivisté si všímají 30% až 80% ztráty packetů při komunikaci se satelity služby Starlink. Mohlo by se jednat o vedlejší důsledek rušení GPS, kterou pozemní přijímače Starlinku používají k výpočtu polohy satelitů a kterou se režim rovněž snaží blokovat, podle bezpečnostního experta a iranisty Amira Rashidiho je ale pravděpodobnější příčinou terestrické rušení přímo satelitní komunikace Starlinku podobnou
… více »Evropská komise (EK) zvažuje, že zařadí komunikační službu WhatsApp americké společnosti Meta mezi velké internetové platformy, které podléhají přísnější regulaci podle unijního nařízení o digitálních službách (DSA). Firmy s více než 45 miliony uživatelů jsou podle DSA považovány za velmi velké on-line platformy (Very Large Online Platforms; VLOP) a podléhají přísnějším pravidlům EU pro internetový obsah. Pravidla po
… více »Tržní hodnota technologické společnosti Alphabet poprvé v historii přesáhla čtyři biliony dolarů (83 bilionů Kč). Stalo se tak poté, co Apple oznámil, že bude na poli umělé inteligence (AI) spolupracovat s dceřinou firmou Alphabetu, společností Google.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 161 (pdf).
Po delší době vývoje vyšla nativní linuxová verze virtuálního bubeníka MT-PowerDrumKit 2 ve formátu VST3. Mezi testovanými hosty jsou Reaper, Ardour, Bitwig a Carla.
Desktopové prostředí Budgie bylo vydáno ve verzi 10.10. Dokončena byla migrace z X11 na Wayland. Budgie 10 vstupuje do režimu údržby. Vývoj se přesouvá k Budgie 11. Dlouho se řešilo, v čem bude nové Budgie napsáno. Budgie 10 je postaveno nad GTK 3. Přemýšlelo se také nad přepsáním z GTK do EFL. Budgie 11 bude nakonec postaveno nad Qt 6.
Čtení a snaha porozumět cizímu kódu může zabrat mnoho času, protože se kód může dotýkat mnoha částí programu. Pokud člověk chce kódu porozumět v globálním měřítku, často se to neobejde bez různých obrázků. Proč si to nezautomatizovat?
Snad všichni znají nástroj call grind, který umí generovat call graph. Ovšem i ten má své hranice. Bohužel ten při použití s programem, u kterého bych si rád call graph vygeneroval padá. Navíc pokud jeho funkci chápu správně generuje call graph jenom pro konkrétní běh programu. Jinak řečeno, hledám program, který tohle zvládne vytáhnout ze zdrojového kódu.
Asi první věc, na kterou narazíte při hledání call graph je článek na Wikipedii. Ze jmenovaných nástrojů se zdá, že CodeViz je přesně to, co hledám.
Jak už to tak bývá ne vše je tak snadné jak se zdá. CodeViz může používat pro zjištění jmen funkcí dvě cesty. Ta snazší je pomocí objdump. Druhou cestou je cesta s využitím opatchovaného gcc 3.4.6.
Netrvá dlouho a už na mě z konsole kouká hláška make[1]: *** [all] Error 1 a nějaké ty další chyby. Kompilátor se tváří, jako kdyby některé #define nebyly definovány, i když jsou. Není to první podobný problém s gcc 4.5 co mám. Strávil jsem skoro celý den hledáním čistého řešení. To jsem nenašel a skončil jsem u prasáckého zakomentování všech postižených #ifdefů. Tak, konečně se mi to podařilo zkompilovat a nainstalovat a hned CodeViz zkouším. O tom ale později.
Vzhledem k pracnosti zprovoznění opatchovaného gcc jsem se rozhodl udělat PKGBUILD pro Arch Linux. Dalších půl dne v prdeli. Rozhodl jsem se totiž kompilovat gcc ručně, bez použití skriptu v CodeViz. V samotném skriptu narazíte na vtipnou věc. Totiž když kompilujete gcc 3.4.6, tak to skončí chybou. Configure skript totiž u špatně vytvoří config.h pro libiberty. Zvláštní je, že pokud se dělá bootstrap tak se poprvé vygeneruje správně, pro finální kompilaci ale už ne. Řešením je tedy make || true, aby makepkg neskončilo na chybě kompilace, zkopírováním části install skriptu z CodeViz a znovuspuštením make.
Ale ouha, zase to nefunguje. Nové verze makepkg mají totiž ve chvíli, kdy nějaký příkaz vrátí 1 okamžitě skončí s chybou. Proto jsem také při prvním volání make použil make || true abych se tomu vyhnul. Teď ale narážím na problém, kdy se testuje výstup grepu, jestli není náhodou nulový. Problém je, že grep v tom případě skončí s návratovým kódem 1 a tudíž shodí makepkg. Tady true už nepomůže. Naštěstí stačí postižený test vyhodit. Co to udělá na cizím stroji nevím, ale předpokládám, že ten test dopadne na všech Arch Linuxech stejně.
Funguje to, ale má to své masařky. Nejdřív začnu tím, jak to funguje. Pro začátek musíme vygenerovat soubor s grafem. Na to je v CodeViz skript genfull. Podle potřeby nastavíme jak má získat potřebné symboly a jazyk (C/C++).
Začnu tím jednodušším a tím je získání symbolů pomocí objdump (parametr -g cobjdump pro C resp. cppobjdump pro C++). V tomhle případě genfull rekurzivně prohledá aktuální adresář a hledá binárky, pro které vytvoří soubor full.graph. Samozřejmě binárky musí obsahovat debug symboly, jinak je to k ničemu. Nevýhodou tohohle řešení je, že neuvidíte inlinované fce (ledaže byste vypnuli inlinování).
Samozřejmě o předchozí možnosti jsem se dozvěděl až po tom, co jsem prošel martyriem s kompilací gcc. Takže teď ta horší cesta s gcc. Nejdřív musíme program, pro který chceme callgraph vygenerovat zkompilovat s pomocí opatchovaného gcc. Ten vytvoří ke každému zdrojovému souboru soubor s příponou .cdepn obsahující závislosti. Pokud se program linkuje s nějakou systémovou knihovnou, tak to samozřejmě nepůjde (myšleno na moderní distribuci kompilované gcc 4.x). Naštěstí k linkování dochází až na konci, takže soubory .cdepn jsem získal. Použití genfull je v zásadě stejné, akorát tentokrát vybíráme z možností -g cdepn a cppden.
A nakonec k vygenerování callgraphu. full.graph by prý mělo jít nacpat rovnou do dot (součást GraphViz), ale to nedoporučuji. Callgraph je i u malého projektu dost rozsáhlý na to, abyste se ho vůbec dočkali. Proto CodeViz obsahuje skript gengraph. Ten umožní nastavit nějaká omezení, například maximální hloubku a u které funkce se má začínat. Pokud nespecifikujete jinak, tak se jako výstup použije PostScript.
A nakonec k mouchám. I s použitím gengraph je generování callgraphu dost pomalé (hloubka >3 už se ani nevyplatí), navíc výsledný graf není zrovna přehledný (vždy jsem dostal příšernou nudli). Aby toho nebylo málo, pokud byl graf velký, měl jsem velké problémy s jeho otevřením. Okular i gv si na něm vylámali zuby, gv navíc řvalo nějakou chybu, takže je dost možné, že ps bylo vadné. Používat jiný výstup (konkrétně png) se mi neosvědčilo, kvůli použití Cairo backendu. Ten totiž nezvládne velké bitmapy a výsledek zmenší tak, že je z něj nečitelná mazanice. V mém případě výsledek zmenšil ca 10x.
Ačkoliv CodeViz dělá to co má, vůbec mi nevyhovuje a nakonec používám jiný soft, ale o tom až jindy.
PS: Omluvte případné chyby ale nechce se mi to po sobě číst.
Tiskni
Sdílej: