суббота, 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☆



понедельник, 25 апреля 2016 г.

DevOps + NPM, webpack, gulp, babel и YARN

http://andrewhfarmer.com/static-site-anatomy/

Менеджер пакетов

1. NPM
-------------------------
npm-хуки (например postinstall) можно применять для:

  • pre-commit — проверка стиля кодирования (ESLint);
  • pre-push — запуск тестов;
  • post-merge — запуск npm install и jam install.
---------------------

------------------------

npm - де-факто, это стандарт в мире JS,

Какой загрузчик модулей / bundling tool вы используете?

https://webpack.github.io/
-------------------------
Возможности Webpack
1) Разрешение зависимостей
2) Сборка в 1 или несколько бандлов
3) Динамическая подгрузка
4) Поддержка разных компиляторов (typescript, babel и т.д.)
5) Оптимизация
6) Тестирование
7) Статический анализ
8) Горячая перезагрузка (Hot Reload)
Hot Reload c плагином react-hot-loader для реакта позволяет менять код отдельного компонента без перезагрузки всей страницы. А вместе с Flux ты сможешь делать вещи типа прокрутки истории изменений в данных туда-обратно — одновременно с горячим редактированием кода 

Инструмент автоматизации сборки и компиляции

1. http://gulpjs.com/ - 2007 (I)
2. Npm run - 1366 (I)
3. http://gruntjs.com/ - 911 (I)
-------------------------
http://broccolijs.com/  (V)
-------------------------
В ходе подготовки выкатывания сайтов в продакшен нам обычно приходится выполнять такие задачи, как улучшение производительности с помощью минификации JavaScript и CSS, компиляцию CoffeeScript/TypeScript, модульное тестирование и т.д.  Для этих целей можно порекомендовать Grunt или Gulp
Рекомендации по использованию Grunt: если вы предпочитаете писать конфигурационные файлы и вас не волнует, что исполнитель задач может генерировать промежуточные файлы.
Рекомендации по использованию Gulp: если вы предпочитаете писать код вместо конфигурирования, и были бы не против использовать Node.js-потоки для увеличения производительности.
-------------------------
В TFS2015 поддерживаются таски для gulp
-------------------------
Заключение: Gulp пользуется большей популярностью, т.к. даёт больше контроля.

Расширение JavaScript

Но мы не живём в идеальном мире. Разработчикам приходится поддерживать старые версии браузеров, не поддерживающих самые современные и лучшие возможности JavaScript.
Это можно сделать с помощью Babel, JS-компилятора, преобразующего последние возможности ES-стандарта в ES5. Это поможет вам запускаться даже на очень старых браузерах наподобие IE 11
-------------------------
Заключение: рекомендуется использовать babel

ПОЛЕЗНЫЕ ССЫЛКИ

Npm

https://docs.npmjs.com/getting-started/what-is-npm

Webpack

https://habrahabr.ru/company/jugru/blog/342842/

BABEL

https://babeljs.io/docs/learn-es2015/

GULP
GRUNT
http://designmodo.com/grunt/
  •  

Parcel
Parcel — сборщик, не требующий настройки за счёт использования нескольких процессорных ядер и эффективной системы кэширования. Кроме того, он работает с абстрактными синтаксическими деревьями вместо строк, как делается в Webpack. Как и Webpack, Parcel, кроме того, поддерживает материалы, не являющиеся JS-файлами, вроде изображений и файлов со стилями. Интерес сообщества смещается в сторону инструментов для сборки модулей, которые требуют как можно меньше настроек.

Rollup
Проект Rollup привлёк к себе серьёзное внимание до выпуска Webpack 2, в 2016-м, представив tree shaking — популярную функцию для избавления от неиспользуемого кода. Webpack ответил на это, включив поддержку ключевой возможности Rollup в свой второй релиз. Rollup упаковывает модули не так, как Webpack, что позволяет делать размер пакетов меньше, но, в то же время, препятствует использованию таких важных возможностей, как, например, разделение кода.

Когда React перешла на Rollup многие задались вопросом о том, почему не Webpack. Команда разработчиков Webpack отреагировала на это, порекомендовав использовать Rollup для разработки библиотек, а Webpack — для разработки приложений.

Task Runner
npm Has a script attribute in its package.json that can be used to define some simple tasks. Has access to CLIs installed in dev-dependencies, so they don't need to be installed globally.
Grunt First of its kind in JavaScript land, used if the npm-scripts aren't enough anymore.
Gulp Like Grunt, but needs less configuration.
Compiler
Buble a fast ES2015 compiler, if you don't need all the fancy features of Babel.
Bundler
Browserify was created to make the synchronous CommonJS modules of Node.js available in asynchronous browser land. So it doesn't simply merge all your files, but also wrapps modules for async use.


Continuous Integration

  1. Jenkins — 44 %;
  2. GitLab — 39 %;
  3. Travis — 26 %;
  4. CircleCI — 12 %;
  5. TeamCity — 8 %;
  6. Bamboo — 6 %.
We use https://travis-ci.com/for our continuous integration (CI) pipeline.  

 


Deployment

The last step in shipping the product to our users is deployment. We use https://www.ansible.com/tower which is a powerful automation software that enables us to deploy our builds easily.
As mentioned earlier, all our commits, upon successful build, are being uploaded to a central S3 bucket for builds. We follow semver for our releases and have commands to automatically generate release notes for the latest release. When it is time to release, we run a command to tag the latest commit and push to our code hosting environment. Travis will run the CI steps on that tagged commit and upload a tar file (such as 1.0.1.tar) with the version to our S3 bucket for builds.
On Tower, we simply have to specify the name of the .tar we want to deploy to our hosting bucket, and Tower does the following:
  1. Download the desired .tar file from our builds S3 bucket.
  2. Extracts the contents and swap in the configuration file for specified environment.
  3. Upload the contents to the hosting bucket.
  4. Post a notification to Slack to inform about the successful deployment.
This whole process is done under 30 seconds and using Tower has made deployments and rollbacks easy. If we realize that a faulty deployment has occurred, we can simply find the previous stable tag and deploy it.




Webpack

Webpack

A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.
+6.3k☆
2
Parcel

Parcel

Blazing fast, zero configuration web application bundler
+5.4k☆
3
Rollup

Rollup

Next-generation ES module bundler
+2.7k☆
4
Microbundle

Microbundle

Zero-configuration bundler for tiny modules.
+1.3k☆

5
Gulp

Gulp

The streaming build system
+841☆

вторник, 19 апреля 2016 г.

Интересное

       https://poedinki.ru/
 https://mikhailivanov.ru/
 


  • http://www.symbolarium.ru/index.php/Гопатшах
  • https://eleven.co.il/talmud-rabbinics/
  • https://ru.wikipedia.org/wiki/Алхимия
  • https://ru.wikipedia.org/wiki/Каббала_(Лайтман)
  • https://ru.wikipedia.org/wiki/Портал:Буддизм
  • https://bookap.info/psyanaliz/zelensk/gl3.shtm
  • https://plato.stanford.edu/contents.html
  • http://www.otrok.ru/teach/phil/txt/cont1.html

  • https://www.livelib.ru/tag/психоделика/~4
  • https://www.livelib.ru/tag/психоделика

  • https://habr.com/en/post/342512/
  • https://pikabu.ru/story/on_kivnul_svoey_golovoy_v_znak_soglasiya__kivnul_4615292

  • http://unicomics.ru/comics/online/sandman-19/7
  • https://librebook.me/uliss/vol1/1

  • https://evrl.to/articles/55a7dbe06ec7f76e03535aa1/v-kakom-porjadke-smotret-filmy-marvel-update/
  • https://ru.wikipedia.org/wiki/Avatar_Press

  • https://pikabu.ru/story/voynyi_dorog_15_klonov_bezumnogo_maksa_4483876
  • https://pikabu.ru/story/korotkometrazhnyie_fantasticheskie_filmyi_na_russkom_4387902
  • https://pikabu.ru/story/10_malobyudzhetnyikh_fantasticheskikh_filmov_4115716
  • https://kudago.com/all/list/7-filmov-pro-hipsterov/
  • https://ru.wikipedia.org/wiki/За_гранью_возможного_(телесериал,_1963)
  • https://ru.wikipedia.org/wiki/Бегство_Логана_(фильм,_1976)
  • https://yandex.ru/video/preview?filmId=8F7RezCH0Cw&text=семейка%20аддамс%201%20сезон%203%20серия&redircnt=1578228534.1
  • https://yandex.ru/video/preview?filmId=2234190820271601974&text=harry%20potter%20and%20the%20chamber%20of%20secrets%20english&redircnt=1578228542.1
  • https://gravityfalls.fandom.com/ru/wiki/Мульти-медведь

  • https://steampunk.fandom.com/wiki/List_of_Steampunk_Video_Games
  • http://gamesisart.ru/pc.html
  • https://ru.wikipedia.org/wiki/Chaos_on_Deponia
  • https://ru.wikipedia.org/wiki/Singularity_(игра)
  • https://ru.wikipedia.org/wiki/TimeShift
  • https://ru.wikipedia.org/wiki/Deponia
  • https://www.emu-land.net/consoles/dendy/roms/0-9
  • https://playkey.io/en/?tokenSales=true

  • https://librivox.org
  • https://www.ef.ru/blog/language/5-poleznyh-podkastov-dlja-izuchenija-anglijskogo-jazyka/?j=410981&sfmc_sub=24829913&l=10_HTML&u=5889371&mid=7279177&jb=150&source=007903,SL__ILSU_INSA_JB_EMAIL_1801&cs=interest&sk=RUM-CUS-10686782&cm_ven=ExactTarget
  • https://www.ef.ru/blog/language/anglijskie-sokrashhenija/?j=410981&sfmc_sub=24829913&l=10_HTML&u=5889370&mid=7279177&jb=150&source=007903,SL__ILSU_INSA_JB_EMAIL_1801&cs=interest&sk=RUM-CUS-10686782&cm_ven=ExactTarget
  • https://www.ef.ru/blog/language/20-anglijskih-idiom/?j=403047&sfmc_sub=24829913&l=10_HTML&u=5776925&mid=7279177&jb=146&source=007903,SL__ILSU_INSA_JB_EMAIL_1752&cs=interest&sk=RUM-CUS-10686782&cm_ven=ExactTarget
  • https://pikabu.ru/story/128_slov_vmesto_slov_s_very_4276961
  • https://habr.com/en/company/netologyru/blog/340358/

  • https://www.theguardian.com/education/ng-interactive/2018/may/29/university-league-tables-2019
  • https://www.timeshighereducation.com/world-university-rankings/2013/subject-ranking/engineering-and-IT#!/page/0/length/25/sort_by/rank/sort_order/asc/cols/undefined
  • https://oncampus.ru/application/kak-postupit-v-zarubezhnyj-universitet/

  • https://www.bbc.com/news/business-21938085

  • https://www.ivi.ru/watch/94600
  • https://www.ivi.ru/watch/177614/description
  • https://www.ivi.ru/watch/144759/description
  • https://www.ivi.ru/watch/138454/description
  • https://www.ivi.ru/watch/98391/description
  • https://www.ivi.ru/watch/98391
  • https://www.ivi.ru/watch/107387/description
  • https://www.ivi.ru/watch/107377/description5
  • https://ru.wikipedia.org/wiki/Список_когнитивных_искажений#Социально_об
  • https://ru.wikipedia.org/wiki/Янг,_Нил

  • Стек
  • Grafana мониторинг  / Prometheus
  • Puppet
  • Elastic / Kibana
  • Haproxy
  • Zabbix
  • Jaeger трассировка запросов 
  • race limit / circuit breaker (можно использовать Hystrix);
  • контроль связности сервисов (мы используем Netramesh);
  • статусы, сообщения, события из Kubernetes (Event Stream Processing);
  • агрегация ошибок (Sentry);
 
  • https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

    Десятка полезных сниппетов и хаков при работе с .htaccess
  • https://speckyboy.com/useful-htaccess-snippets-and-hacks/

    Руководство по написанию качественных README файлов
  • https://github.com/noffle/art-of-readme

    Сравнение форматов сериализации данных: JSON, YAML, BSON, MessagePack
  • https://www.sitepoint.com/data-serialization-comparison-json-yaml-bson-messagepack/

  • http://htmlreference.io/ — бесплатный интерактивный справочник по HTML от создателей cssreference.io

  • Shower 2.0 - движок презентаций http://shwr.me/#cover

  • Favicon сегодня: форматы, поддержка, автоматизация
  • https://habrahabr.ru/post/330584/[iz-pesochnitsy]-favicon-segodnya-formaty

  • https://github.com/callmecavs/gotem— копирование в буфер обмена для современных браузеров (меньше 1Кб)
  • https://www.sitepoint.com/robots-and-you-a-guide-to-robots-txt/(Robots and You: A Guide to Robots.txt)
    Как внедрить интернационализацию (i18n) в
  • https://eager.io/blog/everything-I-know-about-the-script-tag/

  • https://yomguithereal.github.io/mnemonist/— курируемая коллекция структур данных, реализованных на JavaScript 

  • JavaScript особенности
  • https://habrahabr.ru/company/mailru/blog/335292/

  • Сheat-sheets «регулярные выражения»
  • https://habrahabr.ru/company/first/blog/338386/

  • Как правильно оформить Open-source проект
  • https://habrahabr.ru/post/341166/

  • https://habrahabr.ru/post/337528/ - Параллелизм против многопоточности против асинхронного программирования: разъяснение
  • https://habrahabr.ru/post/345740/ - что такое хэшированиее
  • https://habrahabr.ru/company/mailru/blog/343288/ - Как ты реализуешь аутентификацию, приятель?
  • https://habr.com/en/company/talentboard/blog/297510/ - инструменты для удаленной работы
