Microsoft Defender nově podporuje linuxové desktopy.
Oficiální Epic Games Launcher je v nové preview verzi poprvé dostupný i pro Linux (FAQ). Pracuje se na novém Easy Anti-Cheatu pro Linux (EAC Linux v2) a podpoře hry Fortnite na Linuxu.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).
Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.
KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.
Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 10.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.
Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.
Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.
… více »Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).
*********** 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: