Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.
Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.
Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.
BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.
V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."
Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.
Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.
Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.
… více »Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.
Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.
Základním principem copy-on-write je pozdržení vytvoření celkové kopie objektu tak dlouho, dokud to není potřeba - tedy dokud se do objektu nezapisuje. Při realizaci této metody se třídy, které mají mít tuto vlastnost, vybaví počítadlem, které se inkrementuje při vytvoření kopie; při zápisu do daného objektu se pak v případě, že počítadlo je nenulové (tedy existuje kopie), vytvoří fyzická kopie objektu a původní počítadlo se dekrementuje. Implementačně se třída využívající copy-on-write obvykle obalí do jiné třídy, která zajišťuje tuto funkcionalitu.
Při implementaci je tedy potřeba odchytit dvě operace - vytváření kopie a zápis do objektu. Vzhledem k tomu, že je náš projekt napsán v C++, to umožňuje snadno rozlišit, které objekty jsou modifikovatelné, a které ne (díky klíčovému slovu const). Vytvořili jsme tedy obalující třídu (šablonu), která při vytváření kopie objektu (ať už pomocí kopírovacího konstruktoru či virtuální metody clone) zvýší vnitřní počítadlo. Navenek je dále schopna se "přetypovat" na původní třídu - a to za pomoci konstantních metod (které nevytváří kopii objektu) i nekonstantních metod (u kterých se naopak kopie objektu vytváří). Tohoto je možno dosáhnout mimo jiné pomocí operátor *, ->, případně operátoru přetypování.
Zde je vhodné zmínit jednu nepříjemnou vlastnost C++:
class Trida {
const int& get() const;
int& get();
};
Trida t;
const Trida& c;
const int& a = c.get(); //Zavola se const metoda
const int& b = t.get(); //NEzavola se const metoda!
Pro copy-on-write by bylo vhodné, aby se při přiřazení do proměnné b volala konstantní metoda, zatímco ona se volá nekonstantní (která v kontextu copy-on-write způsobí zbytečnou kopii). Tento problém lze vyřešit buď magií se šablonami (jen v omezené míře; viz dále), přejmenováním nekonstantní metody (třeba na mutable_, neboť mutable je klíčové slovo) nebo použitím ošklivé konstrukce.
Pro náš projekt jsme postupně vyzkoušeli dvě implementace, které se liší přístupem k danému problému - jedna implementuje copy-on-write pro konkrétní třídy (interně nazvaná COW), druhá obaluje všechny objekty v mapě objektů (interně SharedDataPointer). Obojí však řeší problém domén, což jsou naše reprezentace proměnných analyzovaného programu. Všechny třídy, kterých se copy-on-write týká, jsou pak potomci třídy Domain.
V tomto přístupu bylo snahou při vytváření instance domény vytvořit objekt, který se bude tvářit jako doména (bude potomkem třídy Domain) a interně si bude držet instanci vlastní domény, pro kterou bude dělat delegaci volání metod. Protože v projektu často pracujeme i se základní třídou Domain, implementuje třída COW všechny metody této třídy. Pro přetypování z Domain na potomka používáme vlastní šablonovou funkci, což umožňuje nejen přetypování z COW třídy na instanci obalené třídy, ale zároveň to řeší (s pomocí menší šablonové magie) problém s přiřazením nekonstantních objektů do konstantních (více viz zde).
Vlastnosti tohoto přístupu:V našem projektu máme mapu, která drží všechny proměnné použité při analýze programu. Dalším řešením tedy je při ukládání do této mapy obalit veškeré domény, a při jejich čtení nedělat kopii a při zápisu ano.
My jsme se nakonec rozhodli pro druhý přístup, neboť vyžaduje méně změn v kódu a protože většina dat je uložena na jednom místě. Pro efektivní využití bylo však potřeba kód ještě projít a zjistit místa, kde dochází ke kopiím - spousta těch míst totiž tvořila kopii i v momentě, kdy to nebylo potřeba (třeba operátor porovnávání). A jaké byly výsledky (měřili jsme čtyři programy z Coreutils) ?
Díky použití copy-on-write se nám povedlo nejen náš projekt zrychlit, ale především ho učinit použitelným pro další programy (již se zvládneme zpracovat více než 70 programů z Coreutils). Zároveň to náš projekt zrychlilo, neboť již není potřeba provádět operace na objektech, které byly kopiemi jiných objektů.
Projekt canal se zabývá statickou analýzou nad programy v jazyce C přeloženými do LLVM bytecode (potenciálně však i pro další jazyky přeložené do LLVM). Tento přístup umožňuje zjistit nadmnožinu všech možných hodnot proměnných v programu. Naší snahou je toto umožnit nad co největším množstvím programů. Tento projekt je vytvářen pod Fakultou informatiky Masarykovi univerzity a podporován společností Red Hat.
Tiskni
Sdílej:
Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child.
Samozrejme se vtira otazka, odkud prichazi ten pozadavek vytvaret kopie, ktere pak nejsou potreba.Tuhle otázku jsem níže naťuknul taky.
Při realizaci této metody se třídy, které mají mít tuto vlastnost, vybaví počítadlem, které se inkrementuje při vytvoření kopieTuhle část snad chápu, takže tuším, že tím máš namysli asi spíš že se inkrementuje místo vytvoření fyzické kopie, tudíž to „při vytváření kopie“ by rozhodně zasloužilo reformulovat. Ale to už jsem řešil v jiné diskuzi, že mnozí mají stále ještě náhled na OOP pokažený implementačními detaily C++. Obecný popis toho, co chceme dělat, by neměl vyžadovat přepnutí mozku na C++ mód :D. Takhle, já tě nechci nijak prudit, ale celý ten článek vypadá jako když jsi ho psal pro sebe, tedy pro člověka, který do toho vidí. Já jsem z něj byl schopný pochytit co obecně obnáší copy-on-write (což už jsem znal), nějaké ty statistiky jak to pomohlo. Ale že bych bez zkoumání samotného kódu chápal, co se vlastně děje, jestli se to nějak uplatí i u nových objektů, a hlavně, proč je pro daný projekt relevantní zrovna kopírování existujících objektů. A když už popisuješ konkrétní metody jak toho dosáhnout, tak bych chtěl nejdřív vědět, co daná metoda obnáší, a pak teprve pracovat se specifickými pojmy jako šablonová funkce apod. Něco ve stylu (a teď kecám, protože jsem to zdaleka všechno nepochopil)... Nové instance tříd se vytvářejí běžným způsobem. Ale protože canal dělá … a k tomu potřebuje často udržovat kopie již existujících instancí, které z důvodu, že …, často zůstávají nezměněné, a protože bychom neradi měnili celý datový model, rozhodli jsme se použít metodu copy-on-write. Umožnuje nám to ušetřit paměť, protože nemusíme alokovat … až do chvíle, kdy se do nového objektu zapisuje. A teď bych očekával technické vysvětlení toho, jak je možné se vyhnout té alokaci… Místo stovek bajtů pro celý objekt tak můžeme alokovat proxy objekt, který obsahuje informaci, že je zatím nezměněný a odkaz na datový objekt, který využíváme pouze pro čtení. První zápis pomocí proxy objektu způsobí zkopírování datového objektu a zrušení příznaku pouze pro čtení. Od této chvíle se prostřednictvím proxy objektu čte a zapisuje nový datový objekt. Když se nový proxy objekt klonuje, znovu se označí jako read-only. Ve skutečnosti je tam potřeba ten reference counting kvůli dealokaci, ale nechtěl jsem ty ukázky příliš komplikovat. Minimálně takhle nějak bych si představoval text, který mi má předat něco nového.
na dva způsoby řešení (pro třídu a pro místo)Subjektivně vnímám, že tento účel nesplnilo.
že to může mít opravdu velký přínosTento účel splnila ta tabulka časů a nebyl by k tomu potřeba zbytek článku.
šlo mi především o to ukázat, že když už se rozhodnete ho využít, abyste měli nějakou inspiraci jak.Opět subjektivně vnímám jako nesplněné.
Pro mne z toho plyne důležitá zkušenost, že jsem to měl napsat před dvěma měsíci, když jsme to implementovali, a ne až nyní - v ten moment bych nejspíš napsal dvakrát tak dlouhý zápisek, který by to rozebíral víc ze široka (a tedy by i nejspíš pokryl věci, které ti tam chybí).To je dost možné. Ono taky záleží na tom, jak moc má člověk na to psaní chuť a čas.
Tento článek už upravovat nebudu, neboť by to nejspíš vyžadovalo kompletní přepsání, a to se mi z různých důvodů nechce.Není zapotřebí vypilovávat tenhle jeden článek, spíš se opravdu těším na zlepšení u těch příštích :).
Tento článek už upravovat nebudu, neboť by to nejspíš vyžadovalo kompletní přepsání, a to se mi z různých důvodů nechce.Já být tebou, tak to moc nehrotím. V čechách je problém najít texty o programování, které jsou určeny lidem, jenž už o programování něco vědí. Takové to běžné meziprogramátorské povídání, které se dá najít třeba na redditu. Co ovšem není problém, je sehnat tu tisíc úvodů do něčeho, zas a stále znova. Nechápu proč, imho nemusí být každý blogpost srozumitelný pro všechny kdo náhodou půjdou kolem.
Kdo ty rozvleklý kecy má číst pořád dokola.Jo.
Očekávané nadávky na C++ pod článkem týkající se C++.Zřejme jsi si spletl vlákno.
nicméně tím, že druhý odstavec ho „jakoby“ vysvětluje spoustu lidí zmátl a očekávali, že se tedy dozví co to ten COW je.Což mimochodem není můj případ, jak se gogloid mylně domníval.
Přesto bych byl rád, aby takovéto články vznikaly.To už jsem psal výše. Kdyby se vytáhly obsah i forma do srozumitelné úrovně, rád bych to viděl mezi vydanými články.
Pochopil jsem, že žádný jazyk, který existoval, existuje a bude existovat podle zastánců čistého OOP neobsahuje to správné a dokonale čisté OOP.Smalltalk.
Pochopil jsem už dávno, že mainstreamově prezentovaná touha po správném OOP je chiméra, něco jako sektářská víra.To je samotná touha po čistě OOP jazyce. V praxi velmi rychle zjistíte, že jsou běžné situace, které s OOP jazykem řešíte půl hodiny při odtržení jednorázové definice od jejího použití, zatímco s dobrou podporou funkcionálních jazyků to máte za pět minut a přehledně (třeba řazení podle řetězce xorovaného nějakou hodnotou — funktor vs. lambda).
Mě hlavně fascinuje, jak všichni hledají to správné OOP.Mě spíš facinuje, že jsi můj příspěvek sice nepochopil, zato ti to nijak nebrání dělat chytrého.