Společnosti IBM a Red Hat představily Project Lightwell s investicí 5 miliard dolarů. Jedná se o důvěryhodné clearingové centrum pro bezpečnost open source softwaru a zabezpečení dodavatelských řetězců s novým AI modelem a globální skupinou více než 20 000 softwarových inženýrů. Služby centra budou dostupné prostřednictvím komerčních předplatných. Project Lightwell staví na iniciativách jako Anthropic Glasswing nebo OpenAI Trust Access for Cyber.
Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 26.05. Podrobný přehled novinek v poznámkách k vydání.
Český stát by v budoucnu mohl provozovat vlastní alternativu ke komunikačním aplikacím typu WhatsApp, Signal, Telegram, Facebook Messenger a podobně. Cílem je zajistit bezpečnou datovou komunikaci pro stát a jeho důležité subjekty, jako jsou bezpečnostní složky, ministerstva a další organizace.
Už za týden, ve čtvrtek 4. června, se v Národní technické knihovně v pražských Dejvicích uskuteční další konference věnovaná tématům spojeným s IPv6 - Den IPv6. Program akce a registrační formulář jsou k dispozici na webu akce. Kapacita konference je omezená, proto organizátoři doporučují, aby se vážní zájemci přihlásili včas (k dnešnímu dni zbývá přibližně 30 volných míst). Konferenci Den IPv6 2026 organizují i letos společně sdružení CESNET, CZ.NIC a NIX.CZ.
Zařízení Steam Deck OLED bylo znovu naskladněno, ale vlivem rostoucích cen pamětí a úložišť má novou, vyšší cenovku. Steam Deck OLED 512 GB stojí nově 779 EUR (stál 569 EUR) a Steam Deck OLED 1 TB stojí 919 EUR (stál 679 EUR). Samotné zařízení se nijak nezměnilo a nové ceny tedy pouze odráží aktuální náklady na komponenty a další globální logistické výzvy, se kterými se potýká celá branže.
Český telekomunikační úřad zahajuje novou etapu využívání vysokofrekvenčního rádiového spektra v pásmu 26 GHz. Toto pásmo bude od 1. 7. 2026 otevřeno pro provoz moderních bezdrátových sítí, zejména sítí páté generace (5G), pevných bezdrátových přístupových sítí (FWA) a lokálních či průmyslových sítí určených například pro výrobní areály, logistická centra nebo technologické kampusy. Současně s otevřením pásma 26 GHz přistoupil ČTÚ ke zpřístupnění informací o využívání rádiových kmitočtů v tomto pásmu.
Logitech představil myš Signature Comfort Plus M850 L s polstrovanou opěrkou dlaně pro větší pohodlí a sadu s touto myší a klávesnicí s integrovanou opěrkou dlaní Signature Comfort Plus Combo MK880.
Gaël Duval se rozepsal o novinkách a plánech Murena a /e/OS. Počet uživatelů telefonů Murena a mobilního operačního systému /e/OS bez aplikací a služeb od Googlu se blíží 100 000. Ambicí je, aby se /e/OS stal třetí mobilní platformou v Evropě i na světě, s potenciálem dostat se i na PC. Blíží se vydání nové verze 4 s funkcemi zálohování a obnova, import e-mailů z Gmailu a rozpoznávání hlasu. Murena Workspace přinese videohovory, elektronický podpis a správu zařízení (MDM).
Dnes a zítra probíhá Ubuntu Summit 26.04. Na programu je řada zajímavých přednášek. Sledovat je lze na YouTube. Úvodní slovo měli Mark Shuttleworth a Jon Seager.
Lazygit byl vydán ve verzi 0.62.0. Jedná se o TUI (Text User Interface) nadstavbu nad gitem.
Jak již víte, objekty jsou ukládány do databáze. Abych se vyvaroval toho, že SQL příkazy budou na desítkách či stovkách míst, vytvořil jsem jednu třidu, která má na starosti persistenci dat. Druhou a možná ještě důležitější výhodou je zjednodušení práce. Tato třída definuje několik málo základních metod, které jsou velice snadné na používání. Programátor tudíž vůbec nemusí znát JDBC, aby mohl naprogramovat nové vlastnosti.
Jak vidíte z diagramu tříd, subsystém persistance se skládá ze dvou
rozhraní a jejich implementací. Hlavním rozhraním je
Persistance, které definuje základní metody pro manipulaci a
hledání objektů. Jeho implementací je MySQLPersistance.
Nicméně v kódu nevytvářím jeho instance, ale přistupuju k němu přes
PersistanceFactory. Jak název napovídá, jedná se o Factory
pattern. Hlavní výhodou je, že pokud bych přešel na jinou databázi, stačilo
by mi naimplementovat pro ni podporu jako implementaci rozhraní
Persistance a změnit jednu řádku v
PersistanceFactory.
Součástí této vrstvy je i transparentní cache. V případě potřeby můžete
použít i jinou než předvolenou cache při volání metody
getPersistance v třídě PersistanceFactory. Toho
se například používá při indexaci dat pro vyhledávání. Zvolená cache je
hojně volána na začátcích metod v MySQLPersistance, takže není
nutné se zdržovat pomalými JDBC voláními. DefaultCache je
velice primitivní a vyřazuje objekty, které nebyly během několika
posledních minut použity nebo už dlouho nebyly synchronizovány s databází.
Až budu mít čas, vytvořím alternativní implementaci založenou na některé
Open Source knihovně, nejspíše z Jakarty. Slibuji si od toho větší
stabilitu.
Controller je relativně jednoduchý. Základem je třída
AbcFMServlet, což je potomek HttpServletu. Hlavní
práce se uskutečňuje v přepsané [overriden] metodě service().
Ta nejdříve zavolá metodu performInit(), která má na starosti
uložení parametrů a předdefinovaných proměnných do mapy env a
zpracuje přihlašování. Dále zavolá abstraktní metodu
process(), která vrátí jméno šablony, která má sloužit jako
výstup. Tato šablona se nahraje a vykoná. Její výstup se vrátí
uživateli.
Metoda process() má následující tvar:
protected abstract String process(HttpServletRequest request,
HttpServletResponse response, Map env) throws Exception;
Každý servlet dědící z této třídy je tedy povinen ji naimplementovat. V
ní se provádí veškeré zpracování vašich požadavků. Tedy kontrola parametrů,
zpracování a finálně výběr šablony, respektive přesměrování prohlížeče na
jinou stránku. Například když uložíte diskusi, zavolá se servlet
EditDiscussion. Ten uloží diskusi do databáze (a zároveň do
cache). Jenže proč by měl zobrazovat diskusi, když od toho je servlet
ViewRelation? Proto jednoduše vypočítá nové URL a přes volání
response.sendRedirect(url) přesměruje prohlížeč na tento
servlet. Jako název šablony vrátí null, takže žádná další data nejsou
vrácena prohlížeči.
Zajímavým fíglem je ještě výběr šablony. Každá šablona se skládá ze dvou
souborů. Prvním je template.fm, což je šablona stránky. Tedy
obligátní levý sloupec se službami a rubrikami, pravý sloupec s aktuálními
články na ostatních serverech a patička s copyrightem. Druhým souborem je
vlastní obsah stránky, tedy zobrazení formuláře či tohoto článku. Toto
dělení je pochopitelné, pokud chci změnit něco v šabloně stránek, nemusím
opravovat sto souborů, ale jen jeden.
AbcLinuxu existuje v několika variantách, kromě hlavní existuje ještě varianta pro lynx, pro sidebar Mozilly a připravuje se žádaná verze pro Plucker. Bylo by hloupé, kdyby se kvůli každé této variantě musely vytvářet všechny soubory znovu. Proto jsem vytvořil mechanismus pro jejich sdílení.
Základem je stejná stromová struktura všech variant. Pokud je potřeba,
vytvoří se kopie souboru v podadresáři varianty a ta získá přednost před
defaultní variantou. Vysvětlím to na příkladě. Pokud si prohlížíte úvodní
stránku v Internet Exploreru či Mozille, použije se předvolená varianta
web. Vykoná se tedy šablona vzniklá ze souborů
web/template.ftl a web/show/index.ftl. Pokud však
používáte lynx, použijí se soubory lynx/template.ftl a
lynx/show/index.ftl, protože jsou oba předefinované pro
šablonu lynx. Ale u prohlížení článku pod lynxem se použije
šablona lynx/template.ftl a soubor
web/show/article.ftl, neboť jej nebylo třeba změnit. Celá
varianta pro lynx se ve skutečnosti skládá jen z šablony a úvodní
stránky!
V řeči kódu se tento výběr děje v třídě FMTemplateSelector
a jeho obecnému předku TemplateSelector.
TemplateSelector při inicializaci načte xml soubor s definicí
všech šablon v systému. Každý servlet má nadefinováno několik akcí. K této
akci je pak přiřazena šablona v několika variantách. Pokud tedy tyto
varianty existují, jinak je tam uvedena jen jedna pro předvolenou variantu
web. U šablony je možné nadefinovat proměnné, které se mají
vložit do mapy env. Typicky to bývá titulek stránky.
Servlety pak volají metodu select(). Například
EditDiscussion podle kontextu zavolá jednu z metod:
FMTemplateSelector.select("ViewRelation","article",env,request,null);
FMTemplateSelector.select("ViewRelation","driver",env,request,null);
FMTemplateSelector.select("ViewRelation","discussion",env,request,null);
FMTemplateSelector.select("ViewRelation","hardware",env,request,null);
FMTemplateSelector.select("ViewRelation","software",env,request,null);
V metodě select() se nejdříve detekuje prohlížeč a pokud se
jedná o nástroj na mirrorování, je vrácena stránka s upozorněním, že toto
chování se nám nelíbí. Následně se vyhledá v mapě šablon kombinace servletu
a akce. Pokud taková kombinace neexistuje, vyhodí se vyjímka. Pak se pro
kombinaci servletu, akce, prohlížeče a HttpRequestu vybere
šablona, například web. Pak se pro danou šablonu zjistí obsah
šablony, včetně případných proměnných (kromě statických jsou podporovány i
dynamické, například titulek článku je stejný jako název článku). Název
šablony s obsahem se uloží do proměnné a jako výsledek se vrátí řetězec
template+"/template.ftl", například
"plucker/template.ftl". Tato šablona se pak načte a vykoná v
metodě service() v AbcFMServletu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
ukladani dat do XML je moderni trend. neni sice optimalni, ale vyrobci db se snazi vytvorit lepsi podporu pro XML. pokud to jeste oracle neumi, tak verim, ze brzy bude umet XPath dotazy
spise by me zajimalo, co na designu shledavate slozitym? me to prijde naopak velice jednoduche a elegantni.
mam tu hierarchii trid reprezentujici objekty, jednoduchy zpusob pro jejich persistenci, controller a view. pokud se nekomu MVC architektura zda slozita, tak je to jeho problem, vyvracet mu to nebudu, casem na to prijde sam.
slozitejsi je vyber sablon, to priznavam, na druhou stranu mi to hrozne setri cas a usnadnuje spravu. verzi pro lynx jsem diky ni zvladl za hodinu vytvorenim tri souboru, kdybych musel delat vsechny soubory pro lynx znovu, vykaslal bych se na to. v planu je verze pro plucker (opet mi budou stacit tri/ctyri soubory) a pro gprs.
Ja osobne uz pouzivam pekne dlouhou dobu Smarty(smarty.php.net) a jsem velmi spokojen.