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.
Na iVysílání lze zhlédnout všechny díly kultovního sci-fi seriálu Červený trpaslík.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl v březnu 5,33 % (Windows -4,28 %, OSX +1,19 %, Linux +3,10 %). Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 24,48 %. Procesor AMD používá 67,48 % hráčů na Linuxu.
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