Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.
Byla vydána nová verze 260 správce systému a služeb systemd (Wikipedie, GitHub). Odstraněna byla podpora skriptů System V. Aktualizovány byly závislosti. Minimální verze Linuxu z 5.4 na 5.10, OpenSSL z 1.1.0 na 3.0.0, Pythonu z 3.7.0 na 3.9.0…
Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.
Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.
Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,
… více »Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.
SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.
Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační
… více »PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují
… více »GIMP 3.2 byl oficiálně vydán (Mastodon, 𝕏). Přehled novinek v poznámkách k vydání.
Mám epoll descriptor a v něm přes epoll_ctl zaregistrováno několik descriptorů, jeden z nich je descriptor souboru "/proc/self/mountinfo" (event EPOLLERR).
Pokud provedu epoll_wait() a připojím třeba CD a to přimountuju, soubor /proc/self/mountinfo se změní a dostanu příslušný event (EPOLLERR), což je vpořádku.
Potřebuju ale, aby moje knihovna byla snadno integrovatelná s Qt a GTK, z toho důvodu je součástí veřejného API metoda pro získání toho descriptoru, za účelem možnosti jeho pollování, v Qt např. pomocí QSocketNotifier. Zatím jsem to tedy zkoušel jen v testovacím prográmku, který na epoll descriptor zavolá obyčejný poll(). Problém je, že poll() mi vrátí pouze tehdy, pokud na nějakém descriptoru obsaženém v epollu je událost EPOLLIN, ale nevrátí mi, pokud je na nějakém jen EPOLLERR a nemám tak možnost na událost zareagovat. Otázka zní, jak to "opravit" 
tady se píše:
Q: Is the epoll file descriptor itself poll/epoll/selectable?
A: Yes. If an epoll file descriptor has events waiting then it will indicate as being readable.
Tak proč tomu tak není?
POLLERR | POLLPRI. Select ma zase definici:
#define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR)
#define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR)
#define POLLEX_SET (POLLPRI)
Takze bych asi v Qt zkusil zaregitrovat QSocketNotifier s udalasti Write, nebo Exception - to by mohlo pomoct.
int epollfd = epoll_create();
int mountinfofd = open("/proc/self/mountinfo", O_RDONLY);
struct epoll_event e;
e.events = EPOLLERR; // on tohle sleduje implicitně, ale ničemu nevadí, když to tam napíšu
e.data.fd = mountinfofd;
epoll_ctl(epollfd, EPOLL_CTL_ADD, mountinfofd, &e);
Qt, GTK, nebo ne-gui aplikaci (prostě libovolné používající tu knihovnu) předám epollfd k poll()ování (nebo select()ování, to je jedno) na POLLIN. POLLIN event na epoll descriptoru by měl podle dokumentace nastat vždy, když na některém descriptoru v epollu je nějaký event.
Pokud zavolám přímo epoll_wait(epollfd, ...) na ten epoll descriptor, příslušný event (EPOLLERR) na mountinfofd descriptoru dostanu. Pokud však udělám:struct pollfd p; p.fd = epollfd; p.events = POLLIN; poll(&p, 1, -1);Tak poll() nikdy nevrátí, ačkoli by se na epollfd měla objevit (podle toho, jak to chápu) událost POLLIN, když se na mountinfofd objeví libovolná událost (např. onen EPOLLERR). Pokud použiju timeout pro poll, např.
poll(&p, 1, 1000);
A pak zavolám epoll_wait(epollfd,...), i když poll nevrátil event, ale vím, že jsem médium přimountoval, takže v epollu by měla událost být, tak epoll_wait() taky nevrátí žádnou událost. Jako by se díky tomu poll()u úplně vytratila.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <poll.h>
#include <sys/epoll.h>
int main() {
int epollfd = epoll_create(1);
int mountinfofd = open("/proc/self/mountinfo", O_RDONLY);
struct epoll_event e;
e.events = EPOLLERR; // on tohle sleduje implicitně, ale ničemu nevadí, když to tam napíšu
e.data.fd = mountinfofd;
epoll_ctl(epollfd, EPOLL_CTL_ADD, mountinfofd, &e);
struct pollfd p;
p.fd = epollfd;
p.events = POLLIN;
printf("%i", poll(&p, 1, -1));
printf(" - %08X\n", p.revents);
}
Mi varti (po primontovani / odmonotvani):
$ ./a.out
1 - 00000001
$ uname -a
Linux xxx 2.6.27.5-117.fc10.i686 #1 SMP Tue Nov 18 12:19:59 EST 2008 i686 i686 i386 GNU/Linux
Tiskni
Sdílej: