Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem se nově stal čínský LineShine v Národním superpočítačovém centru v Šen-čenu (NSCS) s výkonem 2,198 exaFLOPS. Z prvního místa sesadil americký superpočítač El Capitan s výkonem 1,809 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 215 místo. Karolina, GPU partition klesla na 249. místo a Karolina, CPU partition na 475. místo.
… více »Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.
Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.
Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.
V lednu bylo oznámeno, že desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. O víkendu byla vydána první preview verze.
Minulý týden byl oficiálně vydán Android 17. Detaily na blogu a stránkách věnovaných vývojářům.
Dnes jde do prodeje zařízení Steam Machine. Steam Machine 512 GB za 1 039 EUR a Steam Machine 2 TB za 1 359 EUR. Do čtvrtka 25. června do 19:00 se lze zapsat na seznamy. Ty budou jednorázově náhodně slosovány, čímž bude určeno pořadí rezervací a čekacích listin.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.51.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek v oznámení o vydání a také na YouTube a PeerTube.
Byla vydána nová verze 2026.3.0 "Carousels & Killer Whales" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu.
Tento týden (24. a 27. června) vyprší platnost Microsoft certifikátu v UEFI vydaných v roce 2011. Nové certifikáty byly vydány v roce 2023. Kdo na počítačích, i virtuálních, používá zabezpečené spouštění (Secure Boot), měl by si ověřit, že má certifikáty aktualizovány, viz např. články na Red Hat nebo Fedora. Pro stávající systémy se nic nemění. Nadále se budou normálně spouštět. Zavaděče podepsané pouze klíčem z 2023 se ale na počítačích s pouze certifikátem 2011 nespustí. Ve Fedoře je zavaděč shim ve verzi 16.1-6 podepsán klíči 2011 i 2023.
Před časem jsem se rozhodl, že když už je to mezi mnou a vývojem web apps tak vážné, nezůstanem u PHP a praštíme do toho. Začal jsem objevovat Python na webu, prošel jsem několik různých technologií a frameworků (což nutně neznamená, že jsem je zase opustil) a dnes bych rád lehce rozebral jeden problém, na který jsem narazil při práci na jedné větší věci v Djangu.
Django u mě dříve hrálo druhé housle a to díky TurboGears a čistým mod_python handlerům (svůj Cocoon-like framework se doufám brzy dokopu vydat jako opensource), ale pro ten současný projekt jsem se rozhodl, že mu dám šanci. A stálo to za to. Pochopil jsem více jeho odlišnosti, jeho sílu (i když k používání jejich "templating engine" mě nikdo nedonutí -- Genshi od tvůrců Tracu je neskutečně mocný nástroj), ale také jsem narazil na pár otravných problémů. (Mj. pro mě naprosto nepochopitelný záměr vývojářů Djanga nemít žádnou generovanou API dokumentaci...prý jejich klasická dokumentace stačí...hehe. Kůži nám naštěstí zachraňují hned dva aktivisté: http://djangoapi.matee.net/ a http://djangoapi.quamquam.org/trunk/. Je tu mimochodem vidět, že u Djangů doma se na dokumentování kódu často celkem obstojně kálí...)
Rozepsat se chci o problému s odvozováním datových modelů prostou objektovou dědičností, které je alternativou (těžkopádnému a ošklivému) řešení s ForeignKey či OneToOne poli. Kdo by si myslel, že je to přirozené a bez problému to půjde, narazí. Dá se dostat celkem daleko, v podstatě vše kromě reflektování změn v modelu v admin rozhraní lze jednoduše udělat. Stačí vytvořit nový model, příp. odvodit i vlastního managera a udělat formulářové třídy (třeba na košatější registrační formuláře -- tam jsem ale narazil ještě na problém, že SelectFieldu nelze vnutit defaultní hodnotu -- prý to není věc Djanga, bug byl uzavřen -- takže se konalo další subclassování
a pak vytvořit vlastní backend, abyste donutili Django se autentizovat oproti vašemu novému modelu. Pokud ale chcete dodatečné informace zobrazovat a editovat v admin rozhraní, narazíte na problém. Přepsání vnořené třídy Admin, která definuje vzhled admin rozhraní, totiž nemá žádný efekt.
Řešením je ještě před odvozením nové třídy pro uživatele tu stávající třídu a podtřídu Admin "nadopovat" položkami, se kterými potřebujete pracovat.
Mějme tedy uživatele, ke kterému potřebujeme registrovat nějaké ty oblíbené položky.
from django.contrib.auth.models import User
class MyUser(User):
favorites = models.ManyToManyField('AdSpace', blank = True)
class Meta:
db_table = 'auth_user' # To abychom donutili MyUser pracovat nad tabulkou, kam si Django ukládá uživatele
Ty většinou jako administrátoři nebudeme potřebovat editovat, je to věc každého uživatele. Řekněme ale, že chceme mít přístup k adrese. Přidání např.
mesto = models.CharField('Město', maxlength = 50, blank = True)
a předefinování proměnné fields ve vnořené třídě Admin nám mesto do admina nedostane. Chyba žádná, ale položka se prostě nezobrazí, jako kdyby neexistovala.
Takže před definici MyUser dáme:
User.add_to_class("mesto", models.CharField('Město', maxlength = 50, blank = True))
User._meta.admin.fields += (
("Adresa", { 'fields': ('mesto', ) }),
)
a hned máme v Admin rozhraní fieldset s položkou město. Výhodou je to, že položka je přímo v editaci uživatele, žádný další model nepotřebujeme (= méně objektů v paměti a méně dotazů do DB) a do našeho nového modelu si můžeme nasypat metody pracující pouze nad daty našeho modelu a pak je v requestu volat podle libosti (ovšem za předpokladu, že máme vlastní backend, který nám po přihlášení vrátí instanci MyUser a ne User). Nevýhodou je to, že metoda add_to_class bere pouze self a dva argumenty, takže pro přidání 10 polí ji musíme volat 10×.
Přidat si samozřejmě můžeme i nová pole, která chceme zahrnout do hledání (čárka za 'mesto' je povinná):
User._meta.admin.search_fields += ('mesto', )
atd...
Jinak mi ale Django dělá radost a přes všechny neduhy je to celkem povedený kousek software.
UPDATE: Problém nastává, když se pokusím přes add_to_class přidat ForeignKey na sebe sama. To zacyklí dev server tak, že ho musím sestřelit. Přidání ForeignKey na sebe sama přímo v třídě samozřejmě funguje, ale to neřeší můj problém s adminem. Včera jsem si v jednu chvíli zacyklení všiml až pozdě, obě jádra jely na 100%, 2GB paměti v háji a swap skoro taky... Reset už jsem v Linuxu opravdu dlouho nepoužil 
Tiskni
Sdílej:
Článek by se klidně mohl jmenovat Django a rozšiřování modelu. Problematiku hezky popisuje např. http://www.b-list.org/weblog/2007/02/20/about-model-subclassing.Moc dobre napsany clanek, dik za link. Celkem se zacinam pripravovat na to, ze se subclassovani v tomto pripade vzdam. Nejde o princip, spise o cas, ktery stravim rewritem. S
edit_inline u ForeignKey dosahnu snad prakticky stejneho efektu a ztratim u toho mene mozkovych bunek...
Z poslední doby doporučuju Django Master Class.Jo, jo, tahle stranka uz mi sedi v del.icio.us
Tech dobrych prezentaci je tam vice.