TerminalTextEffects (TTE) je engine pro vizuální efekty v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Od čtvrtka 30. 5. do soboty 1. 6. lze v Praze navštívit Veletrh vědy, tj. největší populárně naučnou akci v České republice, kterou každoročně od roku 2015 pořádá Akademie věd ČR. Vstup zdarma.
Canonical představil Ubuntu optimalizované pro jednodeskový počítač s RISC-V procesorem Milk-V Mars.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 24.5.1 Havier. Přehled novinek v Changelogu.
Společnost xAI založena Elonem Muskem a stojící za AI LLM modelem Grok získala investici 6 miliard dolarů.
Finálový zápas mistrovství světa v ledním hokeji přinesl nový rekord NIX.CZ (𝕏): "Dosavadní absolutní maximum našeho propojovacího uzlu bylo překonáno v čase 21:10, kdy jsme při přenosu dat dosáhli 3,14 Tbps. Je třeba také doplnit, že po deváté hodině večerní byly na maximu i ostatní datové přenosy nesouvisející s hokejovým šampionátem".
Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 12. a 13. října na FIT ČVUT v pražských Dejvicích. CfP poběží do konce prázdnin, pak proběhne veřejné hlasování a výběr přednášek.
Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.
Firma Murena představila /e/OS verze 2.0. Jde o alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).
Narážel na to, že komentátor v Quake3Arena hlásí: "two frags left, one frag left". Máš to přesně tak napsaný.
Jestli někdo ví, co se řve v QIII, tak jsem to já. Proto to tam mám napsaný. Ale je to třeba i v Nexuizu.
PS: You are tied for the lead.
Jinak - Python všichni umíme, přejděme k věciPython všichni umíme? O tom ani nevím. Každopádně PyQt je pro mě hodně zajímavý. Python - tak oblíbenej jazyk, navíc prý "pěknej", moderní a taky se nemusí kompilovat (pro to určitě existuje výraz, ale zrovna mě nenapadá). No a Qt - oblíbenej toolkit. Protože jsem zarytej KDE-user. Takže jsem moc rád za tenhle seriál.
...a taky se nemusí kompilovat (pro to určitě existuje výraz, ale zrovna mě nenapadá)...interpretovaný
... python pyconfig.py >> config.h lwc seg-malloc.c+ > cdir/seg-malloc.c /bin/sh: lwc: command not found make[1]: *** [cdir/seg-malloc.c] Error 127 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2a ani s pomocí Google nedám dohromady kde to sakra seženu.
PATH=$PATH:~/bin
a znova make
, je tu ale další chyba...
gcc -c -O3 -Wall -Wno-parentheses cdir/IO.c -o objdir/IO.o cdir/IO.c:28: error: conflicting types for 'malloc' cdir/IO.c:28: error: conflicting types for 'malloc' make[1]: *** [objdir/IO.o] Error 1 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2Nějak mi to není přáno... Každopádně tam píšou, že je to otestovaný jen na x86 (asi 32bit) a že pokud to chci kompilovat na jiné architektuře, mám raději počkat na další verze...
>>> import py_compile >>> compile('test.py') Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: compile() takes at least 3 arguments (1 given) >>> compile('test.py, test.pyc') Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: compile() takes at least 3 arguments (1 given):/ podle manuálu by měl stačit jeden argument... Jde mi z toho hlava kolem.
py_compile.compile()
. Viď dokumentácia k modulom.
from py_compile import compile compile('/home/david/devel/python/test.py')Takhle je to lepší. Díky za pomoc.
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, py_compile py_compile.compile(sys.argv[1])a pro adresář:
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, compileall compileall.compile_dir(sys.argv[1], 1)To jen kdyby to tu někdo hledal.
__init__()
nie je nič iné ako konštruktor.
Nevytvari sice objekt ve smyslu alokace pameti Narozdil od metody __new__(), ze? Neni tedy spis konstruktor toto? A dostavame se opet k tomu, co jsem rikal. Hledat analogii u oop jazyku implementovanych jinak je silne zavadejici a vede k chybnemu chapani, proto je nevhodne.Milý pane, ste trochu vedľa. Konštruktorom sa v OOP (nie len v Jave, C#, ale v OOP všeobecne) chápe funkcia, ktorá inicializuje objekt ako taký, nestará sa o nízkoúrovňové procesy. Vytvorením objektu sa potom chápe jeho vytvorenie v pamäti (new) a inicializácia (init). Ešte raz to zopakujem, jediný rozdiel oproti Jave je syntaktický: v Pythone napíšeme
= Class();
a v Jave = new Class()
, ale v oboch jazykoch vedú tieto výrazy k rovnakému procesu.
A k akému chybnému chápaniu vedie pomenovať funkciu ktorá sa stará o inicializáciu objektu? Jediné chybné chápanie, ktoré som si všimol je vaše, ale pramení zjavne z toho, že neviete, čo to konštruktor je. A to ma dosť zaráža.
Samozrejme, že v čistom OOP existujú len správy, ale Python nie je čistý OOP jazyk.
Konkrétne, pozrite si tento článok. Podstata je, že v staticky typovaných jazykoch exituje len jeden spôsob vytvorenia objektu: volaním konštruktoru, kdežto v čistých OOP stačí poslať triede (ešte nevytvorenému objektu) ľubovoľnú správu a objekt sa vytvorí popritom. AFAIK v pythone niečo takéto nie je možné, ale musí sa najprv objekt vytvoriť a až potom môžeme volať niektorú jeho metódu, i.e.:
ob = Object()
ob.show()
ale nie
ob = Object.show()
a teda v tomto ohľade je pythone takmer rovnaký ako Java, C#. Rovnako sa pritom volá konštruktor (opäť v mojom chápaní) objektu lenže v pythone sa nazýva __init__
a nie Object()
.
def x(a, b): return a+b print x(1, 2)LZE! pokud mam napriklad funkci, ktera jako parametr ocekava funkci, tak tam misto toho muzu klidne soupnout tridu. Oboji jsou to volatelne objekty a je mozne je zamenovat. Vyborne, tak si to predvedeme prakticky, treba se naucim neco noveho:
def cmpfun(a, b): if a>b: return 1 if b>a: return -1 return 0 print [1,5,9,7,5,3].sort(cmpfun)Metoda sort jako parametr ocekava funkci. Predavam funkci cmpfun, prosim o jeji nahrazeni tridou. metoda __new__ je mnohem nizkourovnovejsi nez __init__. je to spis takovej hack. Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny , a vam chybi poradny argument. uz jenom cekam, kdy prohlasite za konstruktor C funkci malloc.. To se tedy nacekate. Ani toto neni poradny argument, povazuji to zatim za nezodpovezene. kdyz vezmu v uvahu jen vas aktualni prispevek, tak napriklad z tohoto: "Tridu s funkci nelze zamenovat. To zduraznuji." mam dojem, ze si python pletete napriklad se silne typovanou Javou, nebo dokonce s C++ Cim dal lepsi. 1) co se tyce zamenovani, pockame na vase reseni prikladu, jestli se vam podari funkci zamenit tridou. 2) bylo by slusne nebrat aktualni prispevek, ktery jste ani nepochopil, ale to, co vas k tomu tvrzeni vedlo. existuje neco takoveho? 3) python je silne typovany, ted si to zas pletete se statickym typovanim 4) kontrolni otazka, je C++ silne typovany jazyk?
########################################## def x(a, b): return a+b print x(1, 2) >>> class x: ... def __init__(self, a, b): ... self.c = a+b ... def __str__(self): ... return str(self.c) ... >>> print x(1, 2) 3 # i kdyz pri jinych prilezitostech by bylo potreba napr. # doplnit metodu __int__ a podobne, # ale o to v OOP v pojeti pythonu jde. muzete objekty # zamenovat. pokud rozumi pozadovanym zpravam... ########################################## >>> def cmpfun(a, b): ... if a>b: return 1 ... if b>a: return -1 ... return 0 ... >>> print [1,5,9,7,5,3].sort(cmpfun) None # predpokladam ze jste si jen neuvedomil, ze metoda sort # pracuje s puvodnim polem a myslel jste toto: # a = [1,5,9,7,5,3] # a.sort(cmpfun) # print a ###################################################### >>> class cmpfun(int): ... def __new__(cls, a = 0, b = 0): ... if a > b: return int.__new__(cls, 1) ... if a < b: return int.__new__(cls, -1) ... return int.__new__(cls, 0) ... >>> a = [1,5,9,7,5,3] >>> a.sort(cmpfun) >>> print a [1, 3, 5, 5, 7, 9] >>> ##########################################################takze sem prave prokazal, ze funkce a tridy jsou zamenitelny.... mam pocit, ze OOP v pythonu (a podobnych jazycich, napr. smalltalk) prilis nerozumite. Nikoho toti nezajima, ze se jedna o uplne jiny objekt, kdyz shodne reaguje na stejne zpravy.... > Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny , a vam chybi poradny argument. na tom, ze je to hack trvam > 3) python je silne typovany, ted si to zas pletete se statickym typovanim jo, to sem poplet. omlouvam se. > 4) kontrolni otazka, je C++ silne typovany jazyk? castecne. predpokladejme:
class A { public: int x; }; class B { public: float y; }; void f() { A* a; B* b; *a = *b; // nemozne a = (A*)b; // mozne bez jakekoli kontroly typu. // proste se nastavi ukazatel na adresu // b (obcas se to ale hodi ;)) }
print
vola metodu __str__
jak u puvodniho intu, tak i u myho objektu. takze jsou zamenitelny (v tomhle pripade)
> Stale stojim o vysvetleni toho, proc se domnivate, ze si python pletu se statickymi jazyky, i kdyz uz zacinam tusit, ze jde o nedorozumneni a ze je to kvuli tomu, ze si pod tvrzenim, ze funkce a tridy nejsou zamenitelne predstavujem kazdy neco jineho.
asi jsem se unahlil. byl to jenom takovej dojem. Kdyz sem videl jak se snazite funkce a tridy oddelovat, vzpomel sem si na Javu a kolik ma vzdycky reci
> To je samozrejme, jenze jak uz jsem vysvetloval, ja jsem hovoril o zamene jejich funkcnosti. Presvedcil jste me, ze v jednom smeru to jde, tridami lze nahradit funkce, protoze obsahuji metody, ktere jsou funkcnosti blizke funkcim. Naopak se vam to asi nepodari.
jo, naopak to asi nepujde. Kdyz sem rikal, ze jsou funkce a tridy zamenitelny, tak sem myslel jen ten jeden smer. Myslel jsem ze je to zrejme z toho, ze se hadame pod prispevkem, kde kdosi rikal, ze volani QCosi() neni volani funkce. Mel jsem to ale explicitne uvest - moje chyba.
QMainWindow()
v pythone neexistuje.
QMainWindow()
v skutočnosti vytvorí nový objekt typu QMainWindow
a odkaz naňho potom odovzdá ako prvý argument funkcii QMainWindow.__init__()
– takže analógiu môžeme vidieť skôr s týmto kódom Javy (C++):win = new QMainWindow();
To len aby sme zatiaľ dali veci na pravú mieru. Určite sa aj k tejto problematike autor neskôr vyjadrí.
Inak fajn článok, držím palec
Díky, už asi měsíc se chystám s PyQt začít, ale nebylo dost času. Teď jsem rád, že jsem počkal
python-qt
.
Skvely serial, chtel jsem se ucit PyQt ale zatim jsem se k tomu nejak nedostal az ted . Uz jsem pridal na nej odkaz na PyCZ Wiki.
Jeste se chci zeptat: kolik dilu planujete? Co vsechno hodlate probrat?
Tak kolik dilu to nakonec bude nevim, ale ma idea je takova, ze tak do tretiho dilu bych se chtel u QT dostat k prvkum button, lineEdit, TextLabel. Samozrejme je vysvetleni signalu a slotu trosku do hloubky. V Pythonu se do tretiho dilu vysvetli tvorba vlastnich funkci a snad i trid, textovy vstup, podminky, cykly a mozna zvladnem jeste pokrocilou praci s poli :) Od tretiho dilu bych chtel, aby byla vysledkem kazdeho dilu nejaka pouzitelna aplikace. No a pri tvorbe te aplikace si pak vysvetlime nove prvky, ktere jsme pouzili. Nezavazuju se, ze tohle schema dodrzim , ale pokud to bude mozne, chtel bych, aby bylo takove.
Moc vsem dekuji za podporu . Hodne me potesila reakce na clanek
Tiskni Sdílej: