Společnost Pebble představila (YouTube) prsten s tlačítkem a mikrofonem Pebble Index 01 pro rychlé nahrávání hlasových poznámek. Prsten lze předobjednat za 75 dolarů.
Společnost JetBrains v listopadu 2021 představila nové IDE s názvem Fleet. Tento týden oznámila jeho konec. Od 22. prosince 2025 již nebude možné Fleet stáhnout.
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.
#include <stdbool.h>
...
typedef struct {
int sprite;
int walk_speed;
int ticks;
bool revealed = false;
int hp;
int an;
int dn;
} Enemy;
void initEnemy(Enemy *e)
{
e->sprite = 4;
e->walk_speed = 2;
e->ticks = 3;
e->revealed = true;
e->hp = 4;
e->an = 5;
e->dn = 6;
}
int main()
{
FILE *f = NULL;
Enemy e;
initEnemy(&e);
...
fwrite(&e, sizeof(Enemy), 1, f);
...
Kompiluji pomoci gcc, všechno funguje jak má, kompilátor si nestěžuje, nicméně když prográmek proženu přes valgrind, začne křičet že ukládám neinicializovanou proměnnou:
==5347== 1 errors in context 1 of 1: ==5347== Syscall param write(buf) points to uninitialised byte(s) ==5347== at 0x410D0B3: __write_nocancel (in /lib/libc-2.17.so) ==5347== by 0x40B2FD0: _IO_file_write@@GLIBC_2.1 (in /lib/libc-2.17.so) ==5347== by 0x40B2EC4: new_do_write (in /lib/libc-2.17.so) ==5347== by 0x405B7E2: (below main) (in /lib/libc-2.17.so) ==5347== Address 0x403100d is not stack'd, malloc'd or (recently) free'd ==5347== Uninitialised value was created by a stack allocation ==5347== at 0x8048501: main (in /home/phaal/c_progs/loadsave)Způsobuje to ona Boolovska proměnná: bool revealed, pokud ji odstraním, nebo zaměním za int, tak si valgrind přestane stěžovat. Netuší někdo proč tomu tak je? Resp. kde dělám chybu, jak bych to mohl opravit? Dík
Řešení dotazu:
true Expands to the integer constant 1. false Expands to the integer constant 0.Každopádně, pokud použiju bit field, např.
unsigned int revealed :1, tak valgrind taky křičí že mi tam lítaji neinicializované bity.
Nejspíš budu muset použít celý 4 bajtový int. Eventuálně si ho můžu sám namakrovat na bool/true/false.
bool v stdbool.h je DEFINE na C99 typ _Bool.
To je číselný typ, který pojme jen a pouze hodnoty 0 a 1.
Na mém systému je sizeof(_Bool) 1, stejně jako sizeof(char), sizeof(int) tu mám 4.
To, že false je nějaká číselná konstanta (integer constant) neznamená,
že je typu int. 35U je třeba taky číselná konstanta,
ale typu unsigned int.
K tvému problému s valgrindem, ten je, jak ti již pověděl někdo přede mnou,
opravdu způsoben paddingem ve struktuře. Bude asi za tím boolem,
např. 3 bajty, aby následující int byl zarovnán (např. na 4B). Valgrind 'ví', že jsi
do toho paddingu nic nezapsal, ale fwrite() tu strukturu zapisuje včetně těch padding bajtů - ty
mají nějakou hodnotu, na kterou se nelze spolehnout. Můžou tam být nuly, ale třeba i část tvého hesla,
které v té aplikaci zadáváš
Řešením je strukturu zapsat do souboru prvek po prvku, nebo třeba
před manipulací zavolat nějaký memset(). Zápis prvek po prvku může být pomalejší ... i když fwrite() používá buffer,
může tam být nějaký zámek, overhead volání fce, ... závisí na aplikaci, ale u práci se soubory
to spíš bude brzdit disk, než volání fce. Zápis každý prvek zvlášť (když to zkombinuješ s intN_t typy)
by mohlo být 'lepší', protože to bude více (ehm, tak trochu) multiplatformní.
ty mají nějakou hodnotu, na kterou se nelze spolehnout. Můžou tam být nuly, ale třeba i část tvého hesla, které v té aplikaci zadávášToto pouze umlci valgrind, ale do souboru se stejne mohou zapsat libovolna data v paddingu, protoze po jakemkoliv zapisu do prvku struktury je hodnota paddingu nedefinovana. Prekladac tam klidne muze zapsat zpatky vase heslo pripadne memset odoptimalizovat uplne pryc, pokud pak nastavujete vsechny prvky struktury.Řešením je strukturu zapsat do souboru prvek po prvku, nebo třeba před manipulací zavolat nějaký memset().
Tiskni
Sdílej: