Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.
Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.
Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).
V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.
Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.
Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.
Byl vydán Mozilla Firefox 126.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vylepšena byla funkce "Zkopírovat odkaz bez sledovacích prvků". Přidána byla podpora zstd (Zstandard). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 126 je již k dispozici také na Flathubu a Snapcraftu.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 11.0. Přehled novinek v aktualizované dokumentaci.
Byla vydána nová verze 24.0 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Wynsdey. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.
Byla představena oficiální rozšiřující deska Raspberry Pi M.2 HAT+ pro připojování M.2 periferii jako jsou NVMe disky a AI akcelerátory k Raspberry Pi 5. Cena je 12 dolarů.
ls -l >data.txt sh p2.exe -obsah souboru p2.exe main() { char radek[100]; char pismeno; float soucet,nasobek; int i; FILE *fd; FILE *fw; if((fd=fopen("data.txt","r"))==NULL) return; if((fw=fopen("SOUHRN.txt","w"))==NULL) return; soucet=0; printf("Zadejte pismeno, na ktere maji zacinat soubory:\n"); scanf("%c", &pismeno); while(!feof(fd)) /* vypis souboru */ { fgets (radek,100,fd); if(radek[56] == pismeno){ printf("%s\n",radek); fprintf(fw,"%s", radek); i=42; nasobek=1; while ((i-- > 30) && (radek[i] != ' ')){ soucet+=(radek[i]-48)*nasobek; nasobek*=10; } } } fclose(fd); fclose(fw); getchar(); system("pause"); }
<pre>
a </pre>
tagy.
#include<stdio.h>
sh p2.exe
ti nebude fungovat. Jednak je v unixech koncovka exe zbytečná a druhak se ten soubor spustí ./p2
(./p2.exe
, když už to musí být).$ gcc -c p2.c -o p2.o $ gcc p2.o -o p2.exe $ ls -l >data.txt $ cat data total 16 -rw-r--r-- 1 misak users 0 Jan 3 22:28 SOUHRN.txt -rw-r--r-- 1 misak users 0 Jan 3 22:28 data.txt -rw-r--r-- 1 misak users 744 Jan 3 22:20 p2.c -rwxr-xr-x 1 misak users 7590 Jan 3 22:20 p2.exe -rw-r--r-- 1 misak users 1680 Jan 3 22:20 p2.o $ ./p2.exe Zadejte pismeno, na ktere maji zacinat soubory: p $ cat SOUHRN.txt $Tady jsou změny, které jsem musel udělat:
$ diff p2.c.original p2.c 0a1 > #include<stdio.h> 22c23 < if (radek[56] == pismeno) --- > if (radek[44] == pismeno) 39c40 < system ("pause"); --- > //system ("pause");Pokud ti nejede žádný unix, co takhle zkusit cygwin? Nebo vmware player s nějakým nainstalovaným unixem?
ls -l
začínal na 45. sloupci a ne 57., ale teď se dívám, že na CentOS je to taky 56, takže ten řádek raději neměň, pokud ti to funguje
ls -l
'. K procházení adresáře slouží opendir()
, readdir()
a closedir()
, případně, nechce-li se tazatel zabývat přenositelností, lze uvažovat o použití scandir()
.
ls -l
. Sice je to přitažené za vlasy, ale některá zadání taková bývají.
radek[56]
, aniž by se ověřilo, že je řádek aspoň tak dlouhý, což zrovna hned první nebude. Sice je to ve staticky alokovaném bufferu, takže nehrozí pád programu nebo zneužití, ale to, zda se bude první řádek kopírovat nebo ne, je de facto dáno náhodou. Také je podivné, že se celou dobu něco sčítá do proměnné soucet
(proč je vlastně typu float
?), ale hodnota se nikde nepoužije. Rozumnější verze programu by mohla vypadat např. takto:
#include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) { DIR* dir; struct dirent* de; struct stat info; unsigned long long size; size_t prefixlen; const char* pgmname; const char* p; int R; pgmname = argv[0]; for (p=argv[0]; *p; p++) if (*p == '/') pgmname = p+1; if (argc < 2) { fprintf(stderr, "usage: %s directory [prefix]\n", pgmname); return 1; } if (argc == 3) prefixlen = strlen(argv[2]); else prefixlen = 0; dir = opendir(argv[1]); if (!dir) { perror(pgmname); return 2; } R = chdir(argv[1]); if (R < 0) { perror(pgmname); return 3; } size = 0; while ((de = readdir(dir))) if (prefixlen==0 || !strncmp(de->d_name, argv[2], prefixlen)) { stat(de->d_name, &info); if (S_ISREG(info.st_mode)) { size += info.st_size; puts(de->d_name); } } closedir(dir); printf("Total size: %llu\n", size); return 0; }
ls
, nastavení locale a přesném vyvážení mnoha dalších okolnostífloat
(které nakonec stejně nepoužije)Tiskni Sdílej: