Google Chrome 140 byl prohlášen za stabilní. Nejnovější stabilní verze 140.0.7339.80 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 6 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
LeoCAD (Wikipedie) je svobodná multiplatformní aplikace umožňující také na Linuxu vytvářet virtuální 3D modely z kostek lega. Vydána byla verze 25.09. Zdrojové kódy a AppImage jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
RubyMine, tj. IDE pro Ruby a Rails od společnosti JetBrains, je nově zdarma pro nekomerční použití.
Český LibreOffice tým vydává překlad příručky LibreOffice Calc 25.2. Calc je tabulkový procesor kancelářského balíku LibreOffice. Příručka je ke stažení na stránce dokumentace.
Byla vydána (Mastodon, 𝕏) vývojová verze 3.1.4 příští stabilní verze 3.2 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání.
Zakladatel ChimeraOS představil další linuxovou distribuci zaměřenou na hráče počítačových her. Kazeta je linuxová distribuce inspirována herními konzolemi z 90. let. Pro hraní hry je potřeba vložit paměťové médium s danou hrou. Doporučeny jsou SD karty.
Komunita kolem Linuxu From Scratch (LFS) vydala Linux From Scratch 12.4 a Linux From Scratch 12.4 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází s Glibc 2.42, Binutils 2.45 a Linuxem 6.15.1. Současně bylo oznámeno vydání verze 12.4 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.
Organizátoři konference LinuxDays ukončili veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata, která na letošní konferenci zaznějí. Hlasovat můžete do neděle 7. září. Poté podle výsledků hlasování organizátoři sestaví program pro letošní ročník. Konference proběhne 4. a 5. října v Praze.
Byla vydána verze 11.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma. Vypíchnout lze, že v Plasmě byl implementován 22letý požadavek. Historie schránky nově umožňuje ohvězdičkovat vybrané položky a mít k ním trvalý a snadný přístup.
Áno je to jedno z riešení. To moje riešenie používa hack v podobe vloženia celého webu do divu len preto, lebo knižnica na manipuláciu s DOM nevie manipulovať s celým vráteným dokumentom. Ak toto nedokáže knižnica priamo na to určená tak si dovolím tvrdiť, že tá knižnica je jednoducho vadná. Odosielanie formulára do skrytého iframu je hack a myslím, že vydrží kratšie než hack s divom. V poslednej dobe prehliadače zvyknú zvyšovať bezpečnosť medzi rámcami, takže neviem dokedy sa bude dať odchytiť onload.
Minule som dostal do rúk optimalizáciu jedného webu. Bol to web zo šablóny s veľkosťou asi 10MB (načítavanie okolo minúty). V hlavičke napchaných asi 30 jquery pluginov. Tak si teda hovorím, že tam dám on demand loading obrázkov počas scrollovania. Hodím teda jquery plugin na to a zistím, že bez nejakého hacku funguje len vtedy ak scrolluje celý web (nie div s overflowom auto). No nič, hodím teda hack a bum rozhodilo filtrovanie pretože filtre rátali s tým, že všetky obrázky budú načítané. Tak som teda trochu ohackoval filtre aby si aktualizovali rozmery pri onloade na obrázkoch. Bolo to brutálne pomalé, preblikával celý web ... Takto som sa ešte pár dní hral kým som to celé zahodil. Prácu s jQuery by som prirovnal k prechádzke mínovým poľom. Jednoducho si myslíte, že ste už len krôčik od toho aby ste sa z toho dostali a zrazu vaše vnútornosti lietajú všade po okolí.
Aby som nebol zlý len na jQuery ... skúšal som teda aj iné knižnice. Jedna z vecí ktoré mi fakt u jQuery chýbajú sú bindingy ... ktoré som si myslel, že elegantne rieši AngularJS. A tak už 2 dni v práci riešim dynamický obsah formulára podľa informácii o produkte. Na prvý pohľad vyzerá obyčajný select s výberom produktov ako jednoduchá záležitosť. Angular má priamo možnosť urobiť options nad zoznamom objektov, vybrať ktorá property je label a ktorá je value ... lenže ak má byť value celý objekt tak je správanie totálne rozbité. Javascript totiž 2 rovnaké objekty nepovažuje za rovnaké a porovnáva referencie (dosť blbé na vysokoúrovňový jazyk). Takže aj keď mi z jedného API vylezie pekný zoznam produktov, z druhého vybraný produkt a sú rovnaké angular mi jednoducho stále vypisuje chybu že nemám vybraný produkt pretože mi objekty pri porovnaní == vrátia false (popis hacku na initial selection, ktorý je v mojom prípade neaplikovateľný). Jednoduché a rýchle riešenie spočíva v zaháknutí sa na načítanie zoznamu produktov a na načítanie objednávky (keďže sú doťahované paralelne a neviem ktorá bude skôr) a ich ohackovanie aby mali aj rovnakú referenciu. Možno sa to dá aj inak, ale AngularJS sa ešte len učím (musím keďže nám z práce odišiel expert na js a všetko teda zostalo na mne, doteraz som riešil len serverové veci).
Teraz idem s bývalým kolegom robiť totálnu integráciu angularu s djangom (tastypie na rest + môj zatiaľ nezverejnený html api browser). Máme v pláne celý kód dať open source (zrejme BSD licencia). AngularJS je pekná knižnica, ale brutálne trpí tým, že je postavená nad js. Ja sa stále snažím prísť na to ako ľudia dokážu pracovať s js, ale zatiaľ ma to stálo len veľa nervov a vytrhaných vlasov.
Vloženie dokumentu do elementu div je potrebné pretože jQuery nevie priamo pracovať s dátami, ktoré obsahujú elementy ako head, title …Coze ??
To je odkaz na aktuálny dokument, nie parsovaný dokument vrátený z xhr.
Ak ten divný kód nahradím:
$("#" + elementId).html($("#" + elementId, $response).html());
Tak mi vnútorné volanie $("#" + elementId, $response).html()
na validnom dokumente vráti undefined čo mi pri volaní .html(...) funguje podobne ako volanie bez argumentov tj. vráti aktuálne html namiesto modifikácie. Asi pol hodiny som strávil hľadaním toho prečo sa mi obsah divu neaktualizuje .... i keď mám taký pocit, že vo firefoxe to išlo.
Mňa nezaujímajú argumenty. V blogu som riešil úplne jednoduchý problém - odosielanie formulára javascriptom tak, aby som ponechal funkčnosť aj s vypnutým js a nemusel som používať nejaký extra kód na serverovej časti. V prvom komentári (keďže k blogu sa to nedá) som priložil zdrojové kódy a celé som to písal preto, aby sa niekto chytil zdrojákov a ukázal ako sa to má robiť správne (konkrétne som dúfal v úpravu posledného príkladu). To riešenie, ktoré som ukázal ja je nefunkčné, náchylné na chyby, bez ošetrenia prakticky čohokoľvek ... jednoducho typický js kód, ktorým je posiaty celý web. Keďže sa tu pohybuje mnoho mnoho programátorov lepších ako ja hodil som do blogu čo mi vadí pretože chcem vedieť ako sa to rieši správne.
Ja som čo sa týka vývoja js buď úplne nový alebo úplne mimo, ťažko povedať. Pred pár dňami nás v práci opustil jediný expert na javascript, takže som tieto veci musel prebrať ja. Primárne som vývojár v python (~50%) potom C++ (~20%), QML (~15%), zvyšok tvoria len marginálne veci typu lisp, haskell. Prakticky za všetkými jazykmi vidím nejakú logiku ale keď vidím v js pomocou jquery spúšťať metódu spôsobom $("selektor").názov_pluginu("názov_pluginu").metóda()
tak si začnem o js niečo škaredé myslieť. Teraz sa hrabem rôznymi materiálmi, chápem, že js je skôr funkcionálny jazyk s namontovanou syntaxou podobnou c / jave čo je podľa mňa absolútne nešťastné riešenie. Chápem, že asi musím zmeniť nejako myslenie (niečo ako prechod C++ - haskell) ale zatiaľ som nenašiel nejakú magickú formulu kedy som si povedal, že viem s tým robiť a jazyk mi neprekáža v tom čo chcem urobiť.
$('...').něco().něco()
), je to jen úspornější způsob, jak zapsat array map a foreach.
JS nie je funkcionálny jazyk, len má akú-takú podporu funkcionálneho programovania. Keď som sa naposledy o to zaujímal zamietli prijatie tail rekurzie. A k tomu zápisu myslím, že som minule videl $("datepicker").pickadate("pickadate").get("yyyy-mm-dd")
.
Tiskni
Sdílej: