Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal Zprávu o stavu kybernetické bezpečnosti ČR za rok 2024 (pdf). V loňském roce NÚKIB evidoval dosud nejvíce kybernetických bezpečnostních incidentů s celkovým počtem 268. Oproti roku 2023 se však jedná pouze o drobný nárůst a závažnost dopadů evidovaných incidentů klesá již třetím rokem v řadě. V minulém roce NÚKIB evidoval pouze jeden velmi významný incident a významných incidentů bylo zaznamenáno 18, což oproti roku 2023 představuje pokles o více než polovinu.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované obrázky APNG a WebP.
Na chytré telefony a počítačové tablety v Rusku bude od začátku příštího měsíce povinné předinstalovávat státem podporovanou komunikační aplikaci MAX, která konkuruje aplikaci WhatsApp americké společnosti Meta Platforms. Oznámila to dnes ruská vláda. Ta by podle kritiků mohla aplikaci MAX používat ke sledování uživatelů. Ruská státní média obvinění ze špehování pomocí aplikace MAX popírají. Tvrdí, že MAX má méně oprávnění k přístupu k údajům o uživatelích než konkurenční aplikace WhatsApp a Telegram.
Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu srpnový souhrn novinek. Kvůli nedostatečnému zájmu byla ukončena výroba telefonů PinePhone Pro.
Po pěti měsících vývoje byla vydána nová verze 0.15.1 programovacího jazyka Zig (GitHub, Wikipedie). Verze 0.15.0 byla přeskočena. Přispělo 162 vývojářů. Přehled novinek v poznámkách k vydání.
Před sedmi lety společnost Valve představila fork projektu Wine s názvem Proton umožňující v Linuxu přímo ze Steamu hrát počítačové hry do té doby běžící pouze ve Windows. Aktuální přehled podporovaných her na stránkách ProtonDB
Společnost DuckDuckGo rozšířila svůj AI chat Duck.ai o GPT-5 mini (𝕏). Duck.ai umožňuje anonymní přístup bez vytváření účtů k několika modelům umělé inteligence. Aktuálně k GPT-4o mini, GPT-5 mini, Llama 4 Scout, Claude Haiku 3.5 a Mistral Small 3.
Marek Tóth v příspěvku DOM-based Extension Clickjacking: Data ve správcích hesel v ohrožení na svém blogu popsal novou clickjacking techniku s několika variantami útoků a otestoval ji proti 11 správcům hesel. Výsledkem bylo nalezení několika 0-day zranitelností, které mohly ovlivnit uložená data desítek milionů uživatelů. Jedno kliknutí kdekoliv na webové stránce kontrolované útočníkem umožňovalo ukrást uživatelská data ze
… více »Na dnešní akci Made by Google 2025 (YouTube) byly představeny telefony Pixel 10 s novým čipem Google Tensor G5 a novými AI funkcemi, hodinky Pixel Watch 4 a sluchátka Pixel Buds 2a.
The Document Foundation oznámila vydání nové major verze 25.8 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) a také na Youtube a PeerTube.
typedef struct { int x; const char **pole; } Struktura; #define STRUKTURA(__jmeno__, __x__, __pole__) \ Struktura __jmeno__ = { __x__, __pole__ };A nedaří se mi docílit požadovaného výsledku. Zkouším to zavolat takto:
STRUKTURA(jmeno, 10, {"bla", "bla2", "bla3"})Ale preprocesor na mě řve, že jsem makru předal 5 argumentů místo 3
Napisat makro s "neznamym" poctom parametrov nie je problem,
makro:
#define STRUKTURA(jmeno, x, pole...) Struktura jmeno = { x , { pole } }
sa expanduje ako:
Struktura jmeno = { 10 , { "bla", "bla1", "bla2" } };
problem je v tom, ze toto kompilator Cecka nezozere:
typedef struct
{
int x;
char *pole[];
} Struktura_1;
typedef struct
{
int x;
char **pole;
} Struktura_2;
typedef struct
{
int x;
const char *pole[];
} Struktura_3;
typedef struct
{
int x;
const char **pole;
} Struktura_4;
typedef struct
{
int x;
const char *pole[8];
} Struktura_5;
int main()
{
/*
Struktura_1 jmeno = { 10, {"bla", "bla1", "bla2"} }; // nepojde skompilovat
Struktura_2 jmeno = { 10, {"bla", "bla1", "bla2"} }; // nepojde skompilovat
Struktura_3 jmeno = { 10, {"bla", "bla1", "bla2"} }; // NEpojde skompilovat
Struktura_4 jmeno = { 10, {"bla", "bla1", "bla2"} }; // NEpojde skompilovat
*/
Struktura_5 jmeno = { 10, {"bla", "bla1", "bla2"} }; // pojde skompilovat
}
const char**
vícekrát a to tím proměnným počtem argumentů nepořeším a stejně by to teda nevzal kompilátor ... zůstanu teda u toho řešení "s\0ošklivým\0řetězcem\0" typedef struct { int x; const char **array; } Structure; #define MAKE_STRUCTURE(name, x, array...) \ const char *name##__array_data[] = array; \ Structure name = { x, name##__array_data } MAKE_STRUCTURE(joe, 3, {"foo", "bar", "baz"});Je nevím, proč by to mělo být lepší než ten kód nenapsat rovnou (a pokud je ho hodně, tak generovat, nebo naopak příslušná data run-time načítat).
typedef struct { int x; const char **array; } Structure; #define MAKE_STRUCTURE(name, x, ...) \ const char *name##__array_data[] = __VA_ARGS__; \ Structure name = { x, name##__array_data } MAKE_STRUCTURE(joe, 3, {"foo", "bar", "baz"});
STRUKTURA(jmeno, 10, ((char * []){"bla", "bla2", "bla3"}));
Tiskni
Sdílej: