Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.
Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.
Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.
Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.
Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinek a poznámkách k vydání.
Příspěvek na blogu Truffle Security: Kdokoli může přistupovat ke smazaným a privátním repozitářům na GitHubu.
Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.
Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.
Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.
class image_create( QtGui.QDialog ): def __init__( self, Parent ): super( image_create, self ).__init__() self.ui=uic.loadUi('UI/create_image_progress.ui') self.ui.label_progress.setText("%i z %i" % ( 0, 0 )) self.connect(self.ui.buttonBox_abort.button( QtGui.QDialogButtonBox.Cancel ), SIGNAL("clicked()"), self.get_cancel) def get_cancel(self, event=False): self.image_break = True # it určí, jak se zobrazuje prováděná úloha, zda v IT MiB, nebo dakadických def create(self, path, name, size, it=False ) : self.ui.show() self.image_break = False if (size < 1024**3): part_size = 128*1024 # 128k bloky else: part_size = 1024**2 # 1M bloky parts=int(size/part_size) frag=size-parts*part_size allpath = os.path.join(path, name) newfile=open(allpath, 'w') oldperc=0 perc=0 part=chr(0)*part_size for seq in range (1, parts+1): newfile.write(part) if ( self.image_break == True ) : newfile.close() os.remove(allpath) break total_done = part_size*seq perc = int(float(total_done*100 / size)) #print "%i %i %i %f" % (seq, total_done, perc, float(total_done*100 / size)) if (oldperc < perc): self.ui.progressBar.setValue(perc) oldperc=perc self.ui.label_progress.setText("%s z %s" % ( hr_value( total_done, 3 , it ), hr_value( size, 1, it ) ) ) if ( self.image_break == True ): return 1 newfile.write(chr(0)*frag) total_done = part_size*seq + frag perc = int(float(total_done *100 / size)) #print "%i %i %i %f" % (seq+1, total_done, perc, float(total_done*100 / size)) self.ui.progressBar.setValue(perc) self.ui.label_progress.setText("%i z %i" % ( total_done, size)) newfile.close() return 0 # time.sleep( 5 )
Řešení dotazu:
import spam spam.ham = "dirt"Uvnitr modulu uvidis promenou
ham
, spam
je odkaz na jeho jmenny prostor. Ale takhle to nedelej, pacz je to neskutecna prasarna a prvni pythonista ktery to uvidi ti pracky urazi a necha te to za trest prepsat do php.
Porad prasacky ale aspon pouzitelny je udelat si v modulu inicializacni funkci ktera bude fungovat jako konstruktor. Ne ze by v tom byl technicky rozdil, ale je prehlednejsi mit veskerou logiku modulu uvnitr toho modulu a nespolehat se ze nekdo "zvenku" vi co a kam ma strcit aby to zacalo fungovat.
Uplne nejcistsi zpusob je udelat proste objekt a strkat veci konstruktoru. Vsechno je reference, takze muzes zonglovat s relativne velkym mnozstvim dat bez kopirovani a je veskrze jedno jestli mas v hlanim programu referenci na modul nebo referenci na nejakou instanci – vsechno je objekt. Jestli vis ze nebudes potrebovat vic jednu instanci tak je to zbytecne, naopak je jednodussi trochu opevnit modul s inicializacni funkci (hlavne zajistit aby nesel inicializovat vicekrat) a interpret z nej udela perfketni singleton bez prace.
Tiskni
Sdílej: