Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.
Vyhledávač DuckDuckGo je podle webu DownDetector od 2:15 SELČ nedostupný. Opět fungovat začal na několik minut zhruba v 15:15. Další služby nesouvisející přímo s vyhledáváním, jako mapy a AI asistent jsou dostupné. Pro některé dotazy během výpadku stále funguje zobrazování například textu z Wikipedie.
Více než 600 aplikací postavených na PHP frameworku Laravel je zranitelných vůči vzdálenému spuštění libovolného kódu. Útočníci mohou zneužít veřejně uniklé konfigurační klíče APP_KEY (např. z GitHubu). Z více než 260 000 APP_KEY získaných z GitHubu bylo ověřeno, že přes 600 aplikací je zranitelných. Zhruba 63 % úniků pochází z .env souborů, které často obsahují i další citlivé údaje (např. přístupové údaje k databázím nebo cloudovým službám).
Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Preco je sched_yield() spatny napad? Ja som ho napriklad pouzil vo viacvlaknovom programe, ked mi pri specifickej datovej strukture (kt. si konzistenciu zarucovala sama) nastala kolizia a nechcel som, nech sa 1 vlakno so "spinlockom" toci dlhu dobu (toto tocenie v cykle program viditelne spomalovalo). "Klasicke" zamykanie a semafory som nemohol pouzit, lebo ich obsluha bola pomerne draha v pripade, ze kolizia nenastala. sched_yield() nielenze zabranilo vytazovaniu CPU tocenim sa v cykle, ale zaroven to zrychlilo aj vykonavanie programu - pravdepodobne preto, lebo sa dostalo druhe vlakno na radu skor.
Pravdupovediac, veci ako sleep(0) by ma nikdy nenapadli, lebo sa mi zdaju byt nelogicke, uz pri precitani nazvu. Na prvy pohlad ide o nahodne side efekty a teda sa na ne neda spolahnut. Urcite by som sa s tym netrapil, ako opisani vyvojari.
U RCU se spinlock exkluzivně zamyká jenom ve chvíli, kdy se dělá update, takže tam by s tím problém nebyl, update je výjimečný a pravděpodobnost, že nastane dvakrát za sebou ve stejném vlákně, je prakticky nulová.Moc nerozumím tomu, k čemu je na RCU potřeba zamykat čtení. Na to by přeci měla stačit atomická proměnná.
Zamykání pro čtení je u spinlocku velice levné, protože to je jen inkrementace atomické proměnné,Jen? Inkrementace atomické proměnné je docela drahá operace, protože zpusobuje, že si procesory příslušný cacheový řádek pinkají mezi sebou po poměrně pomalé sběrnici.
což u RCU musíte dělat stejně.Opravdu? Nestačí mi atomickou proměnnou číst?
Jen? Inkrementace atomické proměnné je docela drahá operace, protože zpusobuje, že si procesory příslušný cacheový řádek pinkají mezi sebou po poměrně pomalé sběrnici.Ve srovnání s voláním jádra, co dělají semafory a dělaly mutexy, je to velmi levné.
Opravdu? Nestačí mi atomickou proměnnou číst?A kdo bude uklízet?
Ve srovnání s voláním jádra, co dělají semafory a dělaly mutexy, je to velmi levné.To ano, ale dá se obejít i bez toho. (Mimochodem, pod Linuxem by ani semafory neměly v případě, že nečekají, volat jádro.)
A kdo bude uklízet?Dá se to udělat například tak, že každé vlákno jednou za čas projde nějakým synchronizačním bodem, ve kterém je jisté, že zrovna do žádné datové struktury nekouká, a přitom zvýší per-thread čítač. Uklízecí vlákno pak po čase podle čítačů zjistí, že do staré verze struktury už dávno nikdo nekouká, a uvolní ji.
Komu se ještě nikdy nestalo, že z nepozornosti přidal druhý příkaz a zapomněl na složené závorky, ať hodí kamenem.Možno kedysi veľmi dávno, ale odkedy používam počítačový jazyk so syntaxou pre normálnych ľudí, tak sa mi to nestalo
if(...) {
, tak to je jiné, ale v tom se radši ani nehrabu.
Myslel jsem spíš chyby typu
if (cond) do_something(); + do_something_else(); go_on();
případně
if (cond) + do_something_first(); do_something(); go_on();
Právě tomu používání složených závorek i u jednořádkových větví docela účinně předchází.
if (...) { neco(); }ten kód znatelně protáhne... Stačí jen pár takových ifů pod sebou.
tak skoro vsechno melo nejake vedlejsi efekty
Jestli má 3 řádková metoda vedlejší efekt, tak to už musel být skoro kouzelník
Kdyz to nekde vyhodilo chybu, byl zdroj chyby nejspis v okolnich 10 radcich, nikoli v jinem souboru.
Jsem si vždy myslel, že výjimky vznikají v metodách a ne souborech. Zase jsem se něco naučil.
Ten původní kód psalo prase, bez ohledu na to, že dodržovalo nějaké doporučení. Délka metod nemá nic společného s tím, kdy metoda kromě návratu hodnoty také cosi nastaví (nebo naopak nenastaví). Metoda má dělat jen jednu věc a ta věc by měla odpovídat názvu.
promenna dostane prirazenou hodnotu ve zcela jine metode, co je umistena ve zcela jinem souboru
Já v Javě pojem "proměnná v jiném souboru" opravdu neznám. Proměnná je v nějakém objektu (tedy atribut; field), nebo může být v dané třídě statická. Nevím, který z těchto dvou případů to byl, zřejmě se jednalo o nějakou statickou nefinální proměnnou s přístupem public... Jak jsem psal, ten kód psalo prase.
pokud to nekde spadlo, tak misto vzniku chybu (neosetreni cehosi) bylo vetsinou jen par radku od mista projevu chyby
Podle stacktrace se to dá někdy snadno vypátrat (někdy samozřejmě ne), nez ohledu na počet tříd.
Nevim, kde jsi prisel na to, ze by to melo byt v jave.
Aha, za to se omlouvám, to poznámku o Javě a tomto způsobu psaní psal někdo jiný, ty jsi potom volně pokračoval o C.
Jinak v podstatě souhlas, pokud někdo používá poučky ad absurdum, k ničemu dobrému to nevede.
Jenže právě proto, že jsou to triviální metody, je celá jejich funkce popsána jejich názvem, takže netřeba číst jejich kód. Takový zdroják se mi naopak dobře čte - metoda o 5 řádcích z toho 3 řádky jsou volání jiných metod a vše plyne už z jejich názvu.Pak její zápis měří o 4 řádky víc, než je zdrávo. Daleko lepší je napsat:
method catch() { .bark; .bite; .tail.wag; }
Věnovat takovému štěku víc než jeden řádek je nestoudné plýtvání elektrony, prostorem ve Vesmíru i čtenářovou pozorností.
Někde to nejde, většinou jo.Jenže i když to jde, často je to na škodu celkové čitelnosti kódu. Nedává smysl optimalizovat na čitelnost jedné metody (zvlášť když nic zajímavého nedělá). Daleko důležitější je, jak je snadné pochopit celou třídu.
Vrcholem jsou programy v Javě rozdělené na desítky naprosto triviálních tříd plných triviálních metod, navíc každá třída v jiném souboru, ty se nedají číst vůbec.
No tak zrovna v tomhle ohledu na tom některé části linuxového jádra nejsou o moc lépe. Běžně se mi stává, že abych zjistil, co vlastně dělá určitá funkce, musím postupně projít čtyři funkce, na střídačku z adresáře příslušného subsystému a include
. Při troše smůly se do toho zamíchá ještě nějaké těžko dešifrovatelné makro a když je smůly víc, tak jako bonus arch
a include/asm
.
Závorky by měly být ze zákonaSuhlasim.
if(...) { on_line_statement(); }tak chcípně vždy je 1/2 štěňátka.
Tiskni
Sdílej: