Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.
Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.
Byla vydána aktualizována Příručka pro začínající wikipedisty a wikipedistky (pdf).
Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.
Byla vydána nová verze 7.6 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Správce hesel KeePassXC byl nahrazen správcem hesel GNOME Secrets. Bitcoinová peněženka Electrum byla povýšena na verzi 4.7.0. Tor Browser byl povýšen na verzi 15.0.8. Další novinky v příslušném seznamu.
Chris Down v obsáhlém článku „vyvrací mýty o zswap a zram“, vysvětluje, co vlastně dělají a jaké jsou mezi nimi rozdíly. Doporučuje vyhýbat se zram na serveru a bez OOM.
Porota v Los Angeles shledala firmy Google a Meta odpovědnými v přelomovém soudním sporu, který se týká závislosti na sociálních sítích; firmy musí zaplatit odškodné tři miliony dolarů (63,4 milionu Kč). Společnosti, které s verdiktem nesouhlasí, čelily obvinění, že své sociální sítě a platformy záměrně navrhly tak, aby si na nich děti vypěstovaly závislost. Porota došla k závěru, že technologické společnosti při navrhování a
… více »Jelikož vývojáři editorů Vim a Neovim začali při vývoji využívat LLM, Drew DeVault se rozhodl forknout Vim a vytvořil projekt Vim Classic. Vychází z Vimu 8.2.0148, tj. těsně před zavedením Vim9 skriptování.
Byla vydána nová verze 0.56 open source počítačové hry Unvanquished (Wikipedie), forku počítačové hry Tremulous. Instalovat ji lze také z Flathubu.
FreeCAD (Wikipedie), tj. svobodný multiplatformní parametrický 3D CAD, byl vydán ve verzi 1.1 (YouTube). Po roce a čtyřech měsících od předchozí verze 1.0. Přehled novinek i s náhledy v poznámkách k vydání.
Asi každému něco řekne, když někdo o nějaké třídě prohlásí, že je to singleton. Ale možná ne každému (stejně jako do dneška mě) nic neřekne, pokud někdo o třídě řekne, že je borg.
Idea singletonu je, že v celém programu existuje maximálně jedna instance dané třídy. Nicméně tento požadavek může být často příliš tvrdý, jelikož ve skutečnosti často požadujeme, aby kterákoliv instance dané třídy měla stejný stav, což zařídíme tím, že dovolíme, aby existovala pouze jedna instance, která logicky bude mít všude stejný stav.
Existuje ale ještě jeden možný přístup, který je většinou logicky bližší našim požadavkům, a to, že je nám jedno, kolik instancí si kdo kde vytvoří, ale všechny tyto instance budou ve stejném stavu. A toto je borg
class Borg:
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
borgA = Borg()
borgB = Borg()
borgA.pozdrav = "My jsme Borg, budete asimilovani"
print borgB.pozdrav
Tiskni
Sdílej:
Zrovna tahle Pythonní implementace mi připadá jako zakuklený Singleton, přičemž se na interpreter hodila starost, aby ten stav byl nanejvýš jeden.
Nemohl bys uvést příklad, kde se hodí Borg víc, než Singleton?
Singleton::getinstance() používáš new Singleton(). V singletonu by ti new narazilo na absenci public konstruktoru. Jinak se to chová úplně stejně.
>>> borgA is borgB False >>> id(borgA), id(borgB) 33097776, 33695504Borgove jsou rozdilne instance na ruznych mistech v pameti, zatimco singleton je jedina instance. Napriklad muzu dva borgy pouzit jako dva ruzne klice slovniku (pomijim ted ze pouzivat inherentne promenlivy objekt jako klic je blbost). Muzu vymyslet vyfikundace s borgy kteri budou instance ruznych trid ale sdilet stejny stav. Et cetera, et cetera… Mozna by se dalo i vymyslet rozumny pouziti pro neco takoveho, ale to uz bude asi kapku tezsi
btw borg v new-style tride vypada takhle:
class Borg(object):
shared = {}
def __new__(cls):
self = object.__new__(cls)
self.__dict__ = share
return self
seven, locutus = Borg(), Borg()
seven is locutus # False
Mohl bys prosím tuto konstrukci pro nás nepythonisty vysvětlit?
Takže jde jen o to, že __shared_state je proměnná třídy?
A mohl bys prosím vysvětlit, co se děje v tom konstruktoru (?) __init__()?
A vůbec, kde se tam vzala proměnná "pozdrav"?
jednoduse receno, self.__dict__ je slovnik obsahujici vsechny atributy tridy. On ukazatel na ten slovnik atributu nastavil na ukazatel na tu tridni promennou -> vsechny instance maji stejnou sadu atributu.
Promenna pozdrav se tam vzala z
borgA.pozdrav = "My jsme Borg, budete asimilovani"
protoze python, pokud priradis do neexistujiciho atributu, ten atribut automaticky vytvori === prida do self.__dict__ novou dvojici klic-hodnota. A protoze self.__dict__ sdili (diky predchozimu 'hacku') vsichni borgove, muze ho borgB vypsat.
koukam ze sem to vysvetlil slozite jak mlaticku, ale to je tou nocni hodinou :)
).