Оболочки
  • Терминология OneGet, NuGet, Chocolatey, PowerShellGet — разложим по полочкам
  • https://habrahabr.ru/post/331124/
Практики
  1. «Эффективная работа с унаследованным кодом». Майкл Физерс (309 упоминаний)
  2.  «Приемы объектно-ориентированного проектирования». Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес (277 упоминаний)
  3. «Чистый код». Роберт Мартин (256 упоминаний)
  4. «Java Concurrency in Practice». Брайан Гетц, Тим Пирлс (201 упоминание)
  5. «Предметно-ориентированное проектирование». Эрик Эванс (190  упоминаний)
  6. «JavaScript: сильные стороны». Дуглас Крокфорд (178 упоминаний)
  7. «Шаблоны корпоративных приложений». Мартин Фаулер (173 упоминания)
  8. «Совершенный код». Стив Макконнелл (154 упоминания)
  9. «Рефакторинг. Улучшение существующего кода». Кент Бек, Мартин Фаулер (148 упоминаний)
  10. «Паттерны проектирования». Эрик Фримен, Элизабет Фримен, Кэтти Сьерра, Берт Бейтс (140 упоминаний)
  11. «Экстремальное программирование». Кент Бек (102 упоминания)
  12. «Алгоритмы. Построение и анализ». Томас Кормен (95 упоминаний)
  13. «Регулярные выражения». Джеффри Фридл (88 упоминаний)
  14. «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#». Джеффри Рихтер (82 упоминания)
  15. «Эффективное использование STL». Скотт Майерс (78 упоминаний)

  • https://habrahabr.ru/post/347242/ - Применяем принцип KISS к самим принципам проектирования
  • https://habrahabr.ru/post/338064/ - Принцип единственной ответственности: фундамент декомпозиции
  • «Совершенный код» Стив Макконнелл (Steve McConnell)
  • «Программист-прагматик. Путь от подмастерья к мастеру» Эндрю Хант (Andrew Hunt), Дэвид Томас (David Thomas)
  • «Рефакторинг. Улучшение существующего кода» Мартин Фаулер (Martin Fowler), Кент Бек (Kent Beck), Джон Брант (John Brant) и др.
  • «Практика программирования» Брайан Керниган (Brian Kernighan), Роб Пайк (Rob Pike)
  • «Чистый код. Создание, анализ и рефакторинг» Роберт К. Мартин (Robert Martin)
  • «Шаблоны игрового программирования» Роберт Нистром (Robert Nystrom)
  • «Читаемый код, или Программирование как искусство» Дастин Босуэлл (Dustin Boswell), Тревор Фаучер (Trevor Foucher)
  • Статья «Как написать неподдерживаемый программный код» — своего рода классика.https://www.se.rit.edu/~tabeec/RIT_441/Resources_files/How%20To%20Write%20Unmaintainable%20Code.pdf
  • У чистого кода есть некоторые формальные признаки. Проверить, не исходит ли от кода http://wiki.c2.com/?CodeSmell, можно с помощью http://mikamantyla.eu/BadCodeSmellsTaxonomy.html профессора Мики Мянтюля (Mika Mäntylä). Признаки хорошего кода можно найти в https://blog.codinghorror.com/code-smells/ Coding Horror.
  • Например,  https://github.com/features/code-review
  • Рекомендации по структурированию кода также зачастую дают разработчики платформ. Например, https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions документ есть у Microsoft для C#.
  •   https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions#implicitly-typed-local-variables
                  
noto — новый шрифт от Google для всех языков и наречий  
https://www.google.com/get/noto/
   
Цифровое наследие: Что будет с вашими аккаунтами после смертиhttp://www.the-village.ru/village/business/newprof/258240-post-mortem

Бесплатные игровые движки на HTML5 и JavaScripthttps://tproger.ru/digest/free-game-engines-js/

Бесплатный Google Optimize приносит A/B-тестирование сайтов в массы
https://medium.com/javascript-and-opinions/state-of-the-art-javascript-in-2016-ab67fc68eb0b                         
http://www.nowandnext.com/PDF/TimeLineweb_ver2.pdf  

Что такое виртуальная реальность: свойства, классификация, оборудование — подробный обзор областиhttps://tproger.ru/translations/vr-explained/

http://megaboilerplate.com/— стартовый набор технологий в виде интерактивного генератора для быстрого старта проекта

Все, что я должен знать о тэге Script (Everything I Know About The Script Tag)
https://eager.io/blog/everything-I-know-about-the-script-tag/
  
Политика безопасности контента, ваш будущий лучший друг
http://prgssr.ru/development/politika-bezopasnosti-kontenta-vash-budushij-luchshij-drug.html
  
https://ana-balica.github.io/2017/02/21/code-review-checklist/

https://scotch.io/bar-talk/universal-web-components
https://auth0.com/blog/web-components-how-to-craft-your-own-custom-components/
https://medium.com/@kovchiy/interface-components-ac2447ab5fbe
https://develoger.com/shadow-dom-virtual-dom-889bf78ce701

http://vanseodesign.com/web-design/performance-budgets/

http://www.boilrplate.com/
    •   
    • HTML imports — это лучший веб-компонент
  • https://www.scirra.com/blog/ashley/34/html-imports-are-the-best-web-component
  

Дизайн 
1. Памятка дизайнеру сайтов
https://habrahabr.ru/post/50497/

2. Принцип цикады и почему он важен для веб-дизайнеров
https://habrahabr.ru/post/117160/

3. Стив Круг «Веб-дизайн или Не заставляйте меня думать»
http://design4site.ru/blog/wp-content/books/web_design_stiva_kruga.pdf

4. Якоб Нильсен «Веб-дизайн»
http://www.bigpi.biysk.ru/bibl/_fullpage/webed/Nil'sen_YA._Veb-dizayn_kniga_YAkoba_Nil'sena.pdf

5. Дональд Норман «Дизайн привычных вещей»
https://eager.io/blog/everything-I-know-about-the-script-tag/

6. Джеф Раскин «Интерфейс»
https://new.vk.com/doc2315639_412075253?hash=6dc98f65957cbbfa98&dl=ffcea84fdbbc5d4253

7Как за 15 лет изменились главные страницы Apple, Microsoft, IBM, Sony  
http://charliehoehn.com/2013/01/14/15-years-of-apple-dot-com-homepage/

8. Ководство
http://www.artlebedev.ru/kovodstvo/sections/

9. О дизайне
https://www.smashingmagazine.com/tag/web-design/

10. Почему курсор мыши наклонён на 45°?
https://habrahabr.ru/post/212939/

11. Наберитесь смелости сделать не как все. 12 устаревших интерфейсных и технологических решений  
https://habrahabr.ru/company/luxoft/blog/152967/

12. Имена людей и интерфейс 
https://habrahabr.ru/post/130361/

13.
https://habrahabr.ru/company/turbomilk/blog/143687/

14. Главные особенности китайского веб-дизайна и их истоки 
https://habrahabr.ru/post/172717/

  

Доклад Трейси Осборн  
https://www.youtube.com/watch?v=ZbrzdMaumNk&feature=youtu.be
http://nathanbarry.com/webapps/

Натана Бэрри   https://abookapart.com/products/on-web-typography — книга Джейсона Санта-Мария  

«Психбольница в руках пациентов» 
https://www.ozon.ru/context/detail/id/4710758/
— книга Алана Купера (оригинал — The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity). 
https://www.amazon.com/Inmates-Are-Running-Asylum-Products-ebook/dp/B000OZ0N62/

Несколько материалов по UI: 
«Как улучшить UX с помощью анимаций», 
http://babich.biz/how-to-use-animation-to-improve-ux/

«Переходы в пользовательских интерфейсах».
https://medium.com/@pasql/transitional-interfaces-926eb80d64e3#.gchmagcrw


Сети 
1. Принципы работы сети Интернет  
http://paulnn.ru/Net.html

2. Архитектура и принципы работы сети
http://mir.it-karma.ru/set-internet/lekcii/struktura-i-osnovnye-principy-raboty-seti-internet

3. Принцип работы торрент-сетей и как достигается высокая скорость 
http://utorrent-russian.com/kak-rabotaet-torrent.php

4. Руководство по TCP/IP для начинающих
http://www.codenet.ru/webmast/tcpip.php

5. Domain Name Service — cлужба Доменных Имен
http://www.codenet.ru/webmast/dns.php


Производительность 
1. Производительность web: Why Performance Matters  
https://habrahabr.ru/company/jugru/blog/282968/

2. Тонкости производительности
http://csswizardry.com/2013/01/front-end-performance-for-web-designers-and-front-end-developers/

3. Выигрыш в производительности для rel=noopener
https://jakearchibald.com/2016/performance-benefits-of-rel-noopener/

4. Измерение производительности веб-страниц
https://developer.mozilla.org/en-US/docs/Web/API/Window/performance

5. Улучшаем UX посредством оптимизации
http://alistapart.com/article/improving-ux-through-front-end-performance

6. Подходы к оптимизации (веб-)приложений
https://habrahabr.ru/post/208138/

7. Пример веб-производительности
https://habrahabr.ru/company/infobox/blog/226289/

8Производительность рендеринга картинок в Web
https://www.smashingmagazine.com/2016/05/web-image-effects-performance-showdown/

9. 10 Ways to Test Your Website Performance
https://www.smashingmagazine.com/2016/05/web-image-effects-performance-showdown/


 Тестирование 
1. Тестирование программного обеспечения
https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F

2. Зачем нужны тесты?
https://learn.javascript.ru/testing

3. Модульные тесты и интеграционные: в чём разница?
http://frontender.info/writing-testable-javascript/

4. Тестирование
https://www.youtube.com/watch?v=gUlWPVly_IA

5. JavaScript Testing курс (eng) 
https://www.youtube.com/watch?v=82iDVtbr7cY&list=PLAwxTw4SYaPkv4LG-0UHNfhPkKPfYacOg

6. QUnit. Тестирование javascript кода 
https://habrahabr.ru/post/83170/

7. Как развиваться начинающему тестировщику? 
https://habrahabr.ru/post/111829/

8. Повышаем стабильность Front-end 
https://habrahabr.ru/company/tcsbank/blog/251421/

9. Бек Кент. Экстремальное программирование. Разработка через тестирование
http://www.twirpx.com/file/27854/

11. Макгрегор Джон, Сайкс Девид. Тестирование объектно-ориентированного программного обеспечения 
http://www.proklondike.com/books/upravlenie/upravlenie_testing_oo_op.html

12. Тестирование JS. Кармический Webpack
https://habrahabr.ru/company/rambler-co/blog/278503/


Методология 
1. Необходимый минимум для фронтенд-разработчика
http://frontender.info/a-baseline-for-front-end-developers/

2. Методологии фронтенд-разработки
https://web-creator.ru/articles/subjects/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F/%D1%84%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4

3. Советы front-end разработчику
https://habrahabr.ru/post/231855/

4. Какими знаниями должен обладать Front-end разработчик в 2015 году
https://vc.ru/p/problem-10292

5. Что нужно знать и уметь front end разработчику в 2015/2016
https://ymatuhin.ru/front-end/what_front_end_developer_need_to_know_in_2015-2016/

6. Карта развития веб-разработчика
https://github.com/zualex/devmap

7. Основные навыки фронтенд-разработчика
http://ru.stackoverflow.com/questions/459646/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BD%D0%B0%D0%B2%D1%8B%D0%BA%D0%B8-%D1%84%D1%80%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D0%B4-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0

8. Isobar Front-end Code Standards
https://isobar-idev.github.io/code-standards/

9. Front-end Style Guides
https://24ways.org/2011/front-end-style-guides/

10. JavaScript Style Guide
https://github.com/airbnb/javascript

11. Coding style (Mozilla)
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style


Сервера 
1. Основные типы серверов
http://www.administrator-pro.ru/articles/osnovniye_tipiy_serverov.html

2. Что такое веб-сервер
https://developer.mozilla.org/ru/docs/Learn/%D0%A7%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5_%D0%B2%D0%B5%D0%B1_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80

3. Веб-сервер
https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80

4. Простым языком об HTTP
https://habrahabr.ru/post/215117/

5. Веб-сервисы в теории и на практике для начинающих
https://habrahabr.ru/post/46374/

6. Сравнение веб-серверов
https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2

7. Web-сервера и их использование для управления нагрузкой на приложение.
http://www.uriy.me/web-servers


 Юзабилити 
1. Юзабилити
https://ru.wikipedia.org/wiki/%D0%AE%D0%B7%D0%B0%D0%B1%D0%B8%D0%BB%D0%B8%D1%82%D0%B8

2. Юзабилити сайта
https://yandex.ru/support/webmaster/recommendations/usability.xml

3. 10 советов по юзабилити сайта, основанных на результатах исследований
http://ruseller.com/lessons.php?id=760

4. Основы юзабилити (usability) сайтов
https://www.youtube.com/watch?v=nzcGOekwv4Y

5. Юзабилити-тестирование (ИТМО)
https://www.youtube.com/watch?v=6aiKtySlqJ4

6. Usability vs. User Experience
http://www.slideshare.net/domain7/ux-vs-usability

7. What is the difference between UX and UI designer and web designer?
https://www.quora.com/What-is-the-difference-between-UX-and-UI-designer-and-web-designer


Идеальный текст 
http://www.ozon.ru/context/detail/id/20407373/
Уильяма Зинсера 
(оригинал — https://www.amazon.com/gp/product/0060891548/). «https://www.amazon.com/Elements-Style-4th-William-Strunk/dp/0205313426/» 

Уильяма Странка. 
Правила письменной речи Джорджа Оруэлла.
http://www.economist.com/blogs/prospero/2013/07/george-orwell-writing

Продвинутый курс Главреда
http://maximilyahov.ru/glvrd-pro/

Другое «https://www.coursera.org/specializations/algorithms », курс Стэндфордского университета на Coursera. 
Статья Дэвида Ханссона https://signalvnoise.com/posts/3375-the-five-programming-books-that-meant-most-to-me


Сегодня веб-компоненты состоят из пяти ключевых компонент:
  • Templates и Decorators – определение и применение шаблонов разметки в связке с данными для динамической генерации элементов HTML (фактически речь идет о стандартизации существующих практик).
  • Custom Elements – создание собственных элементов разметки со своими названиями тегами и необходимыми интерфейсами для JS.
  • Shadow DOM – возможность сокрытия части DOM для отдельных элементов разметки (полезно для виджетов), один из побочных эффектов – наоборот открытие DOM для стандартных элементов управления, стилизация которых обычно затруднена.
  • HTML Imports – упаковка шаблонов и собственных элементов и их внедрение в HTML-документы (здесь есть частичное пересечение с модулями в ES6).





https://habr.com/en/company/oleg-bunin/blog/450822/ - исчезающие фреймворки
  •   
    •   
    •                                                                                 
      О чем всегда стоит помнить при локализации веб-сайта, чтобы потом не было стыдно
    • https://habrahabr.ru/company/lokalise/blog/335200/

    • Инструменты:
        Тестирование доступности с помощью pa11y — набора бесплатных инструментов
      • https://bitsofco.de/pa11y/

      

    •                         
    • Какие метатеги использовать в вебе в 2017 году
    https://tproger.ru/translations/meta-tags-2017/

                       
    • Веб — это мой API
    https://paul.kinlan.me/the-web-is-my-api/
             

      • Релиз HTML5 Boilerplate 6.0
      https://eager.io/blog/everything-I-know-about-the-script-tag/:


      http://frontendchecklist.com/ — подробный структурированный чеклист для разработчиков фронтенда — от веб-шрифтов и мета-тегов до accessibility и SEO

           •  Прототипирование на продакшн-технологиях

      https://habrahabr.ru/company/yamoney/blog/341028/

         

      Подборка шпаргалок для эры современного фронтенда                   https://medium.com/@wesharehoodies/modern-frontend-hacking-cheatsheets-df9c2566c72a 


                             
      Как рассказать о современной веб-разработке путешественнику во времени из 2007 года     
      https://habrahabr.ru/company/edison/blog/341686/.com%5Bperevod%5D-kak-rasskazat-o-sovremennoy-v

       


      Draft.js — фреймворк для создания текстовых редакторов от Facebook
      https://medium.com/factorymn/draft-js-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2-%D0%BE%D1%82-facebook-ea8e9102aa1


      Русскоязычное руководство
        • https://medium.com/web-standards/fetch-vs-axios-js-%D0%B4%D0%BB%D1%8F-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-http-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2-41206a4c0060
      Fetch или Axios.js


       Общие проблемы безопасности в веб-приложениях, часть 1     
      •  https://codeburst.io/common-security-issues-in-web-applications-part-1-af339360c646





        • Google: директива Noindex, follow со временем переходит в Noindex, nofollow
        https://www.searchengines.ru/1153018.html

        https://github.com/huyingjie/Checklist-Checklist курируемый список чеклистов, посвященных веб-разработке и не только  
        •  

          Веб-компоненты: обзор и использование в продакшне
          https://habrahabr.ru/post/346670/

             


          Автоматическое браузерное тестирование с помощью WebDriver API
          •    https://www.smashingmagazine.com/2018/01/automated-testing/




            • Как писать дату и время в интерфейсах
            http://mikeozornin.ru/blog/all/how-to-write-datetime-in-ui/


              https://web.dev/ — новый ресурс c подробной структурированной информацией о современных техниках веб-разработки  


                  Flexbox. Инфографика по технологии
                  https://habr.com/post/431014/


                  Руководство по обработке ошибок в JavaScript
                  https://habr.com/company/ruvds/blog/431078/
                   

                  • Вышел браузер для VR-устройств Firefox Reality 1.1
                  https://tproger.ru/articles/firefox-reality-1-1-realese/



                    Явные возможности JavaScript
                  • https://habr.com/post/432102/
                   

                   Защищаем сайт, как-будто сейчас 1999-й
                  https://24ways.org/2018/securing-your-site-like-its-1999



                        
                  • https://facebookincubator.github.io/fbt/— фреймворк от Facebook для интернационализации пользовательских интерфейсов
                    https://github.com/Wildhoney/Readlint— линтит все примеры кода в вашей README-документации, используя общие конфиги 

                  •  
                    • 
                    Чеклист производительности фронтенда 2019 от Виталия Фридмана [PDF, Apple Pages, MS Word]
                  • https://www.smashingmagazine.com/2019/01/front-end-performance-checklist-2019-pdf-pages/


                    Computer science в JavaScript 2019: связанный список
                    https://humanwhocodes.com/blog/2019/01/computer-science-in-javascript-linked-list/



                    интернет ценностей (Internet of Value)

                     разработки инструментов командной строки, которые решают подобные вопросы, позволяя программистам сосредоточиться на работе над приложениями. Все эти инструменты стали основным средством, с помощью которых в 2018 году создаются новые приложения. В частности, в этой сфере можно отметить следующие проекты: Next.js (SSR для React), Create-React-App (создание клиентских React-приложений), Nuxt.js (SSR для Vue), Vue CLI (клиентские Vue-приложения), Expo CLI для React Native, стандартные средства Angular.

                    Стремление разработчиков к упрощению фронтенда и к повышению производительности привело к росту популярности генераторов статических сайтов

                     разработчики начали понимать, что далеко не все сайты должны представлять собой сложные одностраничные приложения (SPA). Это понимание привело к появлению, росту и развитию генераторов статических сайтов. Благодаря им можно разрабатывать проекты с использованием различных фронтенд-инструментов, вроде React или Vue, которые потом, в ходе сборки, преобразуются в статические HTML-файлы. Это позволяет очень быстро отдавать клиентам уже полностью готовые страницы.
                    Вместе с HTML-кодом клиент загружает и необходимые для работы страницы JS-файлы, что даёт пользователям те же возможности, что и обычные одностраничные приложения.
                    Генераторы статических сайтов отлично подходят для создания чего-то вроде личных сайтов или блогов, но их можно использовать и в более крупных проектах.  

                    Бессерверные архитектуры и JAMStack

                     (J — это JavaScript, A — это API, M — это Markup, то есть — разметка). В основе JAMStack лежат концепции разработки статических сайтов, о которых мы говорили в предыдущем разделе. Эта методика позволяет добиться чрезвычайно высоких скоростей загрузки сайтов за счёт заранее сформированной разметки. На клиенте такие сайты превращаются в динамические SPA благодаря применению специальных серверных API. 


                    На сегодняшний день наиболее удачные подходы для многопоточной разработки предполагают использование функционального программирования и/или передачи сообщений: см. https://ru.wikipedia.org/wiki/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B8%D0%B5_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D1%8B и https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2Что делать: обратить внимание на языки программирования, в которых работа с многопоточностью является сильной стороной: Go, Rust, Erlang/Elixir, Scala.

                    Облака       Что делать: наибольшая область развития в этом тренде находится в бэкенд разработке. В первую очередь следует познакомиться с https://msdn.microsoft.com/en-us/library/dn568099.aspx (балансировка нагрузки, очереди, автомасштабирование). Далее — инструментарий devops, распределенные вычисления (блокировка, CAP теорема, задача консенсуса). Контейнеризация и популярные технологии оркестрирования — Kubernetes, Mesos, Swarm. Наконец существующие распределенные и масштабируемые базы данных и их ограничения.

                          

                     Learn how to write readable code

                    The Art of Readable Code by Dustin Boswell
                    Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

                          
                        VR 
                    Есть https://www.w3.org/2016/06/vr-workshop/report.html
                      
                    Мы начинаем учиться понимать смысл на лету. HATEOAS используют форматы гипермедия для этого. Использование формата JSON-LD набирает обороты в API индустрии, а поисковые провайдеры вроде Google, Microsoft, Yahoo и Yandex поддерживают словарь Schema.org.
                      
                    Форматы вроде ALPS дают новую жизнь семантической информации для данных. В тоже время GraphQL Schema может быть изучена на лету, чтобы узнать, что доступно с помощью GraphQL API.
                      
                    И, напоследок, появляются специальные API каталоги, с HitchHQ и Rapid API во главе.

                      

                      Сборка
                      Однако, за год появилось (или стало активнее звучать) и несколько амбициозных проектов, за которыми интересно будет понаблюдать в следующем году: BroccoliFezMimosa.  
                        

                      React Storybook


                      Это – среда разработки пользовательских интерфейсов для React / React Native. С её помощью можно визуализировать различные состояния компонентов интерфейса и работать над ними в интерактивном режиме.

                      Next.js


                      Next.js – это маленький фреймворк, построенный на основе React, Webpack и Babel. Он упрощает создание и развёртывание React-приложений, сборка которых производится на серверной стороне.


                        JSFiddle — новая версия
                      • https://habr.com/post/413277/
                            
                      AR (Augmented Reality) VR (Virtual Reality) MR (Mixed Reality) all got together and joined forces like Voltron to become XR (eXtended Realty).    
                      Facebook (Oculus Rift), Google (Daydream) and Microsoft (Windows Holographic 

                         





                      mlops

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