Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
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?