Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Spolek vpsFree.cz vydal statistiky týkající se distribucí nasazených na serverech členů. V dlouhodobém pohledu je zřejmé, že většina uživatelů z původního CentOS přechází na Rocky Linux. Pozoruhodný je také nárůst obliby distribuce NixOS, která dnes zaujímá třetí místo po Debianu a Ubuntu.
Google minulý týden představil Material 3 Expressive, tj. novou verzi svého designového jazyka Material Design pro Android 16 a Wear OS 6.
Byl vydán Debian 12.11, tj. jedenáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Makepad dospěl do verze 1.0 (𝕏). Jedná se o multiplatformní open source UI framework pro Rust napsaný v Rustu.
Konference OpenAlt 2025 hledá přednášející. Proběhne o víkendu 1. a 2. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 153 (pdf)
Byl publikován květnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.
#define BLOCK_SIZE 1024 char block1[BLOCK_SIZE]; char block2[BLOCK_SIZE]; FILE *fr1, *fr2; int readed; int same_file = 0; fr1= fopen(config_file,"rb"); fr2= fopen("temp_config_bin","rb"); while( ((readed = fread(block1, sizeof(char), BLOCK_SIZE, fr1) ) == BLOCK_SIZE) ){ if( fread(block2, sizeof(char), BLOCK_SIZE, fr2) == BLOCK_SIZE ){ if( memcmp(block1, block2, BLOCK_SIZE) != 0 ){ same_file = 1; } } else { same_file = 1; if(ferror(fr2) != 0) printf("%s: error: can't read file temp_config_bin !\n", prog_name); } }
#define BUF_SIZE 1024
FILE *fr1, *fr2;
char buf1[BUF_SIZE], buf2[BUF_SIZE];
size_t rs1, rs2;
int same_files = 1;
fr1 = fopen...
fr2 = fopen...
while(!(feof(fr1) || feof(fr2))) {
rs1 = fread(buf1, sizeof(char), BUF_SIZE, fr1);
rs2 = fread(buf2, sizeof(char), BUF_SIZE, fr2);
if(rs1 != rs2 || memcmp(buf1, buf2, BUF_SIZE) != 0) {
same_files = 0;
break;
}
}
memcmp
měl použít rs1
(nebo rs2
), jinak budete u posledního bloku (není-li délka souboru násobkem BUF_SIZE
) porovnávat i části bufferů, do kterých se nic nenačetlo. Pokud bude poslední blok zároveň prvním (délka souborů stejná a menší než BUF_SIZE
), může se stát, že váš program označí stejné soubory za různé.
P.S. sizeof(char)
je vždy 1, je to definováno normou; a z hlediska efektivity bude vhodnější fread(buf1, BUF_SIZE, 1, fr1)
než fread(buf1, 1, BUF_SIZE, fr1)
info '(libc)Stream Buffering'
stat()
na tie dve subory, zistit ich velkosti a porovnat ich. A taktiez by si mohol z struct stat
vytiahnut velkost bloku suboru na danom fs a tym (mozno aj rapidne) urychlit citanie.
#import <sys/stat.h>
struct stat sb1, sb2;
size_t buf_size;
stat(filename1, &sb1);
stat(filename2, &bs2);
if(sb1.st_size == sb2.st_size) {
buf_size = sb1.st_blksize;
// dynamicky alokovat buf a buf2, napr. cez alloca()
// zvysok codu (fopen, while, fclose)
} else {
same_files = 0;
}
#include <stdio.h> #include <stdlib.h> #include <sys/stat.h> int main(int argc, char *argv[]) { FILE *fr1, *fr2; char *buf1, *buf2; size_t rs1, rs2; int same_files = 1; struct stat sb1, sb2; size_t buf_size; stat("file1.txt", &sb1); stat("file2.txt", &sb2); if(sb1.st_size == sb2.st_size) { buf_size = sb1.st_size; buf1= alloca(buf_size); buf2= alloca(buf_size); fr1 = fopen("file1.txt","rb"); fr2 = fopen("file2.txt","rb"); while(!(feof(fr1) || feof(fr2))) { rs1 = fread(buf1, sizeof(char), buf_size, fr1); rs2 = fread(buf2, sizeof(char), buf_size, fr2); if(rs1 != rs2 || memcmp(buf1, buf2, buf_size) != 0) { same_files = 0; break; } } fclose(fr1); fclose(fr2); } else { same_files= 0; printf("Size is not the same.\n"); system("PAUSE"); exit(0); } same_files?printf("The file is not different\n"):printf("The file is different\n"); system("PAUSE"); return 0; }
Tiskni
Sdílej: