Všem vše nejlepší do nového roku 2026.
Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.
Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().
Byla vydána nová verze 25.12.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Společnost Valve publikovala přehled To nej roku 2025 ve službě Steam aneb ohlédnutí za nejprodávanějšími, nejhranějšími a dalšími nej hrami roku 2025.
Byly publikovány výsledky průzkumu mezi uživateli Blenderu uskutečněného v říjnu a listopadu 2025. Zúčastnilo se více než 5000 uživatelů.
V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.
Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.
FFmpeg nechal kvůli porušení autorských práv odstranit z GitHubu jeden z repozitářů patřících čínské technologické firmě Rockchip. Důvodem bylo porušení LGPL ze strany Rockchipu. Rockchip byl FFmpegem na porušování LGPL upozorněn již téměř před dvěma roky.
K dispozici je nový CLI nástroj witr sloužící k analýze běžících procesů. Název je zkratkou slov why-is-this-running, 'proč tohle běží'. Klade si za cíl v 'jediném, lidsky čitelném, výstupu vysvětlit odkud daný spuštěný proces pochází, jak byl spuštěn a jaký řetězec systémů je zodpovědný za to, že tento proces právě teď běží'. Witr je napsán v jazyce Go.
Protože můj skriptík v bashi na hledání v obsahu souborů byl nechutně pomalý a už mě to štvalo, tak jsem upatlal narychlo jednu utilitku v C++. Je to trošku prasácky, ale pro mé účely to stačí. Ke stažení v příloze prvního komentáře, jak skriptík, tak program.
Pokud vynalézám kolo, tak sry, já na to žádnou utilitku ve svém systému neznám.
Rychlost hledání je na mém systému 0.6s vs. 13s v celém stromu téhle věci.
Ještě jedna věc, kompilujte buď s parametrem -std=c++0x, nebo vyhoďte ten static_assert (ale ujistěte se, že je podmínka splněna, jinak to bude chybovat u velkých souborů, např, na x86-32 při definování _FILE_OFFSET_BITS=64)
Tiskni
Sdílej:
grep -raliF 'hledany-text' directory, pripadne pokud Jardik zvlada regularni vyrazy, tak grep -raliE 'extended-regexp' directory.
Docela by me zajimal rozdil oproti tomu tvymu CPP. Udelej benchmark. Zkus to s tim -raliF to hleda plain-text, zadny regexp (regexp bude zrejme o trosku pomalejsi).
time grep -raliF Sys_FullPath . ./branches/next_ghost/unix/system.cpp ./branches/next_ghost/unix/.svn/text-base/init.cpp.svn-base ./branches/next_ghost/unix/.svn/text-base/system.cpp.svn-base ./branches/next_ghost/unix/init.cpp ./branches/next_ghost/libs/system.h ./branches/next_ghost/libs/memman.cpp ./branches/next_ghost/libs/.svn/text-base/memman.cpp.svn-base ./branches/next_ghost/libs/.svn/text-base/system.h.svn-base ./branches/next_ghost/game/realgame.cpp ./branches/next_ghost/game/music.cpp ./branches/next_ghost/game/globmap.cpp ./branches/next_ghost/game/macros.cpp ./branches/next_ghost/game/gamesave.cpp ./branches/next_ghost/game/.svn/text-base/gamesave.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/skeldal.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/globmap.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/inv.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/dialogs.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/music.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/realgame.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/menu.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/book.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/macros.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/interfac.cpp.svn-base ./branches/next_ghost/game/interfac.cpp ./branches/next_ghost/game/dialogs.cpp ./branches/next_ghost/game/menu.cpp ./branches/next_ghost/game/inv.cpp ./branches/next_ghost/game/book.cpp ./branches/next_ghost/game/skeldal.cpp real 0m4.747s user 0m4.616s sys 0m0.127s [jardik@Jardik-ArchPC skeldal]$ time /home/jardik/Projects/FindInFiles/findinfiles Sys_FullPath ./branches/next_ghost/unix/system.cpp ./branches/next_ghost/unix/.svn/text-base/init.cpp.svn-base ./branches/next_ghost/unix/.svn/text-base/system.cpp.svn-base ./branches/next_ghost/unix/init.cpp ./branches/next_ghost/libs/system.h ./branches/next_ghost/libs/memman.cpp ./branches/next_ghost/libs/.svn/text-base/memman.cpp.svn-base ./branches/next_ghost/libs/.svn/text-base/system.h.svn-base ./branches/next_ghost/game/realgame.cpp ./branches/next_ghost/game/music.cpp ./branches/next_ghost/game/globmap.cpp ./branches/next_ghost/game/macros.cpp ./branches/next_ghost/game/gamesave.cpp ./branches/next_ghost/game/.svn/text-base/gamesave.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/skeldal.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/globmap.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/inv.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/dialogs.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/music.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/realgame.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/menu.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/book.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/macros.cpp.svn-base ./branches/next_ghost/game/.svn/text-base/interfac.cpp.svn-base ./branches/next_ghost/game/interfac.cpp ./branches/next_ghost/game/dialogs.cpp ./branches/next_ghost/game/menu.cpp ./branches/next_ghost/game/inv.cpp ./branches/next_ghost/game/book.cpp ./branches/next_ghost/game/skeldal.cpp real 0m0.625s user 0m0.560s sys 0m0.063s [jardik@Jardik-ArchPC skeldal]$Můj se zdá být cca 7x rychlejší.
find . -type f -exec grep ....., ale spis find -type f -print0 | xargs -0r grep .... - to se pak spusti jeden grep s vice souborama najednou, kdyz tam neni extremne moc souboru (nenarazi se na limit delky parametru prikazu), tak se to spusti opravdu pouze jednou.
0m0.132s, ignore case jsem nechtěl. Tak to se omlouvám za nařčení grepu z pomalosti, je jen o kousíček pomalejší. Ten --mmap pro grep nemá žádný přínost, je to furt stejný.
Samozrejme, hledani regexpu bude pomalejsi nez porovnavani znak po znaku, a ignore-case to taky zpomaluje.
Na druhou stranu, grep ma mnoho dalsich funkci: puvodne grep vypisuje cely radek, kde se hledany vyraz vyskytuje, ale to jsem zablokoval pomoci "-l"; dale grep umoznuje vypsat radky, kde se hledany vyraz NEVYSKYTUJE "-v"; muzes si nechat zobrazit pouze pocet nalezenych radku; dale je mozne zobrazit X radku pred nalezenym a za nalezenym radkem "-B" a "-A" nebo "-C"; pak taky muzes zadat soubor, ktery obsahuje hledane texty "-F"; muzes si nechat vypsat cisla radek nebo byte offset radku s hledanym textem; muzes urcite, jestli se binarni soubory maji prohledavat nebo se maji brat jako ze text tam nelezen nebyl "-a" a "-I" resp. "--binary-files". Vetsina tehle prepinacu se musi behem behu nejakym zpusobem testovat, takze tam bude spousta dalsich "if" navic, nez ma tvuj programek, takze je samozrejme, ze tvuj program bude rychlejsi. Je to asi neco podobneho, jako kdybys zkousel srovna rychlost tveho programu, ktery spocita "1+1" a zobrazi vysledek a nejakeho jineho programu, ktery umi zpracovat a vypocitat jakykoliv zadany matematicky vyraz.
Takze rychlostne sice grep nepredci, ale kdyz budes chtit pokazde hledat trosku jinym zpusobem (rozumej implementovat nejakou grep funkcionalitu), tak na tom stravic o hodne vic casu a navic skoncis mozna na stejne rychlosti jako grep, nebo mozna jeste hur.
Lepsi nez neco zacnes bastlit, tak si projdi linuxove utilitky (tady tusim vychazel/vychazi nejakej serial o linuxovych utilitkach) a zkus najit nejakou, ktera umi to, co ty chces (v manu pak hledej detaily). Obcas musis svuj pozadavek rozlozit na mensi casti a pak to prohnat pres rouru nekolika utilitkama.
find KDE_HLEDAT -type f -not -path '*/.svn/*' -print0 | xargs -0r grep -lFI HLEDANY bez "-i" a s "-I" (binarni soubory ignorovat).
real 0m0.141s