Na WhatsAppu se šíří nový podvod, který ovšem vůbec nevypadá jako hackerský útok. Žádná krádež hesla. Žádné narušení zabezpečení. Žádné zjevné varovné signály. Místo toho jsou lidé trikem donuceni, aby útočníkům sami poskytli přístup, a to pouhým provedením toho, co vypadá jako běžný ověřovací krok. Bezpečnostní experti Avastu tento nový typ útoku nazývají ghostpairing, protože útočníci si při něm tiše vytvářejí „zařízení duchů“, které žije uvnitř vašeho účtu.
Český LibreOffice tým vydává aktualizaci překladu příručky LibreOffice Draw 25.8. Tato kniha se zabývá hlavními funkcemi programu Draw, vektorové grafické komponenty systému LibreOffice. Pomocí Draw lze vytvářet širokou škálu grafických obrázků. Příručka je ke stažení na stránce dokumentace a tým hledá dobrovolníky pro další překlady.
Anthony Enzor-DeMeo je novým CEO Mozilla Corporation. Mozillu převzal po dočasné CEO Lauře Chambers. Vybudovat chce nejdůvěryhodnější softwarovou společnost na světě. Firefox by se měl vyvinout v moderní AI prohlížeč.
Byla vydána nová verze 9.20 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček RustDesk Server pro vzdálený přístup.
Jonathan Thomas oznámil vydání nové verze 3.4.0 video editoru OpenShot (Wikipedie). Představení novinek také na YouTube. Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.
Byla vydána nová verze 1.6 otevřeného, licenčními poplatky nezatíženého, univerzálního ztrátového formátu komprese zvuku Opus (Wikipedie) a jeho referenční implementace libopus. Podrobnosti na demo stránce.
Vojtěch Polášek představil Vojtux, tj. linuxovou distribuci pro zrakově postižené uživatele. Vychází ze spinu Fedory 43 s desktopovým prostředím MATE. Konečným cílem je, aby žádný Vojtux nebyl potřeba a požadovaná vylepšení se dostala do upstreamu.
Byla vydána (Mastodon, 𝕏) druhá RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 160 (pdf).
Izrael od února zakáže dětem používat v prostorách základních škol mobilní telefony. Podle agentury AFP to uvedlo izraelské ministerstvo školství, které zdůraznilo negativní dopady, které na žactvo používání telefonů má. Izrael se tímto krokem přidává k rostoucímu počtu zemí, které dětem ve vzdělávacích zařízeních přístup k telefonům omezují.
Byla přidána podpora pro hostitelské řadiče USB3.0/xHCI, žádný však ještě není k dispozici.
Jsem rád, že je Linux připraven i když skutečných zařízení se stejně dočkáme tak nejdřív za rok.
To by mě teda zajímalo, jak takovou věc testovali :=ooo
čipová sada AMD r60 čipová sada Intel IGDNG
asi chybi odrazka. jinak jako vzdy skvele pocteni!
asi chybi odrazkaDík, opraveno.
Nejak nerozumiem tomu konceptu "kotvy"; nemate niekto nejaky link kde je opisany?
Představte si, že máte struct, který obsahuje několik proměnných (memberů) různých typů - například další vnořené structy.
No a dostanete se ve zdrojáku do situace, kdy máte pointer na ten vnořený struct, a potřebujete zjistit pointer na ten větší struct, který ho obaluje. Vlastně jde o to, zjistit ofset vnořeného structu v tom obalovém structu (operace na úrovni statických typů, čili ta informace je k dispozici už při kompilaci) a odečíst ho od známého pointeru na vnořený struct.
Všiml jsem si, že to kernel umí řešit nějakými makry - patrně zmiňovaným container_of().
Omlouvám se, pokud tohle všechno je jasné
Dál to z hlavy dopodrobna neznám. Čili nevím přesně, jak "kotva" funguje.
Tuším že jsem to viděl v klasické kernelové knihovničce pro vytváření "spojových seznamů", kde "struct list_head" je vnořený do Vašeho uživatelského structu. No a při procházení seznamem pracujete s pointery na ten vnořený list_head, ale cílem je, dostat pointer na ten Váš uživatelský struct.
ListNode, která vypadá zhruba takhle (pseudokód!):
class ListNode<T> {
ListNode<T> next;
T data;
}
Šikulové od jádra to převrátili vzhůru nohama a vymysleli asi tohle:
class ListNode {
ListNode next;
}
class MyData {
...
ListNode node;
}
Implementace seznamu pracuje s ListNode, ale navenek umí poskytnout přímo objekty dat. Představuju si to asi takhle nějak:
void forEach(ListNode head, {T -> void} callback) {
ListNode curr = head;
while (curr != null) {
callback.invoke(CONTAINER_OF(curr)); // !!!
curr = curr.next;
}
}
MyData a = new MyData(...); a.node = new ListNode();
MyData b = new MyData(...); b.node = new ListNode(); b.node.next = a.node;
forEach(a) { MyData data -> ... }
Pochopitelně tohle je extrémně zjednodušené, ale myslím, že princip je správný. Pokud se pletu, někdo mne prosím opravte
/**
* container_of - cast a member of a structure out to the containing structure
* @ptr: the pointer to the member.
* @type: the type of the container struct this is embedded in.
* @member: the name of the member within the struct.
*
*/
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
struct parent { ... };
struct s {
struct parent; // prvni prvek ve strukture
...
};
Na strukturu s pak muzes pouzivat vsechny funkce (samozrejme s pretypovanim - coz ale za tebe muze delat nejake makro), ktere lze pouzit na strukturu parent bez pouziti maker typu container_of() nebo offset().
Na strukturu s pak muzes pouzivat vsechny funkce (samozrejme s pretypovanim - coz ale za tebe muze delat nejake makro), ktere lze pouzit na strukturu parentTyvado tak to je fikaný, by mě nenapadlo, ale to skutečně tak je. Akorát musí člověk pamatovat, že je potřeba alokovat/uvolnit víc paměti pro potomka, aby to nezatejkalo...
To je taka ta vec ktoru maju lode a ked sa chcu urzat na mieste vypustia kotvu...
Keby si furt nieco nekopiloval a nepisal v terminale a namiesto to si dal Vistu, mal by si cas aj na vseobecne vzdelavanie :p
Tiskni
Sdílej: