Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.
NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.
Předobjednat si lze nový jednodeskový počítač Arduino VENTUNO Q s předinstalovaným Ubuntu. S 16 GB LPDDR5 a 64 GB eMMC. Pro lokální LLM, agentní AI, počítačové vidění, robotiku…
Hexpair není nejlepší HEX editor na světě a ani se o to nesnaží. Zato je k dispozici kdykoliv a kdekoliv – všude tam, kde máte svůj Vim. Vznikl jako hobby projekt před pár měsíci a dospěl do stavu, kdy by mohl být užitečný širší komunitě. Přepnout do HEX režimu se dá i uprostřed rozdělané práce: Soubor, který už máte otevřený běžným vim file.md, jedním příkazem přepnete do HEX editoru a dalším příkazem ho můžete vrátit zpět do textu. Kurzor přitom
CERN dlouhodobě používal vlastní sestavení RHEL, ze kterého přešel na CentOS Stream. Federico Vaga a Nikos Tsipinakis ale nyní v přednášce na MiniDebConf Winterthur 2026 popisují plán probíhajícího přechodu na Debian pro řízení akcelerátorů. Důvodem k opuštění CentOS Stream jsou zachování zpětné kompatibility se starším hardwarem, kterou Red Hat narušuje, když tlačí sestavení balíčků pro novější verze architektury (x86-64), a nedostatečné nástroje pro sestavování vlastních balíčků a repozitářů.
UZDoom (Wikipedie), tj. fork GZDoom, byl vydán ve verzi 5.0.0. Videopředstavení na YouTube. Podrobný přehled novinek v Changelogu.
Příručka Linux From Scratch pro sestavení základního linuxového systému byla aktualizována v pravidelném půlročním termínu. Vydání 13.1 shrnuje přes 40 nových verzí balíčků a několik patchů. Navazující příručka Beyond Linux From Scratch s recepty pro sestavení dalších knihoven a aplikací zatím vydána nebyla, ačkoliv vývojová verze stále dostává aktualizace. Lze je číst online nebo stáhnout v HTML či PDF.
#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: