Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.
Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.
Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.
Specialisté společnosti ESET zaznamenali útočnou kampaň, která cílí na uživatele a uživatelky v Česku a na Slovensku. Útočníci po telefonu zmanipulují oběť ke stažení falešné aplikace údajně od České národní banky (ČNB) nebo Národní banky Slovenska (NBS), přiložení platební karty k telefonu a zadání PINu. Malware poté v reálném čase přenese data z karty útočníkovi, který je bezkontaktně zneužije u bankomatu nebo na platebním terminálu.
V Ubuntu 25.10 byl balíček základních nástrojů gnu-coreutils nahrazen balíčkem rust-coreutils se základními nástroji přepsanými do Rustu. Ukázalo se, že nový "date" znefunkčnil automatickou aktualizaci. Pro obnovu je nutno balíček rust-coreutils manuálně aktualizovat.
VST 3 je nově pod licencí MIT. S verzí 3.8.0 proběhlo přelicencování zdrojových kódů z licencí "Proprietary Steinberg VST3 License" a "General Public License (GPL) Version 3". VST (Virtual Studio Technology, Wikipedie) je softwarové rozhraní pro komunikaci mezi hostitelským programem a zásuvnými moduly (pluginy), kde tyto moduly slouží ke generování a úpravě digitálního audio signálu.
Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 25.10. Podrobný přehled novinek v poznámkách k vydání.
V Londýně probíhá dvoudenní Ubuntu Summit 25.10. Na programu je řada zajímavých přednášek. Zhlédnout je lze také na YouTube (23. 10. a 24. 10.).
Gemini CLI umožňuje používání AI Gemini přímo v terminálu. Vydána byla verze 0.10.0.
Konference OpenAlt 2025 proběhne již příští víkend 1. a 2. listopadu v Brně. Nabídne přibližně 80 přednášek a workshopů rozdělených do 7 tematických tracků. Program se může ještě mírně měnit až do samotné konference, a to s ohledem na opožděné úpravy abstraktů i případné podzimní virózy. Díky partnerům je vstup na konferenci zdarma. Registrace není nutná. Vyplnění formuláře však pomůže s lepším plánováním dalších ročníků konference.
namespace myns
{
struct myclass
{
int a() const { return 5; }
int b() const { return 6; }
int mysum() const { return a() + b(); }
};
// Enable ADL mysum call for myclass
int mysum(const myclass& m)
{
return m.mysum();
}
}
// -- 3rdparty knihovna --
namespace thirdparty
{
struct thirdpartyclass
{
int abc() const { return 5; }
int def() const { return 6; }
};
}
// -- vlastni kod, implementovat mysum pro thirdpartyclass, musi byt ve stejnem namespace jako thirdpartyclass, aby fungovalo ADL
namespace thirdparty
{
int mysum(const thirdpartyclass& t)
{
return t.abc() + t.def();
}
}
// -- pouziti v template:
namespace totalydifferentnamespace
{
template<class... T>
int getSumOfSums(const T&... t)
{
return (mysum(t) + ...); // Zde se vyuzije ADL, zavola se metoda mysum z namespace, kde je kazda trida definovana
}
}
int main()
{
myns::myclass mc;
thirdparty::thirdpartyclass t;
return totalydifferentnamespace::getSumOfSums(mc, t); // 11+11=22
}
namespace myns
{
struct myclass
{
int a() const { return 5; }
int b() const { return 6; }
int mysum() const { return a() + b(); }
};
}
// -- 3rdparty knihovna --
namespace thirdparty
{
struct thirdpartyclass
{
int abc() const { return 5; }
int def() const { return 6; }
};
}
// --
namespace totalydifferentnamespace
{
template<class... T>
int getSumOfSums(const T&... t)
{
return (t.mysum() + ...); // Zde se vyuzije ADL, zavola se metoda mysum z namespace, kde je kazda trida definovana
}
}
template<typename T>
struct mysuminterface // not specialized
{
int mysum() const { return 0; }
};
// specialzed for myns::myclass
template<>
struct mysuminterface<myns::myclass> : myns::myclass
{
using myns::myclass::mysum;
};
// specialzed for thirdparty::thirdpartyclass
template<>
struct mysuminterface<thirdparty::thirdpartyclass> : thirdparty::thirdpartyclass
{
int mysum() const { return abc() + def(); }
};
int main()
{
mysuminterface<myns::myclass> mc;
mysuminterface<thirdparty::thirdpartyclass> t;
return totalydifferentnamespace::getSumOfSums(mc, t); // 11+11=22
}
proč jakoby nestačí podědit nějakej trait a musí se 'hackovat' hotová instance?? :O :O
Tiskni
Sdílej: