Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.
OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).
Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek
… více »Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.
Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.
Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.
Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.
Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …
Google Chrome 149 byl prohlášen za stabilní. Nejnovější stabilní verze 149.0.7827.53 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře.
Dobry den, trochu si hraji se socketama v linuxu, takovy maly chat jen mezi dvema pocitaci, jednoduse se pripojim k druhemu stroji, ten muze poslat data nebo naopak je mohu poslat ja.
Mam trochu problem jak do jednoho programu vmesnat i to odesilani, umim prijimat data, cekam v nekonecne smycce a ctu data ze socketu, pokud se nejaka objevi tak je jen zobrazim.
Lze nejak zaridit neblokujici volani read? Abych mohl dovolit uzivateli v tu chvili i zadavat data, ukoncit enterem a odeslat?
Nebo lze nejak zaridit, aby se po prichodu dat vyvolava nejaka mnou definovana fce? Nebo treba signal.
Nebo tuto ulohu musim rozdeli do vlakna ve kterem budu jen cist data ze site a v hlavnim main programu budu cekat na uzivatelsky vstup a ten odesilat do site?
Jo abych nezapomel, pisu to v jazyce C.
Dekuji za info jak toto vyresit.
O_NONBLOCK rovnou při volání open() nebo ho následně nastavit pomocí fcntl(). U socketu to asi jde jen tím druhým způsobem. Obvykle dávám přednost čtení v samostatném threadu nebo procesu, ale ve vašem případě bude možná neblokující čtení v kombinaci s poll() (nebo select()) jednodušší.
time (nebo daytime, nikdy si nepamatuji, která je která), mp-poll funguje pomocí poll(), mp-fork používá samostatné procesy a mp-thread samostatná vlákna. Není to sice zrovna to, co byste potřeboval (tahle služba od klienta nic nečte), ale třeba vám to k něčemu bude.
int sock;
...
struct timeval timeout;
timeout.tv_usec = 0;
char buffer[BUFFER_SIZE];
ssize_t ret;
fd_set sock_set;
FD_ZERO(&sock_set);
while(1)
{
timeout.tv_sec = TIMEOUT;
/* nastaveni deskriptoru ktere budem sledovat */
FD_SET(sock, &sock_set);
FD_SET(STDIN_FILENO, &sock_set);
/* sledovani deskriptoru */
if((ret = select(MAX(sock, STDIN_FILENO)+1, &sock_set, 0, 0, &timeout)) == -1)
/* osetreni chyby */
/* pokud lze cist ze socketu */
if(FD_ISSET(sock, &sock_set))
{
if((ret = recv(sock, buffer, BUFFER_SIZE, O_NONBLOCK) == -1)
/* osetreni chyby */
if(ret == 0)
break;
if((ret = write(STDOUT_FILENO, buffer, ret)) == -1)
/* osetreni chyby */
}
/* pokud lze cist ze std. vstupu */
if(FD_ISSET(STDIN_FILENO, &sock_set))
{
if((ret = read(STDIN_FILENO, buffer, BUFFER_SIZE)) == -1)
/* osetreni chyby */ */
if(ret == 0)
break;
if((ret = send(sock, buffer, ret, O_NONBLOCK) == -1)
/* osetreni chyby */
}
...
}
int oldFlag = fcntl( sock_id, F_GETFL, 0 ); fcntl( sock_id, F_SETFL, oldFlag | O_NONBLOCK );
Tiskni
Sdílej: