Byl odhalen supply chain attack na Notepad++: útočníci kompromitovali hosting Notepad++ a vybrané dotazy na aktualizace přesměrovávali na servery pod jejich kontrolou. Doporučuje se stáhnout instalátor a přeinstalovat.
Francouzská veřejná správa má v rámci vládní iniciativy LaSuite Numérique ('Digitální sada') v plánu od roku 2027 přestat používat Microsoft Teams a Zoom a přejít na videokonferenční platformu Visio, hostovanou na vlastním hardwaru. Konkrétně se jedná o instance iniciativou vyvíjeného open-source nástroje LaSuite Meet, jehož centrální komponentou je LiveKit. Visio nebude dostupné pro veřejnost, nicméně LaSuite Meet je k dispozici pod licencí MIT.
Eben Upton oznámil další zdražení počítačů Raspberry Pi: 2GB verze o 10 dolarů, 4GB verze o 15 dolarů, 8GB verze o 30 dolarů a 16GB verze o 60 dolarů. Kvůli růstu cen pamětí. Po dvou měsících od předchozího zdražení.
Shellbeats je terminálový hudební přehrávač pro Linux a macOS, který umožňuje vyhledávat a streamovat hudbu z YouTube, stahovat odtud skladby a spravovat lokální playlisty. Pro stahování dat z YouTube využívá yt-dlp, pro práci s audiostreamy mpv. Je napsán v jazyce C a distribuován pod licencí GPL-3.0, rezpozitář projektu je na GitHubu.
Byla vydána nová verze 26.1.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. S podporou hardwarového dekódování videa. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl po deseti měsících od vydání verze 1.3 vydán ve verzi 2.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Guido van Rossum, tvůrce programovacího jazyka Python, oslavil 70. narozeniny. Narodil se 31. ledna 1956 v nizozemském Haarlemu.
OpenClaw je open-source AI asistent pro vykonávaní různých úkolů, ovládaný uživatelem prostřednictvím běžných chatovacích aplikací jako jsou například WhatsApp, Telegram nebo Discord. Asistent podporuje jak různé cloudové modely, tak i lokální, nicméně doporučován je pouze proprietární model Claude Opus 4.5 od firmy Anthropic v placené variantě. GitHubová stránka projektu OpenClaw.
Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.
Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.
getch()?
getch() je např. v ncurses.
getc() (viz. man 3 getc)
switch (getch()){
case 'a' : vypis();
break;
}tak ze v dose ked stlacim klaves a, tak sa mi tato funkcia vypis hned vyvola, bez toho aby som zadaval za 'a' este 'enter'
initscr(); nodelay(); getch();
switch (getch()){
case 'a' : vypis();
break;
}
initscr();
cbreak();
switch(getch())
{
case 'a': printf("hallo");
break;
}
#include <ncurses.h>
int main()
{
initscr();
cbreak ();
noecho ();
switch(getch())
{
case 'a': printfw("hallo");
refresh();
break;
}
endwin();
return 0;
}
/tmp/ccVbJu1B.o: In function `main': 1.c:(.text+0x573): undefined reference to `initscr' 1.c:(.text+0x578): undefined reference to `cbreak' 1.c:(.text+0x57d): undefined reference to `stdscr' 1.c:(.text+0x585): undefined reference to `wgetch' collect2: ld returned 1 exit status
1.) Skus okno obnovit pomocí refresh ();
2.) Po ukončení musíš zrušit ncurses endwin ();
Příklad:
#include <curses.h> /* stdio.h neni nutne je v curses.h */
#include <ctype.h>
#define COLOR2 1 /* barvicka 1. */
#define COLOR1 2 /* barvicka 2. */
int main () {
int c;
char *s;
initscr ();
cbreak ();
noecho (); /* vypnuti echa */
start_color (); /* chceme barvy */
keypad (stdscr, TRUE); /* chceme klavesy pod makry KEY_neco */
curs_set(0); /* at tam ta mrska neblika */
if (!has_colors ()) { /* umi terminal barvy ? */
endwin ();
fputs ("Hmm.. tady barvy nejdou !", stderr);
exit (1);
}
/* barva - popredi - pozadi */
init_pair (COLOR1, COLOR_RED, COLOR_BLUE); /* barvicka 1. */
init_pair (COLOR2, COLOR_YELLOW, COLOR_BLACK); /* a druha */
attron (COLOR_PAIR( COLOR1 )); /* pouzivat barvu 1. */
mvaddstr (2, 5, "Cervene na modrem");
attron (COLOR_PAIR( COLOR2 ));
mvaddstr (3, 5, "Zlute na cernem");
attron (A_BOLD); /* od ted vse BOLD */
mvaddstr (4, 5, "Zlute na cernem a tucne");
attroff (COLOR_PAIR( COLOR2 )); /* vypne barvu */
mvhline(LINES-2, 0, ACS_HLINE, COLS); /* nakresli caru */
mvaddstr (LINES-1, COLS-15, "F10 - konec");
mvaddstr (10, 5, "Jmeno klavesy:");
while ( (c=getch()) != KEY_F(10)) {
s = (char *) keyname(c); /* jmeno klavesy ? */
mvhline(10, 20, ' ', COLS); /* smaz */
if (s)
mvprintw (10, 20, "'%s'", s);
else
mvprintw (10, 20, "'%c'", (isprint(c) ? c : '.'));
}
erase (); /* smaz nase vytvory */
refresh ();
endwin (); /* konec curses */
exit (0); /* ....bye */
}
initscr();
atexit((void(*)(void))endwin);
cbreak();
refresh();
switch(getch())
{
case 'a':
printw("hallo");
sleep(1);
break;
}... nakonec je potřeba zavolat endwin(), jinak ti to nenavrátí terminál do původního stavu. Na psaní a kreslení je potřeba pak používat funkce z knihovny ncurses (např. printw() místo printf()).
int main(void){
int *p_pole = NULL;
initscr();
atexit((void(*)(void))endwin);
cbreak();
refresh();
while (1){
printf("\tmenu\n1. obrazok\n2. vypis\n3. vypocitaj\n4. nacitaj hodnoty\n5. usporiadaj\n6. koniec");
printf("\n\nzadajte svoju volbu > ");
switch (getch()){
case '1' : system("clear"); obrazok();
break;
case '2' : system("clear"); vypis();
break;
case '3' : system("clear"); vypocitaj();
break;
case '4' : system("clear"); nacitaj_hodnoty(&p_pole);
break;
case '5' : system("clear"); usporiadaj(p_pole);
break;
case '6' : return 0;
}
//system("clear");
}
endwin();
}
a po spusteni programu je cista obrazovka
po výpisu.
refresh();
a né printf
#include <stdio.h>
#include <termios.h>
int main (void) {
struct termios term;
tcgetattr(0, &term);
term.c_lflag &= ~ICANON;
tcsetattr(0, TCSANOW, &term);
setbuf(stdin, NULL);
printf("Press any key to continue...\n");
getc(stdin);
return 0;
}
// Přečti nastavení terminálu.
struct termios terminal_settings, original_terminal_settings;
if (tcgetattr(input_fd, &terminal_settings) != 0) {
perror("could not read terminal settings");
return false;
}
// Zapamatuj si je, aby je šlo obnovit na konci programu.
original_terminal_settings = new struct termios;
memcpy(
original_terminal_settings,
&terminal_settings,
sizeof(struct termios)
);
// Nová nastavení terminálu.
terminal_settings.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
| INLCR | IGNCR | ICRNL | IXON);
terminal_settings.c_oflag &= ~OPOST;
terminal_settings.c_oflag |= ONLCR; // Překlad LF -> CRLF.
terminal_settings.c_lflag &= ~ECHO; // Nevypisovat stisknuté klávesy.
terminal_settings.c_lflag &= ~ECHONL; // Nevypisovat klávesu Enter.
terminal_settings.c_lflag &= ~ICANON; // Vypnout kanonický režim.
terminal_settings.c_lflag &= ~IEXTEN; // Vypnout rozšířené zpracování znaků.
terminal_settings.c_cflag &= ~PARENB; // Žádná parita.
terminal_settings.c_cflag &= ~CSIZE;
terminal_settings.c_cflag |= CS8; // Osmibitové znaky.
// Pošli změněná nastavení do terminálu.
if (tcsetattr(input_fd, TCSADRAIN, &terminal_settings) != 0) {
perror("could not change terminal settings");
return false;
}
Ale pokud budeš chtít kreslit menu, tak musíš ještě řídit pohyb kurzoru, barvy, atd., to znamená posílat správné řídící sekvence (jejich seznam najdeš například zde), a to bude taky slušné maso
Tiskni
Sdílej: