Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
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 timemetoda _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)
(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