Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Open source webový aplikační framework Django slaví 20. narozeniny.
V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
#define EVENT_SIZE ( sizeof (struct inotify_event) ) #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) int main(int argc, char **argv) { int length, i = 0; int fd; int wd; char buffer[BUF_LEN]; fd = inotify_init(); if (fd < 0) { perror("inotify_init"); } wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS); if (length < 0) { perror("read"); } while (1) { length = read(fd, buffer, BUF_LEN); struct inotify_event *event = (struct inotify_event *) &buffer[ i ]; if (event->len) { if (event->mask & IN_CREATE) { if (event->mask & IN_ISDIR) { printf("The directory %s was created.\n", event->name); } else { printf("The file %s was created.\n", event->name); } } if (event->mask & IN_DELETE) { if (event->mask & IN_ISDIR) { printf("The directory %s was deleted.\n", event->name); } else { printf("The file %s was deleted.\n", event->name); } } if (event->mask & IN_MODIFY) { if (event->mask & IN_ISDIR) { printf("The directory %s was modified.\n", event->name); } else { printf("The file %s was modified.\n", event->name); } } if (event->mask & IN_MOVED_FROM) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie); } } if (event->mask & IN_MOVED_TO) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie); } } if (event->mask & IN_MOVE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie); } } if (event->mask & IN_DELETE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie); } } if (event->mask & IN_OPEN) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was opened.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was opened.\n", event->name, event->cookie); } } if (event->mask & IN_ATTRIB) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie); } } if (event->mask & IN_ACCESS) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie); } } } } (void) inotify_rm_watch(fd, wd[0]); (void) close(fd); exit(0); }
Řešení dotazu:
i += EVENT_SIZE + event->len;
#define EVENT_SIZE ( sizeof (struct inotify_event) ) #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) int main(int argc, char **argv) { int length, i; int fd; int wd; char buffer[BUF_LEN]; struct inotify_event *event; fd = inotify_init(); if (fd < 0) perror("inotify_init"); wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS); while (1) { i = 0; length = read(fd, buffer, BUF_LEN); if (length < 0) perror("read"); if (length == 0) sleep(1); while (i < length) { event = (struct inotify_event *) &buffer[i]; if (event->mask & IN_CREATE) { if (event->mask & IN_ISDIR) { printf("The directory %s was created.\n", event->name); } else { printf("The file %s was created.\n", event->name); } } if (event->mask & IN_DELETE) { if (event->mask & IN_ISDIR) { printf("The directory %s was deleted.\n", event->name); } else { printf("The file %s was deleted.\n", event->name); } } if (event->mask & IN_MODIFY) { if (event->mask & IN_ISDIR) { printf("The directory %s was modified.\n", event->name); } else { printf("The file %s was modified.\n", event->name); } } if (event->mask & IN_MOVED_FROM) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie); } } if (event->mask & IN_MOVED_TO) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie); } } if (event->mask & IN_MOVE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie); } } if (event->mask & IN_DELETE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie); } } if (event->mask & IN_ATTRIB) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie); } } if (event->mask & IN_ACCESS) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie); } } i += sizeof(struct inotify_event) +event->len; } } (void) inotify_rm_watch(fd, wd); (void) close(fd); exit(0); }
Tiskni
Sdílej: