Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).
Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.
Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.
Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.
Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu
… více »Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).
Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.
KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].
Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.
… více »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?