Byla vydána verze 3.0 (Mastodon) nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). S novou verzí formátu záznamu asciicast v3, podporou live streamingu a především kompletním přepisem z Pythonu do Rustu.
Canonical oznámil, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie) v Ubuntu.
Tržní hodnota americké společnosti Alphabet, která je majitelem internetového vyhledávače Google, dnes poprvé překonala hranici tří bilionů dolarů (62,1 bilionu Kč). Alphabet se připojil k malé skupině společností, které tuto hranici pokořily. Jsou mezi nimi zatím americké firmy Nvidia, Microsoft a Apple.
Spojené státy a Čína dosáhly dohody ohledně pokračování populární čínské platformy pro sdílení krátkých videí TikTok v USA. V příspěvku na síti Truth Social to dnes naznačil americký prezident Donald Trump. Dosažení rámcové dohody o TikToku vzápětí oznámil americký ministr financí Scott Bessent, který v Madridu jedná s čínskými představiteli o vzájemných obchodních vztazích mezi USA a Čínou. Bessentova slova později potvrdila také čínská strana.
MKVToolNix, tj. sada nástrojů pro práci s formátem (medialnym kontajnerom) Matroska, byl vydán ve verzi 95.0. Podpora přehrávání formátu Matroska míří do Firefoxu [Bug 1422891, Technický popis]. Přehrávání lze již testovat ve Firefoxu Nightly.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.
Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si
… více »Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.
Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).
Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.
from select import select import pty import os,sys import subprocess as sub import time (pid,fd) = pty.fork() if pid == 0: sub.call("python slave.py",shell=True) else: time.sleep(0.5) sent = 0 while True: for i in range(0,10): select([],[fd],[]) size = os.write(fd,"x"*1000) #os.write(fd,"\n") sent += size print(str(sent)) time.sleep(5)slave.py
import fcntl import os,sys from select import select import tty sys.stdout = open("log","w",0) # make stdin a non-blocking file fd = sys.stdin.fileno() fl = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) # tty.setraw(fd) # #sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0) bytes_read = 0 print("on") while True: rlist,_,_ = select([sys.stdin],[],[],1) if sys.stdin in rlist: string = sys.stdin.read(200) bytes_read += len(string) print(str(bytes_read)) else: print("not ready")a ted kdyz pustim 'python master.py' a v terminalu vedle 'tail -f log' tak vidim ze poslednich 800 poslanych bytu zustane v bufferu, select rika ze sys.stdin neni ready pro cteni (protoze master.py nezapsala zadny novy data) a tech 800 bytu z buffer se precte az potom co master.py posle dalsi data do PTY Kdyz odkomentuju tu lajnu v slave.py ktera nastavuje velikost bufferu na 0 tak to jede hezky. Tohle pak vedlo k deadlocku v tom programku co pisu.
from select import select import pty import os,sys import subprocess as sub import time (pid,fd) = pty.fork() if pid == 0: sub.call("python slave.py",shell=True) else: time.sleep(0.5) sent = 0 while True: os.write(fd,"DATA") os.write(fd,"DATA") os.write(fd,"DATA") os.write(fd,"DATA") os.write(fd,"DATA") os.write(fd,"YOYO") select([fd],[],[]) string = os.read(fd,1024) if string == "YOYO": print("master received: YOYO\n") else: print("master:DEAD")slave.py
import fcntl import os,sys from select import select import tty log = open("log","w",0) # make stdin a non-blocking file fd = sys.stdin.fileno() fl = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) # tty.setraw(fd) # #sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0) data_read = "" log.write("on\n") while True: rlist,_,_ = select([sys.stdin],[],[],1) if sys.stdin in rlist: data_read += sys.stdin.read(10) while len(data_read) >= 4: msg = data_read[:4] data_read = data_read[4:] log.write("slave: received "+msg+"\n") if msg == "YOYO": log.write("slave: sending YOYO\n") sys.stdout.write("YOYO") sys.stdout.flush() else: log.write("not ready\n")Kdyz pustite master.py a tail -f log tak vydite ze se zpracuji pouze prvni dve zpravy "DATA" a vse se zasekne. Pokud zmenite sys.stdin.read(10) v slave.py na sys.stdin.read(24) vse bude fungovat krasne v nekonecnem loopu. Pokud odkomentujete v slave.py radek sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0) tak vsechno bude chodit krasne v loopu i kdyz nechate sys.stdin.read(10) A ted moje otazka: Proc to tak je ... je toto chovani nekde zdokumentovano? Tyka se to pouze PTY ? A hlavne proc select nerika "jo sys.stdin je ready ke cteni" kdyz vi ze jsou v bufferu sys.stdin data ktera sys.stdin.read muze precist?
sys.stdin.read(10)Tohle nemůže se selectem dobře fungovat, je to vysokoúrovňové bufferující API, podobně jako funkce ANSI C nad FILE strukturama. Volání
select.select
je nízkoúrovňové API a lze kombinovat
pouze s nízkoúrovňovým čtením, tedy os.read
.
Jako hraní super, ale Python na něco takového absolutně není určený. Doporučuju zůstat jen u pokusů, případně si ty pokusy udělat i v céčku. Na skutečné asynchronní aplikace je lepší použít nějakou pythoní knihovnu, která to celé poskládá, případě si céčkovskou
asynchronní knihovnu napsat a implementovat v ní pythoní rozhraní,
pokud už to člověk musí nutně zkoušet na vlastní kůži.
Na nízkoúrovňové čtení bych radši zůstal u nízkoúrovňových funkcí. ty dokonce fungují i bez přepnutí fd do neblokujícího režimu (testováno v C).Jo, ted uz jsem se poucil a priste to presne takhle resit budu
jedina vec ktera me v pythonu nachytala a v C by se nestalaTo je tím, že python používá pro funkce namespacing, ať už pomocí modulů nebo tříd, popřípadě i objektů (to umí C taky, ale i tak funkce musí mít název alespoň na úrovni modulu). Takže se více funkcí jmenuje read, přitom jsou principiálně odlišné a pracují na odlišné úrovni.
ale i tak by mi to v C trvalo aspon petkrat tak dlouho nez v pythonu a nejspis bych to nikdy nedokoncil.Tak pokud ty céčkoviny zabírají jen nějaký jeden malý modul, takto může být jednodušší než se učit pythoní C API.
Kdyz mas sys.stdin jako priklad primo v python docs tady tak me to zmatlo dobre.To se dá buď brát jako chyba v manuálu nebo jako popis příliš spoléhající na znalosti čtenáře. On si totiž select umí ten deskriptor zřejmě z objektu vytáhnout sám, takže file objekt je sám o sobě ok. Problém je v implementaci file.read(), která i podle manuálu spouští fread(), což nemusí fungovat. Prostě se počítá s tím, že čtení bude realizováno takto:
os.read(f.fileno())
Imho bude sys.stdin fungovat dobre se select pokud neni v PTY.To těžko.
Jo a to co kodim bych hranim nenazyvalTwisted umí být komplikovaný, ale dá se naučit. Jednou jsem v tom něco zkoušel. Problém je, že twisted nejde dobře kombinovat s jinými a spoustu věcí neumí. Ale na asynchronní přístup v C se mi osvědčil glib. V Pythonu se dá použít gobject introspection, takže můžeš pracovat jak v C tak v Pythonu, aniž byses učil pythoní C API., ono je to uzitecny a kodim to jen proto ze jsem zadny program co by resil stejny problem nenasel - a sam bych to na vlastni kuzi taky raci nezkousel ale jak rikam, neumim twisted.
Tak pokud ty céčkoviny zabírají jen nějaký jeden malý modul, takto může být jednodušší než se učit pythoní C API.Jeste to tak abych se ucil
Imho bude sys.stdin fungovat dobre se select pokud neni v PTY. To těžko.Pokud tam pude stdin pres pajpu. To by pak vysvetlovalo ten manual. Jestli v tom manualu mysleli pouzite sys.stdin v select a pak ctete os.read(0,1024) tak je to dost nekonzistetni.
Problém je, že twisted nejde dobře kombinovat s jinými a spoustu věcí neumí.To byl dalsi duvod proc jsem se mu vyhnul.
Jeste to tak abych se ucilTak cygwin je unix jako každý jiný, že :), linuxové distribuci je prostředí cygwinu dost blízké. Jinak bacha, kdybys používal Python přímo na windows, tak spousta věcí funguje trochu jinak. Zvlášť těch nízkoúrovňových. Ono se na první pohled zdá, že vespod je úplně stejná unixovská vrstva, ale není to úplně pravda. Dělal jsem začátečnické školení Pythonu ve firmě se smíšenou výbavou účastnických počítačů a ty Windows jsme dost řešili. Ale všechno nějak vyřešit šlo.me uplne staci jak vypada popis funkce forkpty() v C a naproti tomu pty.fork() v pythonu
... a jeste to kompilovat pro cygwin apod. tady me budes tezko presvedcovat ze jsem to mel psat v C
To byl dalsi duvod proc jsem se mu vyhnul.To je obecný problém kombinace synchronních a asynchronních API, bez ohledu na jazyk. Problém je v tom, že Python je většinou tvůrců knihoven vnímán jako skriptovací jazyk a pro ten sjou synchronní API typická. Problém je, že z asynchronního API jde synchronní vyrobit celkem lehce (v dynamickém jazyce zvlášť), zatímco naopak to nejde a jedinou možností je vláknovat. Spousta vývojářů i core pythoních věcí zase neřeší vlánka, tak se pro jistotu zamyká celý interpret a paralelní zpracování pythoních vláken je z principu vyloučené, tudíž multiprocessing vychází v pythonu mnohem rychlejší než multithreading. Paradoxem ovšem je, že komunikace mezi procesy je synchronní a tudíž i při multiprocessingu je předávání zpráv realizováno vláknem (tedy multithreadingem).
Tiskni
Sdílej: