Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,742 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 165 místo. Karolina, GPU partition klesla na 195. místo a Karolina, CPU partition na 421. místo. Další přehledy a statistiky na stránkách projektu.
Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
#!/usr/bin/python #http://www.networksorcery.com/enp/protocol/irc.htm import re import socket import getpass class IRCBotInterface(object): """Generic interface for working with IRC messages.""" def read(self): raise NotImplemented def write(self, msg): raise NotImplemented def open(self): raise NotImplemented def close(self): raise NotImplemented class IRCBotShellInterface(IRCBotInterface): def __init__(self): pass def read(self): return raw_input("> ") def write(self, msg): print msg def open(self): pass def close(self): pass class IRCBotTelnetInterface(IRCBotInterface): def __init__(self, address = None, port = 8080): self._timeout = 60 * 10 self._listen = None self._sfile = None self._socket = None self._addr = address self._port = port def client(self): return self._sfile def disconnected(self): self._socket = None self._sfile = None def read(self): pass def write(self, msg): pass def open(self): pass if self._listen == None: raise Exception("No valid address found") def close(self): pass if __name__ == "__main__": x = IRCBotTelnetInterface("::1", 8082) x.open() while True: data = x.read() if data == "": break print "Received:", data x.write(data)Se samotnym sitovym programovanim az takovy problem nemam, ale moc nechapu jak naimplementovat to rozhrani pro komunikaci (shell). Nevim, k cemu jsou zapotrebi dve tridy IRCBotInterface(object) a IRCBotShellInterface(IRCBotInterface). Je mi jasny, ze IRCBotShellInterface(IRCBotInterface) dedi predchozi tridu IRCBotInterface, jennevim proc.Premyslim, v cem se maji jejich metody lisit. Nejsem zbehly v OOP, vlastne zacinam, takze mi asi neco podstatnyho nedochazi. Ma snad prvni trida byt I/O rozhrani a druha trida rozhrani pro komunikaci se servrem? Ale co potom fce open a close? As jsem spravne pochopil, ze perace otevreni socketu ma delat fce open. V cem se maji v jednotlivych tridach ale lisit? Mohl bych pozadat o nejake nakopnuti? Vubec nevim, od ceho se mam odpichnout. Moc instrukci jsme k ukolu nedostali a me moc nedochazi, jakym zpusobem to rozhrani ma fungovat.
Řešení dotazu:
#!/usr/bin/env python import socket host = '' port = 50000 backlog = 5 size = 1024 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host,port)) s.listen(backlog) while 1: client, address = s.accept() data = client.recv(size) if data: client.send(data) client.close()
…nektere si muze redefinovatTo co popisujes je proste dedeni a ne abstraktni predek. "Abstraktni" trida se tak jmenuje proto ze fyzicky nemuze existovat - kdyz se ji pokusis instanciovat tak te kompiler vyfakuje. Metody mit teoreticky muze, prakticky to ale vetsinou nema smysl a treba javovske interfacy to ani nedovoluji. Pythonisticky pristup je duck-typing neboli "kdyz to kvaka jako kacena, tak to asi bude kacena" a mas ho v ruce pokazde kdyz zavolas open
Metody mit teoreticky muze, prakticky to ale vetsinou nema smysl a treba javovske interfacy to ani nedovoluji.Kdes' toto vzal? Abstraktní třídy s metodami i datovými členy jsou běžné, mají smysl a není na nich nic špatného. Interface je něco jiného než abstraktní třída; existuje normálně pouze ve statických objektových systémech bez vícenásobné dědičnosti, kterou supluje.
pass?
class IRCBotInterface(object): """Generic interface for working with IRC messages.""" def read(self): raise NotImplemented #########dalsi metody########## class IRCBotShellInterface(IRCBotInterface): def __init__(self): pass def read(self): try: super().read(self) except NotImplementedError: pass return raw_input("> ")Ale pri spusteni mi to nadava porad:
raise NotImplemented TypeError: exceptions must be old-style classes or derived from BaseException, not NotImplementedTypeNevite nekdo co s tim?
NotImplemented
je hodnota typu NotImplementedType
, která se dá vracet třeba return
, ale ne vyhazovat jako vyjímka. Ta se totiž jmenuje NotImplementedError
. Mimochodem, vracet lze i vyjímka a je to naprosto korektní obrat.
>>> def foo(): return NotImplemented >>> x = foo >>> x == None False >>> x == NotImplemented True >>> def bar(): raise NotImplementedError() >>> y = bar() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in bar NotImplementedError >>> def ham(): return NotImplementedError >>> z = ham() >>> z == NotImplemented False >>> z == NotImplementedError True >>> raise z('aaa') Traceback (most recent call last): File "<stdin>", line 1, in <module> NotImplementedError: aaa
Zajimalo by me, co s tema not implemented vyjimkama? nebylo by jednodussi to v te abstraktni tride zmenit na
pass
?
Předpokládám že ve skutečnosti tam má být NotImplementedError
, viz níže.
Česky ta výjimka znamená "vole, zapoměl jsi implementovat tuhle metodu, koukej ji dodělat. šupem.". To je právě ten jemný rozdíl mezi abstraktní třídou která popisuje rozhraní, a nějakou tvojí třídou která to rozhraní skutečně implementuje. Ve staticky kompilovaném jazyce prostě jen napíšeš jméno metody a označíš jí jako abstraktní a kompiler to bere tak že nějaký potomek tu metodu přetíží a dodá potřebnou funkčnost. Čili v hotovým kódu taková metoda fakticky neexistuje, je to jen dodatečná informace pro kompiler aby tě zjebal když na to při psaní potomka zapomeneš.
Jenže. V pythonu není žádná "kompilace" takže není (jednoduchý) způsob jak něco takového vynutit. Takže se to hákuje tak že se udělá skutečná, existující metoda, ale implementace uvnitř je jen pahýl který vždy vystřelí výjimku. Může to být jakákoliv výjimka, ale je taková praxe že se střílí NotImplementedError. Drobný, ale zásadní rozdíl je, že ta výjimka vystřelí až v okamžiku kdy ten kód běží. Když by ta zapomenutá metoda byla v nějaké nepoužívané větvi kódu tak na to vůbec nemusíš přijít, což tak nějak popírá důvod proč se s tím vůbec matlat.
Tiskni
Sdílej: