Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.
Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).
Ne, tento blog opravdu nemá nic společného s vývojem Linuxového jádra :-) Jako "Jaderný blog" jsem jej pojmenoval jen kvůli mé oblibě jaderné fyziky a chemie.
Věnovat se chci především Linuxu a Free Softwaru, prezentovat zde svůj pohled na věc a věnovat se všem palčivým otázkám a problémům, na které narazím. Určitě se zde také objeví články týkající se KDE, jelikož jsem velkým milovníkem tohoto desktopového prostředí a obecně eye-candy (k velké nevůli "pravověrných" Linuxáků ;-)).
No a když už se to tu jmenuje Jaderný blog, možná se někdy dočkáte i nějakého populárně-vědeckého příspěvku, především pokud se bude jednat o nějaké ožehavé aktuální téma...
Před nedávnem jsem se začal učit Python a PyQT. Nadchla mě úžasná jednoduchost a přitom propracovanost tvorby UI v Qt Designeru. Nicméně nelíbilo se mi, že musím vygenerované .ui soubory vždy ručně "kompilovat" do pythonových zdrojáků pomocí utility pyuic, přijde mi to jako krok zpět. Proto jsem napsal v Pythonu modul, který tento proces automatizuje.
Je to de facto moje první dílo v Pythonu (nějaké primitovní "Hello World"-like aplikace v PyQT nepočítám
), proto bych chtěl poprosit všechny zdejší pythonýry, zda by se mohli na skript kouknout a ohodnotit mi ho (kde dělám např. něco né zrovna nejlépe, abych se nenaučil nějakým špatným návykům, atp.).
Na skript se můžete podívat ZDE, použití je jednoduché:
import pyuic
UIClass = pyuic.uiload("cesta/k/souboru.ui").getclass()
Ještě než jsem začal tento skript psát, narazil jsem i na možnost použití třídy QWidgetFactory z modulu qtui (součást PyQT). Tato třída generuje UI za běhu z .ui souboru. Jenže jsem narazil na problém - pokud tuto Qt třídu využijete, nejste pak v Pythonu schopni nijak propojovat sloty a signály. Vysvětluju si to tím, že objekty odpovídající danému UI jsou vytvořeny na úrovni Qt a Python o nich nemá pomnětí. Našel jsem dokonce článek Wrapper For QWidgetFactory, tam nabízené řešení funguje, ale přijde mi to jako takový ošklivý hack
Co vy na to, máte s QWidgetFactory v PyQT nějaké zkušenosti? Máte nějaké rady, řešení?
Další otázku bych měl okolo importování vygenerované UI třídy - ve svém skriptu pyuic.py (tedy konkrétně v třídě uiload) mám i metodu setclass, která by měla prostě a jednoduše vložit vygenerovanou UI třídu přímo do jmenného prostoru (podobně jako když použijete příkaz "from modul import třída"). Je to zařízeno celkem jednoduše:
def setclass(self):
setattr(sys.modules['__main__'], self.uiclass, self._import_pyui())
Jenže bohužel to nefunguje jak bych si představoval, zjevně sys.modules['__main__'] odkazuje na jmenný prostor v modulu pyuic, né ve skriptu kam jsem pyuic importoval (i když jsem zkusil použít volání stylem "from pyuic import uiload"). Napadá vás jak toto řešit?
Poslední otázku bych měl ohledně zjišťování jména vygenerované UI třídy. V současnosti to v metodě _get_classname řeším tak, že prostě parsuju soubor, který pyuic (ten původní Cčkový pyuic z PyQT, ne můj pyuic.py
) vygeneroval. Nepřijde mi to ale jako zrovna moc dobré řešení, nešlo by nějak zjistit jméno té třídy přímo z už importovaného modulu? Mohl bych se třeba dotázat pomocí funkce dir() na vše co je obsaženo ve jmenném prostoru modulu, který jsem naimportoval pomocí mod = __import__(self.pyuimod), jenže tam je i obrovská hromada PyQT metod, takže mi takové řešení nepřijde moc dobře realizovatelné. Máte někdo nějaký nápad?
Tiskni
Sdílej:
for se mi zda nejakej divnej...
PyUI_mod_list nebo pyui_mod_list byly pythonoidnejsi nez pyuimod_list...os.utime(filename, None) by se dalo pouzit misto carovani s modulem time
metoda _import_pyui() importuje modul s tou UI třídou (vygenerovaný pomocí klasického pyuic) a v té následné for smyčce je získán odkaz přímo na onu UI třídu v tom modulu (a ten pak ta metoda vrací). Inspiroval jsem se v referenční příručce k Pythonu, konkrétně v 2.1 Built-in Functions (kde je k funkci __import__ uveden obdobný příklad).Njn, evidentne jsem tedka vecer moc retardovanej. Stejne to nechapu :).
Jak říkam začal jsem se Python učit teprve nedávno... jaký zápis jmen je tedy "pythonoidnější"? Jaká jsou pro to pravidla? Četl jsem i PEP 8 -- Style Guide for Python Code, tam byla zmiňována hromada způsobu notací (CamelCase, podtržítková, atd.), ale žádná pokud si to pamatuji nebyla uvedena jako preferovaná...No... :)
"Global Variable Names [...] The conventions are about the same as those for functions"
"Function Names
Function names should be lowercase, with words separated by underscores
as necessary to improve readability.
mixedCase is allowed only in contexts where that's already the
prevailing style (e.g. threading.py), to retain backwards compatibility.
"Method Names and Instance Variables - Use the function naming rules: lowercase with words separated by underscores as necessary to improve readability."
Cili imho pouzivat_maly_pismena_s_podtrzitkama.
Kdybych to udělal takto, tak sice nemusim importovat modul time, ale neměl bych na 100% zaručeno, že budou ty dva soubory mít stejný čas modifikace. Nebo se pletu?Nepletes. A nestaci ti, aby byl ten PyUI novejsi nez .ui?
a co takhle pouzit ihooks a umoznit tak "primy" import ui souboru, jako by to byl .py soubor? Funguje tak treba kid. To by bylo elegantnejsi nez prezentovany zpusob.
from qt import *
from qtui import *
import sys
class FasaOknoBezUIC(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.win = QWidgetFactory.create("form1.ui")
def show(self):
self.win.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = FasaOknoBezUIC()
app.setMainWidget(w)
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
w.show()
ret = app.exec_loop()
sys.exit(ret)
from qt import *
from qtui import *
import sys
class FasaOknoBezUIC(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.win = QWidgetFactory.create("form1.ui")
self.pushButton1 = self.win.child('pushButton1')
self.connect(self.pushButton1, SIGNAL("clicked()"), self.pushButton1_clicked)
def pushButton1_clicked(self):
print 'clicked'
def show(self):
self.win.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = FasaOknoBezUIC()
app.setMainWidget(w)
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
w.show()
ret = app.exec_loop()
sys.exit(ret)
Zkoušel jsem ovšem předtím něco podobného, jen s tím že jsem si tam nedefinoval widgety jako např. u vás self.pushButton1 = self.win.child('pushButton1'), a to právě nefungovalo. Pokud to tohle řeší, můžu se přeptat na magii která za tím stojí?
Já že s tou metodou child() jsem se nikde nikdy zatím nesetkal...
V okamžiku kdy volám app.setMainWidget(w), tak schytám SIGSEGV a s Pythonem je ámen :-/ Nicméně to samé nyní dělá ten můj předchozí pokus (u kterého sice nefungovalo propojení signálů a slotů, ale aspoň se zobrazilo UI
), takže bych řekl že je něco shnilého ve státě Dánském, respektive v mém systému
Zajímalo by mě, jestli s tím má co do dočinění upgrade na PyQT 3.16...
Zkoušel jsem gdb, ale vzhledem k tomu že mám vše zkompilováno bez debugging symbolů, tak jsem nějaký užitečný výsledek ani moc nečekal. Nicméně přesto tu něco je:
(no debugging symbols found) ... nekonečná řada dalších stejných zprávCož vyvolává podezření, že za to může SIP. Ostatně ten jsem upgradoval ve stejné době jako PyQT (na verzi 4.4)... tak, teď co dál.. (no debugging symbols found) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1211967808 (LWP 19040)] 0xb7f92531 in initsip () from /usr/lib/python2.4/site-packages/sip.so
pvanek@pvanek:~> rpm -qa python-qt python-qt-3.5.1-5 pvanek@pvanek:~> sip -V 4.2.1 (4.2.1-297)a vsechno jede velice mazane a bez padu. Jeste to o vikendu mozna vyzkousim na ~x86 gentoo. Ale co tak google tvrdi, tak tyhle sip.so pady se obcas obejvily a zase zahadne zmizely
Nicméně netušíš jak naimportovat tu vytvořenou UI třídu do nadřazeného modulu? Myslím to co popisuju v té mé otázce v blogpostu... tu mojí metodu setclass().