Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Zdravim mohl byste mi nekdo poradit jak se da resit programek v cecku abych si pri spusteni navolil v prikazove radce jaky pseudo terminal se bude pouzivat ( ptsX ). Program se pak propoji na dalsi pseudo terminal a navzajem si posilaji data.
Presne zadani zde:
........................................Napište program, teletype. Tento program otevře sériový port a vyšle na něj každý z klávesnice zapsaný znak a vypíše každý jednotlivý znak ze sériové linky přijatý. Pomocí sériového kabelu propojte COM1 a COM2 a spusťte 2 instance programu teletype. Který COM se bude používat specifikujte z příkazové řádky při spouštění programu.
________________Vim jak udelat abych se propojil na terminal a cetl z nej znaky ale nevim jak udelat aby jsme mohl navzajem mezi terminali prijimat i odesilat. Snad pomoci fce select? Prosim poradte, ( nechci to naprogramovat, jen nakopnout), zatim je to pro me spanelska vesnice. Dekuji
EXAMPLE #include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main(void) { fd_set rfds; struct timeval tv; int retval; /* Watch stdin (fd 0) to see when it has input. */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Wait up to five seconds. */ tv.tv_sec = 5; tv.tv_usec = 0; retval = select(1, &rfds, NULL, NULL, &tv); /* Don't rely on the value of tv now! */ if (retval == -1) perror("select()"); else if (retval) printf("Data is available now.\n"); /* FD_ISSET(0, &rfds) will be true. */ else printf("No data within five seconds.\n"); return 0; }
#define BUF_LEN 200 struct termios set_attributes; int main(int argc, char *argv[]) { char *ttyID; char buffer[BUF_LEN]; int result; fd_set terminal, klavesnice; struct timeval timeout; /* Struktura s časovým limitem */ size_t len; ttyID = argv[1]; /* Nacteme ttyID pseudo terminalu */ int tty = open(ttyID, O_RDWR); // nastav nove parametry terminalu tcgetattr(tty, &set_attributes); set_attributes.c_lflag &= ~ICANON; // necekej na cely radek (noncanonical) //set_attributes.c_lflag &= ~ECHO; // nezobrazuj ctene znaky set_attributes.c_cc[VMIN] = 1; set_attributes.c_cc[VTIME] = 0; tcsetattr(tty, TCSAFLUSH, &set_attributes); while(1){ FD_ZERO(&terminal); /* Odstranime nahodna data z mnoziny */ FD_ZERO(&klavesnice); /* Odstranime nahodna data z mnoziny */ FD_SET(fileno(stdin), &klavesnice); /* Naplnime mnozinu stdin */ FD_SET(tty, &terminal); /* Naplnime mnozinu ttyckem */ // Nadefinovany casovy interval 4 sekundy a 5 milis.. timeout.tv_sec = 4; timeout.tv_usec = 50000; // Zavolám select (V Linuxu musím mít nastavenou proměnnou FD_SETSIZE) --- tezko rict co je na tom pravdy result = select(FD_SETSIZE, &klavesnice, &terminal, NULL, &timeout); switch(result){ case -1: perror("select"); /* Nastala chyba */ exit(1); case 0: printf("timeout \n"); /* Vypršel časový limit */ break; default: /* Obsluha soketu. Zde je možné vytvořit nové vlákno nebo proces, který obslouží událost na soketu. Server pak je vícevláknový. */ if (FD_ISSET(fileno(stdin), &klavesnice)) { /* Data available on stdin */ char a; read(fileno(stdin), &a, sizeof(a)); write(tty, &a, sizeof(a)); } if (FD_ISSET(tty, &terminal)) { char c; read(tty, &c, sizeof(c));/*:!*/ if(c == '\004') { // `C-d' // program skonci az prijme Ctrl-D break; } else { putchar(c); // vyprazdni vystupni buffer // a zpusob tak zobrazeni znaku // i v nekanonickem modu terminalu fflush(stdout); } } break; } } }
. . . switch(select(1, &rfds, NULL, NULL, &tv)) { case -1: perror("select()"); return -1; /* no break */ case 0: printf("No data in 5 sec.\n"); break; default: printf("DAATAAA!!!.\n"); /* FD_ISSET(0, &rfds) will be true. */ break; } return 0; . . .
hlavicky void *readFromTERMINAL( void *ptr ) { char *terminal; terminal = (char *) ptr; int tty = open(terminal, O_RDONLY);/*:!*/ if(tty < 0) { perror("ERROR open device /dev/ttyS1"); exit(EXIT_FAILURE); } while(1) { char c; read(tty, &c, sizeof(c)); if(c == '\004') { // `C-d' // program skonci az prijme Ctrl-D close(tty); break; } else { putchar(c); // vyprazdni vystupni buffer // a zpusob tak zobrazeni znaku // i v nekanonickem modu terminalu fflush(stdout); } } close(tty); } int main(int argc, char *argv[]) { pthread_t thread1, thread2; char *parametr; parametr = argv[1]; // vlakno cte z daneho portu a vypisuje na terminal pthread_create( &thread1, NULL, readFromTERMINAL, parametr); pthread_join(thread1, NULL); printf("\nKonec\n"); return EXIT_SUCCESS; }
moje_skvela_utilita </dev/bagr/jahoda/konzole >/dev/bagr/jahoda/konzole
Tiskni
Sdílej: