Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.
Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.
… více »Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).
V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.
Ubuntu 27.04 bude Tenacious T-Rex.
Byla vydána nová verze 2026.4.0 "Never-slop" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. ScummVM oslavil 25 let. Verze 0.0.1 vyšla 8. října 2001.
Kanadský vývojář Anthony Sistilli vytvořil ironický DIY projekt parodující kamerové systémy Flock, s cílem názorně demonstrovat rizika masového sledování jaké provozují tyto komerční ALPR systémy. Z levné IP kamery a vlastního ML softwaru (napsaného s pomocí SI circa za 20 minut, kód se mi bohužel nepodařilo dohledat) běžícího v laptopu sestavil jednoduchý systém, který detekuje výhradně policejní vozidla, zaznamenává jejich SPZ a
… více »Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.
Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si
… více »Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do
… více »
template <typename Stringish>
http_rep http_client::post(const std::string& path, Stringish&& body) const
{
std::map<std::string, std::string> foo; // po odstranění tohoto řádku chyba zmizí
return http_rep();
}
template http_rep http_client::post<>(
const std::string& path, std::string&& body) const;
Kompilace skončí s chybou:
Error LNK2005 "public: class std::_Tree_iterator<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > __cdecl std::_Tree<class std::_Tmap_traits<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,0> >::end(void)" (?end@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@$0A@@std@@@std@@QEAA?AV?$_Tree_iterator@V?$_Tree_val@U?$_Tree_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@std@@@std@@@2@XZ) already defined in http.obj
Pokud zakomentuju řádek std::map<std::string, std::string> foo;, projekt se zkompiluje. I třeba pokud změním první typ na int (std::map<int, std::string> foo;). Na jménu proměnné nezáleží, chová se to stejně.
Co se tam může dít? Nerozumím, proč zavedení lokální proměnné má vliv na linkování. Tuším, že jsem tu chybu viděl i jindy, ve stejně "divných" případech, třeba po přidání const k jiné lokální proměnné.
Myslím si, že tenhle konkrétní kus kódu je ok, ale jinde v projektu je něco hodně špatně. Ale nenapadá mě co hledat a ta chybová hláška mi zrovna nepomáhá ...
An explicit specialization of a function or variable template is inline only if it is declared with the inline specifier or defined as deleted, and independently of whether its function or variable template is inline.
Takže zkus:
template inline http_rep http_client::post<>(...
http_rep http_client::post(const std::string& path, const std::string& body) constPřijde mi, že někde přeteče nějaký limit v kompilátoru a on se začne chovat jinak, a pak se projeví chyba, která doteď nebyla vidět. Existuje něco jako nedefinované chování kompilátoru při špatné konstrukci?
#pragma once). Každopádně teorie o chybě v šabloně padly s tím, že to jde zopakovat i bez šablony.
Hele nechybí ti náhodou v hlavičkovém souboru
#ifndef _TEST_HEADER_
#define _TEST_HEADER_
#endif
Případně nadáváš linkeru dvakrát jeden objektový soubor? "already defined in http.obj" tohle znamená, že existují minimálně dva objekty stejně pojmenované. Proto bych hledal chybu v překladovém systému, nebo něco na způsob vkládání (include) jednoho stejného souboru dvakrát.
#ifndef _TEST_HEADER_ #define _TEST_HEADER_ #endifnebo
#pragma onceověřoval jsem, že pragmu kompilátor podporuje. Mám teď teorii, že je někde v hlavičkovém souboru i definice a linker ten soubor dostane dvakrát, jak píšeš. Pokud překladač danou funkci inlinuje, tak se chyba neprojeví. Dává mi smysl, že kompilátor při objevení složitější proměnné přehodnotí inlinování, což vysvětluje, proč se to chování mění s odstraněním řádku. Příklad na to linkování je třeba na http://www.cplusplus.com/forum/beginner/104849/
KUREVSKY_SLOŽITÁ_TEMPLATE::end(), v tvém případě iterátorové funkce end() pro std::map. Podívej se, kde jinde v kódu používáš std::map<std::string, std::string> a jak. Když změníš typ klíče na int, vypadá funkce end() jinak a už k té kolizi nedojde. Skoro to vypadá, jako by se ti z nějaké překladové jednotky jiné než http.obj ta funkce end() exportovala a proto se ti to srazí. Absolutní rána do prázdna: neprovádíš tam někde explicitní instanciace funkcí, co by žraly std:map<std::string, std::string> jako parametr?
std::map se tam skoro nepoužívá, šel jsem po výskytech. V jiném .cpp souboru je tato třída (ořezal jsem ji na minimum)
namespace {
class foo {
public:
foo();
std::map<std::string, std::string> namespaces;
};
foo::foo() {};
}
Takto to vyvolá chybu [1], což čtu jako konstruktor std::map<std::string, std::string>(). Zakomentování řádku v původním postu stačí, aby se to zkompilovalo. Kompilace také projde, pokud kód vypadá takto:
namespace {
class foo {
public:
foo();
// std::map<std::string, std::string> namespaces;
};
foo::foo() {};
}
nebo takto
namespace {
class foo {
public: foo() {};
std::map<std::string, std::string> namespaces;
};
}
V příslušném hlavičkovém souboru se třída foo nevyskytuje, jen v .cpp souboru. Nepoužívá se nikde (smazal jsem výskyty). Vysvětlení mě zatím nenapadá, zatím přemýšlím, co to říká.
[1]
Error LNK2005 "public: __cdecl std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >(void)" (??0?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@QEAA@XZ) already defined in http.obj
std::map<std::string, std::string> objevují ve více překladových jednotkách a mají externí linkage, ale to ti asi došlo. S touhle situací by si měl linker poradit, protože u šablonových funkcí se tohle prostě děje. Zmínil jsi, že ten projekt má nějaký podivný build systém, možná bych se podíval, jestli se tam nějak podivně nešaškuje s STL kontejnery. Fakt by to chtělo nějaký minimální zkompilovatelný příklad, kdy se to rozbije.
namespace {
class foo {
public:
foo();
std::map<std::string, std::string> namespaces;
};
inline foo::foo() {};
}
Zkus to takto. Chybi ti tam inline a pokud ten header includnes ze 2 cpp, budes tam mit 2 symboly pro ten jeden ctor. To, ze to funguje se zakomentovanou mapou, bude mozna kvuli optimalizaci, protoze ctor je pak noop.
Tiskni
Sdílej: