Po 26 letech od protiprávního policejního zásahu, který byl spuštěn na základě podnětu společnosti Microsoft, Obvodní soud pro Prahu 2 rozsudkem potvrdil, že Mironet prokázal významnou část svého nároku na náhradu škody vůči Ministerstvu spravedlnosti ČR. Soudem nyní přiznaná část nároku znamená rekordní odškodné, jaké kdy české soudy přiznaly za nesprávný postup státu. Spor byl rozdělen na několik škod, u pravomocně uzavřených částí
… více »Lehké desktopové prostředí LXQt bylo vydáno ve verzi 2.4.0. Jde o převážně opravné vydání s drobnými vylepšeními podpory Waylandu.
Počítačová hra Kingdom Come: Deliverance 2 českého studia Warhorse získala cenu BAFTA v kategorii nejlepší příběh. V konkurenci pěti dalších nominovaných děl porazila i úspěšnou francouzskou hru Clair Obscur: Expedition 33, která v letošním ročníku získala cenu za nejlepší hru roku.
Projekt KDE oslaví v říjnu 30 let. Matthias Ettrich poslal 14. října 1996 do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu. Důležité milníky jsou zobrazeny na časové ose KDE.
Byly vyhlášeny výsledky letošní volby vedoucí/ho projektu Debian (DPL, Wikipedie). Poprvé povede Debian žena. Novou vedoucí je Sruthi Chandran. Letos byla jedinou kandidátkou. Kandidovala již v letech 2020, 2021, 2024 a 2025. Na konferenci DebConf19 měla přednášku Is Debian (and Free Software) gender diverse enough?
Byla vydána nová verze 10.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přidána byla podpora Orange Pi 4 LTS. Přibyl balíček Prometheus.
Implementace VPN softwaru WireGuard (Wikipedie) pro Windows, tj. WireGuard pro Windows a WireGuardNT, dospěly do verze 1.0.
V Pekingu dnes proběhl 2. ročník půlmaratonu humanoidních robotů. První 3 místa obsadili roboti Honor Lightning v různých týmech. Nový rekord autonomního robota je 50 minut a 26 sekund. Operátorem řízený robot to zvládl i s pádem za 48 minut a 19 sekund. Řízení roboti měli časovou penalizaci 20 %. Před rokem nejrychlejší robot zvládl půlmaraton za 2 hodiny 40 minut a 42 sekund. Aktuální lidský rekord drží Jacob Kiplimo z Ugandy s časem 57 minut a 20 sekund [𝕏].
Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.
Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.
JavaScript si za dobu své existence nevydobyl zrovna nejlepší pověst a jen pozvolna se začíná prosazovat jako plnohodnotný samostatný programovací jazyk (viz projekty jako node.js). Existuje však celá řada důvodů, proč JavaScript začít brát vážně.
Při pohledu na výsledky syntetických benchmarků (http://shootout.alioth.debian.org/u32/which-language-is-best.php#about) je zjevné, že válka mezi výrobci prohlížečů o co nejrychlejší engine pro JavaScript přináší konkrétní ovoce. Už dnes jsou implementace JavaScriptu rychlejší než u většiny nejpoužívanějších dynamicky typovaných jazyků a pokud se najdou ještě nějaké rezervy, což je při míře prostředků a energie, která se do tohoto výzkumu vynakládá, více než pravděpodobné, může se JavaScript začít používat i v oblastech, kde by to dříve bylo nemyslitelné.
Už dnes existuje poměrně elegantní a jednoduchý způsob, jak s pomocí JavaScriptu docela snadno a rychle vytvořit multiplatformní desktopovou aplikaci s konvenčním vzhledem a chováním a přitom se nevzdát vymožeností, které přináší webový prohlížeč. Konkrétně například nechat zobrazit část aplikace pomocí HTML kódu či třeba pomocí SVG. Tou možností je použití XULRunneru od Mozilly, který v sobě integruje Gecko.
Taková jednoduchá aplikace vypadá tak, že si vytvoříte základní adresářovou strukturu s metadaty, do ní vložte popis GUI pomocí značkovacího jazyka XUL a okořeníte nějakým tím JavaScriptem (https://developer.mozilla.org/en/getting_started_with_xulrunner). V kombinaci například s CouchDB, u které se díky použítí JSONu pro komunikaci s databází v podstatě můžete vyhnout nepříjemnostem s objektově-relačním mapováním, to tvoří lákavý základ pro řadu aplikací.
Na rozdíl od běžných webových aplikací má lokální XULRunnerovská JavaScriptová aplikace řadu možností a bezpečnostních privilegií navíc. Může pomocí Ajaxu komunikovat s webovými servery v jiných doménách, spouštět lokální procesy (pomocí nsiProcess), pracovat s lokálními soubory, používat nativní souborové dialogy, otevírat nová samostatná okna, má bohatší možnosti v používání klávesových zkratek atd. Navíc XULRunner má v sobě integrován přímo Firefox, což znamená, že se můžete obejít bez jeho distribuce s prográmkem.
Tahle varianta mě zaujala a řekl jsem si, že by nebylo špatné se zamyslet nad možností vytvořit si nějaký elegantní framework, který by tvorbu takových jednohubek usnadnil. Začal jsem tedy zvažovat, jaká architektura by se pro něj hodila. Hlavní potíž spočívá v tom, že stejně jako u webového prohlížeče je JavaScript zpracováván v jednom vlákně. To přijímá události od uživatele (např. stisknutí tlačítka), zpracuje kód, který je jim přidělen a poslouchá dále. Krom možnosti vyhodnotit daný kód po určitém čase (či asynchronního přijetí HTTP požadavku) programátor žádné možnosti nemá.
To ale bohužel nestačí. Představte si situaci, kdy potřebujete vytvořit nějakého průvodce (wizzard), nějakou posloupnost formulářů. Teď trochu neférově pominame fakt, že XUL takovou komponentu definuje - zde mi jde o obecný problém.
V elegantním frameworku byste předpokládali, že při otevření průvodce by byla definována metoda vypadající nějak takto:
show(page1); show(page2); show(page3);
Jenže to by předpokládalo, že metoda show() zobrazí nový formulář, ukončí provádění aktuálního kontextu, spustí nové přijímání a zpracovávání událostí a v případě, že jedna z nich by byla stisknutí tlačítka “next” na formuláři, předala by řízení zpět do této metody na místo, kde naposledy přestala.
To by šlo provést tak, že při zavolání metody show() se zobrazí nový formulář, vytvoří se kontinuace a pomocí vyvolání výjimky se ukončí vykonávání tohoto úkolu a vlákno JavaScriptu přejde opět do režimu přijímání událostí. Při stisknutí tlačítka “next” by se obnovil aktuální kontext z uložené kontinuace a pokračuje se vesele dalším show().
Bylo by to hezké, ale bohužel JavaScript kontinuace nemá a asi mít jen tak nebude. Přesněji řečeno, Rhino kontinuace má, jenže to je pro XULRunner aplikace jen pramalá útěcha. A autoři V8 o implementaci kontinuací vůbec neuvažují.
Bohužel i ostatní možnosti, jak tento problém nějak vyřešit, Gecko úspěšně sabotuje. JavaScript není dostatečně reflektivní, aby měl tak bohatý přístup ke stacku, aby dokázal informace aktuálního stavu stacku uložit a zpětně rekonstruovat. I když se vzdáme přímo myšlenky použít kontinuace, které jsou pro tento případ stejně asi zbytečně komplexní, JavaScript nenabízí použitelné řešení. Nemá výjimky s návratem na místo vyvolání, nemá žádné uspání procesu atd. Mozilla sice umožňuje vytvářet nová vlákna (Worker), ale ta jsou silně oddělena a pro tento účel je nejde bohužel použít.
Jediná zdánlivě použitelná varianta je použít uzávěr nad zbytkem metody po každém show, bohužel to selhává především na faktu, že takový uzávěr může ovlivnit pouze aktuální kontext a kontexty se tedy nesmí zanořovat.
Bohužel nezbývá tedy než takovou aplikaci nechat plně řidit událostmi prostřednictvím nějakého MVC/MVP vzoru, kde se tok řízení aplikace ztrácí.
Krom problémů s absencí kontinuací je ještě spousta jiných věcí, co by se daly JavaScriptu vytknout a většina z nich souvisí s tím, že pro tento jazyk byla zvolena C-like syntaxe. Oddělení výrazů od příkazů (a s tím např. související dvojí možnost zapsání alternativy), indexování od nuly u jazyka bez ukazatelů, naprosto příšerný základní cyklus for, poměrně ukecaný zápis uzávěrů atd.
Navíc JavaScript trpí tím, že si v něm konkuruje několik přístupů, jak např. nahradit třídy, přičemž žádná z hlavních takto vzniklých knihoven není natolik obecná, že by předpokládala spouštění JavaScriptu bez vazby na prohlížeč. Samozřejmě nelze tvrdit, že taková konkurence je úplně špatná, ale život to komplikuje.
Přes výhrady, které bych k JavaScriptu měl, nemyslím, že je to jazyk zavrženihodný. Ale i věkem je to puberťák kterému by neuškodilo dospět.
Tiskni
Sdílej:
Ja som kedysi na Javascript dosť nadával pretože som nerozumel ECMA-Script-u. S ECMA-Scriptom robím momentálne takmer denne a po tom, čo som začal chápať jeho filozofii sa mi zdá aj celkom fajn.
Ćo sa týka samotného webového javascriptu ten pravdu povediac moc nemusím. Podľa mňa samotné prehliadače mali mať od začiatku niečo ako JS framework namiesto súčasných trápnych volaní ako insertHTML. V čistom JS bez frameworkov som istého času písal (a aj napísal) funkčného jabber klienta (ktorý bežal v Opere, IE >= 6, Gecko, Webkit, Konqueror >= 3.5). Ani si neviete predstaviť množstvo bugov v implementácii DOM.
Ako užívateľ JS nemám rád, často surfujem z mobilu a 10s záseky na weboch používajúcich JS frameworky sa mi nepáčia. Hlavne keď väčšina vecí by sa dala poriešiť cez CSS. Zvyšok (dynamické prvky) cez JS, ale chcelo by to pridať do browserov niečo ako framework, aby nebolo potrebné linkovať obrovské na parsovanie náročné hrúzy.
Podľa mňa samotné prehliadače mali mať od začiatku niečo ako JS frameworkIMHO by prohlížeče dneska měly povinně obsahovat posledních pár verzí jQuery, nějaký meta tag pro zvolení verze a nějaký fallback. Ale už za tuhle myšlenku mne místní XHTMListi nejspíš sežerou
Ja som kedysi na Javascript dosť nadával pretože som nerozumel ECMA-Script-u.Tak ono je to de facto to samý, že :). Ale teď, když už to znáš, tak je zbytečné ti připomínat rozlišení jazyka a objektového modelu.
a nemal som cas sa rozpisovatTak snad příště :).
page1.accepted.connect(page2.exec); page2.accepted.connect(page3.exec); page3.accepted.connect(wizzard.mameHotovo); page1.exec();Co víc si přát?