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.
Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.
O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.
Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy
… více »
char *pole_soubor[254];
...
...
pocet_radku++;
if (pocet_radku==254) {
if ((pole_soubor=realloc (pole_soubor, pocet_radku*2))==NULL) {
fprintf (stderr,"Chyba realokace!\n");
return 1;
}
pole_soubor[pocet_radku]=(char *) malloc (strlen (radek_zaloha)+1);
pole_soubor[pocet_radku]=radek_zaloha;
}
.
pole_soubor jsou řádky, kam načítáš, a radek_zaloha je jeden řetězec, ve kterém je uložen zrovna načtený řádek, tak musíš použít:
strcpy(pole_soubor[pocet_radku], radek_zaloha);
místo pole_soubor[pocet_radku]=radek_zaloha;.
Realokace toho pole vypadá dobře.
man realloc
pocet_radku, jestlize se dostane na 254 tak se ma pole realokovat na vyssi hodnotu.Alokace pro kazdy radek mam udelane a funkcni. Opravdu problem je v tom ze nejak nechapu vami uvedeny bod 2 a 3. To bude asik to proc se s tim nedokazu domluvit. Nyni jsem se dostal do nasledujici podminky if ((pole_soubor=realloc (pole_soubor, sizeof (char)*pocet_radku*2))==NULL) a dostavam pri prekdladu nasledujici hlasku incompatible types in assignment coz prelozeno znamena>>Nekompatybilni typ v priprazeni. To vsechno chapu ale jaky tam mam dat typ!? Jsem z toho magor jak to udelat.Prosim poradte nekdo nejak tak jako pro blbe(mne).
char **pole_radku;
/*definujeme pole polí znaků*/ char **pole_radku; /*alokujeme pole pro pocet_radku řádků*/ pole_radku = (char **) malloc (sizeof(char *) * pocet_radku);
pole_radku je potom možné použít jako parametr funkce realloc, kdežto staticky definované pole char *pole_radku[254] realokovat nejde.
bod 3: velikost je v bajtech, ale každý řádek je ukazatel na pole znaků, tzn. má velikost 4B. Tím pádem bys svým reallocem velikost změnil na pocet_radku/4 řádků. Správné volání je tedy:
pole_radku = (char **) realloc (pole_radku, sizeof(char*) * pocet_radku *2);
(doufám, že tam nemám chybu
)
Jinak doporučuju nastudovat si něco o pointerech a namalovat si to.
#include <stdio.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <malloc.h>
int getNthLine(int n, int *lines, int termcount, char *file_ptr, int filesize, char **line_ptr, int *linelen){
int begin, end;
if (n == 0){
begin = 0;
}
else{
begin = lines[n - 1] + 1;
}
if (n == termcount){
end = filesize;
}
else{
end = lines[n];
}
*line_ptr = file_ptr + begin;
*linelen = end - begin;
return 0;
}
int main(int argc, char **argv){
char *filename = argv[1]; /*UGLY*/
char *file_ptr = NULL;
int *lines = NULL;
char *line_ptr = NULL;
int fdstdout, linelen, filesize, fd, i, termcount = 0, allocated = 0;
struct stat filestat;
int alloc_ahead = getpagesize(); /* allocated memory will always be
multiple of page size*/
fd = open(filename, O_RDONLY);
fstat(fd, &filestat);
filesize = filestat.st_size;
printf("size is %d bytes\n", filesize);
file_ptr = mmap(0, filesize, PROT_READ, MAP_PRIVATE, fd, 0);
if (!file_ptr){
printf("mmap failed\n");
return -1;
}
close(fd);
for (i=0; i<filesize; i++){
if ('\n' == file_ptr[i]){
if (termcount >= allocated){
allocated = termcount + alloc_ahead;
lines = (int *)realloc(lines, allocated*sizeof(lines));
printf("(re)allocated memory for %d items\n", allocated);
}
lines[termcount] = i;
termcount++;
}
}
fdstdout = fileno(stdout);
for(i=0; i<=termcount; i++){
getNthLine(i, lines, termcount, file_ptr, filesize, &line_ptr, &linelen);
printf("%3d.line(%3d bytes): ", i + 1, linelen);
fwrite(line_ptr, linelen, 1, stdout);
fwrite("\n", 1, 1, stdout);
}
munmap(file_ptr, filestat.st_size);
return 0;
}
Tiskni
Sdílej: