Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
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
A nebo ze stovek jiných míst na netu.
#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: