aMule (Wikipedie), tj. multiplatformní klient pro peer-to-peer sdílení souborů pro sítě eD2k and Kademlia, byl po více než pěti letech od vydání poslední verze 2.3.3, vydán v nové major verzi 3.0.0 (GitHub). S novou webovou stránkou a dokumentací.
Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.
Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.
Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.
OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).
Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek
… více »Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.
os.mkfifo('/tmp/.powerman_fifo');
self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
Když spustím tento kód, tak mi to hlásí:
Traceback (most recent call last):
File "/media/JOOMLADEV/eclipse-src/python/PowerMan/src/powermangui.py", line 160, in <module>
pg=PowerManGui();
File "/media/JOOMLADEV/eclipse-src/python/PowerMan/src/powermangui.py", line 15, in __init__
self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
OSError: [Errno 6] No such device or address: '/tmp/.powerman_fifo'
Přitom ta pipe existuje:
ls -al /tmp/.powerman_fifo prw-r--r-- 1 bartmann bartmann 0 2009-06-28 17:33 /tmp/.powerman_fifo
Nevíte kde dělám chybu?
Za rady předem děkuji.man 7 fifo říká tohle:
A process can open a FIFO in non-blocking mode. In this case, opening for read only will succeed even if no-one has opened on the write side yet; opening for write only will fail with ENXIO (no such device or address) unless the other end has already been opened.
OSError 6 je opravdu ENXIO:
>>> import errno >>> errno.ENXIO 6
self.state=os.read(self.pipe, 1000); OSError: [Errno 11] Resource temporarily unavailable
Přitom na mám rouru v rodiči otevřenou a v dokumentaci jsem vyčetl, že při čtení z neblokující roury má vrátit 0 bytů.
Postupuju, tak že si nejprve vytvořím instanci třídy PowerMan, v jejímž konstruktoru otvírám PIPU pro čteční, následně otevírám rouru pro zápis, volám fork() a v potomkovi volám metodu PowerMan.run, kde ve while 1: z roury čtu:
if os.path.exists('/tmp/.powerman_fifo')==False:
os.mkfifo('/tmp/.powerman_fifo');
pm=powerman.PowerMan();
self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
self.state=True;
pid=os.fork();
if pid==0:
pm.run();
Metoda run() třídy PowerMan:
def run(self):
while 1:
self.state=os.read(self.pipe, 1000);
print self.state;
#Zpracovat obsah PIPE
if self.quit==True:
break;
if self.state==True:
self.get_idle();
self.get_idle_workaround();
if int(self.idle)>=int(self.stime):
pid=os.fork();
if pid==0:
self.idle=0;
os.execl(self.prog);
else:
os.wait();
time.sleep(1);
Jestli jde jen o komunikaci rodičovského procesu s potomkem, není k tomu potřeba named pipe. Taková jednoduchá jednosměrná komunikace:
import fcntl, os, time
(rd, wr) = os.pipe()
if os.fork() == 0:
os.close(wr)
fcntl.fcntl(rd, fcntl.F_SETFL, os.O_NONBLOCK)
print 'child: waiting for input'
while True:
try:
data = os.read(rd, 1000)
if data:
print 'child: received:', data
except OSError:
pass
else:
os.close(rd)
while True:
data = raw_input('parent:> ')
os.write(wr, data)
time.sleep(.3) # aby se nesleval vystup potomka s rodicem
Ukázka:
$ python pipe.py child: waiting for input parent:> hello child: received: hello parent:> how are you? child: received: how are you? parent:>
OSError 11 je v pořádku, je to obyčejné EAGAIN/EWOULDBLOCK (viz www.gnu.org/s/libc/manual/html_node/Error-Codes.html#index-EAGAIN-97).
Tiskni
Sdílej: