Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.11.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest (Wikipedie) v říjnu loňského roku přejmenovaný na Luanti.
V stredu 19. 02. 2025 o 10:00h bude spustený jarný webinár zdarma. Na tomto webinári si ukážeme praktické ukážky monitorovania Prometheus endpointov s využitím nástroja Zabbix. Účastníci sa dozvedia, ako nastaviť a konfigurovať Zabbix na zber dát z prometheus exporterov vrátane vytvárania LLD pravidiel. Tento webinár je určený pre mierne pokročilých administrátorov Zabbixu. Registrácia na stránke: Axians Slovakia. Zoznam všetkých webinárov: Axians Slovakia webináre.
Byla vydána beta verze GNOME 48. Vyzkoušet lze instalační ISO GNOME OS. Vydání GNOME 48 je plánováno na březen.
Bochs (Wikipedie), tj. emulátor počítačů typu x86 a x86-64, byl vydán ve verzi 3.0.
Věříte své kalkulačce? Kolik je (10^100) + 1 − (10^100)? A kolik 1%−1%?
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
FlappyFavi, hra Flappy Bird v ikoně Favicon. Nefunguje na mobilech.
Byly vyhlášeny výsledky (YouTube) 28. ročníku D.I.C.E. (Design, Innovate, Communicate, Entertain) Awards: Hrou roku 2024 je Astro Bot.
Všem na AbcLinuxu vše nejlepší k Valentýnu aneb Dni lásky ke svobodnému softwaru (I love Free Software Day, Mastodon, 𝕏).
Vývojáři openSUSE Tumbleweed oznámili, že u nových instalací se ve výchozím stavu přechází z AppArmor na SELinux. Uživatelé, kteří chtějí zůstat na AppArmor si mohou AppArmor vybrat v instalátoru.
PRINT "Hledani shody ve dvou souborech" INPUT "Kolik bytu? ", delka INPUT "1. soubor: ", soubor1$ INPUT "2. soubor: ", soubor2$ PRINT "Preruseni: Esc" a$ = " " b$ = " " OPEN soubor1$ FOR BINARY AS #1 OPEN soubor2$ FOR BINARY AS #2 FOR i = 1 TO LOF(1) - delka + 1 FOR j = 1 TO LOF(2) - delka + 1 IF INKEY$ = CHR$(27) THEN GOTO konec GET #1, i, a$ GET #2, j, b$ IF a$ = b$ THEN pocet = 1 FOR k = 1 TO delka - 1 GET #1, i + k, a$ GET #2, j + k, b$ IF a$ = b$ THEN pocet = pocet + 1 ELSE k = delka END IF NEXT k IF pocet = delka THEN PRINT i, j, FOR k = 0 TO delka - 1 GET #1, i + k, a$ PRINT a$; NEXT k PRINT END IF END IF NEXT j NEXT i CLOSE #2 CLOSE #1 konec: END
#include <stdio.h> #include <stdlib.h> int lof(FILE *soubor) { fseek(soubor,0,SEEK_END); return ftell(soubor); } void nacti(FILE *soubor,char *text,int pocet) { int i; rewind(soubor); for (i=0;i<pocet;++i) text[i]=fgetc(soubor); text[i]='\0'; } int main(void) { int i,j,c1,c2,f=0,shoda,delka,v1,v2,velikost1,velikost2; char nazev1[200],nazev2[200],*text1,*text2; FILE *soubor1,*soubor2; /* vstupni dialog */ fprintf(stderr,"Hledani shody ve dvou binarnich souborech\n"); fprintf(stderr,"Kolik bytu? "); scanf("%d",&delka); if (delka>0) { fprintf(stderr,"1. soubor: "); scanf("%s",nazev1); fprintf(stderr,"2. soubor: "); scanf("%s",nazev2); if ((soubor1=fopen(nazev1,"r"))) { if ((velikost1=lof(soubor1))) { if ((soubor2=fopen(nazev2,"r"))) { if ((velikost2=lof(soubor2))) { printf("\n%s\n\t%s\n",nazev1,nazev2); /* alokace pameti */ text1=malloc(velikost1+1); text2=malloc(velikost2+1); v1=velikost1-delka+1; v2=velikost2-delka+1; if (!text1 || !text2) { fprintf(stderr,"Nedostatek pameti, pomale hledani!\n\a"); /* primo na disku */ for (rewind(soubor1),i=0;i<v1;++i) { c1=fgetc(soubor1); for (rewind(soubor2),j=0;j<v2;++j) { c2=fgetc(soubor2); if (c1==c2) { for (shoda=0;c1==c2 && shoda<delka;++shoda) { c1=fgetc(soubor1); c2=fgetc(soubor2); } if (shoda==delka) { ++f; fseek(soubor1,i,0); printf("%d\t%d\t",i,j); for (shoda=0;shoda<delka;++shoda) putchar(fgetc(soubor1)); putchar('\n'); } fseek(soubor1,i+1,0); fseek(soubor2,j+1,0); } } } } else { /* nacteni do pameti */ nacti(soubor1,text1,velikost1); nacti(soubor2,text2,velikost2); for (i=0;i<v1;++i) for (j=0;j<v2;++j) { for (shoda=0;text1[i+shoda]==text2[j+shoda] && shoda<delka;++shoda); if (shoda==delka) { ++f; printf("%d\t%d\t",i,j); for (shoda=0;shoda<delka;++shoda) putchar(text1[i+shoda]); putchar('\n'); } } } if (text1) free(text1); if (text2) free(text2); if (f) printf("Nalezeno %d shodnych useku s delkou %d bytu.\n",f,delka); else printf("Nenalezena zadna shoda!\n"); } else fprintf(stderr,"%s nic neobsahuje!\n\a",nazev2); fclose(soubor2); } else fprintf(stderr,"%s nelze cist!\n\a",nazev2); fclose(soubor1); } else fprintf(stderr,"%s nic neobsahuje!\n\a",nazev1); } else fprintf(stderr,"%s nelze cist!\n\a",nazev1); } return 0; }Výstup do souboru si můžeš klidně přesměrovat pomocí >, chybová hlášení tam nebudou, jen samotné výsledky :)
NELZE CIST!
commons() { # soubor1 (nejlépe ten menší), soubor2, délka
grep -oF -f \
<( strings -n$3 $1 | while read l; do for ((i=0;i<${#l}-${#l}%$3;i++)); do echo ${l:i:$3}; done; done ) \
<(strings -n$3 $2) | strings -n$3 | sort -u
}
použití:
$ commons /bin/grep /bin/bash 77
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
strings
o parametr -eS
a aby fungoval grep, rourou převést na utf8 nebo nastavit proměnnou LANG=C, potom bude grep porovnávat binárně.
Podobně pokud je hledaný řetězec v souborech kódován v 16 nebo 32 bitech, viz man 1 strings
.
A tvoje zadarmo si strc za klobuk,uz len tento pojem svedci o tom,v akych intenciach rozmyslas.Opak je pravdou.
enca
). To je neocenitelné např. při analýze binárních souborů vytvořených windows aplikacemi, ty běžně používají různá kódování i znakové sady. Tam by porovnávání bajt po bajtu bylo k ničemu.
Tiskni
Sdílej: