Evropská občanská iniciativa Stop Destroying Videogames se snaží o to, aby vydavatelé, kteří spotřebitelům v Evropské unii prodávají videohry nebo na ně udělují licence, měli povinnost tyto hry ponechat ve funkčním (hratelném) stavu i po ukončení podpory ze své strany. Podpořit podpisem tuto iniciativu můžete v Systému pro online sběr podpisů.
Mozilla oficiálně ukončila svůj již několik let mrtvý projekt DeepSpeech pro převod řeči na text.
Krátce po oficiálním oznámení forku X.Org Xserveru s názvem XLibre Xserver byl ve Fedoře předložen návrh, aby byl X.Org Xserver nahrazen tímto XLibre Xserverem. Po krátké ale intenzivní diskusi byl návrh stažen.
62 projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Byl vydán SUSE Linux Enterprise 15 SP7. Přehled novinek v poznámkách k vydání a v aktualizované dokumentaci.
Byl představen telefon Fairphone 6 (599 eur). K dispozici je i verze s předinstalovaným /e/OS (649 eur).
Ghidra (Wikipedie), open source framework pro reverzní inženýrství, byla vydána ve verzi 11.4. Přehled novinek a historie změn na GitHubu. Národní bezpečnostní agentura (NSA) uvolnila zdrojové kódy frameworku Ghidra v dubnu 2019.
Stát selhal, když nesprávně převedl evropskou směrnici do českého práva a nutil telekomunikační firmy ze zákona uchovávat údaje o uživatelích, takřka všech občanech Česka. Tak znělo rozhodnutí Městského soudu v Praze ve sporu novináře Českého rozhlasu Jana Cibulky a ministerstva průmyslu a obchodu. Resort avizoval, že proti němu podá dovolání. Soud nyní rozsudek sepsal do dokumentu (pdf).
Konsorcium W3C vydalo po 20 letech novou verzi specifikace obrazového formátu PNG. K dispozici je i článek se shrnutím, který upozorňuje hlavně na podporu HDR, Exif dat a možnosti PNG animovat. Animace v PNG nejsou žádná novinka, ale ve standardu doposud zakotvené nebyly.
Google Chrome 138 byl prohlášen za stabilní. Nejnovější stabilní verze 138.0.7204.49 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 11 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře. Verze pro Android nově umožňuje přesunutí adresního řádku do dolní části Chromu. Na iOS to bylo možné již od října 2023. S příští verzí 139 plánovanou na 5. srpna přestane být podporován Android 8.0 (Oreo) a Android 9.0 (Pie).
echo ahoj > /dev/ttyS2
tak potom jinde v konsoli dam cat /dev/ttyS2
. Ale ten cat vypisuje porad dokola prazdne radky a obcas se tam objevi to ahoj i kdyz jsem ho poslal jen jednou. Myslim si ze mam neco blbe v kernelu ale netusim co. Nevite nekdo co s tim? Dik Vojta
cat /dev/ttyS2
se zapnou vsechny ale ja bych je chtel zapnout zvlast. Diky Vojta
#include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> int main(int argc, char **argv) { int fd; int iFlags = TIOCM_DTR; fd = open("/dev/ttyS0", O_RDWR | O_SYNC); ioctl(fd, TIOCMBIC, &iFlags); /* Vynuluje DTR */ ioctl(fd, TIOCMBIS, &iFlags); /* Nastavi DTR */ close(fd); return 0; }
usage: setdtrrts.py [options] options: --version show program's version number and exit -h, --help show this help message and exit -d DEVICE, --device=DEVICE serial port device (default /dev/ttyS0) -R, --RTS set RTS -D, --DTR set DTR -t DELAY, --time=DELAY time in seconds to quit (default 5)Takže například
setdtrrts.py -d /dev/ttyS1 --RTS --DTR -t 3Zapne obě stavové linky u portu /dev/ttyS1 na dobu tří sekund. A tady je ten program:
#!/usr/bin/env python import tty, os, fcntl, time, struct from optparse import OptionParser usage = "usage: %prog [options]" parser = OptionParser(usage, version="%prog version 0.1") parser.add_option("-d", "--device", action = "store", default = "/dev/ttyS0", dest="device", help="serial port device (default /dev/ttyS0)") parser.add_option("-R", "--RTS", action = "store_true", default = False, dest="rts", help="set RTS") parser.add_option("-D", "--DTR", action = "store_true", default = False, dest="dtr", help="set DTR") parser.add_option("-t", "--time", action = "store", type = "float", default = 5, dest="delay", help="time in seconds to quit (default 5)") (options, args) = parser.parse_args() TIOCM_DTR_str = struct.pack('I', tty.TIOCM_DTR) TIOCM_RTS_str = struct.pack('I', tty.TIOCM_RTS) fd = os.open(options.device, os.O_RDWR | os.O_SYNC) if options.dtr: print "setting DTR" fcntl.ioctl(fd, tty.TIOCMBIS, TIOCM_DTR_str) else: print "clearing DTR" fcntl.ioctl(fd, tty.TIOCMBIC, TIOCM_DTR_str) if options.rts: print "setting RTS" fcntl.ioctl(fd, tty.TIOCMBIS, TIOCM_RTS_str) else: print "clearing RTS" fcntl.ioctl(fd, tty.TIOCMBIC, TIOCM_RTS_str) time.sleep(options.delay)... a měl bys začít programovat v nějakém kloudném programovacím jazyce, který není odkázaný na volání externích programů.
#!/usr/bin/env python import tty, os, fcntl, time, struct, subprocess programname = 'date' delay = 3 TIOCM_DTR_str = struct.pack('I', tty.TIOCM_DTR) TIOCM_RTS_str = struct.pack('I', tty.TIOCM_RTS) fd = os.open('/dev/ttyS0', os.O_RDWR | os.O_SYNC) while True: print "setting DTR" fcntl.ioctl(fd, tty.TIOCMBIS, TIOCM_DTR_str) print "setting RTS" fcntl.ioctl(fd, tty.TIOCMBIS, TIOCM_RTS_str) subprocess.Popen([programname]) time.sleep(delay) print "clearing DTR" fcntl.ioctl(fd, tty.TIOCMBIC, TIOCM_DTR_str) print "clearing RTS" fcntl.ioctl(fd, tty.TIOCMBIC, TIOCM_RTS_str) subprocess.Popen([programname]) time.sleep(delay)
#!/usr/bin/env python import tty, os, fcntl, time, struct, subprocess def runcommand(command): process = subprocess.Popen([command]) process.wait() def wait_period(period): sec = time.time() time_to_wait = period - sec % period print "Waiting for %g seconds" %time_to_wait time.sleep(time_to_wait) class Relay: def __init__(self, devpath, initstate = True): self.fd = os.open(devpath, os.O_RDWR | os.O_SYNC) self.TIOCM_DTR_str = struct.pack('I', tty.TIOCM_DTR) self.TIOCM_RTS_str = struct.pack('I', tty.TIOCM_RTS) self.state = initstate self.switch(self.state) def switch(self, state): if state: print "setting DTR" fcntl.ioctl(self.fd, tty.TIOCMBIS, self.TIOCM_DTR_str) print "setting RTS" fcntl.ioctl(self.fd, tty.TIOCMBIS, self.TIOCM_RTS_str) else: print "clearing DTR" fcntl.ioctl(self.fd, tty.TIOCMBIC, self.TIOCM_DTR_str) print "clearing RTS" fcntl.ioctl(self.fd, tty.TIOCMBIC, self.TIOCM_RTS_str) self.state = state def negate(self): self.state = not self.state #negate self.switch(self.state) rele = Relay('/dev/ttyS0', initstate = False) while True: wait_period(3) rele.negate() runcommand('date')Je to trochu lepší verze než ta předchozí. Jednak je to objektové a pak to časování je udělané tak, že se systematicky nepředbíhá ani nezpožďuje. Navíc se čas počítá absolutně, takže lze předem říct, že se kamery budou přepínat vždy v celou minutu a v půl.
Tiskni
Sdílej: