понедельник, 6 июня 2016 г.

JavaScript

https://risingstars.js.org/2019/en/
фреймворки

ECMAScript 6
https://habr.com/en/post/305900/
https://github.com/mbeaudru/modern-js-cheatsheet/blob/master/translations/ru-RU.md

https://fossbytes.com/wp-content/uploads/2015/09/infographic-the-entire-javascript-language-in-one-single-image-491250-2.jpg

Императивный Функциональный ООП
https://habr.com/en/post/274415/

https://habr.com/en/post/243403/ - конспект по JavaScript 

https://www.w3.org/TR/hr-time/ - high resolution time 

https://www.w3.org/TR/navigation-timing/ - navigation timing


INTERNALIZATION
JavaScript Internationalization API 

Как научить веб-приложение говорить на 100 языках: особенности локализации
https://habr.com/en/company/badoo/blog/317484/

Объемная шпаргалка по JavaScript (The Ultimate JavaScript Cheat Sheet) 
https://www.codementor.io/johnnyb/tutorials/javascript-cheatsheet-fb54lz08k 


Четыре типа утечек памяти в JS и как от них избавиться (4 Types of Memory Leaks in JavaScript and How to Get Rid Of 
 
Правильная обработка ошибок в JavaScript 
https://habr.com/en/company/mailru/blog/282149/

Руководство по качественной обработке ошибок в JavaScript (A Guide to Proper Error Handling in 

Список того, что появится в ECMAScript 2016 (ES7)

Книга заклинаний современного веб-разработчика: большая картинка, тезаурус и таксономия современного веб-разработки JavaScript 
 
ES8 вышел и вот его основные новые возможности

Что за черт, Javascript
https://habr.com/en/company/mailru/blog/335292/
 
Как работает JS: управление памятью, четыре вида утечек памяти и борьба с ними
https://habr.com/en/company/ruvds/blog/338150/

Многоликий this в JS

Что нового в ES2018 

Обзор новшеств ECMAScript 2016, 2017, и 2018 с примерами
https://habr.com/en/company/ruvds/blog/353174/

Полный современный справочник по JavaScript
https://www.freecodecamp.org/news/the-complete-javascript-handbook-f26b2c71719c/

http://stepansuvorov.com/blog/2013/04/все-для-обработки-javascript-error-в-проекте/

https://habr.com/en/company/oleg-bunin/blog/433318 - Garbage Collect

// Таски и микротаски
https://habr.com/en/company/oleg-bunin/blog/417461/
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/#test-it
// Придержим ссылки на эти элементы var outer = document.querySelector('.outer'); var inner = document.querySelector('.inner'); // Послушаем изменения атрибутов внешнего // элемента с классом outer new MutationObserver(function() { console.log('mutate'); }).observe(outer, { attributes: true }); // А вот и колбек… function onClick() { console.log('click'); setTimeout(function() { console.log('timeout'); }, 0); Promise.resolve().then(function() { console.log('promise'); }); outer.setAttribute('data-random', Math.random()); } // …который мы повесим на оба элемента inner.addEventListener('click', onClick); outer.addEventListener('click', onClick);


ОТВЕТ (по нажатию на кнопку)
click js-стек завершен
promise - микрозадача mutate - микрозадача
click
js-стек завершен promise - микрозадача mutate - микрозадача timeout - задача timeout - задача

ОТВЕТ (программно inner.Click())
click
JS стек ещё не завершен, поэтому микрозадачи не запускаются click
js стек завершен promise - микрозадача mutate - микрозадача promise - задача
мутация второй раз не выполняется timeout - задача timeout

Задачи и микрозадачи исполняются по порядку
Браузер может рендерить в промежутках между задачами

Микрозадачи исполняются после каждого колбека, если только это не часть выполнения какого-то другого сценария (стек не пустой) и конце каждой задачи и после очистки стека.


Мы выполняем все микротаски, которые у нас есть в очереди до конца 
Еще можно порождать новые микротаски в процессе, и они будут выполнены в этом же microtask checkpoint.

requestAnimationFrame, и даже уже его используют. Он выполняется перед рендером. Его прелесть в том, что, во-первых, он старается выполняться каждые 60 fps (или 30 fps), вo-вторых, это все выполняется непосредственно перед созданием CSS Object Model
RequestIdleCallback работает таким образом, что если браузер понимает, что у него между фреймами (60 fps) есть время, чтобы выполнить что-то полезное, и при этом они уже все сделал — таску сделал, requestAnimationFrame сделал — вроде бы все классно, то он может выдать маленькие кванты, скажем, по 50 мс, чтобы вы что-то сделали (режим IDLE).


  • Если это изменение DOM, то используем requestAnimationFrame.
  • Если это неприоритетная, недолгая и не тяжелая задача, которая будет не слишком нагружать CPU, то requestIdleCallback.
  • Если у нас большая мощная задача, которую надо исполнять постоянно, тогда мы выходим за пределы Event Loop и используем WebWorkers.

Фазы Event Loop в Node.js:

  • timers;
  • pending callback;
  • idle, prepare; - ничего не можем сделать
  • poll; IO Здесь круто делать setImmediate
  • check; Здесь исполняется setImmediate Фаза прекрасна тем, что setImmediate, вызванный в poll-фазе, выполнится гарантированно раньше, чем таймер. Потому что таймер будет только на следующем тике в самом начале, а из poll-фазы раньше. 
  • close callbacks.

Алгоритм Event Loop
  • Берем свободную таску из нашей очереди,
  • Выполняем ее,
  • Выполняем microtask checkpoint  .
  • Обновляем рендеринг (если необходимо), и возвращаемся   

воскресенье, 22 мая 2016 г.

Доступность

Валидаторы и чек-листы. Вы можете проверить свой сайт с помощью таких сервисов:

Если вам нужно больше информации, то читайте:

Спецификация WCAG 2.1;

 


  •  http://www.accessiq.org/news/features/2016/04/principles-of-the-keyboard-accessible-website
  • (Principles of the keyboard-accessible website) 

  • http://stevefaulkner.github.io/HTML5accessibility/
https://ebay.gitbooks.io/mindpatterns/content/ — шаблоны доступных компонентов для веба от ebay (Accessibility Patterns for the Web)

http://blogs.adobe.com/dreamweaver/2016/05/how-to-conduct-a-basic-accessibility-audit-on-your-site-part-2-keyboard-screen-reader-and-automated-code-testing.html (Part 2: How to Conduct a Basic Accessibility Audit on Your Site)


https://www.wuhcag.com/wcag-checklist/


 https://www.gitbook.com/book/ebay/mindpatterns/details— книга о доступности от eBay


https://habrahabr.ru/post/309288/
https://habrahabr.ru/company/design/blog/314910/

https://developer.mozilla.org/en-US/docs/Learn/Accessibility— обновленное руководство MDN по доступности:

  
    • https://www.w3.org/WAI/intro/people-use-web/principles Как люди с ограниченными возможностями используют веб. Обновленная официальная документация W3C WAI
    • https://www.microassist.com/digital-accessibility/digital-accessibility-checklist/
       
  •  
  • pwa https://habrahabr.ru/company/netologyru/blog/333544/
  • pwa https://habrahabr.ru/company/mailru/blog/334536/%5Bperevod%5D-rukovodstvo-dlya-nachinayuschih-po/
  •  
  • https://aerolab.co/blog/web-accessibility/
  • https://habrahabr.ru/post/335352/
  •   

  •  
  •   
    https://quod.lib.umich.edu/w/weave/12535642.0001.701?view=text;rgn=main

       
  •  http://weblind.ru/


    • Руководство по alt-text от слабовидящего веб-разработчика
    • https://habrahabr.ru/post/341810/



       

    https://github.com/mgifford/a11y-lists-of-lists

    https://habrahabr.ru/company/aacidov/blog/346238/
    https://www.deque.com/blog/writing-automated-tests-accessibility/
    https://www.24a11y.com/2017/reacts-accessibility-code-linter/
    https://www.24a11y.com/2017/accessibility-testing-tools-desktop-mobile-websites/
      
    https://css-tricks.com/accessibility-testing-tools/
    https://www.24a11y.com/2017/writing-automated-tests-accessibility/


    http://html5accessibility.com/. Ресурс, где можно узнать об актуальном статусе поддержки свойств HTML5 в основных браузерах


    https://24ways.org/2017/wcag-for-people-who-havent-read-them/

    http://www.funkify.org/simulators/ — расширение для Хрома, позволяющее эмулировать многие расстройства зрения, моторики, а также некоторые когнитивные


         
    • https://www.w3.org/blog/2018/01/wcag21-cr/
      http://www.mediacurrent.com/blog/accessibility-updates-wcag-21

    https://www.w3.org/blog/2018/02/accessibility-review-of-2017-and-outlook-for-2018/

    • https://letorey.co.uk/blog/a11y-isnt-just 

    http://accessibility.voxmedia.com/

    https://alistapart.com/article/diy-web-accessibility-blueprint

    https://www.stefanjudis.com/useful-accessibility-resources/

    https://github.com/YozhikM/stylelint-a11y — Плагин для stylelint с правилами a11y  


    https://www.marcozehe.de/2018/04/11/introducing-the-accessibility-inspector-in-the-firefox-developer-tools/

    https://habr.com/company/yandex/blog/424879/

     https://dev.to/maxwell_dev/the-web-accessibility-introduction-i-wish-i-had-4ope

    https://moritzgiessmann.de/accessibility-cheatsheet/
       
    https://medium.com/pulsar/which-accessibility-testing-tool-should-you-use-e5990e6ef0a

    Разработка доступных интерфейсов

    понедельник, 16 мая 2016 г.

    Service worker and Web RTC и websockets

    суббота, 30 апреля 2016 г.

    WebAssembly

    WebAssembly

    https://2ality.com/2015/06/web-assembly.html – это бинарный формат статического формального языка, производного от asm.js, который можно использовать для создания динамичных исполняемых программ, поддерживаемых JavaScript-движками. Формальный язык более высокоуровневый, чем байткод, поэтому его легче поддерживать. Выходные файлы существуют в рамках JavaScript и, как следствие, хорошо в него интегрируются. Принимая во внимание быстроту работы asm.js, скорость работы скомпилированного кода С++ в Web Assembly будет равняться примерно 70 % от скорости компиляции C++ в нативный код.

    64bit-арифметика в браузере и WebAssemblyhttps://habr.com/en/post/308874/

    Введение в WebAssembly
    https://rsms.me/wasm-intro

    Иллюстрированное введение в WebAssemblyhttps://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/

    Создание и введение в модули WebAssemblyhttps://hacks.mozilla.org/2017/02/creating-and-working-with-webassembly-modules/

    Что делает WebAssembly таким быстрым?https://hacks.mozilla.org/2017/02/what-makes-webassembly-fast/

    Где WebAssembly находится сейчас и что дальше?https://hacks.mozilla.org/2017/02/where-is-webassembly-now-and-whats-next/

    http://habrahabr.ru/company/infopulse/blog/273957/






    Технопорно с WebAssembly
    • https://habrahabr.ru/post/345450/

       


    Все желающие могут ознакомиться со следующими документами:



    https://webassembly.studio/  онлайн-песочница для изучения Web Assembly


    Будущее WebAssembly — взгляд на планируемые функциональности и предложения https://blog.scottlogic.com/2018/07/20/wasm-future.html


    Electron and Visual Studio Code и Atom

    VIM
    Emacs
    Sublime
    Notepad++

    Electron – технология, разработанная GitHub. Она позволяет строить кроссплатформенные десктопные приложения с использованием веб-технологий. Среди её фич:
    https://www.electronjs.org/

    • автоматические обновления;
    • отчеты об ошибках;
    • установщики Windows;
    • отладка и профилирование;
    • нативные меню и уведомления.

    Технология была изначально создана для GitHub-редактора Atom, который на данный момент используют многие компании, включая Microsoft (в Visual Studio Code, о котором речь пойдет ниже), Slack и Docker.

    Архитектура Electron включает как среду выполнения Node.js, так и встроенный браузер Chromium. Приложения, сделанные с помощью этой технологии, выполняются несколькими процессами: главный процесс запускает скрипт из файла package.json. Этот скрипт может открывать окна для отображения пользовательского интерфейса. Аналогично вкладкам в веб-браузере каждое из окон выполняет отдельный процесс – рендеринг.

    Visual Studio Code

    Visual Studio Codehttps://code.visualstudio.com/
    – это редактор JavaScript-кода, нечто среднее между интегрированными средами разработки и текстовыми редакторами, который, по-моему, неплохо себя зарекомендовал. Его преимущество также в том, что он написан на JavaScript и основан на Electron.

    https://habrahabr.ru/company/microsoft/blog/262523/


    Другие редакторы
    Reactide
    Reactide is the first dedicated IDE for React web application development. http://reactide.io

    Brackets
    An open source code editor for the web, written in JavaScript, HTML and CSS.

    Nuclide
    An open IDE for web and native mobile development, built on top of Atom

    10 лучших VS Code-расширений 2018 года для фронтенд-разработчиков  
    https://habr.com/en/company/ruvds/blog/425313/

    IntelliCode теперь и в TypeScript/JavaScript

    https://habr.com/company/microsoft/blog/432494/



    Расширения для Visual Studio Code, которые поднимут процесс разработки на новый уровень

    https://medium.com/nuances-of-programming/расширения-для-visual-studio-code-которые-поднимут-процесс-разработки-на-новый-уровень-a24f29173079



    GitHub Pull Requests в Visual Studio Code

    https://habr.com/company/microsoft/blog/423307/


    среда, 27 апреля 2016 г.

    JavaScript тестирование


    Mocha the standard test framework,
    https://mochajs.org/
    TDD/BDD (23%)
    Mocha — это JS-фреймворк, облегчающий тестирование асинхронного кода. Тесты в Mocha имеют улучшенное качество трассировки исключений и могут прогоняться сериями.

    Jasmine like Mocha but for BDD.
    https://jasmine.github.io/
    BDD (17%)

    AVA a futuristic test runner, whatever that means. Anyway it is good for high concurrency and parallelism testing.
    https://github.com/avajs/ava
     TDD/BDD (2%)

    Tape a simple test runner that uses the tap protocoll, if that is your thing.
    https://github.com/substack/tape

    Jest has extra nice features for UI testing, like snapshots of the HTML produced, that can be compared etc.
    https://jestjs.io/
    TDD/BDD (3%)

    QUnithttps://qunitjs.com/
    TDD (4%)

    http://chaijs.com/
    Chai — TDD/BDD assertion библиотека, которая может использоваться совместно с Mocha и позволяет выражать тесты в простой читаемой форме.



    WebPageTest
    10 вещей, которых вы не знали о WebPageTest.orghttp://www.deanhume.com/ten-things-you-didnt-know-about-webpagetest-org/

    Как использовать WebPageTest и его API (How To Use WebPageTest and its API)
    https://css-tricks.com/use-webpagetest-api/
       

    http://karma-runner.github.io/0.13/index.html
    Раз уж в списке появились Mocha и Chai, то нужно включить сюда и прогонщика тестов, позволяющего проводить непрерывное интеграционное тестирование. Karma поможет вам автоматизировать работу тестов Mocha и Chai в разных браузера

    Поскольку не все браузеры могут работать на любых платформах, то обратите внимание на пару бесплатных инструментов, которые облегчат вам процесс тестирования:


      http://phantomjs.org/
      PhantomJS
      - Было бы не слишком экономно запускать браузеры целиком во время прогона тестов, это приводит к излишнему расходу памяти и ресурсов процессора. PhantomJS позволяет запустить headless версию WebKit, движка, используемого в Safari, а ранее ещё и в Chrome (сегодня в нём используется Blink). Так что прямо из JavaScript API вы сможете прогнать тесты, наделать скриншотов, помониторить сеть и автоматизировать просмотр страниц.

      Рекомендации по использованию: если вам нужно прогнать обширное количество тестов, операций со страницами и промониторить сетевые запросы.



    An Overview of JavaScript Testing in 2018https://medium.com/welldone-software/an-overview-of-javascript-testing-in-2018-f68950900bc3

    Jest и Puppeteer: автоматизация тестирования веб-интерфейсовhttps://habr.com/en/company/ruvds/blog/342578/

    Дизайн и CSS



    • Презентация Антона Виноградова об архитектуре дизайн-системы Альфа-Банка.  
    • http://codepen.io/kevinSuttle/post/the-current-state-of-web-forms


    • Алгоритмический дизайн Я давно интересуюсь темой алгоритмического дизайна и собираю материалы и примеры на тему, но тема всплывала от случая к случаю. За 4 года скопилась пара десятков примеров и полдюжины статей в привязке к продуктовому дизайну, но до этой весны всё это были скорее отдельные всплески безо всякой системы. Сделал краткий того, что это и почему это безумно важно. 
    • https://vc.ru/flood/16351-algorithm-design




    CSS в JS (CSS-in-JS) была озвучена в конце 2014-го года, в https://speakerdeck.com/vjeux/react-css-in-js Кристофера Чедеу (Vjeux), инженера Facebook из команды разработчиков React. Эта идея привела к разработке нескольких влиятельных библиотек, что упростило создание компонентных стилей. До сих пор самым популярным решением в этой области была библиотека styled-components, которая использует шаблонные литералы ES6 для создания компонентов React из CSS-строк.

    https://risingstars.js.org/2019/en/

    Styled Components

    Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress
    +6.0k☆
    2
    Emotion

    Emotion

    CSS-in-JS library designed for high performance style composition
    +3.3k☆
    3
    Linaria

    Linaria

    Zero-runtime CSS in JS library
    +2.8k☆
    4
    styled-system

    styled-system

    ⬢ Style props for rapid UI development
    +2.4k☆
    5
    CSS Modules

    CSS Modules

    Documentation about css-modules
    +1.8k☆
    6
    Polished

    Polished

    A lightweight toolset for writing styles in JavaScript
    +1.2k☆
    7
    Styled JSX

    Styled JSX

    Full CSS support for JSX without compromises
    +1.1k☆
    8
    JSS

    JSS

    JSS is an authoring tool for CSS which uses JavaScript as a host language.
    +964☆



    mlops

      . Почти вся информация по вопросу собрана в гитхабе  awesome-mlops , который курирует Лариса Висенгериева, главный эксперт сайта ml-ops.or...