Projekt microDMG Racer na Kickstarteru nevyšel, tak se autor rozhodl uvolnit na ESP32 postavené autíčko i ovladač jako open source.
Byl vydán TrueNAS SCALE 24.10 „Electric Eel“. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Byla vydána nová verze 24.10.29 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nově s podporou AI (whisper.cpp) pro generování titulků. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Wasmer byl vydán ve verzi 5.0. Jedná se o běhové prostředí pro programy ve WebAssembly. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
X.Org X server 21.1.14 a Xwayland 24.1.4 řeší bezpečnostní chybu CVE-2024-9632 využitelnou k eskalaci práv. Pochází z roku 2006 (xorg-server-1.1.1).
Společnost Apple představila nový Mac mini. Menší, výkonnější a zároveň uhlíkově neutrální. S M4 nebo M4 Pro.
Byla vydána (𝕏) říjnová aktualizace aneb nová verze 1.95 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.95 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byl vydán Mozilla Firefox 132.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. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 132 je již k dispozici také na Flathubu a Snapcraftu.
Jan Gruntorád byl včera večer ve Vladislavském sále Pražského hradu během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) vyznamenán prezidentem republiky medailí Za zásluhy 1. stupně za zásluhy o stát v oblasti techniky. Gruntorád je český informatik a manažer, patří mezi průkopníky internetu v České republice a je často označovaný jako 'Otec českého internetu'. V roce 2021 byl uveden jako první Čech do Internetové síně slávy. Mezi léty 1996 až 2021 byl ředitelem sdružení CESNET.
Bylo oznámeno (cs) vydání Fedora Linuxu 41. Ve finální verzi vychází pět oficiálních edic: Workstation pro desktopové, Server pro serverové, Fedora Cloud pro cloudové nasazení, IoT pro internet věcí a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich je k dispozici také Silverblue a Kinoite a alternativní desktopy, např. KDE Plasma, Xfce nebo LxQt, a k tomu laby – upravené vydání Fedory například pro designery, robotiku, vědecké použití atd. Přehled novinek ve Fedora Workstation 41 a Fedora KDE 41 na stránkách Fedora Magazinu.
*********** server.c ************* #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <fcntl.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #define SOCK_PATH "socket" struct server_sock { int sock; /*socket serveru*/ int sock_c[256]; /*klientske sockety*/ int len; /*velikost vyhrazene pameti*/ int t; int n; /*pocet klientskych socketu*/ struct sockaddr_un local, remote; }; struct server_sock create_sock(void); struct server_sock create_sock(void) { struct server_sock server; char str[100]; if ((server.sock = socket(PF_UNIX, SOCK_STREAM, 0)) == -1) { fprintf(stdout, "socket : %s\n",strerror(errno)); exit(1); } server.local.sun_family = PF_UNIX; strcpy(server.local.sun_path, SOCK_PATH); unlink(server.local.sun_path); server.len = strlen(server.local.sun_path) + sizeof(server.local.sun_family); if (bind(server.sock, (struct sockaddr *)&server.local, server.len) == -1) { fprintf(stdout, "bind : %s\n",strerror(errno)); exit(1); } if (listen(server.sock, 10) == -1) { fprintf(stdout, "listen on server socket : %s\n",strerror(errno)); exit(1); } return(server); } int main(void) { struct server_sock server; char str[100]; int i = 0, n; int sockn = 0; int len; int sock; fd_set sock_set; /*vytvoreni socketu*/ server = create_sock(); sock = server.sock; //tv.tv_sec = 3; //tv.tv_usec = 0; printf("Cekam na spojeni...\n"); len = sizeof(server.remote); FD_ZERO(&sock_set); FD_SET(sock, &sock_set); while (1) { //FD_ZERO(&sock_set); //FD_SET(sock, &sock_set); for (i = 0; i < sockn; i++) FD_SET(server.sock_c[i], &sock_set); if (select(sock + 1, &sock_set, NULL, NULL, NULL) < 0) { fprintf(stdout, "select : %s\n",strerror(errno)); close(server.sock); unlink(SOCK_PATH); exit(1); } if (FD_ISSET(server.sock, &sock_set)) { len = sizeof(server.remote); if ((server.sock_c[sockn] = accept(server.sock, (struct sockaddr *)&server.remote, &len)) == -1) { fprintf(stdout, "accept : %s\n",strerror(errno)); close(server.sock); unlink(SOCK_PATH); exit(1); } FD_SET(server.sock_c[sockn], &sock_set); server.n = sockn++; fprintf(stdout, "Connected.\n"); } for (i = 0; i < sockn; i++) { if (FD_ISSET(server.sock_c[i], &sock_set)) { n = recv(server.sock_c[i], str, 100, 0); if (n <= 0) { fprintf(stdout, "recv : %s\n",strerror(errno)); FD_CLR(server.sock_c[i], &sock_set); close(server.sock_c[i]); exit (1); } printf("DDD: send\n"); if (send(server.sock_c[i], str, n, 0) <= 0) { fprintf(stdout, "send : %s\n",strerror(errno)); close(server.sock_c[i]); exit (1); } } } printf("go to back - select\n"); } close(server.sock); unlink(SOCK_PATH); return (0); } *************konec**************** Omlouvam se za delku prikladu, ale pro nazornost jej posilam cely. Dekuji za kazdou radu.
Prvý parameter funkcie select je počet popisovačovjj, tam bude určitě chyba. Ještě bych se zamyslel nad těmi zakomentovanými řádky na začátku while cyklu, mylím, že by tam být měly (nezakomentované)
poll()
jako náhradu select()
, jeho použití mi připadá trochu přehlednější.
Když už jsme u těch osobních preferencí, tak z hlediska přehlednosti bych to seřadil asi takto:
fork()
pthread_create()
poll()
select()
Tedy o obou bych uvažoval až ve chvíli, kdy bych měl vážné důvody nepoužít samostatné procesy nebo thready a jen pro specifické služby (velmi rychlé vyřízení požadavku, nevadí serializace).
Tiskni Sdílej: