Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Vítáni jsou všichni, kdo se chtějí dozvědět více o naší práci, prostředí ve kterém pracujeme a o naší firemní kultuře. Letos se dveře otevřou 26. 11. 2025 v 16:00. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem naši inženýři v Praze pracují, jak spolupracujeme se zákazníky, partnery i studenty, proč máme rádi open source a co pro nás skutečně
… více »Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).
Jeff Quast otestoval současné emulátory terminálu. Zaměřil se na podporu Unicode a výkon. Vítězným emulátorem terminálu je Ghostty.
Amazon bude poskytovat cloudové služby OpenAI. Cloudová divize Amazon Web Services (AWS) uzavřela s OpenAI víceletou smlouvu za 38 miliard USD (803,1 miliardy Kč), která poskytne majiteli chatovacího robota s umělou inteligencí (AI) ChatGPT přístup ke stovkám tisíc grafických procesů Nvidia. Ty bude moci využívat k trénování a provozování svých modelů AI. Firmy to oznámily v dnešní tiskové zprávě. Společnost OpenAI také nedávno
… více »Konference Prague PostgreSQL Developer Day 2026 (P2D2) se koná 27. a 28. ledna 2026. Konference je zaměřena na témata zajímavá pro uživatele a vývojáře. Příjem přednášek a workshopů je otevřen do 14. listopadu. Vítáme témata související s PostgreSQL či s databázemi obecně, a mohou být v češtině či angličtině.
Byl vydán Devuan 6 Excalibur. Přehled novinek v poznámkách k vydání. Kódové jméno Excalibur bylo vybráno podle planetky 9499 Excalibur. Devuan (Wikipedie) je fork Debianu bez systemd. Devuan 6 Excalibur vychází z Debianu 13 Trixie. Devuan 7 ponese kódové jméno Freia.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu poprvé překročil 3 %, aktuálně 3,05 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 27,18 %. Procesor AMD používá 67,10 % hráčů na Linuxu.
Joel Severin v diskusním listu LKML představil svůj projekt linuxového jádra ve WebAssembly (Wasm). Linux tak "nativně" běží ve webovém prohlížeči. Potřebné skripty pro převod jsou k dispozici na GitHubu.
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: