Byl vydán Mozilla Firefox 146.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 146 bude brzy k dispozici také na Flathubu a Snapcraftu.
Před rokem převzala Digitální a informační agentura (DIA) vlastnictví a provoz jednotné státní domény gov.cz. Nyní spustila samoobslužný portál, který umožňuje orgánům veřejné moci snadno registrovat nové domény státní správy pod doménu gov.cz nebo spravovat ty stávající. Proces nové registrace, který dříve trval 30 dní, se nyní zkrátil na několik minut.
IBM kupuje za 11 miliard USD (229,1 miliardy Kč) firmu Confluent zabývající se datovou infrastrukturou. Posílí tak svoji nabídku cloudových služeb a využije růstu poptávky po těchto službách, který je poháněný umělou inteligencí.
Nejvyšší správní soud (NSS) podruhé zrušil pokutu za únik zákaznických údajů z e-shopu Mall.cz. Incidentem se musí znovu zabývat Úřad pro ochranu osobních údajů (ÚOOÚ). Samotný únik ještě neznamená, že správce dat porušil svou povinnost zajistit jejich bezpečnost, plyne z rozsudku dočasně zpřístupněného na úřední desce. Úřad musí vždy posoudit, zda byla přijatá opatření přiměřená povaze rizik, stavu techniky a nákladům.
Organizace Free Software Foundation Europe (FSFE) zrušila svůj účet na 𝕏 (Twitter) s odůvodněním: "To, co mělo být původně místem pro dialog a výměnu informací, se proměnilo v centralizovanou arénu nepřátelství, dezinformací a ziskem motivovaného řízení, což je daleko od ideálů svobody, za nimiž stojíme". FSFE je aktivní na Mastodonu.
Paramount nabízí za celý Warner Bros. Discovery 30 USD na akcii, tj. celkově o 18 miliard USD více než nabízí Netflix. V hotovosti.
Nájemný botnet Aisuru prolomil další "rekord". DDoS útok na Cloudflare dosáhl 29,7 Tbps. Aisuru je tvořený až čtyřmi miliony kompromitovaných zařízení.
Iced, tj. multiplatformní GUI knihovna pro Rust, byla vydána ve verzi 0.14.0.
FEX, tj. open source emulátor umožňující spouštět aplikace pro x86 a x86_64 na architektuře ARM64, byl vydán ve verzi 2512. Před pár dny FEX oslavil sedmé narozeniny. Hlavní vývojář FEXu Ryan Houdek v oznámení poděkoval společnosti Valve za podporu. Pierre-Loup Griffais z Valve, jeden z architektů stojících za SteamOS a Steam Deckem, v rozhovoru pro The Verge potvrdil, že FEX je od svého vzniku sponzorován společností Valve.
Byla vydána nová verze 2.24 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
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: