Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.
Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.
Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Společnost Kaspersky vydala svůj bezplatný Virus Removal Tool (KVRT) také pro Linux.
Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.4.0 shrnující změny za šest let vývoje. Novinky zahrnují podporu Unicode jako výchozí, export do ePub či DocBook 5 a velké množství vylepšení uživatelského rozhraní a prvků editoru samotného (např. rovnic, tabulek, citací).
Byla vydána (𝕏) nová verze 7.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.
Organizace Apache Software Foundation (ASF) vydala verzi 22 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Společnost AMD na veletrhu Computex 2024 představila (YouTube) mimo jiné nové série procesorů pro desktopy AMD Ryzen 9000 a notebooky AMD Ryzen AI 300.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána ve verzi 4.10.0 . Přehled novinek v ChangeLogu. Vypíchnout lze Wayland backend pro Linux.
Národní superpočítačové centrum IT4Innovations s partnery projektu EVEREST vydalo sadu open source vývojových nástrojů EVEREST SDK pro jednodušší nasazení aplikací na heterogenních vysoce výkonných cloudových infrastrukturách, zejména pro prostředí nabízející akceleraci pomocí FPGA.
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: